Agent Discovery
How Discovery Works
Section titled “How Discovery Works”When a reasoner runs, it calls the LLM with tools="discover":
- Agent queries
GET /api/v1/discovery/capabilitieson the control plane - Control plane returns all registered skills and reasoners across the mesh
- SDK converts these to LLM function schemas (name, description, parameters)
- LLM decides which tools/agents to call based on the system prompt
- Calls route through the control plane back to the target agent
- Results flow back to the calling LLM
What the LLM Sees
Section titled “What the LLM Sees”Each discovered capability becomes a callable function:
{ "type": "function", "function": { "name": "fast-analytics-agent__think", "description": "Answer questions about brand/category performance...", "parameters": {"type": "object", "properties": {"trigger": {"type": "string"}}} }}Descriptions
Section titled “Descriptions”Agent descriptions come from the Agent(description=...) constructor and function docstrings. FAM patches the SDK to include these in discovery responses.
Tags on reasoners and skills help the LLM understand capabilities:
AgentRouter(prefix="", tags=["analytics", "brands", "categories"])Cross-Agent Calls
Section titled “Cross-Agent Calls”customer-agent.think → discovers fast-analytics-agent.think → calls it via control plane execution gateway → fast-analytics-agent discovers fast_query tool → calls external FAST API → result flows back through the chainAll calls share a run_id for tracing the full call chain.