Skip to main content
Glama

Sorry MCP by usefulapi

Server Details

Read status pages and incidents; make confirmed public changes and manage individual subscribers.

Ownership verified
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL
Repository
m190/usefulapi-mcp
GitHub Stars
0

TDQS

A3.6/5.0

Scored across 21 tools

Disambiguation4/5

Most tools are cleanly separated by resource and action, and the incident/maintenance split is explicitly explained as type=unplanned vs type=planned. The main blur is that sorryapp_update_notice can also append a timeline comment, overlapping with sorryapp_create_notice_update, and edit_notice_update vs update_notice use different verbs for the same underlying action.

Naming Consistency4/5

All 21 tools use a uniform sorryapp_ prefix with snake_case verb_noun (create_/get_/list_/update_), which is highly predictable. The only deviation is sorryapp_edit_notice_update using 'edit' where every other mutation uses 'update'.

Tool Count3/5

21 tools for pages, components, notices, updates, subscribers, templates, and timezones is defensible but sits in the heavy range, especially with four list tools for templates/timezones. A few tools (e.g. list_notice_templates, list_update_templates) add surface area for read-only metadata rather than core lifecycle operations.

Completeness3/5

The create/get/list/update path is covered for components, notices, and updates, and the write tools cover the core status-page workflow (open incident, post update, resolve). However, there is no delete anywhere (component, notice, notice update) and no way to update or remove a subscriber, so unsubscribe/cleanup workflows are dead ends; page-level create/update is also absent.

Available Tools

21 tools
sorryapp_create_componentCreate componentA
Destructive
Inspect

WRITE: add a component to a status page. It appears on the PUBLIC status page immediately, as operational. Sorry: POST /v1/pages/{page_id}/components.

NameRequiredDescriptionDefault
nameYesComponent name, e.g. API.
confirmYesSet true only after the user approved this public status change or subscriber addition and any requested notification.
page_idYesThe status page id, e.g. 12ab34cd (from sorryapp_list_pages).
descriptionNoOptional text shown next to the name.

TDQS

A3.8/5.0
Behavior4/5

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

The description adds important behavior beyond annotations: the component becomes visible on the PUBLIC status page immediately and starts as operational. This complements the destructive/open-world hints with concrete side-effect context, though permissions and error behavior are not described.

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, front-loaded with WRITE and the key public-visibility warning. There is no wasted text.

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 full schema coverage and no output schema, the description provides the essential public side effect and default operational state. It is nearly complete, though it could mention the confirmation requirement or permission constraints.

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 the baseline is 3. The description repeats the page_id endpoint path but does not add meaning beyond the schema's parameter descriptions.

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 states a specific verb and resource: add a component to a status page. It is clear what the tool does, though it does not explicitly contrast with siblings such as update_component or list_components.

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 the WRITE marker and the warning that the component appears publicly immediately. However, there is no explicit guidance on when to use this versus alternatives like update_component or create_incident.

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

sorryapp_create_incidentCreate incident noticeA
Destructive
Inspect

WRITE: open an incident (an unplanned notice) on the status page. These changes are PUBLIC on the status page, including publish=false. publish=true additionally requests delivery to subscribers and integrations (email, SMS, Slack, Teams, X); vendor SMS/notification charges may apply. Confirm the content and audience first. It marks the listed components degraded on the PUBLIC page. Starts in the investigating state. Sorry: POST /v1/pages/{page_id}/notices with type=unplanned.

NameRequiredDescriptionDefault
confirmYesSet true only after the user approved this public status change or subscriber addition and any requested notification.
page_idYesThe status page id, e.g. 12ab34cd (from sorryapp_list_pages).
publishNoshould_publish: true also sends this out to subscribers and integrations (email, SMS, Slack, Teams, X). Default false: sent as should_publish=false to suppress the requested broadcast. The notice/change is still public; this does not make a private draft.
subjectYesIncident title, e.g. API performance issues.
component_idsNoIds of the affected components (from sorryapp_list_components). While the notice is open they show as degraded.
initial_commentNoFirst update shown on the incident (public).

TDQS

A4.6/5.0
Behavior5/5

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

Adds substantial context beyond the annotations (destructiveHint=true, openWorldHint=true, idempotentHint=false): the change is PUBLIC even when publish=false, publish=true fans out to email/SMS/Slack/Teams/X with possible vendor charges, and listed components are marked degraded publicly. 'Starts in the investigating state' is a behavioral detail no structured field carries.

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?

Front-loaded with 'WRITE:' and the core action, and nearly every sentence carries operational weight. There is mild redundancy — public visibility is asserted twice ('These changes are PUBLIC... including publish=false' and 'on the PUBLIC page') and the publish explanation largely restates the schema — but the density is justified for a destructive, public-facing write.

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

Completeness5/5

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

For a 6-parameter destructive write with no output schema, the description covers the essentials an agent needs before calling: public exposure, subscriber fan-out and charges, component degradation side effect, initial state, and an approval prerequisite. Nothing material is missing.

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?

Schema coverage is 100%, so the baseline is 3; the description still adds meaning by stressing that publish is a broadcast switch, not a privacy switch ('does not make a private draft' — echoed in the schema but framed as a caveat) and by naming the downstream subscriber/integration effects and cost. It does not clarify component_ids format or initial_comment beyond the 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?

