NewAgent Observability is live.
Back to directory
Rootly logo

Rootly MCP server: 252 tools, and their cost

The largest tool list measured in this guide, what it costs before the agent asks anything, and how to cut it down.

Connector
Official, local or hosted
Coverage
Incidents, alerts, on-call, workflows, catalogs, status pages
Tools
252, all on by default
Biggest risk for an agent
Tool definitions alone can fill a 200,000-token window

Last verified 1 September 2026 · from Rootly's repository, PyPI, its documentation and the server's own tools/list response

This page is one of 90 in a directory of monitoring and developer tools. Each page checks what an AI coding agent can get out of the tool through its MCP server, the connector that lets the agent query the tool directly.

Summary

The Rootly MCP server registers the largest tool list this guide has captured from a live tools/list. A default connection registers 252 tools, covering incidents, alerts, on-call schedules, workflows, catalogs and status pages. PostHog documents more, at 899, but that figure is read from its documentation rather than counted from a live tools/list response.

That breadth has a price the vendor does not publish. The definitions cost between 127,149 and 245,805 tokens, so at the high end they exceed a 200,000-token context window before the agent asks anything.

The cost is in the schemas rather than the prose. Descriptions average 80 characters; input schemas average 2,143, because the tool list is generated from Rootly's REST API surface.

What is the Rootly MCP server?

It is Rootly's server for the Model Context Protocol. Rootly is an incident management platform, so a connected agent reaches incidents, alerts, escalation paths, on-call schedules and retrospectives.

Most of the 252 tools are generated from Rootly's REST API: list_, get_, create_, update_ and patch_ variants for each resource type. A handful are hand-written for agents, including find_related_incidents and suggest_solutions, which use similarity analysis over resolved incidents.

The generated shape explains both the count and the cost. Each tool inherits the full request schema of the endpoint behind it, which is why schemas run to 2,143 characters while descriptions stay near 80.

Rootly sits in production observability, reaches nothing in code review or CI, and exposes no agent telemetry or spend data.

Part of the workWhat Rootly has hereCan an agent reach it
Code, tests & reviewNoneNothing for code or review. Incidents reference services, not diffs
CI & releaseNoneNo pipeline or deployment tools. Rootly records incidents, not releases
Production observabilityIncidents, alerts, on-call, escalation paths, retrospectivesYes. Core strength. Incident history, alert routing, schedules and post-incident process are all reachable
Agent observability & evalsNoneNo traces, evaluations or prompt versioning for your own agents
AI cost managementNoneNo spend data of any kind is exposed over this connector

For an agent, that means Rootly answers questions about incidents and the people who respond to them. It knows what broke, who was paged and what was decided afterwards. It does not know what the code does or what the service is emitting, so this connector pairs with a telemetry one.

What can an AI agent do with Rootly?

TaskToolsWorksWatch out for
Find recent incidentslist_incidents search_incidents collect_incidentsYescollect_incidents batches multiple pages into one call for audits
Learn from a similar past incidentfind_related_incidents suggest_solutionsYesBoth are similarity analysis over resolved incidents, not a database lookup
Check who is on calllist_shifts check_responder_availability get_oncall_schedule_summaryYescheck_oncall_health_risk reads an external service at oncallhealth.ai
Open or update an incidentcreate_incident update_incidentYescreate_incident takes a scoped field set built for agent workflows
Trace an alert to its incidentlist_incident_alerts get_alert attach_alertYesattach_alert changes state; it links an alert to an incident
Work through the retrospectivelist_retrospective_processes get_retrospective_step list_incident_action_itemsYesSteps and action items are separate resources with separate tools
See what a service is emittingGrafana, Datadog or DynatraceNo, separate serverRootly holds the incident record, not the telemetry behind it

Start with list_endpoints. It returns the Rootly API endpoints the server can reach, which is how an agent narrows 252 tools to the few that matter for a question.

252 tools registered, all on by default

