Skip to content

MCP tools

@quarry-systems/agora-mcp is a stdio MCP server that exposes a deliberately narrow, run-time-safe tool surface over an AgoraClient (and, when configured, an OperationsApi). Privileged deploy-time operations (register, assign) and privileged/service orchestrator operations never appear here — see The privilege boundary.

The server registers nine tools, in declaration order (the AGORA_TOOL_NAMES tuple in tools.ts):

These return metadata only — never file contents, system-prompt bodies, secret values, or secret ARNs.

ToolPurposeInputs
agora_capabilities_listList registered capabilities (name, registeredAt, contentHash).none
agora_subagents_listList registered subagents (name, registeredAt, contentHash).none
agora_envs_listList registered env bundles (name, registeredAt, contentHash).none
ToolPurposeInputs
agora_dispatchDispatch a unit of work to a registered subagent on a configured target. Returns a DispatchResult.Required: target, subagent, workerImage. Optional: env, capabilities, addCapabilities, secrets, input, callback, timeoutSeconds, defaultDispatchTimeoutSeconds, retentionDays, resources, dispatchId. (additionalProperties allowed.)
agora_dispatch_describeLook up a previously-sealed dispatch record by id. Returns the full DispatchResult. Throws if purged by retention.Required: dispatchId.
agora_dispatch_cancelRequest cancellation of an in-flight dispatch by id.Required: dispatchId.

These three are pure client-side translators over OperationsApi. Each requires the orch export in agora.config to be configured; without it the tool returns a clear “orchestrator surface not configured” error response.

ToolPurposeInputs
agora_orchestrator_submitSubmit a Run plan to the orchestrator. Returns the run id.Required: plan (object). Optional: actor (defaults to agent:mcp).
agora_orchestrator_statusReturn the latest status OutboxRecord for a run id.Required: runId.
agora_orchestrator_watchPoll and wait for a run to reach a terminal state. Returns the last record seen; bounded by timeoutMs.Required: runId. Optional: timeoutMs (default 25000).

The following are excluded by design and enforced architecturally by a CI allowlist check:

  • any agora_*_register — registration is a privileged deploy-time operation.
  • any agora_*_assign — capability assignment is privileged.
  • agora_orchestrator_cancel — privileged.
  • agora_orchestrator_audit — service-only.
  • agora_orchestrator_serve — CLI-only.

Registration and assignment run through the CLI instead. The reasoning behind keeping privileged operations out of the AI loop is in The privilege boundary.

Errors thrown by client or OperationsApi methods are caught and returned as { content, isError: true } responses. The server surfaces err.message only, never err.stack, so internal file paths and trace frames never leak across the tool boundary.