Multi-Agent
multi_agent answers one question with a team of web research agents. Each agent researches a different angle, then their findings are synthesized into one structured result.
Use multi_agent for a single question that deserves depth or breadth. To run one agent per row of a table, use agent_map.
Examples
A single question
Pass an empty DataFrame for a standalone question.
import pandas as pd
from futuresearch.ops import multi_agent
result = await multi_agent(
task="Research the current state of formal verification for AI systems",
input=pd.DataFrame(),
)
print(result.data.head())
The team explores different angles in parallel, then synthesizes one answer. By default the result has a single answer column.
Structured output
Pass a response_schema (a JSON Schema object) to get a multi-field result.
import pandas as pd
from futuresearch.ops import multi_agent
result = await multi_agent(
task="Research the current state of formal verification for AI systems",
input=pd.DataFrame(),
response_schema={
"type": "object",
"properties": {
"overall_maturity": {"type": "string"},
"what_works": {"type": "string"},
"key_limitations": {"type": "string"},
"trajectory": {"type": "string"},
},
"required": ["overall_maturity", "what_works", "key_limitations", "trajectory"],
},
)
Explicit directions
By default the research angles are generated for you. Pass directions to set them yourself, up to 6. Each direction is a full brief, not a short title.
result = await multi_agent(
task="Research the major prediction-market platforms",
input=pd.DataFrame(),
directions=[
"Research Polymarket: mechanism, volume, regulatory status, user base.",
"Research Kalshi: mechanism, volume, regulatory status, user base.",
"Research Metaculus and other forecasting-aggregation platforms.",
],
)
Generate a list
Set return_list=True to turn one question into a list. The response_schema describes a single item; the result has one row per item, with an _expand_index column.
import pandas as pd
from futuresearch.ops import multi_agent
result = await multi_agent(
task="Find startups that sell training data, benchmarks, or RL environments to frontier AI labs",
input=pd.DataFrame(),
return_list=True,
response_schema={
"type": "object",
"properties": {
"company_name": {"type": "string"},
"category": {"type": "string"},
"funding_stage": {"type": "string"},
},
"required": ["company_name", "category", "funding_stage"],
},
)
print(result.data) # one row per company
Parameters
| Name | Type | Description |
|---|---|---|
task |
str | Instructions for the research |
input |
DataFrame | UUID | The input. Pass an empty DataFrame for a standalone question, or rows to run the team on each |
session |
Session | Optional, auto-created if omitted |
directions |
list[str] | Optional, up to 6 explicit research angles. Auto-generated from effort_level if omitted |
effort_level |
EffortLevel | LOW, MEDIUM, or HIGH (default: MEDIUM) |
response_schema |
dict | Optional JSON Schema for the synthesized output. Defaults to {answer: string} |
return_list |
bool | If True, emit one output row per item. Pair with a response_schema describing a single item |
join_with_input |
bool | If True, merge the output with the input row (default: True) |
Effort levels
The effort level sets the number of research agents on the question.
LOW: 3 agentsMEDIUM: 4 agents (default)HIGH: 6 agents
Cost and runtime
Cost scales with effort. Across production runs, a single question costs roughly:
| Effort | Typical cost | Typical runtime |
|---|---|---|
| LOW | ~$0.30 | ~3 minutes |
| MEDIUM | ~$0.50 | ~4 minutes |
| HIGH | $0.80 to $2 | ~4 to 6 minutes |
Via MCP
MCP tool: futuresearch_multi_agent
| Parameter | Type | Description |
|---|---|---|
task |
string | The question to research |
directions |
string[] | Optional explicit research angles |
response_schema |
object | Optional JSON Schema for the output |
effort_level |
string | low, medium, or high |
return_table |
bool | Set true when the task asks for a list of items |
Related docs
Guides
Case Studies
Reference
- agent_map to run one agent per row of a table