Incidents5
list_incidentssearch_incidentscollect_incidentsget_incidentfind_related_incidents
Incident actions3Write
create_incidentupdate_incidentcreate_incident_event
Alerts4
list_alertsget_alertlist_alert_routeslist_alerts_sources
On-call4
list_shiftsget_oncall_schedule_summarycheck_responder_availabilitycheck_oncall_health_risk
Escalation3
list_escalation_policieslist_escalation_pathsget_escalation_level
Discovery2
list_endpointsget_server_version
Changing anything else4Write
create_workflowupdate_servicecreate_catalog_entityupdate_status_page

Groups are this page's map. The server registers one flat list of 252, of which 112 tool names begin with a writing verb: create_, update_ or patch_. Only 31 appear below. At this size a full inventory is a directory, not a guide. Counted on 24 August 2026 from the released package.

What connecting costs before the first question

A context window is the amount of text a model can hold at once, and connecting uses some of it before the agent asks anything. Every tool the server registers sends its name, description and input schema to the model when the session starts. The tool list is charged whether or not a single tool is called.

252 tools cost between 127,149 and 245,805 tokens. At the high end that is more than a 200,000-token window holds, so the tool list alone does not fit.

The schemas carry it. Descriptions average 80 characters, among the shortest measured here, while input schemas average 2,143 characters because each one mirrors a REST endpoint's full request body.

Tool setToolsTokens (GPT-5.6, GPT-5.5)Tokens (GPT-4, GPT-3.5)Tokens (Claude Haiku 4.5 to Opus 5)Share of a 200,000-token window
Every tool, as registered252133,782 to 230,592127,149 to 230,600185,450 to 245,80563.6% to 122.9%

Encodings: GPT-5.6, GPT-5.5 o200k_base; GPT-4, GPT-3.5 cl100k_base; Claude Haiku 4.5 to Opus 5 count_tokens. Counted 24 August 2026 from tools/list on the released PyPI package 2.3.17, run locally with a placeholder token.

Registration is static, so no Rootly account was involved. Figures cover name, description and input schema. The two models in column one share the o200k_base encoding, so they get one count. The two GPT columns differ by about 81%, because clients serialize the same 252 definitions differently. Reasoning tokens are output, spent per request. The tool list is input, charged once at connection.

The Claude figures are measured rather than encoded. Anthropic publishes no local tokenizer, so the definitions were sent to the API's count_tokens endpoint and a no-tools baseline subtracted. The range covers two tokenizer generations rather than two serializations. Haiku 4.5 and Opus 4.6 sit at the low end, Opus 5 and Sonnet 5 at the high end. The gap between them is about a third.

Rootly MCP server limits: where answers come back incomplete

Every limit below follows from the size of the tool list rather than from anything being broken.

The agent says: I have run out of room. The tool list took the window.

The 252 definitions measure between 127,149 and 245,805 tokens depending on how the client serializes them. On a 200,000-token window the high figure does not fit before a single message is exchanged.

The default connection registers all 252. Rootly documents two ways to cut it down. A hosted slim profile of about 70 tools comes from ?tool_profile=slim or the X-Rootly-Tool-Profile: slim header. An exact allowlist comes from ROOTLY_MCP_ENABLED_TOOLS.

Guard: Filter the tool list in the client, or open a Rootly session only for incident work and close it afterwards.

The agent says: There are no events on that incident. It may have called a neighbouring tool.

Generated names differ by one word across 252 entries: list_incident_events, list_incident_alerts and list_incident_action_items all exist and return different things.

An empty result from the wrong one reads exactly like an empty result from the right one.

Guard: Have the agent call list_endpoints first, and require it to name the tool it used in the answer.

The agent says: This is the same problem as INC-482. That is a similarity score, not a record.

find_related_incidents describes itself as machine-learning similarity analysis, and suggest_solutions derives steps from incidents it judged similar. Neither returns a stored link between the two incidents.

Guard: Have the agent say which of the two tools produced a claim, so a suggestion is not read as a recorded cause.

How to configure Rootly MCP for agents

  1. 1

    Decide whether the full list fits

    At 127,149 tokens on the low measurement, the definitions take most of a 200,000-token window before any work starts. A client that can filter the tool list is the difference between usable and not.

  2. 2

    Start the server with writes switched off

    --no-enable-write-tools, or ROOTLY_MCP_ENABLE_WRITE_TOOLS=false, restricts the server to read-only tools. Scope the API token as well.

  3. 3

    Prefer the hosted endpoint for shared use

    mcp.rootly.com/mcp authenticates with OAuth2, so each person carries their own identity rather than sharing one token.

  4. 4

    Know that one tool leaves Rootly

    check_oncall_health_risk reads On-Call Health at oncallhealth.ai, which is a separate service from the Rootly API.

