Cancel My Sub
Server Details
How to cancel US and UK subscriptions, the last safe day to cancel, and what a card charge is.
- Status
- Healthy
- Uptime
- 100.0% over 22 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- GoodTurnStudio/goodturn-mcp
- GitHub Stars
- 0
- Server Listing
- goodturn-mcp
TDQS
Scored across 4 tools
Each tool targets a distinct task: identifying a charge, getting cancellation steps, creating a calendar reminder, and listing covered services. The two 'get_cancel_*' tools could be momentarily confused, but descriptions clearly separate a steps lookup from a calendar file generator.
All names use snake_case verb_noun form (get_cancel_reminder, get_cancel_steps, identify_charge, list_services). The only minor wrinkle is the reused 'get_cancel_' prefix for two tools with different outputs, but the pattern remains predictable.
Four tools is lean but each earns its place in a narrow subscription-cancellation domain (identify, instruct, remind, enumerate). It sits at the thin edge but isn't trivially small.
The surface covers the full advisory lifecycle: discover services, identify unknown charges, get cancellation steps, and set a reminder. Actually executing cancellation is intentionally out of scope, leaving only minor gaps such as tracking or updating saved subscriptions.
Available Tools
4 toolsget_cancel_reminderCalendar reminder for the last safe day to cancelARead-onlyIdempotentInspect
Calendar reminder for the last safe day to cancel. Returns a calendar file (.ics) with an all-day event on the cancel-by day, the steps and the official link, with alerts at 9am the day before and 9am on the day. Nothing is stored. get_cancel_steps gives this link as add_to_calendar whenever renews_on is given and the day hasn't passed.
| Name | Required | Description | Default |
|---|---|---|---|
| country | No | Two-letter country code. GB (or UK) gives UK pages, UK notice rules and uk_rules; defaults to the caller's country, else US. | |
| service | Yes | The subscription, as for get_cancel_steps. | |
| renews_on | Yes | Next renewal or billing date, YYYY-MM-DD. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds genuine behavioral context beyond that: 'Nothing is stored' (no server-side persistence) and the exact contents/alerts baked into the .ics, which the annotations do not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with purpose and output contents before the sibling routing note. Every clause earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, yet the description fully documents the return artifact (all-day .ics event with steps, official link, and 9am alerts on the day before and day of). Combined with the 'Nothing is stored' note, an agent has everything needed to call and interpret it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and each parameter is already well documented in the schema. The description adds only indirect meaning, hinting that renews_on drives the computed cancel-by day and that service behaves 'as for get_cancel_steps'. Baseline 3 is appropriate when the schema carries the parameter burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (generate a calendar reminder/.ics for the cancel-by day) rather than restating the name. It also implicitly distinguishes itself from the sibling get_cancel_steps by describing a different artifact (a downloadable calendar file versus steps).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The final sentence routes the agent: get_cancel_steps surfaces this link as add_to_calendar whenever renews_on is given and the day hasn't passed. That is clear contextual guidance tied to a sibling, though it never states an explicit when-not-to-use condition (e.g. what to do once the day has passed).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cancel_stepsHow to cancel one subscriptionARead-onlyIdempotentInspect
How to cancel one subscription. For requests like "how do I cancel Netflix?", "cancel my Planet Fitness membership", "how do I leave Sky?", "cancel my PureGym", "what's the cheapest way to keep Spotify?", "stop my Audible". Returns the official page, steps, catches and a cheaper option. UK answers add region ("UK") and uk_rules; a US-only service asked about from the UK has region "US only".
| Name | Required | Description | Default |
|---|---|---|---|
| country | No | Two-letter country code. GB (or UK) gives UK pages, UK notice rules and uk_rules; defaults to the caller's country, else US. | |
| service | Yes | The subscription's name in everyday words, up to 80 characters. | |
| renews_on | No | Next renewal or billing date (or next delivery for meal kits), YYYY-MM-DD. Adds cancel_by: the last safe day to cancel using the service's own notice rule, or a day early where it has none, and add_to_calendar: a link to a calendar reminder for that day. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description still adds real context: what the response contains (page, steps, catches, cheaper option) and the region behaviour (UK answers add region and uk_rules; a US-only service queried from the UK yields region 'US only'). Auth or rate-limit behaviour is not addressed, keeping it at a 4.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single-sentence purpose is front-loaded and the example list, while long, earns its place by capturing the varied natural-language forms the tool must route. Slightly heavy, but no sentence is pure padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 results and does so ('official page, steps, catches and a cheaper option'), plus the region-conditional fields. What remains thin is failure behaviour, e.g. what happens for an unknown service, which prevents a 5 for a 3-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so country, service and renews_on are already fully documented in the schema, including the UK region logic and the cancel_by/add_to_calendar side effects. The description's region sentence restates schema content rather than extending it, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb-and-resource combination ('How to cancel one subscription') and enumerates the payload — official page, steps, catches, cheaper option — so the agent knows exactly what comes back. It does not explicitly name or contrast the sibling tools (list_services, identify_charge, get_cancel_reminder), though the 'one subscription' scoping implies the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The quoted example user queries ('how do I cancel Netflix?', 'cancel my PureGym', 'stop my Audible') act as strong routing signals for when this tool applies. No explicit when-not-to-use or named alternative is given, so it stops 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.
identify_chargeWhich subscription is this charge?ARead-onlyIdempotentInspect
Which subscription is this charge? For requests like "what is this APPLE.COM/BILL charge?", "I see AMZN Digital on my statement", "what is DD *DOORDASH DASHPASS?". Returns the likely service, or for Apple, Amazon, Google and Microsoft the few it could be and where to check, or match: purchase when it looks like a one-off order (marketplace, a ride, a restaurant through a delivery app). Then call get_cancel_steps.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The charge as it appears on the statement, up to 120 characters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description still adds meaningful behavior beyond that: it discloses the ambiguous-return cases (Apple/Amazon/Google/Microsoft return a few candidates plus where to check) and the 'match: purchase' outcome for one-off orders, which matters given there is no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is front-loaded with the core question, then examples, then return behavior, then the next-step call, so the structure is easy to scan. The middle sentence is long and slightly run-on with its chained 'or ... or ...' clauses, which costs it the top score but not substantially.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only lookup with no output schema, the description covers the essentials: what it takes, what shape the answer comes in, and what to do next. It does not cover edge cases such as unrecognized charges or confidence/ambiguity outside the four named vendors, leaving a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and there is only one required string parameter, so the baseline would be 3. The description earns an extra point by illustrating the expected input format with three real-world statement strings, which conveys the 'as it appears on the statement' convention more vividly than the schema text alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource (identify which subscription a given statement charge belongs to) and reinforces it with three concrete example queries that match real user phrasing. It also distinguishes itself from siblings by naming get_cancel_steps as the follow-up, so an agent can place it in the workflow without opening another schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear triggering context via the quoted example requests and specifies the next step ('Then call get_cancel_steps'), which is a real routing instruction. What's missing is explicit when-not-to-use guidance or a direct contrast with siblings like list_services, so it stops 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.
list_servicesEvery subscription Cancel My Sub coversARead-onlyIdempotentInspect
Every subscription Cancel My Sub covers. For requests like "which subscriptions can you help me cancel?" or "what gyms do you know?". Also returns the current status of the FTC click-to-cancel rule and the UK rules (uk_rules)
| Name | Required | Description | Default |
|---|---|---|---|
| country | No | Two-letter country code. GB (or UK) leaves out US-only services; defaults to the caller's country, else US. | |
| category | No | Category: streaming, music, membership, gym, news, meal kit, software, app store, dating, wellness, home security, phone and internet, tv and broadband. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive, openWorld), so the lower bar applies. The description still discloses non-obvious payload content — that it also returns FTC click-to-cancel rule status and UK rules (uk_rules) — which is genuine behavioral information beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the resource and followed by example triggers. Minor waste in the cryptic trailing "(uk_rules)" fragment, but nothing bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, zero-required-param listing tool with no output schema, the description conveys what the tool covers and what extra regulatory information comes back. Only the return shape of the subscription list itself is left implicit, a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the country and category parameters are fully documented in the schema, including the country defaulting behavior. The description adds no syntax, format, or filtering detail beyond that, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the resource — the catalog of subscriptions Cancel My Sub covers — and identifies what the tool can answer. The verb is only implied ("returns"), and the title is largely repeated, but an agent can distinguish this listing tool from get_cancel_steps and identify_charge.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete example utterances ("which subscriptions can you help me cancel?", "what gyms do you know?") that map user intent to this tool, which is strong routing guidance. It does not name alternative tools or state when not to use it, so it stops 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.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- Changed
get_cancel_reminder1 field changed- changed
Input schema / properties / service / descriptionPrevious value: -"The subscription, as for getCancelSteps."New value: +"The subscription, as for get_cancel_steps."
- Changed
list_services1 field changed- changed
Input schema / properties / category / descriptionPrevious value: -"streaming, music, membership, gym, news, meal kit, software, app store, dating, wellness, home security, phone and internet, tv and broadband."New value: +"Category: streaming, music, membership, gym, news, meal kit, software, app store, dating, wellness, home security, phone and internet, tv and broadband."
4 tool updates
- First observed
get_cancel_reminder - First observed
get_cancel_steps - First observed
identify_charge - First observed
list_services
Related MCP Connectors
Cancel or cut any subscription: exit steps, cheaper plans, alternatives and the cheapest stack.
Fail-closed refund, cancellation, return, and trial checks for 100 US subscription vendors.
Call scripts to lower bills in the US and UK, low-cost plans you may qualify for, and when to call.
Finds recurring charges in bank statements and flags what to cancel.
Related MCP Servers
FlicenseNot gradedqualityBmaintenanceEnables users to audit recurring bank/card subscription charges, detect sneaky fee increases or expired-trial conversions, calculate annualized budget leakage, and generate retention negotiation dispute letters.7-- FlicenseNot gradedqualityBmaintenanceEnables auditing recurring bank and card subscription charges to detect stealth price increases, expired trial conversions, and calculate annualized budget leakage. It also generates retention negotiation dispute letters to help users reduce unnecessary expenses.7-
- AlicenseNot gradedqualityBmaintenanceEnables agents to monitor transaction streams, detect recurring charges and price creeping, flag zombie subscriptions, and generate automated cancellation workflows.7MIT
- AlicenseAqualityDmaintenanceScans bank statements for zombie subscriptions and drafts cancellation, renegotiation, or data deletion letters.3MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.