Opens with a specific verb and resource ('WRITE: open an incident (an unplanned notice) on the status page') and parenthetically pins the notice type, which cleanly separates it from sorryapp_create_maintenance (planned) and sorryapp_create_notice_update (updates to an existing incident). The trailing API mapping (POST /v1/pages/{page_id}/notices with type=unplanned) removes any ambiguity.

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?

Gives a real usage gate: 'Confirm the content and audience first,' reinforced by the required confirm parameter, and explains when to set publish=true versus false. It does not explicitly name the sibling to use for planned maintenance, so the routing to alternatives is implied by 'unplanned' rather than stated.

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

sorryapp_create_maintenanceCreate maintenance noticeA
Destructive
Inspect

WRITE: schedule maintenance (a planned notice) on the status page. These changes are PUBLIC on the status page, including publish=false. publish=true additionally requests delivery to subscribers and integrations (email, SMS, Slack, Teams, X); vendor SMS/notification charges may apply. Confirm the content and audience first. Sorry: POST /v1/pages/{page_id}/notices with type=planned.

NameRequiredDescriptionDefault
confirmYesSet true only after the user approved this public status change or subscriber addition and any requested notification.
page_idYesThe status page id, e.g. 12ab34cd (from sorryapp_list_pages).
publishNoshould_publish: true also sends this out to subscribers and integrations (email, SMS, Slack, Teams, X). Default false: sent as should_publish=false to suppress the requested broadcast. The notice/change is still public; this does not make a private draft.
subjectYesMaintenance title.
component_idsNoIds of the affected components (from sorryapp_list_components). While the notice is open they show as degraded.
begins_at_dateNoStart date, YYYY-MM-DD (in the status page's timezone).
begins_at_timeNoStart time, 24-hour HH:MM:SS.
initial_commentNoFirst update shown on the notice (public).
duration_in_minutesNoExpected length of the maintenance in minutes.
should_automate_scheduleNotrue: Sorry moves the notice to underway and complete at the scheduled times.

TDQS

A3.9/5.0
Behavior5/5

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

Adds genuinely non-obvious behavior beyond the annotations: changes are PUBLIC even when publish=false, publish=true additionally fans out to email/SMS/Slack/Teams/X, and vendor notification charges may apply. Those are consequences an agent could not derive from destructiveHint/openWorldHint alone, and they are exactly the facts needed before a write.

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?

Front-loads 'WRITE:' and the core action, then layers the visibility warning, delivery warning, and precondition in descending importance. Dense with parentheticals but every sentence carries a distinct risk or rule; nothing is redundant.

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 10-parameter destructive write with full schema coverage and no output schema, the description covers visibility, broadcast side effects, cost, and confirmation requirements. Scheduling mechanics (should_automate_schedule timing) and the irreversibility/idempotency story are left to the schema and annotations.

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 the schema already documents all ten parameters thoroughly, including publish and confirm semantics. The description reinforces the publish meaning but introduces no syntax, defaults, or field behavior not already present in the schema, so baseline 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?

The description states a specific verb and resource ('schedule maintenance (a planned notice) on the status page') and pins it to the underlying API call with type=planned, which separates it from the incident path. Differentiation from sorryapp_create_incident is implied by 'planned' rather than stated by name, keeping it just 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 Guidelines3/5

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

It gives a prerequisite ('Confirm the content and audience first') and explains the publish=true vs publish=false decision, which is real usage guidance for the broadcast choice. It never says when to prefer this tool over sorryapp_create_incident or sorryapp_create_notice_update, so routing logic is left to inference.

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

sorryapp_create_notice_updateAdd notice updateA
Destructive
Inspect

WRITE: add one update (a comment) to a notice's timeline. It is PUBLIC on the status page, and Sorry's docs say a new update is also published to the page's configured integrations (email, SMS, Slack, Teams, X). The docs list no switch to suppress that on this endpoint, so confirm_publish=true is required; this endpoint has no exposed suppression switch. Sorry: POST /v1/pages/{page_id}/notices/{notice_id}/updates.

NameRequiredDescriptionDefault
contentYesThe update text.
page_idYesThe status page id, e.g. 12ab34cd (from sorryapp_list_pages).
notice_idYesThe notice id.
confirm_publishYesMust be true. Confirms you understand the update is published on the PUBLIC status page and pushed to subscribers and configured integrations (email, SMS, Slack, Teams, X): Sorry's docs offer no way to add an update without that.

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and openWorldHint=true, but the description goes well beyond them: it names the exact blast radius (PUBLIC status page plus email, SMS, Slack, Teams, X integrations) and states there is no suppression switch. That is precisely the side-effect information an agent needs before publishing.

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

Conciseness3/5

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

The 'WRITE:' lead and the endpoint identifier are front-loaded and useful, but the middle repeats itself: 'The docs list no switch to suppress that on this endpoint, so confirm_publish=true is required; this endpoint has no exposed suppression switch' says the same thing twice in one sentence.

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

Completeness5/5

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

All four parameters are required and fully documented, annotations cover the safety profile, and there is no output schema to explain. The one thing an agent must know before calling, that the write is public and irreversible in reach, is spelled 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?

Schema description coverage is 100% and every parameter, including the confirm_publish rationale, is already documented in the schema. The description restates the confirm_publish constraint but adds no new parameter-level detail, 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?

States a specific verb and resource: 'add one update (a comment) to a notice's timeline'. The word 'add' plus the timeline framing clearly separates it from the sibling sorryapp_edit_notice_update, and the 'WRITE:' prefix signals the mutation class immediately.

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?

Explains the precondition for use (confirm_publish=true is mandatory because the update is public and fan-outs to integrations) and effectively states a when-not condition: if suppression is needed, this endpoint cannot do it. It does not explicitly name edit_notice_update or list_notice_updates as alternatives, which keeps it from a 5.

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

sorryapp_create_subscriberAdd one subscriberA
Destructive
Inspect

WRITE: add ONE subscriber (an email address and/or a phone number) to a status page. From then on that person is emailed/texted about notices published on the page, and Sorry may send them a confirmation. Add only people who asked to be notified. No bulk import. Sorry: POST /v1/pages/{page_id}/subscribers.

NameRequiredDescriptionDefault
emailNoThe subscriber's email address.
confirmYesSet true only after the user approved this public status change or subscriber addition and any requested notification.
page_idYesThe status page id, e.g. 12ab34cd (from sorryapp_list_pages).
phone_numberNoPhone number with the international country code, e.g. +441234567890.
component_idsNoSubscribe to only these components (default: all components).

TDQS

A4.2/5.0
Behavior4/5

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

Goes beyond the annotations by disclosing the downstream effect that the person will be emailed/texted about notices and may receive a confirmation, plus a consent constraint. Annotations already flag destructive/non-idempotent, but the description never says what happens when the address is already subscribed (error vs. duplicate), leaving a real gap.

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?

Front-loads the operation type and the key constraint in two short sentences. Every clause — consent, no bulk import, confirmation send, endpoint reference — carries information an agent needs.

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 5-parameter write tool with no output schema, the description covers purpose, consent, side effects and the endpoint. It stops short on duplicate-subscriber behavior and on what the call returns, which an agent would need to interpret the result.

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 the schema already explains email, phone_number, page_id, confirm and component_ids. The description only adds the 'email and/or phone number' framing and says nothing about component_ids scoping, so it adds little beyond structured data.

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 and resource ('add ONE subscriber ... to a status page') and scopes it against bulk import and, implicitly, against the sibling sorryapp_list_subscribers. The 'WRITE:' prefix plus the API endpoint make the operation unmistakable.

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?

Gives a clear when-to-use rule ('Add only people who asked to be notified') and an explicit exclusion ('No bulk import'). It does not route to alternatives such as checking sorryapp_get_subscriber / sorryapp_list_subscribers first, so it falls just short of a 5.

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

sorryapp_edit_notice_updateEdit notice updateA
Destructive
Inspect

WRITE: rewrite the text of an existing notice update on the PUBLIC status page (overwrites the previous text; the old text is not kept). Sorry: PATCH /v1/pages/{page_id}/notices/{notice_id}/updates/{update_id}.

NameRequiredDescriptionDefault
confirmYesSet true only after the user approved this public status change or subscriber addition and any requested notification.
contentYesThe new text.
page_idYesThe status page id, e.g. 12ab34cd (from sorryapp_list_pages).
notice_idYesThe notice id.
update_idYesThe update id.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, and the description adds genuinely useful detail beyond them: exactly what is destroyed ('overwrites the previous text; the old text is not kept') and that the target is publicly visible. It stops short of stating anything about notifications or failure modes, but the added destructive detail is the key piece an agent needs.

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 clauses, front-loaded with the operation type and the destructive consequence, then the endpoint. No filler or repetition.

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 destructive mutation with full annotation coverage and a fully documented schema, the description covers what changes, what is lost, and where it is visible. Minor gaps (notification side effects, whether the update must pre-exist) keep it short of 5.

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%, with content, page_id and the confirm gate all described in the schema itself. The description only restates that the content parameter is the new text, adding no format, length, or ID-provenance detail beyond the schema, so 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?

The description states a specific verb (rewrite) and resource (text of an existing notice update) plus scope (PUBLIC status page), and the PATCH path confirms it edits an existing update rather than creating one, which distinguishes it from sorryapp_create_notice_update and sorryapp_update_notice.

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 'WRITE' label plus 'existing notice update' implies this is for editing an already-created update rather than creating a new one, but no sibling is named and there is no explicit when-not guidance or prerequisite statement (e.g., that the update must already exist or that a notification is triggered).

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

sorryapp_get_componentGet componentB
Read-only
Inspect

Get one component of a status page. Sorry: GET /v1/pages/{page_id}/components/{component_id}.

NameRequiredDescriptionDefault
page_idYesThe status page id, e.g. 12ab34cd (from sorryapp_list_pages).
component_idYesThe component id.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds only the underlying REST endpoint (GET /v1/pages/{page_id}/components/{component_id}), which confirms it is a single-resource read but says nothing about not-found behavior or response shape. Useful but thin beyond the annotation.

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 short sentences, purpose front-loaded with zero filler. The endpoint mapping is arguably redundant with the name but is cheap and confirms the resource path.

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?

A simple two-parameter read tool with full schema coverage and a readOnly annotation; nothing an agent needs to invoke it correctly is missing. Only the return payload is unexplained, which is acceptable given 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 coverage is 100% and both parameters are documented in the schema, including the page_id source hint (from sorryapp_list_pages). The description adds no syntax or format detail beyond what the schema already provides, so baseline 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 component of a status page"), which is unambiguous against mutation siblings like update_component or create_component. It does not explicitly name list_components as the alternative for retrieving multiple components, so sibling differentiation is only implied by the singular/plural naming.

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?

There is no guidance on when to use this versus sorryapp_list_components or sorryapp_get_page, and no stated preconditions. The agent must infer from the singular resource name that this is for a single known component_id.

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

sorryapp_get_noticeGet noticeA
Read-only
Inspect

Get one notice (incident or maintenance) with its state, times and public link. Sorry: GET /v1/pages/{page_id}/notices/{notice_id}.

NameRequiredDescriptionDefault
includeNoEmbed the notice's components and/or updates.
page_idYesThe status page id, e.g. 12ab34cd (from sorryapp_list_pages).
notice_idYesThe notice id.

TDQS

A3.5/5.0
Behavior3/5

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

readOnlyHint=true already signals a safe read. The description adds what the payload contains (state, times, public link), which is useful context, but it does not cover error behavior for a missing notice or how the include embedding changes the response.

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 compact sentences; the payload summary is front-loaded and the API mapping follows. No filler, though the 'Sorry: GET...' line is marginally redundant for an agent.

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 single-read tool with full schema coverage and no output schema, the description's summary of returned fields (state, times, public link) adequately fills the return-value gap, leaving only error/not-found behavior 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 coverage is 100%, so all three parameters including the include enum are documented in the schema itself. The description adds nothing about parameter meaning, so baseline 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+resource ('Get one notice') and clarifies scope by noting it covers both incident and maintenance notices. It implicitly distinguishes itself from list_notices and get_notice_update, though it doesn't name 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 implied by the 'get one notice by id' framing and the endpoint path, but there is no explicit when-to-use vs. siblings (e.g., list_notices for enumerating, get_notice_update for a single update) or when to prefer the include parameter.

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

sorryapp_get_notice_updateGet notice updateB
Read-only
Inspect

Get one update of a notice. Sorry: GET /v1/pages/{page_id}/notices/{notice_id}/updates/{update_id}.

NameRequiredDescriptionDefault
page_idYesThe status page id, e.g. 12ab34cd (from sorryapp_list_pages).
notice_idYesThe notice id.
update_idYesThe update id.

TDQS

B3.2/5.0
Behavior3/5

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

The readOnlyHint annotation already establishes that this is a safe read operation. The description adds the concrete REST endpoint, which reinforces the hierarchical lookup path, but it does not explain error behavior, missing IDs, or response shape.

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?

The description is brief and front-loaded with the action and resource. The appended REST endpoint is useful for developers, though the 'Sorry:' prefix is slightly noisy.

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 low-complexity single-item read with three required, fully documented parameters and a readOnlyHint, the description is sufficient. It does not describe the returned update object, but this is a minor gap given the tool’s simplicity.

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_id, notice_id, and update_id are already documented in the input schema. The description’s endpoint path echoes those parameters but adds no additional format or semantic detail beyond the schema.

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 states a specific verb-plus-resource: get one update of a notice. It clearly distinguishes fetching a single update from listing or creating updates, though it does not explicitly name those sibling alternatives.

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?

There is no explicit guidance on when to use this tool versus sorryapp_list_notice_updates or sorryapp_get_notice. The purpose implies a single-item read, but the description supplies no conditions, exclusions, or alternatives.

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

sorryapp_get_pageGet status pageA
Read-only
Inspect

Get one status page, optionally with related resources embedded (brand, components, custom_domain, notices, notices.updates, theme). Sorry: GET /v1/pages/{page_id}?include=...

NameRequiredDescriptionDefault
includeNoRelated resources to embed in the reply.
page_idYesThe status page id, e.g. 12ab34cd (from sorryapp_list_pages).

TDQS

A3.5/5.0
Behavior3/5

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

readOnlyHint=true already covers the safety profile, and the description usefully explains that related resources can be embedded via the include parameter. It says nothing about error behavior (unknown page_id) or the shape of the returned page, so it adds only modest context beyond 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?

A single compact sentence that front-loads the resource and immediately qualifies it with the optional embedding behavior. The trailing 'Sorry: GET /v1/pages/{page_id}?include=...' is a slight duplication of the schema but concisely conveys the underlying API mapping.

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 read tool with full schema coverage and no output schema, the description covers what is fetched and how related resources can be embedded. Only minor gaps remain (return shape, error cases), which are low-risk for a simple GET.

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 both parameters are fully documented in the schema, and the description merely restates the include options (notably omitting 'notices.components' from the enum). Baseline 3 is appropriate since the schema does the heavy lifting.

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 status page') plus the optional include behavior, which distinguishes it from listing tools like sorryapp_list_pages. It does not explicitly name the sibling it contrasts with, but the singular 'one status page' makes the scope clear.

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 'one status page' and the 'include' hint, and the schema description for page_id points back to sorryapp_list_pages. However, there is no explicit when-to-use vs when-not guidance (e.g. when to prefer list_pages or how to handle a missing page).

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

sorryapp_get_subscriberGet subscriberB
Read-only
Inspect

Get one subscriber of a status page (personal data; webhook URLs redacted). Sorry: GET /v1/pages/{page_id}/subscribers/{subscriber_id}.

NameRequiredDescriptionDefault
page_idYesThe status page id, e.g. 12ab34cd (from sorryapp_list_pages).
subscriber_idYesThe subscriber id.

TDQS

B3.2/5.0
Behavior3/5

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

readOnlyHint=true already declares the safety profile, so the description's remaining job is to add context. It does add real value by flagging that the payload contains personal data and that webhook URLs are redacted, which prevents wasted attempts to read them. However, it says nothing about not-found behavior, permissions, or rate limits, so the disclosure stops at one clause.

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 short sentences, front-loading the entity and its scope before the endpoint mapping; nothing is padded. The trailing "Sorry: GET /v1/pages/{page_id}/subscribers/{subscriber_id}" is largely restating the name and parameters, so it is close to but not quite free of waste.

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

Completeness3/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 carries the burden of explaining what comes back, and it only notes the sensitive/redacted aspects rather than the shape of the subscriber record. For a simple two-required-parameter read this is adequate but leaves the agent guessing about the response fields.

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 the schema itself documents both page_id (with a pointer to sorryapp_list_pages) and subscriber_id. The description adds no format, aliasing, or type detail beyond that, so the baseline 3 for a fully described schema is the right ceiling.

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 gives a specific verb and resource ("Get one subscriber of a status page") and pins it to a single REST endpoint, which cleanly separates it from sorryapp_list_subscribers. It stops short of naming the sibling it displaces, but the singular "one subscriber" is enough for an agent to distinguish them.

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?

There is no explicit when-to-use or when-not-to-use guidance, no mention of alternatives such as sorryapp_list_subscribers, and no note about what happens when the ids are unknown or the subscriber is absent. The agent must infer the retrieval use case purely from the name and endpoint.

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

sorryapp_list_componentsList componentsA
Read-only
Inspect

List a status page's components (the parts of your service shown on the page): id, name, description, state (operational/degraded/partially-degraded), position, parent_id. Sorry: GET /v1/pages/{page_id}/components.

NameRequiredDescriptionDefault
page_idYesThe status page id, e.g. 12ab34cd (from sorryapp_list_pages).

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds real value beyond that: the shape of each returned component and the concrete state values (operational/degraded/partially-degraded). Pagination or result-size behavior is not mentioned.

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?

One dense sentence with the resource definition front-loaded, followed by a terse endpoint reference. Every clause carries information; the 'Sorry: GET ...' prefix is slightly noisy but harmless.

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

Completeness5/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 compensates by enumerating returned fields and the state enum, which is exactly what an agent needs to interpret results. Combined with the single documented parameter, nothing essential 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 description coverage is 100% and there is only a single page_id parameter whose schema entry already explains its origin (sorryapp_list_pages). The endpoint hint confirms page_id scoping but adds no format or constraint detail beyond the schema.

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 a status page's components') and defines the resource in user terms. The plural 'components' implies it differs from get_component, but siblings are never named 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 implied: retrieve all components belonging to one page. It never states when to prefer get_component for a single item or create_component/update_component for mutation, so routing relies on the agent's own inference.

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

