Sorry MCP by usefulapi

io.usefulapiPublished by usefulapi.ioOfficial publisherv1.8.4Updated Nov 7, 2026

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

The publisher's own server: Ably MCP by usefulapi

Overview

AI-generated overview

Read Sorry status pages, components, incidents and subscribers, and make confirmed public changes such as incidents, maintenance and notice updates.

What you can do
  • List and read status pages, their components and accepted timezones
  • List and read notices (incidents and maintenance) with their timeline updates
  • List notice and update templates for reuse
  • List and read subscribers, including contact details
  • Create and rename components, and open incidents or schedule maintenance
  • Add, update and rewrite notice updates, and add one subscriber at a time
When to use it
Useful when you run a Sorry status page and want an assistant to review current incidents, components and subscribers, or to draft and publish incident and maintenance notices after you confirm them. Also handy for checking how many tool calls remain on the free tier.
Requirements
A remote MCP endpoint added by URL only; sign-in happens through OAuth with your Sorry credentials, so no API key or Authorization header goes in the client config. A Sorry API token created under My Account is used for the vendor calls, and network access to the endpoint is required.
Before you install
Write tools change the public status page, and publish=false only requests suppression of the broadcast, not a private draft; the new-notice-update tool has no verified suppression switch. publish=true can trigger email, SMS, Slack, Teams or X delivery with possible vendor SMS charges. Subscriber records contain personal data and adding one enables future notifications. Free tier is 50 calls a month; Pro and Pro+ are paid subscriptions with Stripe checkout. Status records and subscriber…

Installation

In SourceWeft

  1. Open Sorry MCP by usefulapi in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.usefulapi%2Fsorry-app/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "sorry-by-usefulapi": {
      "type": "http",
      "url": "https://sorry-app.usefulapi.io/mcp"
    }
  }
}

README

Sorry MCP server

Connect

  • Claude (claude.ai, Desktop): open Customize → Connectors, click + Add → Add custom connector, and paste https://sorry-app.usefulapi.io/mcp.
  • Claude Code: claude mcp add --transport http sorry-app https://sorry-app.usefulapi.io/mcp, then run /mcp to log in.
  • VS Code: Add to VS Code.
  • Cursor and other clients: add the URL as a remote MCP server:
json
{  "mcpServers": {    "sorry-app": {      "url": "https://sorry-app.usefulapi.io/mcp"    }  }}

Add only the URL. Do not add an Authorization header or an API key to the client config: the server signs you in with OAuth, and the login page asks for your Sorry credentials.

Step-by-step setup, where to find your credentials, and FAQ: https://usefulapi.io/sorry-app/

Tools

ToolTypeWhat it does
sorryapp_list_pagesreadList status pages
sorryapp_get_pagereadGet status page
sorryapp_list_componentsreadList components
sorryapp_get_componentreadGet component
sorryapp_list_noticesreadList notices
sorryapp_get_noticereadGet notice
sorryapp_list_notice_updatesreadList notice updates
sorryapp_get_notice_updatereadGet notice update
sorryapp_list_notice_templatesreadList notice templates
sorryapp_list_update_templatesreadList update templates
sorryapp_list_subscribersreadList subscribers
sorryapp_get_subscriberreadGet subscriber
sorryapp_list_timezonesreadList timezones
sorryapp_create_componentwriteCreate component
sorryapp_update_componentwriteUpdate component
sorryapp_create_incidentwriteCreate incident notice
sorryapp_create_maintenancewriteCreate maintenance notice
sorryapp_update_noticewriteUpdate notice
sorryapp_create_notice_updatewriteAdd notice update
sorryapp_edit_notice_updatewriteEdit notice update
sorryapp_create_subscriberwriteAdd one subscriber
sorryapp_usage_statusmetaUsage status (free-tier meter)
sorryapp_request_featuremetaRequest a missing feature
sorryapp_upgrademetaUpgrade to Pro or Pro+
sorryapp_cancel_subscriptionmetaCancel the Pro subscription

read tools are read-only; write tools mutate data (clients should confirm them); meta tools report usage, manage your subscription or send a feature request.

Pricing

PlanPriceLimit
Free (per connected Sorry API token)$050 tool calls / month
Pro (per connected Sorry API token)$9/mo or $90/yr (2 months free)Unlimited*

*Pro has a fair use limit of 10,000 tool calls a month on this server. For more, write to [email protected].

Pro covers this server only. Subscribe with sorryapp_upgrade (it returns a Stripe Checkout link). Cancel any time with sorryapp_cancel_subscription: Pro continues to the end of the paid period, with no refund for the current period, and running sorryapp_upgrade before then undoes the cancel. Or write to [email protected].

License

MIT

Token access, billing and data

Create a token in Sorry under My Account → API Tokens. This independent connector uses customer-authorized API access, with no claimed vendor endorsement or partner status. Your vendor subscription, API eligibility, quotas and notification/SMS charges remain separate. Sorry documents 10 requests per second per API token.

