Skip to main content
Glama
OfirOhan

Instatus MCP Server

by OfirOhan

Instatus MCP Server

CI MCP License: MIT

A Model Context Protocol server for Instatus. It lets Claude, Cursor, ChatGPT and other AI agents check what's down, open and update incidents, flip component statuses and schedule maintenance on your status page, straight from the chat or terminal where the on-call engineer is already working.

Unofficial. This is a community project and is not affiliated with Instatus. It was built from Instatus's public API docs.

What you can ask your agent

  • "Is anything on our status page degraded right now? Summarize any open incidents."

  • "Open an incident on the API component: elevated 5xx errors, we're investigating. Don't notify subscribers yet."

  • "Post an update on that incident: root cause identified, a fix is rolling out. Mark the API as degraded instead of partial outage."

  • "We're back. Resolve the incident and set everything to operational."

  • "Schedule a 45-minute database maintenance window for Sunday 02:00 UTC on API and Dashboard."

Related MCP server: GetMonitor MCP Server

Tools

Tool

What it does

Writes?

get_current_user

Who owns this API key

No

list_status_pages

Your pages with id, subdomain and public URL

No

get_status_overview

One-call "is anything down?": overall state, components by status, open incidents with latest update, upcoming maintenance

No

list_components / get_component

Components and their current status

No

list_incidents / get_incident

Incidents with their update timeline, filterable by status

No

list_maintenances

Scheduled, in-progress and past maintenance

No

set_component_status

Change one component's status without an incident

Yes

create_incident

Open an incident and set the impact on affected components

Yes

post_incident_update

Add a public update, optionally changing component impact

Yes

resolve_incident

Post a RESOLVED update and set affected components back to OPERATIONAL in one step

Yes

schedule_maintenance

Announce a maintenance window (auto start/end, components shown as under maintenance)

Yes

delete_incident

Delete an incident

Destructive

Design notes:

  • Subscribers are not notified by default. Every write tool takes notify, which defaults to false, so an agent can't email your customers unless you ask it to.

  • get_status_overview pulls components, unresolved incidents and maintenances in parallel and returns a short summary instead of three raw API dumps.

  • resolve_incident and post_incident_update look up the incident's components for you, so the agent doesn't need to track component IDs between turns.

  • All tools carry MCP annotations (readOnlyHint, destructiveHint), so clients can ask before publishing anything.

Setup

  1. Create an API key in Instatus: User settings → Developer settings.

  2. Build it:

git clone https://github.com/OfirOhan/instatus-mcp.git
cd instatus-mcp && npm install && npm run build

Claude Desktop

Add this to claude_desktop_config.json:

{
  "mcpServers": {
    "instatus": {
      "command": "node",
      "args": ["/absolute/path/to/instatus-mcp/dist/index.js"],
      "env": { "INSTATUS_API_KEY": "your-api-key" }
    }
  }
}

Claude Code / Cursor / other MCP clients

claude mcp add instatus -e INSTATUS_API_KEY=your-api-key -- node /path/to/instatus-mcp/dist/index.js

For Cursor and other clients, use the same command with INSTATUS_API_KEY in the environment.

Variable

Default

Notes

INSTATUS_API_KEY

(required)

Your Instatus API key

INSTATUS_BASE_URL

https://api.instatus.com

Override for testing

Development

npm install
npm test   # builds, runs unit tests and an end-to-end MCP stdio test against a fake Instatus API

The tests run on Node 20, 22 and 24 in CI.

Author

Built by Ofir Ohana, an AI agents engineer. Issues and PRs are welcome.

License

MIT

Available Tools

14 tools
create_incidentOpen an incidentA

