native-agent-router
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@native-agent-routerImplement parse_flag() in flags.py per the docstring; only modify flags.py"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Native Agent Runtime Router (NAR)
English | 简体中文
Route coding tasks from an orchestrator agent (Codex / opencode / Claude Code) to native CLI worker agents (ZCode, any ACP-compatible agent) through a small, deterministic, model-free kernel.
The kernel never calls a model. It handles task state, bounded waiting, workspace locking, fixed verification, one pre-authorized repair, cancellation with confirmation, budgets, recovery, usage accounting and per-agent scoring — so the orchestrator spends its tokens on judgment, not on polling and log-shuffling.
Orchestrator (Codex / opencode / Claude Code)
| MCP (5 stable tools) or CLI (`nar`)
v
Model-free kernel: tasks, locks, verification, repair, budget, recovery
v
Pluggable native adapters
├── zcode-native (ZCode app-server protocol 0.16, verified live on 0.16.5)
├── acp-generic (Agent Client Protocol, verified live on opencode 1.18.15)
└── your adapter (small class, see docs/BACKENDS.md)More native agents are being supported…
MCP:
nar-mcpexposes exactly five tools:agents,run,wait,inspect,cancel. New backends are added by config, not by new tools.CLI:
narshares the same kernel (debugging, scripting, humans).Token discipline: compact results by default; full logs/diffs on disk, paged via
inspect; deterministic scoring per task (zero tokens) feeds routing.
Install
Requires Python >= 3.10. For the ZCode adapter: Node.js >= 22 and the ZCode
desktop app (or its CLI on PATH). For ACP agents: any ACP server binary.
pip install native-agent-router # or: pipx install native-agent-router
# from a clone:
pip install -e .Verify environment and discovery:
nar doctornar doctor prints what it found (ZCode bundle, node, git) and what to do if
something is missing. It never prints credentials.
Related MCP server: peer-cli-mcp
Quickstart
Create the config (optional — auto-discovery works without it):
mkdir -p ~/.native-agent-router
cp config.example.json ~/.native-agent-router/agents.jsonList agents, submit a complete work unit, wait, inspect:
nar agents
nar run zcode "Implement parse_flag() in flags.py per the docstring; only modify flags.py" \
/abs/path/to/project --mode build --policy allow --scope flags.py --verify "python -m pytest -q" --wait 600
nar wait <task_id>
nar inspect <task_id> summary
nar inspect <task_id> diagnose # sanitized, shareable error reportContinue the SAME native session for follow-up work on the same module:
nar run zcode "Now handle the --verbose edge case we discussed" /abs/path/to/project \
--session-ref <previous_task_id> --mode build --policy allow --verify "python -m pytest -q"Configuration (the teaching section)
Config file lookup order: --config flag → NAR_CONFIG env →
<home>/agents.json (home = NAR_HOME env or ~/.native-agent-router) →
built-in defaults + auto-discovery.
Top-level settings
Key | Default | Meaning |
| 120 | default bounded block for |
| 3600 | cap on a single |
| 1800 | default per-turn timeout |
| 600 | timeout per verification command |
| 12000 | result summary budget returned to the orchestrator |
| true | one pre-authorized targeted repair per task |
| false | verify commands run without a shell (argv / |
| false | fail-closed: refuse to run a worker in a non-git workspace so changes are always auditable |
Agents
Every task must name an agent_id explicitly. There is no global
"selected backend" that other calls could silently change.
Key | Applies to | Meaning |
| all |
|
| all | set false to hide an agent |
| acp-generic | argv that starts the ACP server, e.g. |
| acp-generic | some ACP servers want |
| both | model selection (see below) |
| acp-generic | CLI-arg model injection template, e.g. |
| zcode-native | ZCode provider id from your own |
| zcode-native | e.g. |
| zcode-native |
|
| both |
|
| zcode-native | native tool-set restriction, e.g. |
| zcode-native |
|
| zcode-native |
|
| both | extra env for the agent subprocess (do NOT put secrets in here; they land in config files) |
Model selection
ZCode (
zcode-native): setprovider+model(+ optionalthought_level). NAR builds ZCode 0.16'sruntimeModelpayload from your own~/.zcode/v2/config.jsonand passes it inside the protocol only. No credential is ever copied to disk by default, no provider/base URL/billing channel is changed, and coldsession/resumeworks (verified live on 0.16.5).ACP agents (
acp-generic): NAR first tries the ACP-native path —session/set_config_option/session/set_model(works with opencode, whosesession/newadvertises amodelconfig option) — then falls back tomodel_argsCLI substitution (e.g.gemini --experimental-acp --model X).
ZCode discovery (how zcode.cjs is found)
Order: ZCODE_BIN env → zcode on PATH → Windows registry uninstall entries
(InstallLocation) → %LOCALAPPDATA%\Programs\ZCode → Program Files\ZCode on
every drive. If none match, nar doctor tells you exactly what to set. The
desktop app does not add its CLI to PATH — that is normal.
Credentials, honestly
credentials: "auto" reads (read-only) the provider you already configured in
the ZCode desktop app and passes the same provider/model/base-URL/key to the
headless app-server in the protocol payload only. NAR never logs keys,
never uploads them anywhere, never switches billing channels, and never
bypasses authentication or plan limits. If you prefer a private session store,
set zcode_home: "isolated" (documents trade-offs in docs/SECURITY.md).
MCP integration
Run nar-mcp over stdio. Examples:
Codex (~/.codex/config.toml):
[mcp_servers.native-agent-router]
command = "nar-mcp"
args = []opencode (opencode.json in your project or ~/.config/opencode/):
{ "mcp": { "native-agent-router": { "type": "local", "command": ["nar-mcp"], "enabled": true } } }Claude Code (.mcp.json):
{ "mcpServers": { "native-agent-router": { "command": "nar-mcp" } } }Then ask your orchestrator, in one sentence:
"Run agents, then run this task to zcode with scope and verify, and
wait for it." See skill/native-agent-router/SKILL.md for the delegation
rules you can drop into any agent's skill folder.
The five MCP tools
Tool | Purpose |
| configured agents + capabilities + score stats (routing data) |
| submit one complete work unit (goal/scope/forbid/verify/budget/mode/session_ref) |
| bounded block until terminal/blocked; never busy-polls |
| paged on-demand reads: status/summary/diff/verify/log/raw/usage/diagnose |
| request stop and report whether it was confirmed |
run returning means submitted, not done. Only
succeeded|failed|cancelled|blocked|interrupted are final. On blocked the
kernel keeps the workspace lock and watches the native session until a real
terminal event arrives (or you cancel/kill).
CLI reference
nar agents | doctor | list
nar run <agent_id> <goal> <workspace> [--scope ...] [--verify "cmd"] [--mode build]
[--policy allow|deny] [--session-ref TASK] [--timeout N] [--wait N]
[--budget N] [--idempotency-key K] [--no-repair]
nar wait <task_id> [--timeout N]
nar inspect <task_id> [status|summary|diff|verify|log|raw|usage|diagnose] [--offset N] [--limit N]
nar cancel <task_id>
nar kill <task_id> --yes # force: terminate agent + release lock (user boundary)
nar stats [agent_id] # deterministic per-agent score statisticsTests
pip install -e ".[dev]"
pytest -q # 64 tests, no model calls, no network
pytest -q -m real # opt-in: hits your real installed agents (spends tokens!)Docs
ARCHITECTURE.md · BACKENDS.md · VERIFY.md · BENCHMARK.md · SECURITY.md · ROLLBACK.md · Skill
Status & honesty
Verified live on this machine: ZCode 0.16.5 (read-only, native resume, edit+verify, permission handling, real usage), opencode 1.18.15 over ACP (handshake, model switch, resume). Evidence paths in docs/VERIFY.md.
Not yet verified here: Gemini CLI (not installed), Claude Code as ACP (installed but currently unusable per user), Codex as orchestrator client.
No claim of "optimal" or fixed savings percentage: see BENCHMARK.md for what was measured and what wasn't.
MIT licensed. Independent community project; not affiliated with Z.AI/ZCode, OpenAI Codex, or SST/opencode.
Available Tools
5 toolsagentsA
List configured worker agents and their capabilities (adapter type, transport, native session resume support, usage accounting quality) plus per-agent SCORE STATS (avg_score, success_rate, repair_rate, out_of_scope_rate, blocked_rate, avg_tokens, median_duration_sec, last_tasks). Use the stats to route work: high-score agents for hard units, cheaper/lower-score agents for well-specified mechanical units. Use this before run() to pick a valid agent_id.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the behavioral burden. The verb 'List' clearly signals a read-only operation, and the description discloses the exact output categories and stats. It does not mention staleness or permission requirements, but those are minor for a zero-parameter enumeration tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is lengthy but dense and purposeful: it front-loads the core list action, then presents output fields and routing strategy. Some field enumeration overlaps with the output schema, but the added interpretation and usage guidance justify the length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter listing tool with an output schema and a clear follow-up action (run), this description is complete. It tells the agent what it will receive, how to interpret the stats, and how to apply them when selecting an agent_id. Nothing essential is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and schema description coverage is 100%, so there is no parameter burden for the description to compensate for. The description correctly focuses on output semantics and usage rather than input semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'List configured worker agents and their capabilities' — a specific verb and resource — and enumerates the exact stats returned. It also distinguishes itself from lifecycle siblings by explicitly positioning agents as the discovery step before run().
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It says explicitly to use this before run() to pick a valid agent_id, and gives a concrete routing heuristic: high-score agents for hard units, cheaper/lower-score agents for well-specified mechanical units. This is actionable guidance for when and how to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancelA
Request cancellation and report whether the stop was CONFIRMED by the native runtime (confirmed=true only on an observed terminal/exit). A cancel request alone is not a stop.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It reveals a critical non-obvious trait: confirmed=true is only set on an observed terminal/exit, and the cancel request itself does not guarantee a stop. This is genuinely useful runtime semantics. It does not mention output format or whether the call blocks, but the core behavior is well disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two tightly written sentences. The first states the primary action; the second delivers a crucial caveat that prevents misinterpretation. There is no filler, no repetition of the tool name, and the most important semantic distinction is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with no output schema and no annotations, the description covers the essential cancellation semantics well. However, it leaves gaps: it does not define the return shape or clarify whether the reported confirmation is immediate or requires polling. These omissions are notable because there is no output schema for the agent to lean on.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It never explains the task_id parameter beyond implying it identifies what to cancel. There is no mention of how to obtain the ID, what format it must take, or whether it must come from a run call. The agent can only infer the parameter's role from the tool name and general context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: "Request cancellation and report whether the stop was CONFIRMED by the native runtime." It precisely scopes the tool's behavior and distinguishes it from siblings like run, wait, and inspect. The added clarification that a cancel request alone is not a stop removes ambiguity about what the tool actually accomplishes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance about when to call this tool versus alternatives such as wait or inspect. It implies cancellation happens after a task is running, but it never says whether this should follow a run call, whether wait is needed to confirm the stop, or under what conditions cancellation is appropriate. The agent is left to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspectA
Read task details on demand (logs/diffs stay on disk; read slices here). what: status | summary | diff | verify | log | raw | usage | diagnose.
diagnose returns a compact SANITIZED report (secrets/emails/blobs redacted, size-bounded) with a stable
codeand actionablehints— safe to share.
| Name | Required | Description | Default |
|---|---|---|---|
| what | No | status | |
| limit | No | ||
| offset | No | ||
| task_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral burden. It explicitly discloses that logs/diffs stay on disk, that inspect reads slices rather than whole artifacts, and that `diagnose` returns a sanitized, size-bounded report with redacted secrets/emails/blobs and a stable `code` + `hints`. These are genuinely useful, non-obvious behavioral details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded with the core purpose, and uses a short list plus one focused bullet for the special `diagnose` behavior. Every sentence earns its place without redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read tool with no output schema and no annotations, the description covers purpose, allowed `what` values, disk behavior, and the important sanitization guarantee for `diagnose`. It could elaborate on the return shape of the other `what` variants and on offset/limit semantics, but the information provided is sufficient for basic correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides zero parameter descriptions and no enums, so the description's explicit `what: status | summary | diff | verify | log | raw | usage | diagnose` list adds real selection value. It does not explain `task_id`, `limit`, or `offset` in detail, but 'read slices here' and the default values make their roles inferable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a direct verb and resource: 'Read task details on demand,' and then enumerates the concrete read slices via the `what` list. This clearly distinguishes `inspect` from the process-oriented sibling tools (`run`, `wait`, `cancel`, `agents`).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'on demand' signals that inspect is the async/read-side counterpart to running or waiting, and the sibling names make the operational contrast obvious. It does not explicitly name alternatives or exclusion conditions, but the usage context is clear enough for an agent to route correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
runA
Submit a complete work unit to a worker agent and return its task_id.
Requirements:
agent_id: exact id from agents(); every task is explicitly bound to one agent.
goal: full objective, constraints and context in ONE prompt (complete work unit; do not ping-pong per file/line).
workspace: directory path (canonicalized to an absolute path by the kernel).
scope_files: RELATIVE paths the worker may modify (absolute or escaping paths are rejected; enforced by diff audit).
forbid: extra prohibitions.
verify: commands executed by the kernel after the turn; the worker cannot pass by editing them. Prefer list form; string form is arg-split (no shell) unless config verify_allow_shell is on. Exit code 0 = pass.
mode: adapter-specific permission mode (zcode: plan|build|edit|yolo).
session_ref: task_id of a previous task on the SAME agent+workspace to continue its native session. Cross-agent/workspace reuse is rejected.
timeout_sec: per-turn timeout; on timeout the task becomes blocked (never silently resubmitted; the lock is held and a watcher keeps observing).
wait_sec: bounded block until finish (default: return immediately).
budget_tokens: hard token budget; exceeded -> task failed (budget_exceeded).
permission_policy: "deny" (default) or "allow" (auto-allow within this task).
repair_allowed: one pre-authorized targeted repair attempt (default true).
idempotency_key: resubmitting the same key returns the original task.
Returns a snapshot dict with ok/status/code. A run() success only means SUBMITTED, not done — follow with wait()/inspect().
| Name | Required | Description | Default |
|---|---|---|---|
| goal | Yes | ||
| mode | No | ||
| forbid | No | ||
| verify | No | ||
| agent_id | Yes | ||
| wait_sec | No | ||
| workspace | Yes | ||
| scope_files | No | ||
| session_ref | No | ||
| timeout_sec | No | ||
| budget_tokens | No | ||
| repair_allowed | No | ||
| idempotency_key | No | ||
| permission_policy | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, and it delivers. It discloses timeout behavior (task becomes blocked, never silently resubmitted), budget behavior (task failed with budget_exceeded), idempotency, verify enforcement ('worker cannot pass by editing them'), and the critical nuance that run() success only means SUBMITTED, not done. These are behavioral traits well beyond what any scaffold would imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and is organized as a parameter-by-parameter list, making it scannable. It is long, but each line earns its place given 14 parameters and zero schema descriptions. A small deduction for length, but the structure is effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 14 parameters, 0% schema coverage, no output schema, no annotations, and sibling tools for follow-up, the description is remarkably complete. It covers submission semantics, return meaning, timeout/budget edge cases, and explicitly points to wait()/inspect() for next steps. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate entirely, and it does. Each of the 14 parameters is explained with purpose and constraints—e.g., session_ref requires same agent+workspace, verify prefers list form, scope_files must be relative. The description adds meaning far beyond the raw schema names and types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb-resource pair: 'Submit a complete work unit to a worker agent and return its task_id.' This clearly distinguishes the tool from siblings like agents, wait, inspect, and cancel by naming the submission action and the immediate return. The scope is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit requirements and behavior for each parameter, including constraints like 'complete work unit; do not ping-pong per file/line' and 'absolute or escaping paths are rejected.' It also tells the agent to follow up with wait()/inspect() after a successful submission, which is clear when-to-use guidance versus the siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
waitA
Bounded blocking wait for a task to reach a terminal or blocked state. Does not busy-poll. Returns the snapshot dict; if it still runs when the timeout expires, wait_timed_out=true — call again later. 'submitted'/'running' is NOT completion; only status succeeded/failed/blocked/cancelled/interrupted is.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | ||
| timeout_sec | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it discloses non-busy-polling, bounded blocking, the returned snapshot dict with wait_timed_out flag, and the exact terminal status set. It does not mention errors or side effects, but for a wait operation this is solid coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences with no redundancy: core purpose, no busy-poll, return/flag behavior, and terminal-status exclusions. The key scoping statement is front-loaded and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given only two simple parameters and no output schema, the description is complete enough: an agent knows what to pass, what the timeout means, what the response flag indicates, and which statuses count as completion. No critical gap prevents correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description compensates by explaining timeout_sec behavior: if still running, wait_timed_out=true and call again later. It also clarifies that task_id refers to a task awaiting terminal/blocked state. Parameter names and defaults remain in the schema, but the important operational semantics are added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'bounded blocking wait for a task to reach a terminal or blocked state'. It also says 'does not busy-poll', which separates it from inspect (passive status check), run (initiation), and cancel (mutation), so an agent can tell it apart from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear usage context: wait until a terminal status, handle timeout by re-calling later, and do not treat 'submitted'/'running' as completion. It does not explicitly name alternatives or when-not-to-use, but the guidance is strong enough to direct an agent to correct usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
5 tool updates
v1.0.0- First observed
agents - First observed
cancel - First observed
inspect - First observed
run - First observed
wait
TDQS
Each tool covers a distinct lifecycle stage: agents discovers workers, run submits a unit of work, wait blocks for completion, inspect reads task details, and cancel aborts. There is no meaningful overlap or ambiguity between them.
The verb-style names run, wait, inspect, and cancel are clear and consistently formatted. 'agents' is a minor deviation since it is a noun command rather than a verb_noun action like list_agents, but the pattern is still easy to predict.
Five tools is well-scoped for the server's purpose: agent discovery, task submission, waiting, inspection, and cancellation. Each tool has a clear role and none feel redundant.
The core agent-routing and task lifecycle is well covered: discover agents, submit tasks, wait, inspect, and cancel. A minor gap is the lack of a task-listing or search tool if a task_id is lost, but this does not prevent normal workflows.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Discover and call AI agents via MCP. Supports A2A agents and platform agents with async tasks.
Agent-native collaboration network: orchestrate a team of long-running agents from any MCP client.
Your org's AI agents, tasks, runs, search, and brain files as MCP tools and resources.
LLM Orchestration Agent (Mcp)
Related MCP Servers
- AlicenseBqualityFmaintenanceEnables orchestrating multiple AI CLI agents (Claude Code, Codex, Gemini CLI, Copilot CLI) through a unified MCP interface for task delegation, cross-agent comparison, and specialized tools like code review and debugging.141314MIT
- AlicenseNot gradedqualityCmaintenanceMCP bridge for calling local coding-agent CLIs (Codex, Claude) from another agent, enabling bounded tasks like code review, verification, and bug hunting.MIT
- AlicenseAqualityBmaintenanceEnables MCP clients like Claude Code and Codex to delegate coding tasks to Cursor's CLI agent, which implements changes in the workspace and returns clean, structured results for review.31574MIT
- AlicenseAqualityBmaintenanceEnables coding agents to discover, message, poll, cancel, and register remote A2A agents via MCP, with an optional read-only local activity dashboard.5MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/BerineYang/native-agent-router'
If you have feedback or need assistance with the MCP directory API, please join our Discord server