Paste this into your agent’s instructions

Many of the 252 generated names differ by one word. An agent can call the wrong one, get nothing back, and report that nothing exists. The block makes it name the tool and the filter.

Terminal
When you answer using Rootly MCP tools, state:
- The tool you called and the filters you passed. Many tool
  names differ by one word and return different resources.
- Whether the answer came from find_related_incidents or
  suggest_solutions. Both are similarity analysis, not records.
- Whether you called a create_ or update_ tool, and on what.
Never state that data does not exist. State that none was
returned under the filters above.
Write your answer in ASD-STE100 Simplified Technical
English. Use short sentences with one idea in each.

Do you need the MCP server at all?

Often, yes. Rootly has a documented REST API, and the 252 tools are largely generated from it. For a known lookup, a direct call avoids the whole context charge.

The connector earns its place on the two tools that are not generated. find_related_incidents and suggest_solutions run similarity analysis that the REST API does not expose as a single call.

The hosted endpoint is the third option, and the better one for a team, because OAuth2 keeps each person's identity rather than sharing one token.

Call the API directly for known lookups. Connect the server when the agent needs to reason across incident history.

Rootly MCP server setup

The package runs from PyPI and needs one Rootly API token. The server checks the token's length at startup and refuses to register tools if it is too short, so a dummy value will not get you a tool list.

There is also a hosted endpoint at mcp.rootly.com/mcp, which uses OAuth2 rather than a token in a config file.

Claude Code

One token is all the local server needs.

Terminal
claude mcp add-json "rootly" '{"command":"uvx",
  "args":["rootly-mcp-server"],
  "env":{"ROOTLY_API_TOKEN":"<your-token>"}}'

Cursor

In ~/.cursor/mcp.json. Expect the tool list to take a large share of the window.

Terminal
{"mcpServers":{"rootly":{"command":"uvx",
  "args":["rootly-mcp-server"],
  "env":{"ROOTLY_API_TOKEN":"<your-token>"}}}}

Codex CLI

Codex reads TOML, so the JSON blocks above will not transfer.

Terminal
[mcp_servers.rootly]
command = "uvx"
args = ["rootly-mcp-server"]
env = { ROOTLY_API_TOKEN = "<your-token>" }

Every other client

Each block below is the configuration for one client, with the file path and the key that client expects.

Claude Desktop

macOS ~/Library/Application Support/Claude/claude_desktop_config.json. Windows %APPDATA%\Claude\claude_desktop_config.json. There is no CLI. Edit through Settings, Developer, Edit Config.

Quit and restart fully for changes to load. Paths in args must be absolute. Logs at ~/Library/Logs/Claude/mcp.log.

Terminal
{"mcpServers":{"rootly":{"command":"uvx",
  "args":["rootly-mcp-server"],
  "env":{"ROOTLY_API_TOKEN":"<your-token>"}}}}
Gemini CLI

~/.gemini/settings.json globally, or .gemini/settings.json per project. Key mcpServers. CLI: gemini mcp add.

Terminal
{"mcpServers":{"rootly":{"command":"uvx",
  "args":["rootly-mcp-server"],
  "env":{"ROOTLY_API_TOKEN":"<your-token>"}}}}
VS Code Copilot

.vscode/mcp.json per workspace, or your user profile. CLI: code --add-mcp.

Terminal
{"servers":{"rootly":{"command":"uvx",
  "args":["rootly-mcp-server"],
  "env":{"ROOTLY_API_TOKEN":"<your-token>"}}}}

The key is `servers`, not `mcpServers`. VS Code is the only client that uses that name, and copying a config from anywhere else fails silently.

Windsurf

~/.codeium/windsurf/mcp_config.json, which is the path Windsurf documents. Key mcpServers, the same JSON shape as Cursor, carrying the same API token.

Zed

~/.config/zed/settings.json, carrying the same API token as the blocks above.