sorryapp_list_noticesList noticesA
Read-only
Inspect

List a status page's notices (incidents = type unplanned, maintenance = type planned): id, type, state, timeline_state, subject, synopsis, began/ended times, public link. Optional filters and embedded updates/components. Sorry: GET /v1/pages/{page_id}/notices.

NameRequiredDescriptionDefault
pageNoPage number, starting at 1.
typeNoplanned = maintenance, unplanned = incident.
stateNoOnly notices in this state (planned: scheduled, cancelled, underway, complete; unplanned: investigating, identified, recovering, resolved, false_alarm).
includeNoEmbed each notice's components and/or updates.
page_idYesThe status page id, e.g. 12ab34cd (from sorryapp_list_pages).
created_afterNoOnly notices created after this ISO 8601 date or datetime.
subject_containsNoOnly notices whose subject contains this text.

TDQS

A3.7/5.0
Behavior3/5

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

readOnlyHint=true already tells the agent this is a safe read, so the description only needs to add context. It contributes the endpoint mapping (GET /v1/pages/{page_id}/notices) and the shape of returned fields, but says nothing about pagination behavior, default/max page size, or ordering.

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?

One front-loaded sentence covers the resource, the vocabulary mapping, and the returned fields, followed by a terse endpoint pointer. The field enumeration is somewhat long but earns its place given there is no output schema.

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 seven parameters, no output schema, and no annotations beyond readOnly, the description does the necessary work by listing return fields and linking the type enum to business meaning. The remaining gap is pagination semantics, which is material for a list endpoint but not fatal.

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 every parameter is already documented, including the type/state enums and the include array. The description restates the same type mapping and mentions embedding, adding no syntax or format detail beyond the schema; 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 and resource ('List a status page's notices') and immediately disambiguates the domain vocabulary: incidents map to type=unplanned and maintenance to type=planned. It also enumerates the returned fields, so an agent knows this is the collection-level read rather than a single-notice fetch.

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?

Only an oblique line about 'Optional filters and embedded updates/components' hints at when to reach for this tool. It never says to use it instead of sorryapp_get_notice for a single notice, or alongside sorryapp_list_notice_updates for per-update detail, and gives no prerequisite or exclusion guidance.

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

sorryapp_list_notice_templatesList notice templatesA
Read-only
Inspect

List the page's notice templates (reusable subject + opening comment for new incidents or maintenance): id, name, subject, initial_comment, optional component_id. Returns the vendor-default template page; paging controls are withheld pending a verified request contract. Sorry: GET /v1/pages/{page_id}/notice_templates.

NameRequiredDescriptionDefault
page_idYesThe status page id, e.g. 12ab34cd (from sorryapp_list_pages).
name_containsNoOnly templates whose name contains this text.
component_name_containsNoOnly templates scoped to a component whose name contains this text.

TDQS

A3.5/5.0
Behavior4/5

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

Annotations only declare readOnlyHint=true, so the description carries real weight here and delivers two non-obvious traits: results come from the vendor-default template page, and paging controls are intentionally withheld pending a verified request contract. That is exactly the kind of caveat an agent needs and would not get from structured fields.

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?

Front-loaded with the action and the return shape, followed by the two caveats, then the endpoint. The 'Sorry: GET /v1/...' tail is a small amount of extra weight but arguably useful provenance; no sentence is 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?

With no output schema, the description correctly enumerates the returned fields, and the vendor-default-page and paging caveats close the main gaps an agent would hit. The only omission is that filtering behavior via the optional params is left entirely to the schema, which is acceptable given full coverage there.

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%, with each of the three parameters documented in the schema including the origin hint for page_id. The description adds nothing about the two optional contains-filters, so the baseline 3 applies rather than a higher score.

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 the page's notice templates') and goes further by defining what a notice template is (reusable subject + opening comment for incidents or maintenance) and enumerating the returned fields. The naming distinguishes it from the sibling sorryapp_list_update_templates, but the description never explicitly says so.

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?

