# MCP Tools Reference All MCP tools exposed by `animus mcp serve`. The current top-level server registers 97 built-in tools across daemon, cost, queue, agent, output, workflow, plugin, skill, subject, logs, tool-discovery, and top-level memory families. These tools allow AI agents to interact with the Animus orchestrator over the Model Context Protocol. Typed application-service tools execute in process; remaining compatibility tools may delegate to an `animus` CLI command. All accept JSON input and return structured results. That headline 97 counts the full management-mode surface. A default agent-injected server (`animus mcp serve` without `--management`) exposes 95: the two `animus.interactions.*` management tools are gated behind `--management` so an agent can never list or answer its own pending approvals. The same server also exposes 6 built-in resources: 3 current `animus://` resources plus 3 legacy `ao://` aliases retained for v0.3 back-compat. Most project-scoped tools accept an optional `project_root` parameter to override the server default. Marketplace tools may omit `project_root` because they operate on the public registry. Plugin mutation tools that touch installed binaries can still accept `project_root` so project-local `.animus/plugins.lock` participates in integrity tracking when present. When a trusted host starts the server with `--require-actor --actor-json`, Animus pins that actor for the server lifetime. Missing or malformed identity stops startup, child commands cannot replace the pin, and the server removes every route whose command/protocol cannot enforce it. The retained surface is workflow run/list/get/control/execute/decisions/checkpoints/manual-phase and config-read operations, workflow output reads, subject list/get/create/update/batch-create/batch-update/next/status, interaction creation/management, actor roster list/get, and tool discovery. Queue operations, config writes, agent memory/messaging/execution, resources, and other global routes are deliberately unavailable rather than silently downgraded. Actor-bound agent roster reads derive profiles from the pinned user's config-source partition. Actor-bound workflow controls conceal unowned ids before performing confirmation or mutation, and actor-bound subject calls use the v2 subject protocol without falling back to legacy v1 methods. See [Actor-bound application contract](../architecture/actor-bound-application-contract.md). **OAuth-protected upstream MCP servers.** Connecting *agents* to OAuth-backed MCP servers is handled by the `animus mcp auth` CLI surface plus the `animus-mcp-proxy` stdio bridge, not by an MCP tool. See [`mcp-oauth.md`](mcp-oauth.md). The proxy is launched automatically for any MCP server configured with an `oauth:` block: `authorization_code` reads from the OS keychain, while `manual_bearer`, `client_credentials`, and `refresh_token` resolve through the OAuth broker. **v0.4.4 note — subject surface is now mandatory for tasks and requirements.** The legacy `animus.task.*` / `animus.requirements.*` / `animus.cloud.*` / `animus.errors.*` MCP tool families were removed. Use the unified `animus.subject.*` tools with `kind=task` or `kind=requirement`; they route through installed `subject_backend` plugins, including the default task/requirement plugins that own Animus-managed local state. External `subject_backend` plugins (Linear, Jira, GitHub Issues, etc.) plug into the same surface and can claim their own `kind`. --- ## MCP Resources (6 resources) `animus mcp serve` enables MCP resources in addition to tools. The built-in resource set is intentionally small and read-only: | Resource URI | Description | |---|---| | `animus://project/tasks` | Project task index as JSON | | `animus://project/requirements` | Project requirement index as JSON | | `animus://project/daemon-events` | Recent daemon events as JSON; supports `?limit=N` | | `ao://project/tasks` | Deprecated alias of `animus://project/tasks` | | `ao://project/requirements` | Deprecated alias of `animus://project/requirements` | | `ao://project/daemon-events` | Deprecated alias of `animus://project/daemon-events` | The `ao://` URIs are advertised and accepted so older clients that cached the pre-v0.4 resource names can still enumerate and read the same data. --- ## Agent Control (12 tools) | Tool | Description | Key Parameters | |---|---|---| | `animus.agent.list` | List configured project agent profiles | `project_root` | | `animus.agent.get` | Get a configured agent profile | `id`, `project_root` | | `animus.agent.run` | Launch an AI agent to execute work | `tool`, `model`, `prompt`, `cwd`, `timeout_secs`, `context_json`, `runtime_contract_json`, `detach`, `run_id`, `project_root` | | `animus.agent.control` | Control a running agent (pause/resume/terminate) | `run_id`, `action` (`pause`, `resume`, `terminate`) | | `animus.agent.status` | Get status of an agent run | `run_id` | | `animus.agent.memory.get` | Read project-scoped agent memory | `agent`, `project_root` | | `animus.agent.memory.append` | Append project-scoped agent memory | `agent`, `text`, `source`, `project_root` | | `animus.agent.memory.clear` | Clear project-scoped agent memory | `agent`, `project_root` | | `animus.agent.message.send` | Send a message on a configured agent channel | `channel`, `from`, `to`, `text`, `workflow_id`, `phase_id`, `project_root` | | `animus.agent.message.list` | List project-scoped agent messages | `channel`, `agent`, `limit`, `project_root` | | `animus.agent.ask` | Ask a human one or more questions and wait for the answer. Two forms: (1) flat single question — `question` + optional `options[]`, returns `{ id, answer, answered_by }`; (2) structured `questions[]` (multi-question / multi-select / described options — gives codex/gemini/opencode parity with claude's native AskUserQuestion channel), each entry `{ question, header?, options:[{ label, description? }], multi_select? }`, returns `{ id, answers: { :