Skip to main content
Tools page in light theme
The Tools page at /tools is the control surface for everything this server exposes over MCP. Every capability an agent can invoke — listing codebases, dispatching builds, querying Jira, sending push notifications — is a tool, and this page lets you browse them, run them by hand with real arguments, expose a restricted subset to outside clients, and audit every call that has been made. Running a tool here is the fastest way to answer “is the integration itself broken, or is the agent calling it wrong?”.

Tool catalog

Tools are grouped by source. Built-in tools ship with the server and cover agents, builds, codebases, commands, worktrees, GitHub, Jira, skills, runs, notifications, push notifications, signing assets, iOS devices, disk space, usage and costs, and debugging. Each external MCP server you add contributes its own group. Expand a tool to see its description and a form generated from its input schema. Fill in the parameters and Run tool to execute it; the complete response — not a summary — appears underneath and can be copied. Parameters render as typed controls where the schema allows it, and fall back to a JSON editor for objects and arrays. The editor validates before it will let you run. Search filters across tool names, descriptions, and server names at once. Refresh tools re-queries every group, which is what you want after changing an external server’s configuration. The built-in Builds group includes import_coverage_report. It records an LCOV or Istanbul file already written inside a worktree as a host-only build and coverage report. See Importing coverage from other test runners for its inputs, limits, and workflow equivalent.

Tool badges

Each tool carries MCP annotations that drive both its badge and whether running it needs confirmation.
A tool with no annotations at all is treated as unknown rather than safe: it is assumed to reach external systems and is not given the read-only shortcut. External MCP servers that omit annotations therefore always prompt.

External MCP servers

The External MCP servers card registers third-party tool providers, whose tools then appear in the catalog and are callable everywhere built-in tools are.
Set a prefix on every external server. Two providers exposing a search tool collide otherwise, and the prefix is applied verbatim — acme_ gives you acme_search, not acme.search.
Header values are saved server-side and never returned to the browser. When editing a server, leaving a header value blank keeps the stored value rather than clearing it. Deleting a server deletes its saved headers with it. If a server cannot be reached, its group appears in the catalog carrying the connection error instead of a tool list — the rest of the catalog keeps working.

Connecting external clients

The Connect external clients card gives you what any Streamable HTTP MCP client needs to call this server: Claude Code, Cursor, or anything else that speaks MCP. The endpoint is /api/mcp on this server’s origin. Pick the Server host from the detected options, or enter a custom host when clients reach the server through a different address than your browser does. The card renders both the server URL and a ready-to-paste client configuration block.

Authentication

Unscoped and preset MCP connections require one of these Better Auth credentials:
TOOLS_API_TOKEN is no longer supported, and there is no anonymous fallback. Create a key on API keys, then replace the old bearer header with X-API-Key.
Run-scoped MCP uses an enrolled agent’s bearer credential instead. User sessions and API keys cannot enter a run scope.

MCP tool presets

Presets are reusable least-privilege sets of built-in tools. Rather than handing a client the full catalog, you define exactly which tools it gets and share a preset-scoped URL: /api/mcp?preset=<id>. Each preset carries a name, an optional description, an icon, and flags for whether it is offered for Plans and Sessions. A preset marked for neither is Direct URL only — usable by clients that have the link, invisible in the run pickers.
Selecting a group when building a preset expands to that group’s tools at that moment. It is a snapshot, not a subscription: tools added to the group later are not granted automatically. That is deliberate — a preset should not quietly widen.
Deleting a preset does not break existing drafts or workflows; references to it are simply ignored on future runs.

Audit

The Audit tab lists tool calls in the order they were made, with enough detail to reconstruct what happened and nothing that would leak what was passed. Search matches tool names, callers, sources, IDs, and hashes. Clear audit deletes completed records while preserving calls still in flight.
The arguments hash is how you correlate without exposing. Identical hashes mean identical arguments, so a retry storm or a duplicated workflow step is visible at a glance even though the payloads are never stored.

Notes

  • The audit log records stable database identifiers, never raw session or API-key material.
  • Client addresses are resolved from CF-Connecting-IP and X-Forwarded-For, falling back to unknown behind a proxy that forwards neither.
  • Confirmation dialogs apply to runs started from this page. Calls arriving over /api/mcp execute directly.

Workflows

Automations that call these same tools, and show up in the audit.

Sessions

Where tool presets are selected for a run.