There is no statement of when to use this versus sorryapp_list_update_templates or the various get_* siblings, and the two filter parameters (name_contains, component_name_contains) are never mentioned as a way to narrow results. The only contextual sentence is about paging being withheld, which is behavioral rather than usage guidance.

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

sorryapp_list_notice_updatesList notice updatesA
Read-only
Inspect

List the updates (timeline comments) of one notice: id, content, should_publish, public link, times. Sorry: GET /v1/pages/{page_id}/notices/{notice_id}/updates.

NameRequiredDescriptionDefault
page_idYesThe status page id, e.g. 12ab34cd (from sorryapp_list_pages).
notice_idYesThe notice id.

TDQS

A3.5/5.0
Behavior3/5

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

readOnlyHint=true already declares the safety profile. The description adds useful context by enumerating the returned fields (id, content, should_publish, public link, times) and the underlying endpoint, but says nothing about pagination, ordering, or visibility filtering of unpublished updates.

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?

Front-loads the verb and resource, with the returned fields and endpoint appended efficiently. The 'Sorry: GET ...' endpoint note is a bit terse but not wasteful; overall tightly sized.

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 compensates by listing the returned fields, which is genuinely helpful. It's adequate for a simple two-param read tool, though ordering/pagination behavior is unaddressed.

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 page_id and notice_id are already documented (including the page_id cross-reference to list_pages). The description adds no syntax or semantics beyond the schema, leaving the baseline of 3 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 ('List') and resource ('updates (timeline comments) of one notice') plus the fields returned. It's clear what the tool does, but it doesn't explicitly differentiate itself from the sibling get_notice_update (single update) or list_notices.

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 'of one notice' phrasing implies usage when you have a notice_id and want its timeline, but there is no explicit when-to-use, when-not, or named alternative (e.g., get_notice_update for a single update). Usage is only inferable.

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