The key is `context_servers`. Zed does not call them MCP servers in config, so searching its settings for mcp finds nothing.

Google Antigravity

~/.gemini/config/mcp_config.json globally, or .agents/mcp_config.json per project. Key mcpServers. There is no CLI. Use the /mcp overlay in the editor. Supports stdio, streamable HTTP, SSE and websocket.

Terminal
{"mcpServers":{"rootly":{"command":"uvx",
  "args":["rootly-mcp-server"],
  "env":{"ROOTLY_API_TOKEN":"<your-token>"}}}}
Amp (Sourcegraph)

~/.config/amp/settings.json or .amp/settings.json, carrying the same API token. The amp mcp CLI covers approve, doctor and oauth.

The key is `amp.mcpServers`, namespaced. A bare mcpServers block is ignored.

Cline

~/.cline/mcp.json per the docs. The source also reads ~/.cline/data/settings/cline_mcp_settings.json. Key mcpServers, standard JSON shape, carrying the same API token. Supports stdio, streamable HTTP and SSE.

Goose (Block)

~/.config/goose/config.yaml, carrying the same API token.

YAML, and servers are called `extensions`. Goose does not use the MCP vocabulary in config at all. Add one interactively with goose configure, or per session with goose session --with-extension.

Kiro (AWS)

.kiro/settings/mcp.json per workspace, or ~/.kiro/settings/mcp.json globally. Key mcpServers, standard JSON shape, carrying the same API token.

Warp

~/.warp/.mcp.json or .warp/.mcp.json. Key mcpServers, standard shape, carrying the same API token. Also addable through the /agent-add-mcp skill.

JetBrains Junie

.junie/mcp/mcp.json per project, or ~/.junie/mcp/mcp.json. Key mcpServers, carrying the same API token. Use /mcp in the CLI to manage.

Roo Code

.roo/mcp.json per project. The global file is mcp_settings.json, opened from the Roo Code MCP settings view with Edit Global MCP. Key mcpServers, carrying the same API token.

Continue

