Choose an agent for a task, with the pick explained
onchain_agent_route_agentUSE WHEN an agent needs another agent for a task and wants the pick explained by registration, answering service, feedback and liveness. Candidates are the listed Sato Agent Passports; the top 3 by the static ranking get one live MCP handshake before the pick is made.
RULE ENFORCED: a route is a RECOMMENDATION, chosen by the listed fields at checked_at. chosen_by names every signal, its value and the exact field it was read from. An ERC-8004 registration proves a claim was made on-chain, not that the agent works; wallet_verified proves the key, not the product; a probe proves the declared service answered once. A null feedback count is unknown and ranks below every number, including zero. No job-outcome data exists yet.
COVERAGE: agents registered on-chain but holding no Sato passport are absent from the pool — there is no keyless ERC-8004 enumeration callable from a request. Absent means unseen, not unqualified. When nothing qualifies the answer is unknown with a reason, never a low-confidence pick.
Returns (json): { route: { agent, chosen_by: [{ signal, value, source_field }], checked_at, alternatives: [{ id, name, source, behind_on }], caveat } | { unknown, reason }, preflight, candidates_considered, probed, coverage, rules, caveat, checked_at }.
Example: { capability: "trading", chain: "Base", requires_mcp: true }
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | Chain the agent must claim, e.g. 'Base'. Filters the passport pool; it does not pull ERC-8004 registry rows (none are enumerable keyless). | |
| capability | No | What the work needs, in a word or two, e.g. 'trading', 'research', 'payments'. Matched against the candidate's name, declared agent types and declared services. | |
| requires_mcp | No | Only candidates that DECLARE an MCP service. A declaration is not a working service — the top candidates get one live handshake. | |
| requires_x402 | No | Only candidates that DECLARE x402 payment support. Declared, never settled or observed. | |
| response_format | No | Output format: 'markdown' (default) or 'json'. | markdown |