sorryapp_list_pagesList status pagesA
Read-only
Inspect

List the status pages the API token's user can access: id, name, state (operational/degraded/...), timezone, locale, support contacts, notification channels. The id is the page_id every other tool takes. Sorry: GET /v1/pages.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, and the description adds meaningful scope beyond that: results are filtered to what the API token's user can access, which tells the agent output may be partial and why. The enumerated field list also previews the shape of each record, though result size/pagination behavior is unmentioned.

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 carries the verb, resource, scope, and returned fields, followed by the handy note that the id is the page_id used elsewhere. The trailing 'Sorry: GET /v1/pages' is cryptic and adds little for an agent, a minor bit of waste.

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 correctly compensates by enumerating returned fields (id, name, state, timezone, locale, contacts, channels). For a simple zero-param read tool this is close to complete; only result volume and any empty-list behavior are unspecified.

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 the baseline is 4. There is nothing parameter-level left to explain, and the description correctly spends its words on output shape instead.

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 (list) and resource (status pages) scoped to the token's user, then enumerates the returned fields. Easily distinguished from siblings like list_components or list_notices, which operate on child resources.

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?

Provides a strong routing hint: 'The id is the page_id every other tool takes,' implying this is the discovery entry point before calling get_page or create_component. It does not explicitly state when not to use it, but for a zero-argument list tool the usage context is essentially unambiguous.

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

