/ask in the web client and through the chat API, over the coded record of the person the question is about. Adding a capability means adding a tool, not another agent.
Every agent runtime other than the bundled one (Claude Desktop, Cursor, an agent loop of your own) reaches the same data through the MCP endpoint and needs nothing from this page.
What a turn can use
Each answer streams as typed blocks (text, reasoning, tool calls and their results, usage), so a client can show the tool trace behind an answer.
Configuration
The agent’s keys have no agent-name suffix. The shipped values live inconfig.llm.yaml; override them in your overlay.
Model selection and keys are described in Configuration.
Replacing the agent
There is one agent slot. A replacement comes from an installed package that declares amirobody.agents entry point, or from a directory listed in AGENT_DIRS; the first class found that defines generate_response becomes the agent for the process. Nothing in the package needs editing.
The contract is two methods. generate_response receives the user the turn is about (already authorized, and possibly a care-circle member rather than the caller), this turn’s messages, and keyword arguments such as language, session_id and timezone; it yields the same typed blocks the shipped agent streams. Accept **kwargs, since the chat layer may add arguments.
mirobody[agent]. The full contract, the block vocabulary and a minimal example plugin are in .