.continue/mcpServers/*.yaml, one file per server, carrying the same API token.

YAML, and `mcpServers` is a list, not an object. Every JSON client keys servers by name. Continue takes an array, so a converted config will not parse.

Trae

.trae/mcp.json per project, or paste into the UI under Raw Config (JSON). Key mcpServers, standard shape, carrying the same API token.

Devin

Devin has no config file to edit. Servers are added through a web form in the settings UI, and Devin's documentation states you do not need to write or paste JSON. The block below is the shape those fields describe, shown for reference. Either route uses the same API token.

Hosted endpoint

The hosted server authenticates with OAuth2, so each person connects as themselves instead of sharing one token.

Terminal
{"mcpServers":{"rootly":{
  "url":"https://mcp.rootly.com/mcp"}}}

Read-only access, permissions and security

  • Read-only mode exists and is off by default

    All 252 tools register together, and 112 are named create_, update_ or patch_. --no-enable-write-tools restricts them; the API token's scope is the second line.

  • One tool calls a service outside Rootly

    check_oncall_health_risk integrates with On-Call Health at oncallhealth.ai to find responders carrying elevated workload.

  • The tool list is itself a disclosure

    Registering 252 tools sends every resource name Rootly holds to the model. That includes catalogs, teams and status pages you may not have meant to describe.

  • Startup audit logging is on

    The server writes a JSON audit event at start naming the tool count, whether write tools are enabled and the transport in use.

Troubleshooting

The server exits at startup
The token failed a length check. The server logs "API token appears to be invalid (too short)" and stops before registering tools, so a placeholder value never reaches a tool list.
The agent runs out of context immediately
The tool definitions cost between 127,149 and 245,805 tokens. On a 200,000-token window the high measurement does not fit at all. Filter the tool list in the client, or connect Rootly only for incident work.
The agent calls the wrong tool
Tool names differ by one word across 252 entries, so list_incident_events and list_incident_alerts sit next to each other. Have the agent call list_endpoints first to narrow the surface.
Something changed that should not have
112 tools are named for writing and all of them arrive on by default. Start the server with --no-enable-write-tools, or set ROOTLY_MCP_ENABLE_WRITE_TOOLS=false, to restrict it to read-only tools.

Rootly MCP server: Reference

ItemValue
StatusPyPI 2.3.17, released 10 August 2026 · repository pushed 31 August 2026
Adoption45 stars · 23 forks · 0 releases · repository created 12 March 2025
LicenseApache-2.0
Packagerootly-mcp-server on PyPI
Hostedmcp.rootly.com/mcp, OAuth2
AuthROOTLY_API_TOKEN, length-checked at startup
Tools252, all on by default
Writing tools112 named create_, update_ or patch_
Context cost127,149 to 245,805 tokens

What engineers report

Public discussion of this connector is thin, so the useful signals are the repository, the package and the measurement.

What was checkedWhat it shows
Stars45
Last push31 August 2026
Latest release2.3.17 on PyPI, 10 August 2026
LicenseApache-2.0
Tools returned by tools/list252
Average schema size2,143 characters per tool
Average description80 characters per tool

“The README states read-only mode can be enabled either with --no-enable-write-tools or by setting ROOTLY_MCP_ENABLE_WRITE_TOOLS=false.”

kstlouis, GitHub issue, 29 June 2026 · The read-only switch, on the issue reporting that one of the two documented routes did not enforce it.

“On a fresh install, the server writes a 1.4 to 2.8 MB swagger.json into the host process's current working directory on startup. For an MCP server, cwd is inherited from the client, so a copy lands in every project directory a user launches their client from.”

kstlouis, GitHub issue, 1 July 2026 · A side effect of stdio transport: the server inherits the client's working directory.

Repository facts from the GitHub API and PyPI, retrieved 24 August 2026. The repository now resolves to rootlyhq/rootly-mcp-server; older links to the Rootly AI Labs organization redirect there. Tool counts and sizes come from the server's own tools/list response on the released package.

Should you connect an agent to Rootly?

Yes. Best for short, scoped sessions on a client that can filter the tool list, rather than a permanent connection.

Strongest fit
Rootly teams whose agent works on incident history and can afford most of its context window for tools.
Main advantage
The widest incident-management surface measured here, plus two similarity tools the REST API does not offer.
Main weakness
The definitions cost 127,149 tokens at the low measurement and do not fit a 200,000-token window at the high one.
Operational risk
112 writing tools arrive on by default, so read-only mode has to be switched on deliberately with --no-enable-write-tools.

From Oodle

One platform for agent traces and infrastructure

Agent traces usually sit in a different product from the rest of your telemetry, so when a slow database makes an agent slow the symptom is in one tool and the cause is in another. Oodle keeps both in one query surface, from $10 per million spans.

See agent observability

Frequently asked questions

How many tools does the Rootly MCP server have?

252, all on by default. Counted from the server's own tools/list response on the released PyPI package 2.3.17, on 24 August 2026.

What do the tool definitions cost?

Between 127,149 and 245,805 tokens, or 63.6% to 122.9% of a 200,000-token window. Rootly's generated 252-tool list produces that range when a client serializes it.

Why are the schemas so large?

Most tools are generated from Rootly's REST API and inherit each endpoint's request body. Schemas average 2,143 characters while descriptions average 80.

Can an agent change things in Rootly?

Yes. 112 tool names begin with create_, update_ or patch_, and all arrive enabled. Restrict them with --no-enable-write-tools, or set ROOTLY_MCP_ENABLE_WRITE_TOOLS=false.

Is there a hosted option?

Yes, at mcp.rootly.com/mcp, authenticated with OAuth2. It suits teams better than sharing one API token in a config file.

Changelog

  • 31 August 2026. Last push. The repository has never tagged a GitHub release.
  • 12 March 2025. rootlyhq/rootly-mcp-server created on GitHub.

Sources

Every number on this page traces to one of these

  1. Repository facts from the GitHub API · rootlyhq/rootly-mcp-server, retrieved 24 August 2026
  2. Release and version facts from PyPI · rootly-mcp-server 2.3.17
  3. Tool counts, descriptions and schema sizes from the server's own tools/list response
  4. Hosted endpoint and OAuth2 from the repository README

Rootly’s own MCP documentation

Also incident response:

For the telemetry behind an incident: