{"$schema":"https://verifymcp.io/schemas/trust-report.json","schemaVersion":1,"license":{"name":"CC BY-NC 4.0","url":"https://creativecommons.org/licenses/by-nc/4.0/"},"generatedAt":"2026-11-05T16:57:37.902Z","url":"https://verifymcp.io/servers/io-usefulapi-sorry-app/sorry-app","markdownUrl":"https://verifymcp.io/servers/io-usefulapi-sorry-app/sorry-app.md","server":{"slug":"io-usefulapi-sorry-app","name":"Sorry MCP by usefulapi","registryName":"io.usefulapi/sorry-app","description":"Read status pages and incidents; make confirmed public changes and manage individual subscribers.","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"sorry-app","type":"remote","identifier":"https://sorry-app.usefulapi.io/mcp","withdrawn":false,"url":"https://verifymcp.io/servers/io-usefulapi-sorry-app/sorry-app","version":"1.7.3","transport":null,"scoredAt":"2026-11-05T15:03:08.185Z"},"score":{"total":18,"tier":"low","status":"scored","weekDelta":null,"history":[{"date":"2026-11-05","total":18},{"date":"2026-11-04","total":18},{"date":"2026-11-03","total":18},{"date":"2026-11-02","total":18},{"date":"2026-11-01","total":65},{"date":"2026-10-31","total":65}]},"categories":[{"name":"Endpoint Security","score":46,"verdict":"fail","reasons":["The endpoint's TLS certificate is valid, in date, and uses a strong key.","Authorisation not yet verified: we couldn't confirm whether this endpoint requires it.","HTTPS enforcement could not be verified: the plaintext port redirected somewhere other than https, so enforcement is unproven.","HSTS check failed: the Strict-Transport-Security header is absent.","DNSSEC check failed: this domain isn't protected by DNSSEC."],"codes":[{"code":"tls.valid","args":{}},{"code":"auth.unreachable","args":{}},{"code":"https.inconclusive","args":{"reason":"redirect_not_https"}},{"code":"headers.hsts_absent","args":{}},{"code":"dnssec.absent","args":{}}]},{"name":"Transport & Reachability","score":0,"verdict":"fail","reasons":["Transport check failed: declared streamable-http, but the endpoint redirected instead of responding directly."],"codes":[{"code":"transport.redirected","args":{"transport":"streamable-http"}}]},{"name":"Schema Quality & AI Usability","score":0,"verdict":"unverified","reasons":["Schema not yet verified: we couldn't read the endpoint's schema, or could read only part of its tool list."],"codes":[{"code":"schema.unreachable","args":{}}]},{"name":"Stability & Change Management","score":0,"verdict":"unverified","reasons":["Stability not yet verified: not enough scan history yet (needs a 30-day window)."],"codes":[{"code":"stability.insufficient_history","args":{}}]},{"name":"Tool Coverage","score":0,"verdict":"unverified","reasons":["Tool coverage not yet verified: we couldn't read the endpoint's tools, or could read only part of the list."],"codes":[{"code":"toolquality.unreachable","args":{}}]},{"name":"Tool Safety","score":0,"verdict":"unverified","reasons":["Tool safety not yet verified: we couldn't read the endpoint's tools, or could read only part of the list."],"codes":[{"code":"toolsafety.unreachable","args":{}}]},{"name":"Capabilities","score":0,"verdict":"unverified","reasons":["Capabilities not yet verified: we couldn't read the endpoint's capabilities."],"codes":[{"code":"cap.unreachable","args":{}}]}],"inconclusive":["Authorisation not yet verified: we couldn't confirm whether this endpoint requires it.","HTTPS enforcement could not be verified: the plaintext port redirected somewhere other than https, so enforcement is unproven.","Schema not yet verified: we couldn't read the endpoint's schema, or could read only part of its tool list.","Stability not yet verified: not enough scan history yet (needs a 30-day window).","Tool coverage not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.","Tool safety not yet verified: we couldn't read the endpoint's tools, or could read only part of the list.","Capabilities not yet verified: we couldn't read the endpoint's capabilities."],"malware":[],"components":[{"slug":"sorry-app","type":"remote","identifier":"https://sorry-app.usefulapi.io/mcp","withdrawn":false,"score":18,"current":true,"url":"https://verifymcp.io/servers/io-usefulapi-sorry-app/sorry-app","markdownUrl":"https://verifymcp.io/servers/io-usefulapi-sorry-app/sorry-app.md"}],"facts":[{"label":"Endpoint","value":"https://sorry-app.usefulapi.io/mcp"},{"label":"Transports","value":"streamable-http"},{"label":"Auth","value":"none"},{"label":"Version","value":"1.7.3"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"sorryapp_list_pages","title":"List status pages","description":"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.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":63},{"name":"sorryapp_get_page","title":"Get status page","description":"Get one status page, optionally with related resources embedded (brand, components, custom_domain, notices, notices.updates, theme). Sorry: GET /v1/pages/{page_id}?include=...","inputs":[{"name":"include","type":"array","required":false,"description":"Related resources to embed in the reply."},{"name":"page_id","type":"string","required":true,"description":"The status page id, e.g. 12ab34cd (from sorryapp_list_pages)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":91},{"name":"sorryapp_list_components","title":"List components","description":"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.","inputs":[{"name":"page_id","type":"string","required":true,"description":"The status page id, e.g. 12ab34cd (from sorryapp_list_pages)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":90},{"name":"sorryapp_get_component","title":"Get component","description":"Get one component of a status page. Sorry: GET /v1/pages/{page_id}/components/{component_id}.","inputs":[{"name":"component_id","type":null,"required":true,"description":"The component id."},{"name":"page_id","type":"string","required":true,"description":"The status page id, e.g. 12ab34cd (from sorryapp_list_pages)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":70},{"name":"sorryapp_list_notices","title":"List notices","description":"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.","inputs":[{"name":"created_after","type":"string","required":false,"description":"Only notices created after this ISO 8601 date or datetime."},{"name":"include","type":"array","required":false,"description":"Embed each notice's components and/or updates."},{"name":"page","type":"integer","required":false,"description":"Page number, starting at 1."},{"name":"page_id","type":"string","required":true,"description":"The status page id, e.g. 12ab34cd (from sorryapp_list_pages)."},{"name":"state","type":"string","required":false,"description":"Only notices in this state (planned: scheduled, cancelled, underway, complete; unplanned: investigating, identified, recovering, resolved, false_alarm)."},{"name":"subject_contains","type":"string","required":false,"description":"Only notices whose subject contains this text."},{"name":"type","type":"string","required":false,"description":"planned = maintenance, unplanned = incident."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":214},{"name":"sorryapp_get_notice","title":"Get notice","description":"Get one notice (incident or maintenance) with its state, times and public link. Sorry: GET /v1/pages/{page_id}/notices/{notice_id}.","inputs":[{"name":"include","type":"array","required":false,"description":"Embed the notice's components and/or updates."},{"name":"notice_id","type":null,"required":true,"description":"The notice id."},{"name":"page_id","type":"string","required":true,"description":"The status page id, e.g. 12ab34cd (from sorryapp_list_pages)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":95},{"name":"sorryapp_list_notice_updates","title":"List notice updates","description":"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.","inputs":[{"name":"notice_id","type":null,"required":true,"description":"The notice id."},{"name":"page_id","type":"string","required":true,"description":"The status page id, e.g. 12ab34cd (from sorryapp_list_pages)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":89},{"name":"sorryapp_get_notice_update","title":"Get notice update","description":"Get one update of a notice. Sorry: GET /v1/pages/{page_id}/notices/{notice_id}/updates/{update_id}.","inputs":[{"name":"notice_id","type":null,"required":true,"description":"The notice id."},{"name":"page_id","type":"string","required":true,"description":"The status page id, e.g. 12ab34cd (from sorryapp_list_pages)."},{"name":"update_id","type":null,"required":true,"description":"The update id."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":85},{"name":"sorryapp_list_notice_templates","title":"List notice templates","description":"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.","inputs":[{"name":"component_name_contains","type":"string","required":false,"description":"Only templates scoped to a component whose name contains this text."},{"name":"name_contains","type":"string","required":false,"description":"Only templates whose name contains this text."},{"name":"page_id","type":"string","required":true,"description":"The status page id, e.g. 12ab34cd (from sorryapp_list_pages)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":136},{"name":"sorryapp_list_update_templates","title":"List update templates","description":"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.","inputs":[{"name":"component_name_contains","type":"string","required":false,"description":"Only templates scoped to a component whose name contains this text."},{"name":"name_contains","type":"string","required":false,"description":"Only templates whose name contains this text."},{"name":"page_id","type":"string","required":true,"description":"The status page id, e.g. 12ab34cd (from sorryapp_list_pages)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":129},{"name":"sorryapp_list_subscribers","title":"List subscribers","description":"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.","inputs":[{"name":"component_id","type":null,"required":false,"description":"Only subscribers to this component (plus those subscribed to all components)."},{"name":"include","type":"array","required":false,"description":"Embed each subscriber's components."},{"name":"page","type":"integer","required":false,"description":"Page number, starting at 1."},{"name":"page_id","type":"string","required":true,"description":"The status page id, e.g. 12ab34cd (from sorryapp_list_pages)."},{"name":"per_page","type":"integer","required":false,"description":"Results per page (Sorry's default for subscribers is 500)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":162},{"name":"sorryapp_get_subscriber","title":"Get subscriber","description":"Get one subscriber of a status page (personal data; webhook URLs redacted). Sorry: GET /v1/pages/{page_id}/subscribers/{subscriber_id}.","inputs":[{"name":"page_id","type":"string","required":true,"description":"The status page id, e.g. 12ab34cd (from sorryapp_list_pages)."},{"name":"subscriber_id","type":null,"required":true,"description":"The subscriber id."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":80},{"name":"sorryapp_list_timezones","title":"List timezones","description":"List the timezone names Sorry accepts for a status page (name and GMT offset label). Sorry: GET /v1/timezones.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":37},{"name":"sorryapp_create_component","title":"Create component","description":"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.","inputs":[{"name":"confirm","type":"boolean","required":true,"description":"Set true only after the user approved this public status change or subscriber addition and any requested notification."},{"name":"description","type":"string","required":false,"description":"Optional text shown next to the name."},{"name":"name","type":"string","required":true,"description":"Component name, e.g. API."},{"name":"page_id","type":"string","required":true,"description":"The status page id, e.g. 12ab34cd (from sorryapp_list_pages)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":125},{"name":"sorryapp_update_component","title":"Update component","description":"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}.","inputs":[{"name":"component_id","type":null,"required":true,"description":"The component id."},{"name":"confirm","type":"boolean","required":true,"description":"Set true only after the user approved this public status change or subscriber addition and any requested notification."},{"name":"description","type":"string","required":false,"description":"New description."},{"name":"name","type":"string","required":false,"description":"New name."},{"name":"page_id","type":"string","required":true,"description":"The status page id, e.g. 12ab34cd (from sorryapp_list_pages)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":144},{"name":"sorryapp_create_incident","title":"Create incident notice","description":"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.","inputs":[{"name":"component_ids","type":"array","required":false,"description":"Ids of the affected components (from sorryapp_list_components). While the notice is open they show as degraded."},{"name":"confirm","type":"boolean","required":true,"description":"Set true only after the user approved this public status change or subscriber addition and any requested notification."},{"name":"initial_comment","type":"string","required":false,"description":"First update shown on the incident (public)."},{"name":"page_id","type":"string","required":true,"description":"The status page id, e.g. 12ab34cd (from sorryapp_list_pages)."},{"name":"publish","type":"boolean","required":false,"description":"should_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/cha…"},{"name":"subject","type":"string","required":true,"description":"Incident title, e.g. API performance issues."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":283},{"name":"sorryapp_create_maintenance","title":"Create maintenance notice","description":"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.","inputs":[{"name":"begins_at_date","type":"string","required":false,"description":"Start date, YYYY-MM-DD (in the status page's timezone)."},{"name":"begins_at_time","type":"string","required":false,"description":"Start time, 24-hour HH:MM:SS."},{"name":"component_ids","type":"array","required":false,"description":"Ids of the affected components (from sorryapp_list_components). While the notice is open they show as degraded."},{"name":"confirm","type":"boolean","required":true,"description":"Set true only after the user approved this public status change or subscriber addition and any requested notification."},{"name":"duration_in_minutes","type":"integer","required":false,"description":"Expected length of the maintenance in minutes."},{"name":"initial_comment","type":"string","required":false,"description":"First update shown on the notice (public)."},{"name":"page_id","type":"string","required":true,"description":"The status page id, e.g. 12ab34cd (from sorryapp_list_pages)."},{"name":"publish","type":"boolean","required":false,"description":"should_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/cha…"},{"name":"should_automate_schedule","type":"boolean","required":false,"description":"true: Sorry moves the notice to underway and complete at the scheduled times."},{"name":"subject","type":"string","required":true,"description":"Maintenance title."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":339},{"name":"sorryapp_update_notice","title":"Update notice","description":"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}.","inputs":[{"name":"additional_comment","type":"string","required":false,"description":"A new public update to add to the notice timeline. publish controls the requested subscriber/integration broadcast; false still changes the public page."},{"name":"begins_at_date","type":"string","required":false,"description":"Planned notices only: new start date YYYY-MM-DD."},{"name":"begins_at_time","type":"string","required":false,"description":"Planned notices only: new start time HH:MM:SS."},{"name":"component_ids","type":"array","required":false,"description":"Ids of the affected components (from sorryapp_list_components). While the notice is open they show as degraded."},{"name":"confirm","type":"boolean","required":true,"description":"Set true only after the user approved this public status change or subscriber addition and any requested notification."},{"name":"duration_in_minutes","type":"integer","required":false,"description":"Planned notices only: new duration in minutes."},{"name":"notice_id","type":null,"required":true,"description":"The notice id."},{"name":"page_id","type":"string","required":true,"description":"The status page id, e.g. 12ab34cd (from sorryapp_list_pages)."},{"name":"publish","type":"boolean","required":false,"description":"should_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/cha…"},{"name":"state","type":"string","required":false,"description":"New state. Planned: scheduled, cancelled, underway, complete. Unplanned: investigating, identified, recovering, resolved, false_alarm."},{"name":"subject","type":"string","required":false,"description":"New subject."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":398},{"name":"sorryapp_create_notice_update","title":"Add notice update","description":"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.","inputs":[{"name":"confirm_publish","type":"boolean","required":true,"description":"Must 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…"},{"name":"content","type":"string","required":true,"description":"The update text."},{"name":"notice_id","type":null,"required":true,"description":"The notice id."},{"name":"page_id","type":"string","required":true,"description":"The status page id, e.g. 12ab34cd (from sorryapp_list_pages)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":209},{"name":"sorryapp_edit_notice_update","title":"Edit notice update","description":"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}.","inputs":[{"name":"confirm","type":"boolean","required":true,"description":"Set true only after the user approved this public status change or subscriber addition and any requested notification."},{"name":"content","type":"string","required":true,"description":"The new text."},{"name":"notice_id","type":null,"required":true,"description":"The notice id."},{"name":"page_id","type":"string","required":true,"description":"The status page id, e.g. 12ab34cd (from sorryapp_list_pages)."},{"name":"update_id","type":null,"required":true,"description":"The update id."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":142},{"name":"sorryapp_create_subscriber","title":"Add one subscriber","description":"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.","inputs":[{"name":"component_ids","type":"array","required":false,"description":"Subscribe to only these components (default: all components)."},{"name":"confirm","type":"boolean","required":true,"description":"Set true only after the user approved this public status change or subscriber addition and any requested notification."},{"name":"email","type":"string","required":false,"description":"The subscriber's email address."},{"name":"page_id","type":"string","required":true,"description":"The status page id, e.g. 12ab34cd (from sorryapp_list_pages)."},{"name":"phone_number","type":"string","required":false,"description":"Phone number with the international country code, e.g. +441234567890."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":188}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-05T15:03:08.000Z","track":"remote","endpoint":"https://sorry-app.usefulapi.io/mcp","declaredUrl":null,"truncated":false,"tls":{"outcome":"valid","label":"Valid","version":"TLS 1.3","cipherSuite":"TLS_AES_128_GCM_SHA256","chainError":null,"certificates":[{"subject":"CN=usefulapi.io","issuer":"CN=WE1,O=Google Trust Services,C=US","notBefore":"2026-09-13T08:55:39Z","notAfter":"2026-12-12T09:54:12Z","keyType":"ECDSA","keyBits":256,"isCa":false},{"subject":"CN=WE1,O=Google Trust Services,C=US","issuer":"CN=GTS Root R4,O=Google Trust Services LLC,C=US","notBefore":"2023-12-13T09:00:00Z","notAfter":"2029-02-20T14:00:00Z","keyType":"ECDSA","keyBits":256,"isCa":true},{"subject":"CN=GTS Root R4,O=Google Trust Services LLC,C=US","issuer":"CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE","notBefore":"2023-11-15T03:43:21Z","notAfter":"2028-01-28T00:00:42Z","keyType":"ECDSA","keyBits":384,"isCa":true}]},"dnssec":{"result":"insecure","label":"Not signed","name":"sorry-app.usefulapi.io.","steps":[{"zone":".","outcome":"verified","label":"Verified"},{"zone":"io.","outcome":"verified","label":"Verified"},{"zone":"usefulapi.io.","outcome":"insecure_proven","label":"Unsigned (proven)"}]},"auth":{"outcome":"inconclusive","label":"Inconclusive","gate":null,"gateLabel":null,"status":302,"authorizationServers":[]},"httpsRedirect":{"outcome":"inconclusive","label":"Inconclusive","status":302},"transports":[{"transport":"streamable-http","outcome":"redirected","label":"Redirected","status":302,"followed":false}],"provenance":null,"installScripts":[],"installScriptsTotal":null,"vulnerabilities":[],"vulnerabilitiesTotal":null,"dependencies":null},"mismatches":[],"changelog":{"trackingSince":"2026-10-31","recent":[{"id":"chg_01a199dc-7020-7e96-a981-5322881fa18b","kind":"check.unverifiable","summary":"Tool safety (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-sorry-app/sorry-app#chg-chg_01a199dc-7020-7e96-a981-5322881fa18b"},{"id":"chg_01a199dc-7021-7663-8285-631abbd82fe0","kind":"check.unverifiable","summary":"Authorization (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-sorry-app/sorry-app#chg-chg_01a199dc-7021-7663-8285-631abbd82fe0"},{"id":"chg_01a199dc-7021-7bbb-afdc-a657ae9fad24","kind":"check.unverifiable","summary":"Stability (0.03 → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-sorry-app/sorry-app#chg-chg_01a199dc-7021-7bbb-afdc-a657ae9fad24"},{"id":"chg_01a199dc-7022-70d1-9ae1-f075de355352","kind":"check.unverifiable","summary":"Schema quality (100 → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-sorry-app/sorry-app#chg-chg_01a199dc-7022-70d1-9ae1-f075de355352"},{"id":"chg_01a199dc-7022-7501-8744-88b81611e861","kind":"check.unverifiable","summary":"Capabilities (pass → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-sorry-app/sorry-app#chg-chg_01a199dc-7022-7501-8744-88b81611e861"},{"id":"chg_01a199dc-7022-7a0d-8d14-40bc177b0b5b","kind":"check.unverifiable","summary":"Tool coverage (100 → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-sorry-app/sorry-app#chg-chg_01a199dc-7022-7a0d-8d14-40bc177b0b5b"},{"id":"chg_01a199dc-7022-7e72-a32c-e3793c5c13e1","kind":"capture.status_changed","summary":"Endpoint reachability (reachable → not serving MCP)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-sorry-app/sorry-app#chg-chg_01a199dc-7022-7e72-a32c-e3793c5c13e1"},{"id":"chg_01a199dc-7023-7365-8388-ae6eb5c0e35c","kind":"score.total_changed","summary":"Trust score (65 → 18)","materiality":"functional","direction":"regression","scoreDelta":-47,"occurredOn":"2026-11-02","url":"https://verifymcp.io/servers/io-usefulapi-sorry-app/sorry-app#chg-chg_01a199dc-7023-7365-8388-ae6eb5c0e35c"},{"id":"chg_01a194b6-4b7a-7d8f-8f67-c68d35e6cd91","kind":"check.reverified","summary":"Stability (unverified → 0.03)","materiality":"functional","direction":"improvement","scoreDelta":null,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/io-usefulapi-sorry-app/sorry-app#chg-chg_01a194b6-4b7a-7d8f-8f67-c68d35e6cd91"},{"id":"chg_01a193fd-7c99-78d5-ab6a-5ee4b0b6c573","kind":"score.first_scored","summary":"First indexed and scored","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-sorry-app/sorry-app#chg-chg_01a193fd-7c99-78d5-ab6a-5ee4b0b6c573"},{"id":"chg_01a19115-c6c3-7dad-aba4-e8bab1cbf74d","kind":"score.first_scored","summary":"First indexed and scored","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-31","url":"https://verifymcp.io/servers/io-usefulapi-sorry-app/sorry-app#chg-chg_01a19115-c6c3-7dad-aba4-e8bab1cbf74d"}],"truncated":false,"feedUrl":"https://verifymcp.io/servers/io-usefulapi-sorry-app/sorry-app/changelog.json"},"links":{"html":"https://verifymcp.io/servers/io-usefulapi-sorry-app/sorry-app","markdown":"https://verifymcp.io/servers/io-usefulapi-sorry-app/sorry-app.md","changelogJson":"https://verifymcp.io/servers/io-usefulapi-sorry-app/sorry-app/changelog.json","changelogRss":"https://verifymcp.io/servers/io-usefulapi-sorry-app/sorry-app.xml","external":[{"label":"Remote endpoint","href":"https://sorry-app.usefulapi.io/mcp"},{"label":"Repository","href":"https://github.com/m190/usefulapi-mcp"},{"label":"Website","href":"https://usefulapi.io/sorry-app/"}]}}