Publish a new incident on the public status page. Affected components are set to componentStatus (default PARTIALOUTAGE). Draft the wording with the user before publishing.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesShort public title, e.g. 'Elevated API error rates'
notifyNoEmail/SMS/webhook subscribers about this (default false). Subscribers are real customers, so confirm first.
pageIdYesStatus page ID (from list_status_pages)
statusNoDefault INVESTIGATING
messageYesFirst public update shown to customers
publishNoSet false to save without publishing (default true)
startedNoISO 8601 start time (default now)
componentsNoIDs of affected components
componentStatusNoStatus to set on affected components (default PARTIALOUTAGE)

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare openWorldHint=true and non-destructive/non-idempotent, but the description adds the key consequence: the incident is published publicly on the status page and wording should be drafted with the user first. It doesn't detail permission requirements or whether a draft (publish=false) can be edited later, so it's good but not exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the create action, then scoping detail, then the workflow caution. The componentStatus default repeats the schema, a minor redundancy, but overall tight.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter mutation with no output schema, the description covers the public-facing consequence, default component status, and a caution about drafting wording. Remaining gaps (pagination/return shape not needed; auth/permissions) are modest given the rich annotations and full schema coverage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameters are already fully documented with descriptions and defaults. The description only restates the componentStatus default (PARTIALOUTAGE), which the schema already provides, adding no new syntax or format detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (publish a new incident) and scope (public status page), which cleanly separates it from siblings like post_incident_update, resolve_incident, and delete_incident. An agent can identify the create action without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The line 'Draft the wording with the user before publishing' gives useful procedural advice for this specific workflow, and the schema reinforces confirming before notifying subscribers. However, it never states when to use this versus alternatives (e.g., post_incident_update for later updates) or any exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_incidentDelete incidentA
Destructive

Permanently delete an incident and its history from the status page. Cannot be undone, so confirm first.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIdYesStatus page ID (from list_status_pages)
incidentIdYesIncident ID (from list_incidents)

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, readOnlyHint=false and openWorldHint=true, so the safety profile is covered. The description adds real value beyond them by clarifying the blast radius (history is removed too) and irreversibility ('Cannot be undone, so confirm first').

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, zero waste, with the permanence/blast-radius warning front-loaded and the confirmation requirement attached. Nothing could be trimmed without losing signal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter destructive tool with full schema coverage and annotation-declared safety, the description covers what an agent needs: what is destroyed, that it is irreversible, and to confirm first. Minor gaps remain around side effects on linked incident updates or components, but nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and both parameters carry their own descriptions pointing at list_status_pages and list_incidents. The description adds no meaning about pageId or incidentId, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (delete an incident) plus scope detail ('and its history from the status page'), which separates it from the non-destructive sibling resolve_incident. It does not explicitly name resolve_incident as the alternative, so the routing is implicit rather than spelled out.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides one useful operational guideline – confirm before calling, since the action is irreversible – but never states when to delete versus resolving or archiving via siblings like resolve_incident. Usage context is implied by the destructive nature rather than explained.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_componentGet componentA
Read-only

Get one component with its description, status, group and uptime settings.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIdYesStatus page ID (from list_status_pages)
componentIdYesComponent ID (from list_components)

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description does add value by enumerating what is returned (description, status, group, uptime settings), useful since there is no output schema, but it says nothing about error behavior, missing components, or permissions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence, front-loaded with the verb and resource, with the returned fields listed compactly. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only getter with no output schema, the description usefully discloses the shape of the response and annotations cover safety. It is nearly complete; only failure/not-found behavior is unaddressed, which is a minor gap for this tool class.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters are documented there, including provenance hints (from list_status_pages, from list_components), so the schema does the heavy lifting. The description adds no parameter-level detail beyond implying the component is already identified; baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb (Get) and resource (component), and the phrase 'one component' implicitly contrasts with the sibling list_components. It is clear what the tool returns, though it never explicitly names list_components as its collection counterpart the way a top-tier definition would.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: an agent can infer this is for fetching a single already-known component (which is why both pageId and componentId are required), but the description offers no explicit when-to-use guidance or named alternatives. No exclusions or prerequisites are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_current_userGet current userA
Read-only