sorryapp_list_subscribersList subscribersA
Read-only
Inspect

List a status page's subscribers (people and channels notified of notices): id, email, phone number, name, company, tags, created time. Webhook URLs of Slack/Teams subscribers are redacted. Contains personal data. Sorry: GET /v1/pages/{page_id}/subscribers.

NameRequiredDescriptionDefault
pageNoPage number, starting at 1.
includeNoEmbed each subscriber's components.
page_idYesThe status page id, e.g. 12ab34cd (from sorryapp_list_pages).
per_pageNoResults per page (Sorry's default for subscribers is 500).
component_idNoOnly subscribers to this component (plus those subscribed to all components).

TDQS

A3.9/5.0
Behavior4/5

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

readOnlyHint=true already covers the safety profile, and the description still adds real behavioral context an agent couldn't infer: Slack/Teams webhook URLs are redacted and the payload contains personal data. It also enumerates the returned fields, which matters since there is no output schema. It stops short of describing pagination behavior or result ordering.

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?

Front-loaded with the action and resource, then return fields, then the redaction/PII caveats — good ordering with no filler. The trailing "Sorry: GET /v1/pages/{page_id}/subscribers" is mildly redundant given the name and page_id parameter but does help confirm the underlying resource.

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 five parameters, no output schema, and read-only annotations, the description carries appropriate weight: it enumerates the return fields and flags redaction and PII, which is exactly the gap an absent output schema leaves. Pagination and sorting behavior are the only notable omissions, and the schema covers paging parameters.

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 (page, per_page, include, page_id, component_id) are already documented in the schema, including the caveat that component_id also returns subscribers subscribed to all components. The description adds no parameter-level meaning beyond that, so this sits at the baseline.

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 and resource ("List a status page's subscribers") and immediately scopes what a subscriber is ("people and channels notified of notices"), which separates it from the singular sorryapp_get_subscriber and the create/update siblings. The trailing API route anchors the resource unambiguously.

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: listing subscribers for a page. It gives a useful chaining hint that page_id comes from sorryapp_list_pages, but never says when to prefer this over sorryapp_get_subscriber or how to narrow results (e.g. use component_id for a subset). No exclusions or alternative routing.

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

sorryapp_list_timezonesList timezonesA
Read-only
Inspect

List the timezone names Sorry accepts for a status page (name and GMT offset label). Sorry: GET /v1/timezones.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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

readOnlyHint=true already covers the safety profile, and the description adds genuinely useful context beyond it: the response shape (name plus GMT offset label) and the backing endpoint (GET /v1/timezones), which signals a static reference list. It stops short of stating ordering, count, or whether the list can change.

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 tightly packed sentences: the return content is front-loaded and the endpoint mapping trails as secondary detail. No filler text.

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 and no params, the description carries the burden of describing returns and does so (name and GMT offset label). Minor gaps remain: it doesn't say whether the list is exhaustive/static or how many entries to expect.

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 the baseline is 4; there is nothing for the description to clarify. Saying the list is scoped to what 'Sorry accepts' correctly implies no filtering options exist.

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 (List) and resource (timezone names accepted by Sorry for a status page), and even names what each entry contains (name and GMT offset label). No sibling tool in the set does timezone enumeration, so it is trivially distinguishable.

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 'for a status page' implies when the results are useful (to resolve a valid timezone value for page/component operations), but there is no explicit when-to-use, prerequisite, or named alternative. Usage is inferred rather than stated.

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

sorryapp_list_update_templatesList update templatesA
Read-only
Inspect

List the page's update templates (reusable text for one notice update): id, name, content, optional component_id. Returns the vendor-default template page; paging controls are withheld pending a verified request contract. Sorry: GET /v1/pages/{page_id}/update_templates.

NameRequiredDescriptionDefault
page_idYesThe status page id, e.g. 12ab34cd (from sorryapp_list_pages).
name_containsNoOnly templates whose name contains this text.
component_name_containsNoOnly templates scoped to a component whose name contains this text.

TDQS

A3.5/5.0
Behavior3/5

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

Beyond readOnlyHint=true, the description usefully discloses that only the vendor-default template page is returned, that paging controls are deliberately withheld, and names the underlying endpoint. However it is silent on whether the name_contains and component_name_contains filters are honored, which is the main behavioral unknown an agent would hit.

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 purpose and return shape front-loaded, followed by the pagination caveat and endpoint reference. The 'Sorry: GET ...' endpoint citation is mildly odd framing but still informative and short.

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 compensates by enumerating returned fields and flagging the missing paging contract. Filter behavior remains unexplained, which is the one gap for a 3-parameter list tool.

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 the baseline is 3; the description adds no filter semantics beyond the schema. It does add return-field semantics (id, name, content, optional component_id), which the schema cannot express since there is no output schema.

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 the page's update templates') and clarifies the domain entity as 'reusable text for one notice update', plus enumerates the returned fields. It does not explicitly distinguish itself from the near-identical sibling sorryapp_list_notice_templates, so an agent must infer the difference.

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 parenthetical 'reusable text for one notice update' implies this feeds sorryapp_create_notice_update / edit_notice_update, but there is no explicit when-to-use or when-not guidance and no instruction on how to choose it over sorryapp_list_notice_templates.

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

