tools: map in its agent file. Each entry wires one MCP server into the agent’s sessions — the platform’s own coordination tools, a brokered GitHub server, a hosted provider like Notion or Sentry, or any remote MCP server you point at. This page covers every tool kind field by field; read it when you are deciding what an agent should be able to touch.
The tools map
tools: is a map from an alias to a tool spec. The alias must be a valid resource name (1–128 characters of A-Za-z0-9_.-), and the alias workspace is rejected — it is reserved by Claude Code.
.auto/agents/pr-review.yaml
kind:
When a session is created, auto snapshots the agent’s tools into it. The snapshot is immutable: editing the agent later changes future sessions, never a running one.
How the agent sees tool names
The harness namespaces each server’s tools. Claude Code rendersmcp__<server>__<tool> with dots flattened to underscores; Codex uses <server>.<tool>.
The server name depends on the kind:
connectionandmcp_remotetools use your alias as the server name — aliasnotionyieldsmcp__notion__*.- All
localtools are served from one bundled server namedautoregardless of their aliases —chat.sendappears asmcp__auto__chat_send. githubtools are served from a server namedgithub—mcp__github__create_pull_request, the names models already know.
mcp_remote or connection aliases claims auto or github, your alias wins and the reserved server shifts to auto2 / github2.
Fields on every kind
enum
required
One of
local, github, connection, mcp_remote.string
Optional human-readable description (trimmed, non-empty). Documents intent in the YAML; it is not delivered to the sandbox.
boolean
When
true, the tool is dropped from session tool snapshots entirely — the agent never sees it. Useful for switching a tool off without deleting its config, or for suppressing a tool inherited from an import.boolean
On
kind: connection tool specs: when true, apply silently skips the tool instead of failing when the referenced connection has no active grant. The skipped tool is omitted from the applied agent and re-activates on the next apply or sync once the connection exists. Absent preserves the blocking behavior. Chat and mcp_oauth tools carry the same flag on their auth object instead (auth.optional).optional: true is how shared fragments and managed templates declare tools that light up only in projects that have connected the provider. A multi-connection chat tool is all-or-nothing: either every listed connection resolves or the whole tool is skipped.
kind: local — auto’s platform tools
Local tools are implementations bundled with the platform, discriminated on implementation: auto, chat, or ping. They all share the session-scoped platform MCP server; the catalog of what each exposes lives in auto tools and chat tools.
implementation: auto
The platform coordination surface: spawning and messaging sessions, bindings, connections, secrets, webhook endpoints, resource dry runs, and introspection of other sessions. Most agents should carry it.
enum
default:"none"
none, read, or write. Gates the billing-related tools and API scopes; write implies read. The default none means agents that never declared the capability cannot see billing state.object
default:"{ kind: \"none\" }"
Only
{ kind: "none" } is valid; the platform authenticates the session itself.implementation: chat
Unified messaging (chat.send, chat.history, chat.search, reactions, issue reads and updates) across the chat providers the agent is connected to. Supported providers are slack, linear, telegram, and discord.
Unlike the other local implementations, auth is required — the chat tool must name the provider connection(s) it speaks through:
enum
required
connection for a single provider (provider + connection inline), or connections for several (an array of { provider, connection }, minimum one).boolean
Skip the tool at apply time when a referenced connection has no grant. With
kind: connections, all connections must resolve or the tool is skipped as a whole.implementation: ping
A single ping tool that echoes a message back. A connectivity smoke test for the platform MCP endpoint; omit it from production agents.
GitHub check-run tools (
checks.list, checks.begin, checks.success, checks.failure) are not declared in tools: at all — they register automatically for sessions whose spawning trigger declares checks:.kind: github — brokered GitHub access
The GitHub tool wires in auto’s GitHub MCP proxy, which fronts a pinned github/github-mcp-server v1.3.0 deployment. There is no auth field by design: the proxy mints a down-scoped GitHub App installation token per call from the session’s githubApp mounts, so repository credentials never enter the sandbox. Declaring a github tool in an agent that has no githubApp mount is a silent no-op rather than a session failure.
string[]
Optional explicit tool selection (minimum one name), validated against the pinned server’s catalog of 41 upstream tools plus 6 proxy-implemented tools. Naming any tools replaces the default allowlist entirely — list everything the agent needs.
tools applies the curated default allowlist of 24 tools: the pull-request lifecycle (create_pull_request, pull_request_read, update_pull_request, update_pull_request_branch, pull_request_review_write, add_comment_to_pending_review, add_reply_to_pull_request_comment), issue and comment surface (add_issue_comment, delete_issue_comment, upsert_issue_comment, download_comment_attachment, issue_read, issue_write), search (search_pull_requests, search_issues, search_code), repository content (get_file_contents, list_commits, create_branch, create_or_update_file, push_files), and Actions reads (actions_get, actions_list, get_job_logs).
Deliberately excluded from the default — opt in by naming them: merge_pull_request, create_repository, fork_repository, delete_file, actions_run_trigger, list_repository_collaborators, sub_issue_write, release/tag/label reads, search_repositories, and search_commits.
Two tool families are additionally gated by mount capabilities and stay invisible and uncallable even when named explicitly:
- Merge tools (
merge_pull_request,enable_pull_request_auto_merge) require a mount withmerge: writeon the target repository. - Secrets tools (
actions_secret_listneedssecrets: reador better;actions_secret_writeneedssecrets: write).
.auto/agents/staff-engineer.yaml
kind: connection — built-in hosted MCP providers
Connection-backed tools name a provider from auto’s built-in catalog of hosted MCP servers. auto owns the server URL and OAuth mechanics; you authorize the provider once as a connection, then reference the grant by name. At runtime the session’s calls are proxied through auto so the OAuth token is resolved and refreshed per request — the sandbox never holds the provider credential.
string
required
The built-in provider slug (1–64 characters).
string
required
The name of the installed provider connection to use.
Setup is three steps:
1
Discover providers
The Connections page in the web app lists every provider the deployment can start; from a session,
auto.connections.providers.list returns the same catalog.2
Connect one
From the Connections page, run the provider’s consent flow and allow the connection into the project. A session can also start this flow itself with the
auto.connections.start tool.3
Reference it from the agent
kind: mcp_remote — raw remote MCP servers
The escape hatch for servers outside the built-in catalog: any HTTPS Streamable HTTP MCP endpoint, including tenant-owned servers.
string
required
The server URL. Must be
https:; http: is rejected outside explicit local-development parsing.enum
default:"streamable_http"
streamable_http is the only supported transport.enum
default:"none"
none or mcp_oauth. Two further kinds (bearer, provider_oauth) exist in the schema but are refused by apply today — see the warning below.auth.kind: none
For unauthenticated servers. The sandbox connects directly to the URL — no proxy in the path:
auth.kind: mcp_oauth
For servers that implement MCP OAuth. auto completes the OAuth flow once, stores the tokens encrypted (with the same envelope scheme as secrets), and proxies the session’s calls so tokens are refreshed server-side. The agent is never asked to authenticate.
string
required
The name of the project-scoped MCP OAuth credential to create or reuse. The stored credential is bound to the exact server URL it was connected for; changing the URL requires reconnecting.
boolean
Skip the tool at apply time when the named credential does not exist yet.
auto.agent_tools.connect tool: it reports an existing live connection, or returns the authorization URL for a human to open — the outcome is delivered back to the session automatically once the flow completes.
Removing inherited tools
Tools merge by alias across imports: an importing document deep-merges over an imported tool with the same alias, and new aliases append. To drop a tool an import gave you, use theremove control field:
.auto/agents/quiet-agent.yaml
remove.tools deletes by alias from the merged import result before your own fields merge on top. Setting disabled: true on the alias works too and keeps the config visible in the file.
Complete example
A digest agent that reads GitHub through the default allowlist, posts to Slack, reads Linear through the hosted provider, and queries a tenant-owned observability server:.auto/agents/ship-digest.yaml
auto (platform + chat tools), github, linear, and observability — with linear silently absent in projects that have not connected the provider yet.