Get the Instatus user that owns the API key (id, name, email).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds value beyond that by disclosing the key behavioral trait that the returned user is the owner of the API key, plus the concrete fields returned. It stops short of mentioning auth failure behavior, so it is not a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that front-loads the action and resource, with the returned fields in a compact parenthesis. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only identity lookup with no output schema, the description supplies the essential facts: what is fetched and which fields come back. It omits only edge behavior such as invalid or expired API keys, a minor gap for this complexity level.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The parenthetical field list (id, name, email) usefully pre-announces the response shape in the absence of an output schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Get) and resource (the Instatus user that owns the API key), and names the returned fields (id, name, email). This clearly distinguishes it from all siblings, which operate on status pages, components, incidents, and maintenances rather than the authenticated user.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The usage context is implied rather than stated: 'the user that owns the API key' hints that this identifies the caller associated with the credentials, but there is no explicit when-to-use or when-not-to-use guidance and no named alternative. Adequate but with a clear gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_incidentGet incidentA
Read-only

Get one incident with its full update timeline and affected components.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIdYesStatus page ID (from list_status_pages)
incidentIdYesIncident ID (from list_incidents)

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety semantics are covered. The description's added value is disclosing the return shape — full update timeline and affected components — which matters because there is no output schema. It omits error behavior for unknown IDs, keeping it short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler; the resource and the returned content are stated immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully summarizes what comes back (timeline, components), and annotations cover the read-only nature. It is largely complete for a two-parameter read tool, though it could note behavior for missing/invalid IDs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both pageId and incidentId are already documented with their source tools (list_status_pages, list_incidents). The description adds no parameter-level meaning, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get one incident') and adds scope beyond the name by specifying the payload includes the full update timeline and affected components. It implicitly distinguishes itself from list_incidents by saying 'one incident', but never names the sibling, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites, and no mention of how it differs from list_incidents or get_status_overview. The agent can infer it is a single-record fetch, but nothing in the text routes it explicitly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_status_overviewStatus overviewA
Read-only

One-call answer to 'is anything down right now?' for a status page: overall state, components grouped by status, open incidents with their latest update, and upcoming or in-progress maintenance.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIdYesStatus page ID (from list_status_pages)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (readOnlyHint=true, openWorldHint=true), and the description adds genuinely useful context by enumerating what the aggregate contains, which is not derivable from the annotations. It does not mention rate limits, pagination, or whether incident lists are truncated, which slightly limits full transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single well-formed sentence that front-loads the core value proposition ('One-call answer to is anything down right now?') and then enumerates the payload. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully carries the return-value burden, and a one-parameter read-only tool needs little else. Minor gap: it does not indicate result size limits or completeness guarantees for the aggregated incident/maintenance lists.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single parameter with 100% schema description coverage, so the schema already documents pageId and its source (list_status_pages). The description adds nothing about the parameter, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states exactly what the tool returns: overall state, components grouped by status, open incidents with their latest update, and upcoming/in-progress maintenance. This composite scope is clearly distinguishable from sibling read tools like list_components, list_incidents, and list_maintenances, which return single resource types.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The framing 'One-call answer to is anything down right now?' gives a clear context for use and implicitly recommends it over making several sibling calls. It stops short of explicitly naming those alternatives or stating when not to use it (e.g., when detailed per-incident data is needed).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_componentsList componentsB
Read-only

List the components (services) shown on a status page with their current status and group.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default 1)
pageIdYesStatus page ID (from list_status_pages)
per_pageNoItems per page, 1-100 (default 50)

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds essentially nothing beyond that: no pagination behavior (even though page/per_page exist), no rate limits, no note on what happens with an invalid or unknown pageId.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence that names the resource, its scope (a status page), and the payload fields returned. Nothing dangles and nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description does mention the key returned fields (current status and group), which is the right compensation. It stops short of describing pagination behavior for a three-parameter list tool, leaving a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so page, pageId, and per_page are all documented in the schema (including defaults and ranges), making 3 the baseline. The description adds no parameter-level detail such as the format of pageId or how pagination interacts with the result set.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) and resource (components), and helpfully clarifies that components mean services and that results include current status and group. It is distinguishable from get_component (singular fetch) and set_component_status (mutation), though it never names those siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied — list the components of a status page. There is no statement of when to prefer this over get_component for a single service or over get_status_overview, and no prerequisites beyond the pageId requirement visible in the schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_incidentsList incidentsA
Read-only