sorryapp_update_componentUpdate componentA
Destructive
Inspect

WRITE: rename a component or change its description on the PUBLIC status page (overwrites the previous value). It cannot change the component's state: state follows open notices (use the notice tools). Sorry: PATCH /v1/pages/{page_id}/components/{component_id}.

NameRequiredDescriptionDefault
nameNoNew name.
confirmYesSet true only after the user approved this public status change or subscriber addition and any requested notification.
page_idYesThe status page id, e.g. 12ab34cd (from sorryapp_list_pages).
descriptionNoNew description.
component_idYesThe component id.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, idempotentHint=false and openWorldHint=true, so the description's bar is lower. It still adds real value by disclosing that this edits a PUBLIC surface and overwrites the prior value, though it says nothing about auth requirements or error/rate-limit behavior.

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?

Front-loaded with a 'WRITE:' marker, then the changeable fields, the hard constraint, and the endpoint. Three sentences, zero filler, in priority order.

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?

Covers mutability, public exposure, destructive overwrite, and the state-change boundary — sufficient for a 5-param mutation tool with rich annotations. It stops short of any return-value or partial-failure behavior, and there is no output schema to cover that 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 coverage is 100% and every parameter already carries a description (including the confirm safety gate), so the schema does the heavy lifting. The description only adds the implicit scoping that name/description are the sole mutable fields — a marginal gain over structured data.

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?

Specific verb+resource ('rename a component or change its description') with explicit scope ('PUBLIC status page'), and it names what it cannot do (change state). An agent can distinguish it from sorryapp_update_notice and sorryapp_create_component without opening a schema.

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

Usage Guidelines5/5

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

