All servers: 100 vendors, US region, individual plans, stateless, no auth, 100 req/min. Start local dev server: In a separate terminal: Use workflow endpoints when you want one request to return: - decision classification (yes | no | tie) from /api/decide - policy result from the relevant notary endpoint - recommended Zendesk action + tags + private note with requestid - POST https://refund.decide
Add this skill
npx mdskills install decidefyi/decideComprehensive MCP server suite for subscription policy decisions across 100 vendors with clear APIs
1# decide.fyi23> Deterministic subscription decision notaries for US consumers45[](https://decide.fyi)6[](https://modelcontextprotocol.io)7[](https://decide.fyi)89## One-Click Install1011[](cursor://anysphere.cursor-deeplink/mcp/install?name=refund-decide&config=eyJ1cmwiOiAiaHR0cHM6Ly9yZWZ1bmQuZGVjaWRlLmZ5aS9hcGkvbWNwIn0=) [](https://insiders.vscode.dev/redirect/mcp/install?name=refund-decide&config=%7B%22type%22%3A%20%22http%22%2C%20%22url%22%3A%20%22https%3A//refund.decide.fyi/api/mcp%22%7D) [](#connect-via-mcp-claude-desktop--windsurf--other-clients) [](#connect-via-mcp-claude-desktop--windsurf--other-clients) [](#connect-via-mcp-claude-desktop--windsurf--other-clients) [](#connect-via-mcp-claude-desktop--windsurf--other-clients)1213> Buttons install the **Refund Notary** server. To add all 4 servers, use the [JSON config below](#connect-via-mcp-claude-desktop--windsurf--other-clients).1415## MCP Servers1617| Server | Domain | Tool | Verdicts |18|--------|--------|------|----------|19| **Refund Notary** | [refund.decide.fyi](https://refund.decide.fyi) | `refund_eligibility` | ALLOWED / DENIED / UNKNOWN |20| **Cancel Notary** | [cancel.decide.fyi](https://cancel.decide.fyi) | `cancellation_penalty` | FREE_CANCEL / PENALTY / LOCKED / UNKNOWN |21| **Return Notary** | [return.decide.fyi](https://return.decide.fyi) | `return_eligibility` | RETURNABLE / EXPIRED / NON_RETURNABLE / UNKNOWN |22| **Trial Notary** | [trial.decide.fyi](https://trial.decide.fyi) | `trial_terms` | TRIAL_AVAILABLE / NO_TRIAL / UNKNOWN |2324All servers: 100 vendors, US region, individual plans, stateless, no auth, 100 req/min.2526## Quick Start2728### Connect via MCP (Claude Desktop / Windsurf / other clients)2930```json31{32 "mcpServers": {33 "refund-decide": { "url": "https://refund.decide.fyi/api/mcp" },34 "cancel-decide": { "url": "https://cancel.decide.fyi/api/mcp" },35 "return-decide": { "url": "https://return.decide.fyi/api/mcp" },36 "trial-decide": { "url": "https://trial.decide.fyi/api/mcp" }37 }38}39```4041### REST API4243```bash44# Refund eligibility45curl -X POST https://refund.decide.fyi/api/v1/refund/eligibility \46 -H "Content-Type: application/json" \47 -d '{"vendor":"adobe","days_since_purchase":12,"region":"US","plan":"individual"}'4849# Cancellation penalty50curl -X POST https://cancel.decide.fyi/api/v1/cancel/penalty \51 -H "Content-Type: application/json" \52 -d '{"vendor":"adobe","region":"US","plan":"individual"}'5354# Return eligibility55curl -X POST https://return.decide.fyi/api/v1/return/eligibility \56 -H "Content-Type: application/json" \57 -d '{"vendor":"adobe","days_since_purchase":12,"region":"US","plan":"individual"}'5859# Trial terms60curl -X POST https://trial.decide.fyi/api/v1/trial/terms \61 -H "Content-Type: application/json" \62 -d '{"vendor":"adobe","region":"US","plan":"individual"}'63```6465### Local Dev Checks6667Start local dev server:6869```bash70npx vercel dev71```7273In a separate terminal:7475```bash76# Handler-level smoke checks (no running server required)77npm run smoke7879# MCP endpoint checks (requires vercel dev running on localhost:3000)80npm run mcp:check8182# End-to-end workflow fixture (example -> result)83npm run workflow:test84```8586---8788## Zendesk Workflow Orchestrators8990Use workflow endpoints when you want one request to return:9192- decision classification (`yes | no | tie`) from `/api/decide`93- policy result from the relevant notary endpoint94- recommended Zendesk action + tags + private note with `request_id`9596**Endpoints**9798- `POST https://refund.decide.fyi/api/v1/workflows/zendesk/refund`99- `POST https://cancel.decide.fyi/api/v1/workflows/zendesk/cancel`100- `POST https://return.decide.fyi/api/v1/workflows/zendesk/return`101- `POST https://trial.decide.fyi/api/v1/workflows/zendesk/trial`102103### Request104105```json106{107 "ticket_id": "ZD-9001",108 "workflow_type": "refund",109 "question": "Should this Adobe annual plan refund request proceed under policy?",110 "vendor": "adobe",111 "region": "US",112 "plan": "individual",113 "days_since_purchase": 5114}115```116117For `refund` and `return`, include `days_since_purchase`.118119### Deterministic test mode120121Set `decision_override` to bypass model classification during fixtures and CI:122123```json124{125 "decision_override": "yes"126}127```128129### Response (example)130131```json132{133 "ok": true,134 "flow": "zendesk_refund_v1",135 "ticket_id": "ZD-9001",136 "decision": { "c": "yes", "request_id": "req_123" },137 "policy": { "verdict": "ALLOWED", "code": "WITHIN_WINDOW" },138 "action": {139 "type": "approve_refund",140 "zendesk_tags": ["decide", "decide_yes", "refund_allowed"]141 }142}143```144145---146147## Refund Notary148149**Endpoint:** `POST https://refund.decide.fyi/api/v1/refund/eligibility`150**MCP Tool:** `refund_eligibility`151152Checks if a subscription purchase is within the vendor's refund window.153154**Input:** `vendor`, `days_since_purchase`, `region`, `plan`155156```json157{"refundable":true,"verdict":"ALLOWED","code":"WITHIN_WINDOW","message":"Refund is allowed. Purchase is 12 day(s) old, within 14 day window.","vendor":"adobe","window_days":14}158```159160**Codes:** `WITHIN_WINDOW`, `OUTSIDE_WINDOW`, `NO_REFUNDS`, `UNSUPPORTED_VENDOR`161162## Cancel Notary163164**Endpoint:** `POST https://cancel.decide.fyi/api/v1/cancel/penalty`165**MCP Tool:** `cancellation_penalty`166167Checks cancellation penalties — early termination fees, contract locks, or free cancellation.168169**Input:** `vendor`, `region`, `plan`170171```json172{"verdict":"PENALTY","code":"EARLY_TERMINATION_FEE","message":"adobe charges an early termination fee: 50% of remaining months on annual plan.","vendor":"adobe","policy":"etf"}173```174175**Codes:** `NO_PENALTY`, `EARLY_TERMINATION_FEE`, `CONTRACT_LOCKED`, `UNSUPPORTED_VENDOR`176177## Return Notary178179**Endpoint:** `POST https://return.decide.fyi/api/v1/return/eligibility`180**MCP Tool:** `return_eligibility`181182Checks if a subscription purchase can be returned/reversed, with return type and method.183184**Input:** `vendor`, `days_since_purchase`, `region`, `plan`185186```json187{"returnable":true,"verdict":"RETURNABLE","code":"FULL_RETURN","message":"Return is available. Purchase is 5 day(s) old, within 14-day window.","vendor":"adobe","return_type":"full_refund","method":"self_service"}188```189190**Codes:** `FULL_RETURN`, `PRORATED_RETURN`, `CREDIT_RETURN`, `OUTSIDE_WINDOW`, `NO_RETURNS`, `UNSUPPORTED_VENDOR`191192## Trial Notary193194**Endpoint:** `POST https://trial.decide.fyi/api/v1/trial/terms`195**MCP Tool:** `trial_terms`196197Checks free trial availability, length, card requirement, and auto-conversion status.198199**Input:** `vendor`, `region`, `plan`200201```json202{"verdict":"TRIAL_AVAILABLE","code":"AUTO_CONVERTS","message":"adobe offers a 7-day free trial. Credit card required. Auto-converts to paid plan.","vendor":"adobe","trial_days":7,"card_required":true,"auto_converts":true}203```204205**Codes:** `AUTO_CONVERTS`, `NO_AUTO_CONVERT`, `TRIAL_NOT_AVAILABLE`, `UNSUPPORTED_VENDOR`206207---208209## Supported Vendors (100)210211| Vendor | Identifier | Refund | Cancel | Return | Trial |212|--------|-----------|--------|--------|--------|-------|213| 1Password | `1password` | No refunds | Free | No return | 14d |214| Adobe | `adobe` | 14d | ETF | 14d full | 7d |215| Amazon Prime | `amazon_prime` | 3d | Free | 3d full | 30d |216| Apple App Store | `apple_app_store` | 14d | Free | 14d full | - |217| Apple Music | `apple_music` | No refunds | Free | No return | 30d |218| Apple TV+ | `apple_tv_plus` | No refunds | Free | No return | 7d |219| Audible | `audible` | No refunds | Free | No return | 30d |220| Bitwarden | `bitwarden` | 30d | Free | 30d full | 7d |221| Bumble | `bumble` | No refunds | Free | No return | 7d |222| Calm | `calm` | 30d | Free | 30d full | 7d |223| Canva | `canva` | No refunds | Free | No return | 30d |224| ChatGPT Plus | `chatgpt_plus` | No refunds | Free | No return | - |225| Claude Pro | `claude_pro` | No refunds | Free | No return | - |226| Coursera Plus | `coursera_plus` | 14d | Free | 14d full | 7d |227| Crunchyroll | `crunchyroll` | No refunds | Free | No return | 7d |228| Deezer | `deezer` | No refunds | Free | No return | 30d |229| Disney+ | `disney_plus` | No refunds | Free | No return | - |230| DoorDash DashPass | `doordash_dashpass` | No refunds | Free | No return | 30d |231| Dropbox (US) | `dropbox_us` | No refunds | Free | No return | 30d |232| Duolingo | `duolingo` | No refunds | Free | No return | 14d |233| Evernote | `evernote` | 20d | Free | 20d full | 14d |234| ExpressVPN | `expressvpn` | 30d | Free | 30d full | 7d |235| Figma | `figma` | No refunds | Free | No return | 30d |236| Fubo TV | `fubo_tv` | No refunds | Free | No return | 7d |237| GitHub Pro | `github_pro` | No refunds | Free | No return | - |238| Google Play | `google_play` | 2d | Free | 2d full | - |239| Grammarly | `grammarly` | No refunds | Free | No return | 7d |240| Headspace | `headspace` | No refunds | Free | No return | 7d |241| HelloFresh | `hellofresh` | No refunds | Free (5d notice) | No return | - |242| Hinge | `hinge` | No refunds | Free | No return | 7d |243| Hulu | `hulu` | No refunds | Free | No return | 30d |244| iCloud+ | `icloud_plus` | 14d | Free | 14d full | - |245| Instacart+ | `instacart_plus` | 5d | Free | 5d full | 14d |246| LinkedIn Premium | `linkedin_premium` | 7d | Free | 7d full | 30d |247| MasterClass | `masterclass` | 30d | Free | 30d full | - |248| Max (HBO) | `max` | No refunds | Free | No return | - |249| Microsoft 365 | `microsoft_365` | 30d | Free | 30d full | 30d |250| Midjourney | `midjourney` | No refunds | Free | No return | - |251| Netflix | `netflix` | No refunds | Free | No return | - |252| Nintendo Switch Online | `nintendo_switch_online` | No refunds | Free | No return | 7d |253| Noom | `noom` | 14d | Free | 14d full | 7d |254| NordVPN | `nordvpn` | 30d | Free | 30d full | 7d |255| Notion | `notion` | 3d | Free | 3d full | - |256| Paramount+ | `paramount_plus` | No refunds | Free | No return | 7d |257| Peacock | `peacock` | No refunds | Free | No return | 7d |258| Peloton | `peloton` | No refunds | Free | No return | 30d |259| PlayStation Plus | `playstation_plus` | 14d | Free | 14d prorated | 14d |260| Scribd | `scribd` | 30d | Free | 30d full | 30d |261| Shutterstock | `shutterstock` | No refunds | ETF | No return | 30d |262| Slack | `slack` | No refunds | Free | Credit | 90d |263| Sling TV | `sling_tv` | No refunds | Free | No return | - |264| Spotify | `spotify` | No refunds | Free | No return | 30d |265| Squarespace | `squarespace` | 14d | Free | 14d full | 14d |266| Strava | `strava` | 14d | Free | 14d full | 30d |267| Surfshark | `surfshark` | 30d | Free | 30d full | 7d |268| Tidal | `tidal` | No refunds | Free | No return | 30d |269| Tinder | `tinder` | No refunds | Free | No return | - |270| Todoist | `todoist` | 30d | Free | 30d full | 30d |271| Twitch | `twitch` | No refunds | Free | No return | - |272| Walmart+ | `walmart_plus` | No refunds | Free | No return | 30d |273| Wix | `wix` | 14d | Free | 14d full | 14d |274| Xbox Game Pass | `xbox_game_pass` | 30d | Free | 30d full | 14d |275| YouTube Premium | `youtube_premium` | No refunds | Free | No return | 30d |276| Zoom | `zoom` | No refunds | Free | No return | - |277278**Scope:** US region, individual plans only.279280## Data Freshness281282Policies are sourced from official vendor documentation and terms of service.283284- **Daily automated checks** — GitHub Action runs at 08:00 UTC, hashing vendor policy pages across all 4 services (refund, cancel, return, trial). If a page changes, an issue is opened for review.285- **Policy source URLs tracked** — Each service has its own sources file in `rules/` linking to official policy pages.286- **Compliance export** — `GET /api/compliance-export` returns a CSV snapshot of tracked sources, hashes, and pending candidate changes (`?format=json` for machine-readable output).287- **Versioned rules** — Each rules file includes a `rules_version` field for staleness detection.288289## Architecture290291- **Stateless** — No database, no sessions, no side effects292- **Deterministic** — Same input always produces same output293- **Versioned Rules** — Rules files include version for tracking changes294- **Daily Monitoring** — GitHub Action checks all vendor policy pages daily295- **Serverless** — Runs on Vercel serverless functions296- **Zero Dependencies** — Core compute logic has no external dependencies297- **Hostname Routing** — Vercel middleware routes subdomains to correct MCP endpoints298299## Limitations300301- **US Only** — Currently only supports US region302- **Individual Plans Only** — Business/enterprise plans not yet supported303- **Calendar Days** — Windows are based on calendar days, not business days304- **Static Rules** — Does not account for promotional offers or special circumstances305306## Changelog307308### Unreleased309310**Added:**311- `GET /api/compliance-export` endpoint for policy monitoring evidence export (CSV default, JSON via `?format=json`).312- Smoke test coverage for compliance export JSON and CSV paths.313314### v1.2.1 (2026-02-08)315316**Changed:**317- Subdomain homepage now shows the relevant notary card (refund/cancel/return/trial).318- Version metadata is consistent across `server.json`, MCP `initialize`, and `/.well-known/*`.319320### v1.2.0 (2026-02-02)321322**Added:**323- Cancel Notary MCP (cancel.decide.fyi) — cancellation penalty checker324- Return Notary MCP (return.decide.fyi) — return eligibility checker325- Trial Notary MCP (trial.decide.fyi) — free trial terms checker326- Hostname-based middleware routing for all subdomains327- Policy source files and daily checking for cancel, return, and trial policies328- Humans/Agents mode toggle on landing page329- MCP catalog with cards for all 4 servers330331**Fixed:**332- Daily policy checker: added `contents:write` permission and fixed shell logic333- Removed dead Cloudflare email-decode scripts causing 404s334335### v1.1.0 (2026-02-01)336337**Added:**338- Expanded from 64 to 100 supported vendors339- Daily policy-check GitHub Action (cron at 08:00 UTC)340- Policy source URLs tracked in `rules/policy-sources.json`341- MCP vendor `enum` in inputSchema for agent discoverability342343**Fixed:**344- `ERR_IMPORT_ATTRIBUTE_MISSING` crash on Vercel (Node 22 import attributes)345346### v1.0.0 (2026-01-15)347348**Added:**349- Initial release with REST API and MCP server350- Support for 9 vendors351352## Free API (No Auth)353354All 4 servers are free to use. No authentication. No API keys.355356Rate limit: 100 requests/minute per IP.357358Questions? [decidefyi@gmail.com](mailto:decidefyi@gmail.com) or [@decidefyi on X](https://x.com/decidefyi)359360## Links361362- **Website:** [https://decide.fyi](https://decide.fyi)363- **Refund:** [https://refund.decide.fyi](https://refund.decide.fyi)364- **Cancel:** [https://cancel.decide.fyi](https://cancel.decide.fyi)365- **Return:** [https://return.decide.fyi](https://return.decide.fyi)366- **Trial:** [https://trial.decide.fyi](https://trial.decide.fyi)367- **X/Twitter:** [@decidefyi](https://x.com/decidefyi)368- **MCP Spec:** [https://modelcontextprotocol.io](https://modelcontextprotocol.io)369370---371372Built with love by the [decide.fyi](https://decide.fyi) team373
Full transparency — inspect the skill content before installing.