List incidents on a status page, newest first, with their updates and affected components. Use status to filter, e.g. 'INVESTIGATING,IDENTIFIED,MONITORING' for open incidents.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default 1)
pageIdYesStatus page ID (from list_status_pages)
statusNoComma-separated statuses to include: INVESTIGATING, IDENTIFIED, MONITORING, RESOLVED
per_pageNoItems per page, 1-100 (default 50)
excludeStatusNoComma-separated statuses to exclude, e.g. RESOLVED

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered by structured data. The description adds ordering (newest first) and the fact that updates and affected components are bundled in, but says nothing about the page size default, total counts, or truncation behavior, so it adds only moderate context beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with the core behavior front-loaded and the filter example second. Nothing is wasted, though the example values partially duplicate what the schema's status description already lists.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list tool with no output schema, the description covers what is returned (incidents with updates and affected components) and the ordering, and the schema carries pagination and filter details. The relationship to get_incident and pagination semantics is the only meaningful gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all five parameters are already documented in the schema and the baseline is 3. The description reinforces the status filter with an example of open-incident statuses but never mentions excludeStatus, and adds no format or syntax detail the schema lacks.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (list incidents on a status page) plus the return shape (updates and affected components) and ordering (newest first). It does not explicitly distinguish itself from siblings like get_incident or list_maintenances, but the resource is unambiguous enough to route an agent correctly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The second sentence gives a concrete usage cue: pass comma-separated statuses such as 'INVESTIGATING,IDENTIFIED,MONITORING' to get open incidents. That is genuinely helpful, but there is no guidance on when to use this versus get_incident or how it relates to the paginated listing workflow, so usage is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_maintenancesList maintenancesA
Read-only

List scheduled, in-progress and past maintenance windows on a status page.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default 1)
pageIdYesStatus page ID (from list_status_pages)
per_pageNoItems per page, 1-100 (default 50)

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds that all three lifecycle states are returned, which is useful context, but says nothing about ordering, pagination behavior, or result volume.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with the resource and scope stated immediately and zero wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list with a fully documented schema and annotations carrying the safety profile, the description covers what is needed to call it. The only minor gap is the unexplained return shape, since no output schema exists.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all three parameters (page, pageId, per_page) are already documented in the schema. The description adds no format, default, or sourcing detail beyond what the schema provides, which is the expected baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb (List) and resource (maintenance windows) and scopes it to a status page, with the covered statuses (scheduled, in-progress, past) spelled out. It does not explicitly distinguish itself from the sibling write tool schedule_maintenance, but the read/write split is inferable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied — an agent can infer this is the way to read maintenance windows — but there is no explicit when-to-use statement, no note that pageId must come from list_status_pages (that lives only in the schema), and no mention of alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_status_pagesList status pagesA
Read-only

