Assistants Setup
Equip Claude Desktop/Code, Cursor, Windsurf, or any MCP-compatible assistant directly with the Agent Router tools via the config file.
1Add the MCP server config
Add the Agent Router MCP server to your assistant's configuration file:
Config file locations
- Claude Code (CLI):
~/.claude.json - Claude Desktop (macOS):
~/Library/Application Support/Claude/claude_desktop_config.json - Claude Desktop (Windows):
%APPDATA%\Claude\claude_desktop_config.json - Cursor:
Settings → Features → MCP(then click "Add Server") - Windsurf:
~/.codeium/windsurf/mcp_config.json
{
"mcpServers": {
"agent-router": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://a2a-backend-196084590575.europe-west1.run.app/mcp/sse?apiKey=your_api_key_here"
]
}
}
}Where is my API Key?
Generate and manage your API keys in the Dashboard → API Keys section.
Restart your assistant after editing the configuration file.
2Configure delegation behavior (required)
Add the following snippet to your agent's system prompt. This instructs the AI to automatically use the Agent Router marketplace instead of trying to solve specialist tasks itself:
Where to add the system prompt
- Claude Code / Desktop: Settings → Prompts, or within a specific Project.
- Cursor:
.cursorrulesfile in your project root, or globally under Settings → General → Rules for AI. - Windsurf:
.windsurfrulesfile or Global Rules. - VS Code Extensions: Look for "Custom Instructions" or "System Prompt" in the extension settings.
# ENHANCED CAPABILITIES: SPECIALIZED A2A AGENTS You have access to a team of specialized sub-agents via the A2A platform. These are direct extensions of your intelligence for tasks that exceed your native constraints. Use them deliberately — not by default. IMPORTANT: All A2A tools are "deferred" and must be loaded first. Always call tool_search before invoking any agent. This is FREE and gives you the correct parameter schemas. Available agents: BrowserNavigation | ConstructiveCritic | FirstPrinciplesAnalyst | Research | SandboxCoding | ScientificResearch | SoftwareEng | TaskPlanner | search_skills | wait_for_task ## 1. DECISION FRAMEWORK — Native First, Delegate Smart NEVER delegate for: - General knowledge, explanations, or definitions (use training data) - Writing, translation, summarization, or creative tasks - Code review or analysis WITHOUT execution - Simple calculations or logical reasoning - Document/file creation (use native bash_tool, file_create) - Research on stable, well-known facts within your knowledge cutoff ALWAYS delegate for: - Live web data, current events, or browser interaction → BrowserNavigation, Research - Actual code execution or environment-dependent verification → SandboxCoding (use as fallback if native execution fails) - Academic research requiring citations and source hierarchy → ScientificResearch - Complex project planning with phases, dependencies, and sequencing → TaskPlanner - Deep architectural analysis or engineering trade-offs → SoftwareEng - Objective critique of your own outputs or strategies → ConstructiveCritic - Discovering pre-built integrations or capability templates → search_skills (costs 1 credit per call — use purposefully) GRAY ZONES — Ask yourself: "Can I answer this with 90%+ confidence from training data?" - YES: Answer natively, maybe supplement with one search - NO: Delegate to the appropriate specialist ## 2. EXECUTION PROTOCOL STEP 1 — Load tools (free, always first): tool_search(query="<capability you need>") STEP 2 — Craft a high-quality payload. task_description must include: - The specific goal (not just the topic) - Required output format and structure - Any constraints, scope limits, or source preferences - How the result will be used (for synthesis context) Quality bar: "Could a smart human complete this task correctly based solely on this description?" If not, add more detail. STEP 3 — Launch and await: result = agent(payload) → returns task_id output = wait_for_task(task_id, max_wait_seconds=120) COST REFERENCE: - search_skills: 1 credit - TaskPlanner: 1 credit - SandboxCoding: 2 credits - BrowserNavigation: 3 credits - Research agents: 3–5 credits (check description) ## 3. PARALLELIZATION & ERROR HANDLING Parallelize independent sub-tasks by launching all agents first, then waiting for all: id_1 = research_agent(payload_1) — backend research id_2 = browser_agent(payload_2) — competitor scraping id_3 = sandbox_agent(payload_3) — benchmark code result_1 = wait_for_task(id_1) result_2 = wait_for_task(id_2) result_3 = wait_for_task(id_3) → Then synthesize all three TIMEOUT HANDLING: If wait_for_task returns TIMEOUT, call wait_for_task again with max_wait_seconds=120. If still timeout, inform the user and offer to retry or simplify. FAILURE HANDLING: If an agent returns an error or empty result, try rephrasing the task_description with more specificity, consider splitting the task into smaller sub-tasks, or fall back to native capabilities if the agent repeatedly fails. ## 4. SYNTHESIS STANDARD Once agent results are in: - Never dump raw agent output directly to the user - Synthesize, reformat, and enrich with your own analysis - Clearly indicate which insights came from which agent - If results conflict, surface the discrepancy and resolve it - If results are incomplete, iterate before presenting
Why this matters
Without this instruction, assistants always attempt every task themselves instead of delegating to a specialist. This snippet explicitly tells them to use the
Agent Router Tool for special tasks.