Connect AI agents (MCP)
Firefight ships a Model Context Protocol server, so AI agents like Claude can investigate your incidents directly. An agent connected over MCP can search incidents, pull a full incident timeline, inspect alerts and how they routed, look up ownership in the service catalog, and dry-run your alert routing rules. It can also maintain your catalog, runbooks and routing rules, and resolve approvals, when the credential it uses has permission to. Everything an agent does is recorded under Developer → Activity.
Endpoint
Section titled “Endpoint”The server speaks Streamable HTTP at a single endpoint.
POST https://app.firefight.app/mcpEvery request is self-contained, and all data is scoped to the workspace of the token you authenticate with.
Authenticating
Section titled “Authenticating”There are two ways to connect, depending on what your MCP client supports.
OAuth, for interactive clients
Section titled “OAuth, for interactive clients”Clients that support MCP OAuth, such as Claude Code, connect without you ever handling a token. Add the server and start using it.
claude mcp add --transport http firefight https://app.firefight.app/mcpOn first use, your browser opens Firefight’s consent screen, which names the client asking for access, your workspace, and you. Click Authorize and the client is connected. The client registers itself automatically through dynamic client registration, PKCE is required, and access tokens are short-lived with refresh rotation. The connection acts as you, with the same read access you have in the workspace.
API key, for headless agents
Section titled “API key, for headless agents”Automation cannot click a consent screen, so headless agents and CI pass a Firefight API key as a Bearer token instead. Create one under Settings → API Keys, then configure your client to send it.
claude mcp add --transport http firefight https://app.firefight.app/mcp \ --header "Authorization: Bearer ff_4kWm2xPqR8vNcT6yBhJd3fLzGaU9sEnQoXwA"For Cursor, put the same thing in .cursor/mcp.json.
{ "mcpServers": { "firefight": { "url": "https://app.firefight.app/mcp", "headers": { "Authorization": "Bearer ff_4kWm2xPqR8vNcT6yBhJd3fLzGaU9sEnQoXwA" } } }}Any other MCP client works the same way, either through OAuth discovery at /.well-known/oauth-protected-resource or with the Authorization: Bearer header.
These tools read your workspace and change nothing.
| Tool | What it returns |
|---|---|
search_incidents | Incident summaries, newest first. Filter by status, severity, lifecycle stage, free-text query, and declared-at time range. |
get_incident | One incident in full, by ID or identifier like INC-42. Details, timeline events, postmortem status, and attached alerts. |
search_alerts | Ingested alerts, newest first. Each shows its source, firing status, routing state, the rule that matched, and the incident it attached to. |
search_catalog | Catalog entries with their attributes and relationships, such as which team owns a service. Filter by type, name query, or exact slug. |
evaluate_routing | A dry run of alert routing against hypothetical alert fields. Returns the matching rule, the outcome, and a per-condition trace. Nothing is created or notified. |
search_runbooks | Runbook listings with name, summary, and step count. Filter by a name or summary query. |
get_runbook | One runbook in full, by slug. The complete procedure content, ordered steps, and external link. |
search_approvals | Approval requests and their status. |
Tools that change things
Section titled “Tools that change things”These need a credential with permission to make the change, and every call is recorded.
| Tool | What it does |
|---|---|
upsert_catalog_entry | Creates or updates a catalog entry |
delete_catalog_entry | Removes a catalog entry |
upsert_routing_rule | Creates or updates an alert routing rule |
delete_routing_rule | Removes a routing rule |
update_routing_config | Changes routing configuration |
upsert_runbook | Creates or updates a runbook |
approve_approval | Approves a pending request |
deny_approval | Denies a pending request |
Tools from your integrations
Section titled “Tools from your integrations”Every capability you switch on under Configure → Integrations also appears here, so an agent can query PlanetScale or open a Linear issue through the same connection. Nothing appears until you enable it, and who may call it is set in Permissions. See Connect an integration.
Result caps
Section titled “Result caps”Search tools return 25 results by default and accept a limit of up to 50. When more results exist than the cap allows, the response includes a truncated flag set to true, so agents know to narrow their filters instead of assuming they saw everything. Incident timelines in get_incident are capped at 50 events with their own timeline_truncated flag. Each token may make up to 1,000 MCP requests per minute.
Permissions
Section titled “Permissions”What a connected agent can query depends on the credential it authenticates with.
| Credential | Access |
|---|---|
| OAuth connection | Acts as you, with your access |
| Personal token | Acts as you, with your access |
| Service key | Only what it has been granted, and nothing by default |
Service keys map to tools by resource.
| Tool | Required permission |
|---|---|
search_incidents | incidents: read |
get_incident | incidents: read |
search_alerts | alerts: read |
search_catalog | catalog: read |
evaluate_routing | policies: read |
search_runbooks | runbooks: read |
get_runbook | runbooks: read |
search_approvals | approvals: read |
upsert_catalog_entry | catalog: create or catalog: update |
delete_catalog_entry | catalog: delete |
upsert_routing_rule | policies: create or policies: update |
delete_routing_rule | policies: delete |
update_routing_config | policies: update |
upsert_runbook | runbooks: create or runbooks: update |
approve_approval | approvals: update |
deny_approval | approvals: update |
A tool call without the needed permission returns an error naming the missing permission, and the agent can keep using the tools it does have. See API overview for how keys and permissions work.
Managing connected agents
Section titled “Managing connected agents”Everything connected over OAuth appears under Settings → API Keys in the Connected agents section, where you can revoke any connection. Revoking immediately invalidates its tokens, and the client has to go through consent again to reconnect. Agents using API keys are managed like any other key on the same page. Deactivate or delete the key to cut off the agent.