List the user's Instatus status pages (id, name, subdomain, custom domain, overall status).

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default 1)
per_pageNoItems per page, 1-100 (default 50)

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds real value by naming the return payload (id, name, subdomain, custom domain, overall status), which matters because there is no output schema; it stops short of describing pagination behavior or access scoping.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler; the parenthetical field list is the only extra content and it earns its place given the absent output schema. Slightly terse, but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only listing tool with annotations covering safety and a schema covering both parameters, the description is nearly sufficient. The one gap is any mention of pagination or result limits, which an agent calling with defaults might want to know.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Both parameters (page, per_page) are fully documented in the schema at 100% coverage, so the baseline of 3 applies. The description adds no pagination guidance beyond what the schema already states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) and resource (the user's Instatus status pages) and enumerates the fields returned. The resource is clearly distinct from sibling list tools (list_components, list_incidents, list_maintenances), though the description never explicitly contrasts itself with them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: an agent can infer this is the entry point for enumerating the account's status pages. There is no statement of when to use it versus alternatives, no prerequisites, and no note that it returns the pages the authenticated user owns or can access.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

post_incident_updatePost incident updateA

Add a public update to an incident (e.g. move from INVESTIGATING to IDENTIFIED with a new message). If componentStatus is given it is applied to the incident's components.

ParametersJSON Schema
NameRequiredDescriptionDefault
notifyNoEmail/SMS/webhook subscribers about this (default false). Subscribers are real customers, so confirm first.
pageIdYesStatus page ID (from list_status_pages)
statusYes
messageYesPublic update text
incidentIdYesIncident ID (from list_incidents)
componentStatusNoNew status for the affected components

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare a non-read-only, non-idempotent, non-destructive mutation, and the description usefully adds that the update is PUBLIC (customer-visible) and that componentStatus is propagated to components. It still omits the subscriber-notification side effect, which is the highest-impact behavior, so it is not fully transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with the primary action front-loaded and the conditional componentStatus side effect placed second. Every clause earns its place; no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no output schema, the description covers the main action and the componentStatus side effect adequately. It leaves the notify-customer behavior to the schema, which is acceptable, though a note on public visibility risk would round it out.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 83% schema description coverage, the schema already carries most parameter meaning. The description adds the transition example for status and the conditional application of componentStatus, but adds no syntax or format detail beyond the schema; baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Add a public update to an incident') and clarifies the meaning with a concrete status-transition example. Distinguishes itself from read tools, but does not differentiate from the sibling resolve_incident given that RESOLVED is part of the status enum.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The example ('move from INVESTIGATING to IDENTIFIED') implies when this tool is used, but there is no explicit when-to-use guidance, no exclusions, and no named alternative such as resolve_incident for the terminal transition. Usage is only indirectly conveyed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

resolve_incidentResolve incidentA

Resolve an incident in one step: posts a RESOLVED update and sets every affected component back to OPERATIONAL.

ParametersJSON Schema
NameRequiredDescriptionDefault
notifyNoEmail/SMS/webhook subscribers about this (default false). Subscribers are real customers, so confirm first.
pageIdYesStatus page ID (from list_status_pages)
messageNoClosing message (default: 'This incident has been resolved.')
incidentIdYesIncident ID (from list_incidents)

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (non-read-only, non-destructive, non-idempotent, open-world), and the description adds real behavioral value by disclosing the cascade: a RESOLVED update plus mass component reset to OPERATIONAL. It stops short of stating permission requirements or what happens to components already operational.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence that names the action first and the two side effects after. No filler; every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description adequately conveys the outcome shape. Combined with fully documented parameters and annotations, an agent has enough to call it correctly, though permission/edge-case behavior remains unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters (including the notable subscriber-notification warning on 'notify' and the message default) are already documented in the schema. The description adds nothing parameter-specific, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Resolve) and resource (incident), and uniquely explains what the operation actually does — posts a RESOLVED update and flips affected components to OPERATIONAL. This clearly separates it from siblings like post_incident_update or set_component_status, which each perform only half of the work.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'in one step' implies this is the preferred composite action over manually posting an update plus resetting components, but no explicit when-to-use/when-not guidance or named alternative is given. Usage is only indirectly inferable from the sibling set.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

schedule_maintenanceSchedule maintenanceA