The token is encrypted for authorized API calls. Requested status records and subscriber contact details reach your chosen AI client and LLM provider. Credential fields, connected-token values and Slack/Teams webhook URLs are redacted. Revoke the token in Sorry to stop access; disconnect UsefulAPI to end this connection.

Usage and billing follow this token. Rotation creates a new UsefulAPI identity and does not automatically transfer Pro. Cancel the old UsefulAPI plan before rotation or contact support before changing the token.

Public changes and notifications

Every write requires explicit confirmation. Components, notices and notice updates are public. publish=false requests suppression of the subscriber/integration broadcast; it does not make a private draft. publish=true additionally requests delivery through configured email, SMS, Slack, Teams or X channels. Vendor automations may also react to a public change, so review its content and audience.

The separate new-notice-update tool exposes no verified suppression switch and requires explicit broadcast confirmation. Adding a subscriber enables future notifications to that address or phone number. The connector does not delete resources or import/remove subscriber lists.

No vendor call is automatically replayed. After a timeout or uncertain response, check Sorry before repeating a write: duplicate calls can duplicate public records or notifications. A valid response record id is required before reporting an acknowledged change.

Notice lists support the documented page parameter, and subscriber lists support page/per_page. Template tools return the vendor-default page with documented filters; template paging and notice per_page controls are withheld pending verified request contracts. Maintenance times are sent as HH:MM:SS in the status page’s timezone.

The 21 tools were checked against current vendor documentation and local mocks. Missing/nonexistent-token checks received the vendor’s JSON401. No authenticated customer reads, real public status changes, subscriber additions or notifications were tested.

Source: servers/sorry-app/README.md at commit 4046075

Tools

21

sorryapp_list_pages

List status pages

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.

Takes no parameters.

sorryapp_get_page

Get status page

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

Parametersincludepage_idrequired

sorryapp_list_components

List components

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.

Parameterspage_idrequired

sorryapp_get_component

Get component

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

Parameterspage_idrequiredcomponent_idrequired

sorryapp_list_notices

List notices

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.

Parameterspagetypestateincludepage_idrequiredcreated_aftersubject_contains

sorryapp_get_notice

Get notice

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

Parametersincludepage_idrequirednotice_idrequired

sorryapp_list_notice_updates

List notice updates

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.

Parameterspage_idrequirednotice_idrequired

sorryapp_get_notice_update

Get notice update

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

Parameterspage_idrequirednotice_idrequiredupdate_idrequired

sorryapp_list_notice_templates

List notice templates

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.

Parameterspage_idrequiredname_containscomponent_name_contains

sorryapp_list_update_templates

List update templates

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.

Parameterspage_idrequiredname_containscomponent_name_contains

sorryapp_list_subscribers

List subscribers

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.

Parameterspageincludepage_idrequiredper_pagecomponent_id

sorryapp_get_subscriber

Get subscriber

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

Parameterspage_idrequiredsubscriber_idrequired

sorryapp_list_timezones

List timezones

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

Takes no parameters.

sorryapp_create_component

Create component

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.

Parametersnamerequiredconfirmrequiredpage_idrequireddescription

sorryapp_update_component

Update component

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}.

Parametersnameconfirmrequiredpage_idrequireddescriptioncomponent_idrequired

sorryapp_create_incident

Create incident notice

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.

Parametersconfirmrequiredpage_idrequiredpublishsubjectrequiredcomponent_idsinitial_comment

sorryapp_create_maintenance

Create maintenance notice

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.

Parametersconfirmrequiredpage_idrequiredpublishsubjectrequiredcomponent_idsbegins_at_datebegins_at_timeinitial_commentduration_in_minutesshould_automate_schedule

sorryapp_update_notice

Update notice

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}.

Parametersstateconfirmrequiredpage_idrequiredpublishsubjectnotice_idrequiredcomponent_idsbegins_at_datebegins_at_timeadditional_commentduration_in_minutes

sorryapp_create_notice_update

Add notice update

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.

Parameterscontentrequiredpage_idrequirednotice_idrequiredconfirm_publishrequired

sorryapp_edit_notice_update

Edit notice update

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}.

Parametersconfirmrequiredcontentrequiredpage_idrequirednotice_idrequiredupdate_idrequired

sorryapp_create_subscriber

Add one subscriber

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.

Parametersemailconfirmrequiredpage_idrequiredphone_numbercomponent_ids

Version history

10
  1. v1.8.4LatestNov 7, 2026
  2. v1.7.3Nov 5, 2026
  3. v1.7.2Nov 5, 2026
  4. v1.7.1Nov 4, 2026
  5. v1.7.0Nov 3, 2026
  6. v1.6.1Nov 3, 2026
  7. v1.5.0Nov 1, 2026
  8. v1.3.0Oct 31, 2026
  9. v1.2.0Oct 31, 2026
  10. v1.1.0Oct 31, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

Other Usefulapi integrations