States both when to use (renaming/describing a component) and when not to (state changes), and redirects the latter to the notice tools. The only softness is that 'the notice tools' is a family rather than a single named sibling, but the routing is unambiguous.

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

sorryapp_update_noticeUpdate noticeA
Destructive
Inspect

WRITE: change a notice: its subject, state (for example resolved), affected components, schedule, and/or add a comment (an update) to its timeline. These changes are PUBLIC on the status page, including publish=false. publish=true additionally requests delivery to subscribers and integrations (email, SMS, Slack, Teams, X); vendor SMS/notification charges may apply. Confirm the content and audience first. Fields you pass overwrite the previous values. Sorry: PATCH /v1/pages/{page_id}/notices/{notice_id}.

NameRequiredDescriptionDefault
stateNoNew state. Planned: scheduled, cancelled, underway, complete. Unplanned: investigating, identified, recovering, resolved, false_alarm.
confirmYesSet true only after the user approved this public status change or subscriber addition and any requested notification.
page_idYesThe status page id, e.g. 12ab34cd (from sorryapp_list_pages).
publishNoshould_publish: true also sends this out to subscribers and integrations (email, SMS, Slack, Teams, X). Default false: sent as should_publish=false to suppress the requested broadcast. The notice/change is still public; this does not make a private draft.
subjectNoNew subject.
notice_idYesThe notice id.
component_idsNoIds of the affected components (from sorryapp_list_components). While the notice is open they show as degraded.
begins_at_dateNoPlanned notices only: new start date YYYY-MM-DD.
begins_at_timeNoPlanned notices only: new start time HH:MM:SS.
additional_commentNoA new public update to add to the notice timeline. publish controls the requested subscriber/integration broadcast; false still changes the public page.
duration_in_minutesNoPlanned notices only: new duration in minutes.

TDQS

A4.3/5.0
Behavior5/5

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

Annotations only declare destructive/openWorld/non-idempotent; the description adds the facts an agent actually needs: the change is PUBLIC on the status page even with publish=false, publish=true triggers paid SMS/notification delivery to named channels, and passed fields overwrite prior values. This is exactly the kind of consequence disclosure the annotation set cannot carry.

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?

Front-loaded with 'WRITE:' and the field list; every clause is substantive. Slight redundancy — the 'still public' point is restated in the publish and additional_comment areas — and the trailing 'Sorry: PATCH /v1/...' vendor/HTTP noise is unnecessary.

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

Completeness5/5

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

For an 11-parameter destructive mutation with no output schema, the description covers the decisive risks: audience exposure, subscriber delivery and charges, overwrite behavior, and the confirm requirement. Return shape is not explained, but with full schema coverage and strong annotations that is not needed for correct invocation.

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?

Schema coverage is 100%, so baseline is 3; the description still adds value by explaining that publish controls broadcast only (not visibility) and that supplied fields overwrite previous values, i.e. PATCH-style partial semantics. It does not discuss state enum choices or schedule pairing (begins_at_date/time with duration) beyond what the schema says.

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 ('change a notice') and enumerates exactly which fields are mutable (subject, state, components, schedule, timeline comment). It is clearly a write counterpart to get_notice/list_notices, but it does not disambiguate itself from the close siblings sorryapp_create_notice_update and sorryapp_edit_notice_update, which its 'add a comment (an update)' clause overlaps with.

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?

Gives concrete conditions for the risky flag: publish=false still makes the change public but suppresses broadcast, publish=true additionally notifies subscribers/integrations and may incur SMS charges, plus 'Confirm the content and audience first.' It never says when to prefer create_notice_update / edit_notice_update instead, so the overlap with siblings is left unresolved.

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. 21 tool updates
    • First observedsorryapp_create_component
    • First observedsorryapp_create_incident
    • First observedsorryapp_create_maintenance
    • First observedsorryapp_create_notice_update
    • First observedsorryapp_create_subscriber
    • First observedsorryapp_edit_notice_update
    • First observedsorryapp_get_component
    • First observedsorryapp_get_notice
    • First observedsorryapp_get_notice_update
    • First observedsorryapp_get_page
    • First observedsorryapp_get_subscriber
    • First observedsorryapp_list_components
    • First observedsorryapp_list_notice_templates
    • First observedsorryapp_list_notice_updates
    • First observedsorryapp_list_notices
    • First observedsorryapp_list_pages
    • First observedsorryapp_list_subscribers
    • First observedsorryapp_list_timezones
    • First observedsorryapp_list_update_templates
    • First observedsorryapp_update_component
    • First observedsorryapp_update_notice

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Let agents read and manage your org’s independent monitors, incidents, status pages, and alerts (honest measured state, no false greens).
    -
  • A
    license
    A
    quality
    A
    maintenance
    Enables agents to inspect app status, uptime, response times, incidents, and certificate/domain expiry; set up and manage monitors and status pages; and draft incident updates through authenticated MCP tools.
    11
    852 npm
    27
    Functional Source , Version 1.1, MIT Future
  • A
    license
    A
    quality
    A
    maintenance
    Enables AI agents to read monitors and incidents and to create, update, and resolve incidents on Kener v4 status pages, with read-only tools marked safe and write operations available when permitted.
    6
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI agents to check whether anything on a status page is down, open, update and resolve incidents, change component statuses, and schedule maintenance windows through Instatus's public API. Writes keep subscriber notifications off by default and expose MCP annotations so clients can confirm before publishing anything.
    14
    5 npm
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.