Announce a planned maintenance window. By default it starts and ends automatically, and affected components show UNDERMAINTENANCE while it runs.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoISO 8601 end time (or give durationMinutes)
nameYesPublic title, e.g. 'Database upgrade'
startYesISO 8601 start time
notifyNoEmail/SMS/webhook subscribers about this (default false). Subscribers are real customers, so confirm first.
pageIdYesStatus page ID (from list_status_pages)
autoEndNoComplete automatically at end time (default true)
messageYesWhat will happen and what customers should expect
autoStartNoStart automatically at start time (default true)
componentsNoIDs of affected components
durationMinutesNo

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=true. The description adds genuine behavioral context beyond that: auto-start/auto-end defaults and the fact that affected components display UNDERMAINTENANCE while running. Useful effect disclosure, though it omits notification side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, front-loaded with the core action and then the default behavior/effect. No waste, though it is very short relative to a 10-parameter mutation tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a write tool with no output schema and rich annotations, the description covers the action, defaults, and visible effect. It does not mention the notify/customer-communication implication, but the schema handles that, so the definition is largely complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 90%, so the schema already documents nearly every parameter (including defaults for autoStart/autoEnd and the customer-facing warning for notify). The description only echoes the auto start/end default and adds no syntax or format detail. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: 'Announce a planned maintenance window.' The resource (maintenance window) is distinct from incident-oriented siblings, but the description never names an adjacent tool explicitly to differentiate. Clear purpose, mild gap on sibling routing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by 'planned maintenance window' (vs unplanned incidents handled by create_incident), but there is no explicit when-to-use, no exclusions, and no named alternative. Adequate but leaves routing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_component_statusSet component statusA
Idempotent

Change a component's status on the public status page without opening an incident (e.g. mark the API as DEGRADEDPERFORMANCE, or back to OPERATIONAL). This is visible to customers.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageIdYesStatus page ID (from list_status_pages)
statusYes
componentIdYesComponent ID (from list_components)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare it is a non-readonly, idempotent, non-destructive, open-world mutation, so the safety profile is covered. The description adds a genuinely useful behavioral trait not in the annotations: the change is customer-visible. It does not mention permission requirements or error behavior, which keeps it short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences, front-loaded with the action and scope, with the customer-visibility caveat attached immediately after the examples. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-parameter, no-output-schema mutation, the description covers what it does, how it differs from the incident path, and the customer-facing consequence. It omits auth/prerequisite notes and any mention of success/failure behavior, but nothing essential to invoking it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67%: pageId and componentId carry their own source hints, and status is a closed enum that already enumerates the legal values. The description's examples (DEGRADEDPERFORMANCE, OPERATIONAL) merely restate enum members, so it adds little beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource ('Change a component's status') plus scope ('on the public status page') and explicitly distinguishes the action from opening an incident. An agent can separate it from create_incident/post_incident_update without reading the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clarifies this route is for direct status changes rather than incident creation, effectively naming the alternative mechanism by negation ('without opening an incident'). It lacks an explicit when-not or prerequisite statement, but the selection context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 14 tool updatesv0.1.0
    • First observedcreate_incident
    • First observeddelete_incident
    • First observedget_component
    • First observedget_current_user
    • First observedget_incident
    • First observedget_status_overview
    • First observedlist_components
    • First observedlist_incidents
    • First observedlist_maintenances
    • First observedlist_status_pages
    • First observedpost_incident_update
    • First observedresolve_incident
    • First observedschedule_maintenance
    • First observedset_component_status

TDQS

A3.9/5.0

Scored across 14 tools

Disambiguation4/5

Most tools have clearly distinct purposes: user/page/component/incident/maintenance operations are separated by resource and action. The main mild ambiguity is between post_incident_update and resolve_incident, since both can update incident wording/status, but resolve_incident's one-step RESOLVED + component-reset behavior makes it distinguishable.

Naming Consistency5/5

All tool names are snake_case and consistently lead with a verb: get_, list_, set_, create_, post_, resolve_, delete_, schedule_. The pattern is predictable across every tool, with no mixing of conventions.

Tool Count5/5

14 tools is well-scoped for a status-page operations server. The set covers user context, page viewing, component status, incident lifecycle, and maintenance without obvious bloat.

Completeness4/5

Incident lifecycle coverage is strong: list/get/create/update/resolve/delete. Component and maintenance surfaces are thinner (no create/update/delete component, no update/cancel maintenance), but the core public status-page workflows are covered and these gaps are likely administrative or out of scope.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Enables unified management of maintenance windows and incidents across Atlassian Statuspage and Uptime Kuma. It allows AI assistants to schedule maintenance, update service statuses, and list monitors through a single MCP-compatible interface.
    9
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables checking real-time operational status of 75+ AI services (OpenAI, Anthropic, Cursor, etc.) through tools like check_ai_status and list_ai_services.
    MIT