Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
104 commits
Select commit Hold shift + click to select a range
7f8921e
workflow: Agents as Tools — BASIC agents with child_agents expose chi…
iqdoctor Nov 8, 2025
438e651
Merge pull request #1 from evalstate/main
iqdoctor Nov 8, 2025
aedfdda
workflow: suppress child agent display + simplify aggregated view for…
iqdoctor Nov 8, 2025
82df4ba
fix: suppress child display via config modification, not RequestParams
iqdoctor Nov 8, 2025
5e4f855
display: show detailed I/O for each agent tool call/result
iqdoctor Nov 8, 2025
7937c73
feat: add instance count indicator for parallel agent execution
iqdoctor Nov 8, 2025
2f5f5f9
refactor: optimize AgentsAsToolsAgent code
iqdoctor Nov 8, 2025
643ea39
feat: add instance IDs to progress + restore child tool logs
iqdoctor Nov 8, 2025
cae1155
fix: use _name attribute instead of name property for instance IDs
iqdoctor Nov 8, 2025
132c76e
style: align code style with library conventions
iqdoctor Nov 8, 2025
0a137a5
style: change instance ID format from ': 1' to '#1'
iqdoctor Nov 8, 2025
bd7c4c9
ui: show instance count in tool name instead of metadata
iqdoctor Nov 8, 2025
f7f19af
fix: show individual instance numbers [1], [2] in tool headers
iqdoctor Nov 8, 2025
c9aa9b9
feat: add separate progress panel lines for parallel instances
iqdoctor Nov 8, 2025
d1afe69
fix: show tool call status in instance lines, not parent
iqdoctor Nov 8, 2025
15cb923
fix: explicitly enable show_tools for child agents
iqdoctor Nov 8, 2025
4143015
fix: hide parent line during parallel execution, only show instances
iqdoctor Nov 8, 2025
7905edb
docs: add comprehensive README for agents-as-tools pattern
iqdoctor Nov 8, 2025
85610a4
fix: hide instance lines immediately when each task completes
iqdoctor Nov 8, 2025
e3783db
fix: use consistent progress_display instance for visibility control
iqdoctor Nov 8, 2025
2b922b5
fix: prevent display config race conditions in parallel instances
iqdoctor Nov 8, 2025
5c503db
docs: update module documentation with latest implementation details
iqdoctor Nov 8, 2025
963275e
fix: duplicate labels, final logs without instance index
iqdoctor Nov 8, 2025
eba9fab
fix: label truncation and display config restoration
iqdoctor Nov 8, 2025
10cfe75
fix: move display suppression to run_tools before parallel execution
iqdoctor Nov 8, 2025
e58b465
fix: create new display objects for suppression instead of just modif…
iqdoctor Nov 8, 2025
20afe3b
fix: eliminate name mutation race condition in parallel execution
iqdoctor Nov 8, 2025
12459ad
fix: remove agent renaming to eliminate race condition
iqdoctor Nov 8, 2025
c937913
fix: suppress child progress events to eliminate duplicate panel rows
iqdoctor Nov 8, 2025
6df253c
fix: use NullDisplay to completely suppress child output during paral…
iqdoctor Nov 8, 2025
9cef0a6
fix: also suppress child logger to prevent progress events
iqdoctor Nov 8, 2025
63ae11e
fix: also suppress aggregator logger to block MCP tool progress events
iqdoctor Nov 8, 2025
73d3d04
refactor: simplify child suppression to config-only approach
iqdoctor Nov 8, 2025
8a48d30
docs: add comprehensive documentation for parallel execution approach
iqdoctor Nov 8, 2025
37bfacf
refactor: first instance runs normally, only instances 2+ get indexed
iqdoctor Nov 8, 2025
37d3198
feat: all instances visible in panel, only streaming suppressed for 2+
iqdoctor Nov 8, 2025
4b26a70
Merge pull request #2 from evalstate/main
iqdoctor Nov 9, 2025
f1783c5
feat: detach agents-as-tools instances and harden MCP task groups
iqdoctor Nov 23, 2025
1520a5b
feat: detach agents-as-tools instances and harden MCP task groups
iqdoctor Nov 23, 2025
4c4686d
Merge branch 'evalstate:main' into main
iqdoctor Nov 23, 2025
81bb7a9
agents-as-tools: clean debug hooks and finalize progress UI
iqdoctor Nov 23, 2025
de07f01
agents-as-tools: clean progress wiring and restore upstream listeners
iqdoctor Nov 24, 2025
c5b8856
Hybrid Agents-as-Tools MCP-aware agent
iqdoctor Nov 24, 2025
8adcd3b
Added §3.3 “Minimal usage sample (for docs and examples)”
iqdoctor Nov 24, 2025
5bf73cb
Agents-as-Tools hybrid MCP agent: sync with main and fix tool execution
iqdoctor Nov 24, 2025
43c210e
Add PMO Agents-as-Tools examples and tidy AgentsAsToolsAgent
iqdoctor Nov 24, 2025
e2779f9
Document AgentsAsToolsAgent and polish parallel tool UI
iqdoctor Nov 24, 2025
57295ff
Finalize Agents-as-Tools PMO examples and hybrid agent docs
iqdoctor Nov 24, 2025
94fbb4d
Merge branch 'evalstate:main' into main
iqdoctor Dec 8, 2025
0b9d0e9
Add Vertex ADC support and preview model fallback
iqdoctor Dec 11, 2025
ad777c6
Add vertex config tests for Google provider
iqdoctor Dec 11, 2025
4a64194
Cover Vertex dict config client init and preview fallback
iqdoctor Dec 11, 2025
6887013
remove ESC key handling complexity; ctrl+c still cancels generation (…
evalstate Nov 24, 2025
d03b395
version bump
evalstate Nov 24, 2025
b99c817
integration test (#521)
evalstate Nov 26, 2025
b18d887
update tool timing saving, including transport channel (#523)
evalstate Nov 27, 2025
d1e43ac
allow absolute paths for skills directories (#524)
evalstate Nov 28, 2025
04bcdd6
Feat/model env option (#526)
evalstate Nov 28, 2025
df73552
Feat/reasoning streaming (#529)
evalstate Nov 29, 2025
b6e7e21
Implement Agent Client Protocol tools for CLI (#528)
evalstate Nov 29, 2025
5cfc332
fix: Centralize robust API retry logic in FastAgentLLM & preserve con…
usamaJ17 Nov 29, 2025
c9f5ed7
Dev/0.4.2 (#530)
evalstate Nov 30, 2025
a9eb62e
replaced with env option
evalstate Nov 30, 2025
8be272d
Compare session termination handling implementations (#532)
evalstate Dec 1, 2025
ce8aba4
Feat/auth status acp (#533)
evalstate Dec 1, 2025
ad9a5a8
Improve acp progress (#534)
evalstate Dec 1, 2025
55e1978
Simplify /status error handling output when no errors (#535)
evalstate Dec 1, 2025
437a828
version bump
evalstate Dec 1, 2025
682ea2b
Add custom refinement instruction on @fast.evaluator_optimizer (#538)
bandinopla Dec 3, 2025
0eedf62
feat: Add video support for Google Gemini provider (#537)
lucidprogrammer Dec 3, 2025
53d9da1
Feat/acp sdk update (#543)
evalstate Dec 6, 2025
15df763
MCP SEP-1330: Elicitation schema updates for Enums (#324)
chughtapan Dec 6, 2025
bacf73b
tidy up root; sdk bumps
evalstate Dec 6, 2025
7f8fecf
OpenAI Providers custom HTTP Headers (#544)
evalstate Dec 6, 2025
82e66e1
otel off
evalstate Dec 6, 2025
25fed48
fix assertions
evalstate Dec 6, 2025
0af23e1
version bump
evalstate Dec 6, 2025
1ed9c31
Review ACP implementation with new SDK Union types (#549)
evalstate Dec 8, 2025
2c06f3e
feat: detach agents-as-tools instances and harden MCP task groups
iqdoctor Nov 23, 2025
85d6cf3
Agents-as-Tools: options struct, history safety, call_tool compat, UI…
iqdoctor Dec 11, 2025
a6c0571
Agents-as-Tools: options plumbing and limits
iqdoctor Dec 11, 2025
79beacb
Agents-as-Tools: options keyword-only
iqdoctor Dec 11, 2025
4e7b6d6
Agents-as-Tools: compact display suppression and cleanup
iqdoctor Dec 11, 2025
cd1e161
Agents-as-Tools: implement history fork/merge modes
iqdoctor Dec 11, 2025
4e5b304
Agents-as-Tools: simplify display suppression setup
iqdoctor Dec 11, 2025
46f1812
Merge remote-tracking branch 'upstream/main' into feat/agents-as-tools
iqdoctor Dec 11, 2025
2ca1727
Agents-as-Tools: trim redundant import and reuse totals
iqdoctor Dec 11, 2025
7e55e7f
Merge remote-tracking branch 'origin/fix/vertex-prio-and-models' into…
iqdoctor Dec 11, 2025
913f6fb
Docs/options: clarify AgentsAsTools defaults; move decorator kwargs
iqdoctor Dec 11, 2025
605e806
Agents-as-Tools: rename tool options payload
iqdoctor Dec 11, 2025
3afe3f2
Agents-as-Tools: drop legacy tool_options fallback
iqdoctor Dec 11, 2025
a157b3f
Docs: mark Agents-as-Tools plan items completed
iqdoctor Dec 11, 2025
93f6d22
Docs: move completion markers to start
iqdoctor Dec 11, 2025
547e263
Docs: drop per-instance futures from Agents-as-Tools plan
iqdoctor Dec 11, 2025
921e443
Docs: document Agents-as-Tools options and merged tool surface
iqdoctor Dec 11, 2025
aa98f3f
Tests: cover Agents-as-Tools list/run/error paths
iqdoctor Dec 11, 2025
acbd787
Docs: mark tool merge complete in Fix plan
iqdoctor Dec 11, 2025
17a8546
Tests: cover nested Agents-as-Tools instance labeling
iqdoctor Dec 11, 2025
f5a2fb2
Agents-as-Tools: add correlation metadata for progress/tool logs
iqdoctor Dec 11, 2025
e315782
Chore: fix imports after lint
iqdoctor Dec 11, 2025
080fd41
Merge branch 'main' into feat/agents-as-tools
evalstate Dec 14, 2025
f8e1206
remove debug print
evalstate Dec 14, 2025
58ba15d
update tool display to show subagent label
evalstate Dec 14, 2025
f594e24
updated lockfile
evalstate Dec 14, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 55 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,61 @@ uv run workflow/chaining.py --agent post_writer --message "<url>"

Add the `--quiet` switch to disable progress and message display and return only the final response - useful for simple automations.

### Agents-as-Tools (child agents as tools)

Sometimes one agent needs to call other agents as tools. `fast-agent` supports
this via a hybrid *Agents-as-Tools* agent:

- You declare a BASIC agent with `agents=[...]`.
- At runtime it is instantiated as an internal `AgentsAsToolsAgent`, which:
- Inherits from `McpAgent` (keeps its own MCP servers/tools).
- Exposes each child agent as a tool (`agent__ChildName`).
- Merges MCP tools and agent-tools in a single `list_tools()` surface.
- Supports history/parallel controls:
- `history_mode` (default `fork`; `fork_and_merge` to merge clone history back)
- `max_parallel` (default unlimited), `child_timeout_sec` (default none)
- `max_display_instances` (default 20; collapse progress after top-N)

Minimal example:

```python
@fast.agent(
name="NY-Project-Manager",
instruction="Return current time and project status.",
servers=["time"], # MCP server 'time' configured in fastagent.config.yaml
)
@fast.agent(
name="London-Project-Manager",
instruction="Return current time and news.",
servers=["time"],
)
@fast.agent(
name="PMO-orchestrator",
instruction="Get reports. Separate call per topic. NY: {OpenAI, Fast-Agent, Anthropic}, London: Economics",
default=True,
agents=[
"NY-Project-Manager",
"London-Project-Manager",
], # children are exposed as tools: agent__NY-Project-Manager, agent__London-Project-Manager
# optional knobs:
# history_mode=HistoryMode.FORK_AND_MERGE to merge clone history back
# max_parallel=8 to cap parallel agent-tools
# child_timeout_sec=600 to bound each child call
# max_display_instances=10 to collapse progress UI after top-N
)
async def main() -> None:
async with fast.run() as agent:
result = await agent("Get PMO report")
print(result)


if __name__ == "__main__":
asyncio.run(main())
```

Extended example is available in the repository as
`examples/workflows/agents_as_tools_extended.py`.

## MCP OAuth (v2.1)

For SSE and HTTP MCP servers, OAuth is enabled by default with minimal configuration. A local callback server is used to capture the authorization code, with a paste-URL fallback if the port is unavailable.
Expand Down
Loading
Loading