
FutureSearch Python SDK

Deploy a team of researchers to forecast, score, classify, or gather data. Use yourself in the app, or give your team of researchers to your AI wherever you use it (Claude.ai, Claude Cowork, Claude Code, or Gemini/Codex/other AI surfaces), or point them to this Python SDK.
Requires Google sign in, no credit card required.
Quick installation steps:
Claude.ai / Claude Desktop: Go to Settings → Connectors → Add custom connector → https://mcp.futuresearch.ai/mcp
Claude Code:
claude mcp add futuresearch --scope project --transport http https://mcp.futuresearch.ai/mcp
Then sign in with Google.
Operations
Spin up a team of:
| Role | What it does | Cost | Scales To |
|---|
| Agents | Research, then analyze | 1–3¢/researcher | 10k rows |
| Forecasters | Predict outcomes | 20-50¢/researcher | 10k rows |
| Scorers | Research, then score | 1-5¢/researcher | 10k rows |
| Classifiers | Research, then categorize | 0.1-0.7¢/researcher | 10k rows |
| Matchers | Find matching rows | 0.2-0.5¢/researcher | 20k rows |
See the full API reference, guides, and case studies, (for example, see our case study running a Research task on 10k rows, running agents that used 120k LLM calls.)
Or just ask Claude in your interface of choice:
Label this 5,000 row CSV with the right categories.
Find the rows in this 10,000 row pandas dataframe that represent good opportunities.
Rank these 2,000 people from Wikipedia on who is the most bullish on AI.
Web Agents
The base operation is agent_map: one web research agent per row. The other operations (rank, classify, forecast, merge, dedupe) use the agents under the hood as necessary. Agents are tuned on Deep Research Bench, our benchmark for questions that need extensive searching and cross-referencing, and tuned to get correct answers at minimal cost.
Under the hood, Claude will:
from futuresearch.ops import single_agent, agent_map
from pandas import DataFrame
from pydantic import BaseModel
class CompanyInput(BaseModel):
company: str
# Single input, run one web research agent
result = await single_agent(
task="Find this company's latest funding round and lead investors",
input=CompanyInput(company="Anthropic"),
)
print(result.data.head())
# Map input, run a set of web research agents in parallel
result = await agent_map(
task="Find this company's latest funding round and lead investors",
input=DataFrame([
{"company": "Anthropic"},
{"company": "OpenAI"},
{"company": "Mistral"},
]),
)
print(result.data.head())
# Same map, but each agent emits a list of records that fan out into extra rows
# (one row per item, with an `_expand_index` column).
result = await agent_map(
task="List this company's top 5 products",
input=DataFrame([
{"company": "Anthropic"},
{"company": "OpenAI"},
]),
return_table=True,
)
print(result.data.head())
See the API docs, a case study of labeling data or a case study for researching government data at scale.
Sessions