Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Changed the definition of "audit_stack", "choose_stack", "find_alternatives" and 1 more
⟨851 unchanged words⟩ mtu, gpu_seconds_per_month, revenue_usd_per_month, phone_minutes_per_month, vector_read_units_per_month, vector_write_units_per_month, hosts, tickets_per_month (MAU is accepted for mau). Example: ⟨218 unchanged words⟩ "minimum":0,"type":"number"},"hosts":{"maximum":1000000000000,"minimum":0,"type":"number"},"identified_events_per_month":{"maximum":1000000000000,"minimum":0, ⟨250 unchanged words⟩ minimum":0,"type":"number"},"tasks_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"tickets_per_month":{"maximum":1000000000000,"minimum":0," ⟨142 unchanged words⟩
⟨389 unchanged words⟩ vector_read_units_per_month","vector_write_units_per_month","identified_events_per_month","boards","hosts","tickets_per_month","MAU","tokens","tokens_in","tokens_out"," ⟨211 unchanged words⟩ vector_read_units_per_month","vector_write_units_per_month","identified_events_per_month","boards","hosts","tickets_per_month","MAU","tokens","tokens_in","tokens_out"," ⟨195 unchanged words⟩ ","vector_read_units_per_month","vector_write_units_per_month","identified_events_per_month","boards","hosts","tickets_per_month","MAU","tokens","tokens_in","tokens_out ⟨328 unchanged words⟩
⟨601 unchanged words⟩ mtu, gpu_seconds_per_month, revenue_usd_per_month, phone_minutes_per_month, vector_read_units_per_month, vector_write_units_per_month, hosts, tickets_per_month (MAU is accepted for mau). Example: ⟨218 unchanged words⟩ "minimum":0,"type":"number"},"hosts":{"maximum":1000000000000,"minimum":0,"type":"number"},"identified_events_per_month":{"maximum":1000000000000,"minimum":0, ⟨250 unchanged words⟩ minimum":0,"type":"number"},"tasks_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"tickets_per_month":{"maximum":1000000000000,"minimum":0," ⟨128 unchanged words⟩
⟨178 unchanged words⟩ vector_read_units_per_month","vector_write_units_per_month","identified_events_per_month","boards","hosts","tickets_per_month","MAU","tokens","tokens_in","tokens_out"," ⟨249 unchanged words⟩
Changed the definition of "get_exit_plan"
⟨100 unchanged words⟩ ,"type":"string"},"market":{"description":"The user's country, e.g. DE: when Stackcut has a guide checked for that market (JP, DE, BR, MX, NL), local_guide points to it","maxLength":2000,"pattern":"^[A-Z]{2 ⟨88 unchanged words⟩
Added "report_guide_feedback"; changed the definition of "audit_stack", "choose_stack", "find_alternatives" and 19 more (22 tools before, 23 now)
⟨175 unchanged words⟩ validation sources not at all; never IP addresses):.don'tTool results are summarized; exit tools log only result counts, qualification flags and public evidence statuses, not answer contents. Don't send personal data or secrets.
⟨177 unchanged words⟩ validation sources not at all; never IP addresses):.don't
Added "prepare_negotiation" and "report_action_outcome"; changed the definition of "get_exit_plan", "report_exit_outcome" and "search_exits" (20 tools before, 22 now)
⟨89 unchanged words⟩ "maxLength":2000,"type":"string"},"goal":{"enum":["cancel","pay_less","renegotiate"],"maxLength":2000,"type":"string"},"market":{"maxLength":2000,"pattern":"^[A-Z]{2}$","type":"string"},"monthly_price":{"description":"USD a month: ⟨80 unchanged words⟩
Only afterAfter the userconfirmsreports what happened: record
Changed the definition of "audit_stack", "choose_stack", "find_alternatives" and 5 more
before
{"additionalProperties":false,"properties":{"active_users":{"description":"People or accounts active in the last 30 days (0 = unused: cleanup levers and sanity checks)","maximum":1000000000,"minimum":0,"type":"number"},"limit_paths":{"default":3,"maximum":8,"minimum":1,"type":"integer"},"revenue_usd_per_month":{"description":"The product's revenue per month (context for sanity checks: no revenue, cost per user, fees vs revenue; never a cap)","maximum":1000000000,"minimum":0,"type":"number"},"services":{"items":{"additionalProperties":false,"properties":{"account":{"description":"Billing account key (e.g. 'supabase-org-main'): lines with the same vendor and key share one bill; different keys are separate bills. Give the bill once","maxLength":100,"minLength":1,"type":"string"},"active_users":{"description":"People or accounts active in the last 30 days (0 = unused: cleanup levers and sanity checks)","maximum":1000000000,"minimum":0,"type":"number"},"billing":{"additionalProperties":false,"description":"Billing evidence: scope (dedicated, shared or unknown), account_id (a non-secret alias; the account key), allocated_monthly_usd (attribution only, never a saving), avoidable_monthly_usd with avoidability_confirmed (what leaving actually removes from the bill; 0 is valid), commitment_months_remaining (non-refundable months left; 0 only when cancellable now) and source (a reference, no private contents). With billing, a path is eligible only once the avoidable amount, scope, commitment and source are all given","properties":{"account_id":{"maxLength":200,"minLength":1,"type":"string"},"allocated_monthly_usd":{"maximum":1000000000000,"minimum":0,"type":"number"},"avoidability_confirmed":{"type":"boolean"},"avoidable_monthly_usd":{"maximum":1000000000000,"minimum":0,"type":"number"},"commitment_months_remaining":{"maximum":120,"minimum":0,"type":"number"},"scope":{"enum":["dedicated","shared","unknown"],"maxLength":2000,"type":"string"},"source":{"maxLength":1000,"minLength":1,"type":"string"}},"type":"object"},"category":{"description":"detect.mjs output (ignored)","maxLength":100,"type":"string"},"confidence":{"description":"detect.mjs output: 'low' (only a config file) means no paid plan is assumed","maxLength":20,"type":"string"},"confirmed":{"description":"true when the user confirmed they pay for this (with plan: its list price counts as confirmed spend). Scanner-only lines are unconfirmed","type":"boolean"},"evidence":{"description":"Scan evidence labels and usage facts in words ('db 1.5 GB', '40,000 emails/mo', '37 domains')","items":{"maxLength":500,"type":"string"},"maxItems":50,"type":"array"},"feature_counts":{"description":"detect.mjs output (ignored)","items":{"type":"object"},"maxItems":100,"type":"array"},"features_used":{"description":"Features the code or the user relies on; sizes and counts ('4,000 contacts') are read as usage","items":{"maxLength":200,"type":"string"},"maxItems":50,"type":"array"},"files_referencing":{"description":"detect.mjs output: marks the line as scan-only (unconfirmed); never read as usage","maximum":1000000000000,"minimum":0,"type":"integer"},"in_catalog":{"description":"detect.mjs output (ignored)","type":"boolean"},"last_active":{"description":"When this resource (project, app, account) was last used: an ISO date ('2026-03-10'), 'never', or '5 months ago'. 90+ days idle or never used gets a cleanup lever","maxLength":100,"type":"string"},"monthly_spend_usd":{"description":"What they pay per month for it, all seats, if known","maximum":1000000,"minimum":0,"type":"number"},"name":{"description":"detect.mjs output (ignored)","maxLength":200,"type":"string"},"plan":{"description":"Their plan, e.g. 'Business Standard' (else read from the name or evidence)","maxLength":100,"type":"string"},"project":{"description":"Which of their projects or products this line is for (portfolio audits): lines of one vendor across projects are audited as one account. Give each project's own usage on its line and the account's bill once","maxLength":100,"minLength":1,"type":"string"},"replacement_validation":{"additionalProperties":false,"description":"A replacement path the user checked themselves: its current price, capacity, burst limits and paid add-ons against their usage. It answers that path's capacity checks (never its must-haves) and ranks it first","properties":{"capacity_and_price_confirmed":{"description":"true only after checking the price, capacity, burst limits and required add-ons","type":"boolean"},"path_id":{"description":"The path id (from find_alternatives or audit_stack)","maxLength":200,"minLength":1,"type":"string"},"source":{"description":"Where the check comes from (usage report, pricing page, quote); no private contents","maxLength":1000,"minLength":1,"type":"string"}},"required":["path_id","capacity_and_price_confirmed","source"],"type":"object"},"revenue_usd_per_month":{"description":"The product's revenue per month (context for sanity checks: no revenue, cost per user, fees vs revenue; never a cap)","maximum":1000000000,"minimum":0,"type":"number"},"seats":{"description":"Paid seats","maximum":100000,"minimum":1,"type":"integer"},"service_id":{"description":"A distinct bill when the same vendor appears more than once (an account key, like account; lines with the same key are one bill)","maxLength":200,"minLength":1,"type":"string"},"shared_with":{"description":"How many products share this bill (one account, org or team), when only this product is audited: moving one product off it saves only what it adds to the bill, never the whole bill. monthly_spend_usd is then the whole account's bill","maximum":100000,"minimum":1,"type":"integer"},"usage":{"additionalProperties":false,"description":"Their usage, checked against each plan's caps (priced with published overage and add-ons). Units: seats, members, mau, emails_per_month, emails_per_day, contacts, domains, events_per_month, pageviews_per_month, errors_per_month, requests_per_month, requests_per_day, searches_per_month, cpu_ms_per_request, db_gb, storage_gb, bandwidth_gb, projects, sites, videos, video_minutes, responses_per_month, tasks_per_month, keywords_tracked, credits_per_month, history_days, apps, files, event_types, monitors, tokens_per_month, images_per_month, audio_minutes_per_month, characters_per_month, transactions_per_month, sandbox_hours_per_month, concurrent_sessions, session_minutes, call_participants, meeting_minutes, records, inboxes, tokens_in_per_month, tokens_out_per_month, cached_tokens_per_month, video_minutes_stored, video_minutes_delivered_per_month, gmv_usd_per_month, payouts_per_month, active_accounts, verifications_per_month, browser_hours_per_month, proxy_gb_per_month, job_executions_per_month, sso_connections, sso_users, inbound_emails_per_month, stream_hours_per_month, vcpu_hours_per_month, credits_usd_per_month, disputes_per_month, payout_volume_usd_per_month, object_writes_per_month, object_reads_per_month, job_executions_per_day, scim_connections, searches_per_hour, sms_per_month, vectors_stored, vector_queries_per_month, cache_commands_per_month, mtu, gpu_seconds_per_month, revenue_usd_per_month, phone_minutes_per_month, vector_read_units_per_month, vector_write_units_per_month (MAU is accepted for mau). Example: {\"emails_per_month\": 40000, \"domains\": 4, \"db_gb\": 3}. get_usage_questions says which units matter for a vendor and where the user finds each number.","properties":{"MAU":{"maximum":1000000000000,"minimum":0,"type":"number"},"active_accounts":{"maximum":1000000000000,"minimum":0,"type":"number"},"apps":{"maximum":1000000000000,"minimum":0,"type":"number"},"audio_minutes_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"bandwidth_gb":{"maximum":1000000000000,"minimum":0,"type":"number"},"browser_hours_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"cache_commands_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"cached_tokens_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"call_participants":{"maximum":1000000000000,"minimum":0,"type":"number"},"characters_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"concurrent_sessions":{"maximum":1000000000000,"minimum":0,"type":"number"},"contacts":{"maximum":1000000000000,"minimum":0,"type":"number"},"cpu_ms_per_request":{"maximum":1000000000000,"minimum":0,"type":"number"},"credits_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"credits_usd_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"db_gb":{"maximum":1000000000000,"minimum":0,"type":"number"},"disputes_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"domains":{"maximum":1000000000000,"minimum":0,"type":"number"},"emails_per_day":{"maximum":1000000000000,"minimum":0,"type":"number"},"emails_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"errors_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"event_types":{"maximum":1000000000000,"minimum":0,"type":"number"},"events_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"files":{"maximum":1000000000000,"minimum":0,"type":"number"},"gmv_usd_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"gpu_seconds_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"history_days":{"maximum":1000000000000,"minimum":0,"type":"number"},"images_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"inbound_emails_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"inboxes":{"maximum":1000000000000,"minimum":0,"type":"number"},"job_executions_per_day":{"maximum":1000000000000,"minimum":0,"type":"number"},"job_executions_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"keywords_tracked":{"maximum":1000000000000,"minimum":0,"type":"number"},"mau":{"maximum":1000000000000,"minimum":0,"type":"number"},"meeting_minutes":{"maximum":1000000000000,"minimum":0,"type":"number"},"members":{"maximum":1000000000000,"minimum":0,"type":"number"},"monitors":{"maximum":1000000000000,"minimum":0,"type":"number"},"mtu":{"maximum":1000000000000,"minimum":0,"type":"number"},"object_reads_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"object_writes_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"pageviews_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"payout_volume_usd_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"payouts_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"phone_minutes_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"projects":{"maximum":1000000000000,"minimum":0,"type":"number"},"proxy_gb_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"records":{"maximum":1000000000000,"minimum":0,"type":"number"},"requests_per_day":{"maximum":1000000000000,"minimum":0,"type":"number"},"requests_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"responses_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"revenue_usd_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"sandbox_hours_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"scim_connections":{"maximum":1000000000000,"minimum":0,"type":"number"},"searches_per_hour":{"maximum":1000000000000,"minimum":0,"type":"number"},"searches_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"seats":{"maximum":1000000000000,"minimum":0,"type":"number"},"session_minutes":{"maximum":1000000000000,"minimum":0,"type":"number"},"sites":{"maximum":1000000000000,"minimum":0,"type":"number"},"sms_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"sso_connections":{"maximum":1000000000000,"minimum":0,"type":"number"},"sso_users":{"maximum":1000000000000,"minimum":0,"type":"number"},"storage_gb":{"maximum":1000000000000,"minimum":0,"type":"number"},"stream_hours_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"tasks_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"tokens_in_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"tokens_out_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"tokens_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"transactions_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"vcpu_hours_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"vector_queries_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"vector_read_units_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"vector_write_units_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"vectors_stored":{"maximum":1000000000000,"minimum":0,"type":"number"},"verifications_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"video_minutes":{"maximum":1000000000000,"minimum":0,"type":"number"},"video_minutes_delivered_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"video_minutes_stored":{"maximum":1000000000000,"minimum":0,"type":"number"},"videos":{"maximum":1000000000000,"minimum":0,"type":"number"}},"type":"object"},"vendor":{"description":"Vendor id from the scan (e.g. 'sendgrid') or a product name as on the invoice ('Airtable', 'Slack Pro')","maxLength":200,"minLength":1,"type":"string"}},"required":["vendor"],"type":"object"},"maxItems":200,"minItems":1,"type":"array"}},"required":["services"],"type":"object"}Added "get_exit_plan", "report_exit_outcome" and "search_exits" (17 tools before, 20 now)
How to cancel a subscription — Use when the user wants to cancel, unsubscribe from, pause or pay less for something they subscribe to: streaming, music, news, dating, cloud storage, AI tools, apps or business software ('cancel YouTube TV', 'how do I get out of Adobe', 'stop my Audible'). Returns Stackcut's exit plan: every way to cancel by who bills them (the company, Apple, Google Play, a partner or a contract), the steps with the words to expect on screen, when access ends, notice periods, fees and refunds, what to export first, cheaper ways to keep it, and notes for an agent, each fact sourced to the vendor's own page w…
Report how a cancellation went — Only after the user confirms what happened: record that a cancellation went through, that they kept the service for less, that they got stuck, or that the steps had changed (and at which step). Adds one to anonymous public counters that keep the cancel library current; stores no personal data and no free text. Stackcut stores the arguments of tool calls to improve its recommendations (vendor names, prices, seats, features, usage numbers, billing amounts and project descriptions; account keys only as a one-way hash, billing and validation sources not at all; never IP addresses): don't send per…
Browse the cancel library — Lists services in Stackcut's cancel library (streaming, music, news, dating, cloud storage, AI tools, apps and software), by name, domain or category, with the page and JSON for each. Use get_exit_plan for one service's steps. Stackcut stores the arguments of tool calls to improve its recommendations (vendor names, prices, seats, features, usage numbers, billing amounts and project descriptions; account keys only as a one-way hash, billing and validation sources not at all; never IP addresses): don't send personal data or secrets.
Certificate recorded, valid to 2026-12-23
Authorization not required
Unknown → Live
First tool surface recorded: 17 tools (server version 1.7.1)
https://stackcut.io/mcp (mcp_streamable_http) — from mcp_registry, with the record
Showing the latest 11 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
⟨157 unchanged words⟩ validation sources not at all; never IP addresses):.don'tTool results are summarized; exit tools log only result counts, qualification flags and public evidence statuses, not answer contents. Don't send personal data or secrets.
⟨95 unchanged words⟩ validation sources not at all; never IP addresses):.don'tTool results are summarized; exit tools log only result counts, qualification flags and public evidence statuses, not answer contents. Don't send personal data or secrets.
⟨89 unchanged words⟩ validation sources not at all; never IP addresses):.don'tTool results are summarized; exit tools log only result counts, qualification flags and public evidence statuses, not answer contents. Don't send personal data or secrets.
⟨182 unchanged words⟩ validation sources not at all; never IP addresses):.don'tTool results are summarized; exit tools log only result counts, qualification flags and public evidence statuses, not answer contents. Don't send personal data or secrets.
⟨107 unchanged words⟩ validation sources not at all; never IP addresses):.don'tTool results are summarized; exit tools log only result counts, qualification flags and public evidence statuses, not answer contents. Don't send personal data or secrets.
⟨90 unchanged words⟩ validation sources not at all; never IP addresses):.don'tTool results are summarized; exit tools log only result counts, qualification flags and public evidence statuses, not answer contents. Don't send personal data or secrets.
⟨82 unchanged words⟩ validation sources not at all; never IP addresses):.don'tTool results are summarized; exit tools log only result counts, qualification flags and public evidence statuses, not answer contents. Don't send personal data or secrets.
⟨71 unchanged words⟩ validation sources not at all; never IP addresses):.don'tTool results are summarized; exit tools log only result counts, qualification flags and public evidence statuses, not answer contents. Don't send personal data or secrets.
⟨69 unchanged words⟩ validation sources not at all; never IP addresses):.don'tTool results are summarized; exit tools log only result counts, qualification flags and public evidence statuses, not answer contents. Don't send personal data or secrets.
⟨49 unchanged words⟩ validation sources not at all; never IP addresses):.don'tTool results are summarized; exit tools log only result counts, qualification flags and public evidence statuses, not answer contents. Don't send personal data or secrets.
⟨67 unchanged words⟩ validation sources not at all; never IP addresses):.don'tTool results are summarized; exit tools log only result counts, qualification flags and public evidence statuses, not answer contents. Don't send personal data or secrets.
⟨130 unchanged words⟩ validation sources not at all; never IP addresses):.don'tTool results are summarized; exit tools log only result counts, qualification flags and public evidence statuses, not answer contents. Don't send personal data or secrets.
⟨101 unchanged words⟩ validation sources not at all; never IP addresses):.don'tTool results are summarized; exit tools log only result counts, qualification flags and public evidence statuses, not answer contents. Don't send personal data or secrets.
⟨103 unchanged words⟩ validation sources not at all; never IP addresses):.don'tTool results are summarized; exit tools log only result counts, qualification flags and public evidence statuses, not answer contents. Don't send personal data or secrets.
⟨84 unchanged words⟩ :-]+$","type":"string"},"commitment_months":{"maximum":1200,"minimum":0,"type":"integer"},"currency":{"description":"Required witheithernumericamountamounts","maxLength":2000,"pattern":"^[A-Z]{3}$","type":"string"},"effective_on":{"maxLength":2000,"pattern":"^\\d{4}-\\d{2}-\\d{2}$","type":"string"},"fees_amount":{"maximum":1000000,"minimum":0,"type":"number"},"locale":{"description":"Language tag such as ⟨42 unchanged words⟩ "minimum":0,"type":"number"},"offer_billing_period":{"enum":["month","year","week","one_time"],"maxLength":2000,"type":"string"},"offer_duration_months":{"maximum":1200,"minimum":1,"type":"integer"},"outcome":{"enum":["requested","offer_received" ⟨20 unchanged words⟩ ^[a-f0-9]{64}$","type":"string"},"renewal_amount":{"maximum":1000000,"minimum":0,"type":"number"},"route_id":{"description":"The selected ⟨57 unchanged words⟩
⟨78 unchanged words⟩ validation sources not at all; never IP addresses):.don'tTool results are summarized; exit tools log only result counts, qualification flags and public evidence statuses, not answer contents. Don't send personal data or secrets.
⟨63 unchanged words⟩ validation sources not at all; never IP addresses):.don'tTool results are summarized; exit tools log only result counts, qualification flags and public evidence statuses, not answer contents. Don't send personal data or secrets.
⟨67 unchanged words⟩ validation sources not at all; never IP addresses):.don'tTool results are summarized; exit tools log only result counts, qualification flags and public evidence statuses, not answer contents. Don't send personal data or secrets.
⟨145 unchanged words⟩ validation sources not at all; never IP addresses):.don'tTool results are summarized; exit tools log only result counts, qualification flags and public evidence statuses, not answer contents. Don't send personal data or secrets.
⟨85 unchanged words⟩ validation sources not at all; never IP addresses):.don'tTool results are summarized; exit tools log only result counts, qualification flags and public evidence statuses, not answer contents. Don't send personal data or secrets.
⟨121 unchanged words⟩ validation sources not at all; never IP addresses):.don'tTool results are summarized; exit tools log only result counts, qualification flags and public evidence statuses, not answer contents. Don't send personal data or secrets.
Report guide feedback — After using guidance, report a missing vendor or billing route, a mismatching step, unavailable source, incomplete instructions, unexpected fee, observed retention offer, required human handoff, or that the guide matched. Send only the structured fields, never account information, URLs, screenshots or text. Current packet routes and step numbers are validated; stale revision reports are kept as unverified provenance. An acknowledgement records feedback for review, never completion or a published fix. Retry with the same opaque key when delivery is uncertain. Stackcut stores the arguments of t…
⟨62 unchanged words⟩ :{"description":"For blocked or steps_changed: include the step number where it stopped matching, when known","maximum":50,"minimum":1,"type ⟨7 unchanged words⟩
{"additionalProperties":false,"properties":{"action":{"description":"Filter for a documented action pathway","enum":["cancel","pay_less","renegotiate"],"maxLength":2000,"type":"string"},"category":{"enum":["streaming_video","music_audio" ⟨53 unchanged words⟩
Prepare a subscription negotiation — Find documented existing-customer offers, cancellation-flow promotions and renewal negotiation routes for a service. Returns channel- and market-specific paths, vendor sources, freshness, questions and draft request/terms/counteroffer/decline/confirmation scripts. It sends nothing and makes no account changes. Eligibility and offer amounts are unknown until the vendor confirms them. Compare costs only with complete prices, renewal terms, duration, fees and an explicit horizon; amounts must share the current bill's currency and billing cadence. Stackcut stores the arguments of tool calls to im…
Report an action outcome — Record a minimal structured report about an attempted cancel, price reduction, negotiation, pause, downgrade, or switch. First call get_exit_plan and send its packet_revision and route_id; stale packet revisions are rejected. Reports are user-reported evidence, never verified execution. The server stores no free text, receipts, messages, or direct identifiers. Reusing client_dedupe_key returns the existing report without inflating counts; blocked or changed-step reports create a review task and never edit a packet automatically. Stackcut stores the arguments of tool calls to improve its recom…
after
{"additionalProperties":false,"properties":{"active_users":{"description":"People or accounts active in the last 30 days (0 = unused: cleanup levers and sanity checks)","maximum":1000000000,"minimum":0,"type":"number"},"decision":{"description":"consolidate: overlaps on every job each tool does","enum":["cut_spend","consolidate","replace_one","choose_stack","check_in"],"maxLength":2000,"type":"string"},"limit_paths":{"default":3,"maximum":8,"minimum":1,"type":"integer"},"revenue_usd_per_month":{"description":"The product's revenue per month (context for sanity checks: no revenue, cost per user, fees vs revenue; never a cap)","maximum":1000000000,"minimum":0,"type":"number"},"services":{"items":{"additionalProperties":false,"properties":{"account":{"description":"Billing account key (e.g. 'supabase-org-main'): lines with the same vendor and key share one bill; different keys are separate bills. Give the bill once","maxLength":100,"minLength":1,"type":"string"},"active_users":{"description":"People or accounts active in the last 30 days (0 = unused: cleanup levers and sanity checks)","maximum":1000000000,"minimum":0,"type":"number"},"billing":{"additionalProperties":false,"description":"Billing evidence: scope (dedicated, shared or unknown), account_id (a non-secret alias; the account key), allocated_monthly_usd (attribution only, never a saving), avoidable_monthly_usd with avoidability_confirmed (what leaving actually removes from the bill; 0 is valid), commitment_months_remaining (non-refundable months left; 0 only when cancellable now) and source (a reference, no private contents). With billing, a path is eligible only once the avoidable amount, scope, commitment and source are all given","properties":{"account_id":{"maxLength":200,"minLength":1,"type":"string"},"allocated_monthly_usd":{"maximum":1000000000000,"minimum":0,"type":"number"},"avoidability_confirmed":{"type":"boolean"},"avoidable_monthly_usd":{"maximum":1000000000000,"minimum":0,"type":"number"},"commitment_months_remaining":{"maximum":120,"minimum":0,"type":"number"},"scope":{"enum":["dedicated","shared","unknown"],"maxLength":2000,"type":"string"},"source":{"maxLength":1000,"minLength":1,"type":"string"}},"type":"object"},"category":{"description":"detect.mjs output (ignored)","maxLength":100,"type":"string"},"confidence":{"description":"detect.mjs output: 'low' (only a config file) means no paid plan is assumed","maxLength":20,"type":"string"},"confirmed":{"description":"true when the user confirmed they pay for this (with plan: its list price counts as confirmed spend). Scanner-only lines are unconfirmed","type":"boolean"},"evidence":{"description":"Scan evidence labels and usage facts in words ('db 1.5 GB', '40,000 emails/mo', '37 domains')","items":{"maxLength":500,"type":"string"},"maxItems":50,"type":"array"},"feature_counts":{"description":"detect.mjs output (ignored)","items":{"type":"object"},"maxItems":100,"type":"array"},"features_used":{"description":"Features the code or the user relies on; sizes and counts ('4,000 contacts') are read as usage","items":{"maxLength":200,"type":"string"},"maxItems":50,"type":"array"},"files_referencing":{"description":"detect.mjs output: marks the line as scan-only (unconfirmed); never read as usage","maximum":1000000000000,"minimum":0,"type":"integer"},"in_catalog":{"description":"detect.mjs output (ignored)","type":"boolean"},"last_active":{"description":"When this resource (project, app, account) was last used: an ISO date ('2026-03-10'), 'never', or '5 months ago'. 90+ days idle or never used gets a cleanup lever","maxLength":100,"type":"string"},"monthly_spend_usd":{"description":"What they pay per month for it, all seats, if known","maximum":1000000,"minimum":0,"type":"number"},"name":{"description":"detect.mjs output (ignored)","maxLength":200,"type":"string"},"plan":{"description":"Their plan, e.g. 'Business Standard' (else read from the name or evidence)","maxLength":100,"type":"string"},"project":{"description":"Which of their projects or products this line is for (portfolio audits): lines of one vendor across projects are audited as one account. Give each project's own usage on its line and the account's bill once","maxLength":100,"minLength":1,"type":"string"},"replacement_validation":{"additionalProperties":false,"description":"A replacement path the user checked themselves: its current price, capacity, burst limits and paid add-ons against their usage. It answers that path's capacity checks (never its must-haves) and ranks it first","properties":{"capacity_and_price_confirmed":{"description":"true only after checking the price, capacity, burst limits and required add-ons","type":"boolean"},"path_id":{"description":"The path id (from find_alternatives or audit_stack)","maxLength":200,"minLength":1,"type":"string"},"source":{"description":"Where the check comes from (usage report, pricing page, quote); no private contents","maxLength":1000,"minLength":1,"type":"string"}},"required":["path_id","capacity_and_price_confirmed","source"],"type":"object"},"revenue_usd_per_month":{"description":"The product's revenue per month (context for sanity checks: no revenue, cost per user, fees vs revenue; never a cap)","maximum":1000000000,"minimum":0,"type":"number"},"seats":{"description":"Paid seats","maximum":100000,"minimum":1,"type":"integer"},"service_id":{"description":"A distinct bill when the same vendor appears more than once (an account key, like account; lines with the same key are one bill)","maxLength":200,"minLength":1,"type":"string"},"shared_with":{"description":"How many products share this bill (one account, org or team), when only this product is audited: moving one product off it saves only what it adds to the bill, never the whole bill. monthly_spend_usd is then the whole account's bill","maximum":100000,"minimum":1,"type":"integer"},"usage":{"additionalProperties":false,"description":"Their usage, checked against each plan's caps (priced with published overage and add-ons). Units: seats, members, mau, emails_per_month, emails_per_day, contacts, domains, events_per_month, identified_events_per_month, pageviews_per_month, errors_per_month, requests_per_month, requests_per_day, searches_per_month, cpu_ms_per_request, db_gb, storage_gb, bandwidth_gb, projects, sites, videos, video_minutes, responses_per_month, tasks_per_month, keywords_tracked, credits_per_month, history_days, apps, files, boards, event_types, monitors, tokens_per_month, images_per_month, audio_minutes_per_month, characters_per_month, transactions_per_month, sandbox_hours_per_month, concurrent_sessions, session_minutes, call_participants, meeting_minutes, records, inboxes, tokens_in_per_month, tokens_out_per_month, cached_tokens_per_month, video_minutes_stored, video_minutes_delivered_per_month, gmv_usd_per_month, payouts_per_month, active_accounts, verifications_per_month, browser_hours_per_month, proxy_gb_per_month, job_executions_per_month, sso_connections, sso_users, inbound_emails_per_month, stream_hours_per_month, vcpu_hours_per_month, credits_usd_per_month, disputes_per_month, payout_volume_usd_per_month, object_writes_per_month, object_reads_per_month, job_executions_per_day, scim_connections, searches_per_hour, sms_per_month, vectors_stored, vector_queries_per_month, cache_commands_per_month, mtu, gpu_seconds_per_month, revenue_usd_per_month, phone_minutes_per_month, vector_read_units_per_month, vector_write_units_per_month (MAU is accepted for mau). Example: {\"emails_per_month\": 40000, \"domains\": 4, \"db_gb\": 3}. get_usage_questions says which units matter for a vendor and where the user finds each number.","properties":{"MAU":{"maximum":1000000000000,"minimum":0,"type":"number"},"active_accounts":{"maximum":1000000000000,"minimum":0,"type":"number"},"apps":{"maximum":1000000000000,"minimum":0,"type":"number"},"audio_minutes_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"bandwidth_gb":{"maximum":1000000000000,"minimum":0,"type":"number"},"boards":{"maximum":1000000000000,"minimum":0,"type":"number"},"browser_hours_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"cache_commands_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"cached_tokens_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"call_participants":{"maximum":1000000000000,"minimum":0,"type":"number"},"characters_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"concurrent_sessions":{"maximum":1000000000000,"minimum":0,"type":"number"},"contacts":{"maximum":1000000000000,"minimum":0,"type":"number"},"cpu_ms_per_request":{"maximum":1000000000000,"minimum":0,"type":"number"},"credits_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"credits_usd_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"db_gb":{"maximum":1000000000000,"minimum":0,"type":"number"},"disputes_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"domains":{"maximum":1000000000000,"minimum":0,"type":"number"},"emails_per_day":{"maximum":1000000000000,"minimum":0,"type":"number"},"emails_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"errors_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"event_types":{"maximum":1000000000000,"minimum":0,"type":"number"},"events_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"files":{"maximum":1000000000000,"minimum":0,"type":"number"},"gmv_usd_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"gpu_seconds_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"history_days":{"maximum":1000000000000,"minimum":0,"type":"number"},"identified_events_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"images_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"inbound_emails_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"inboxes":{"maximum":1000000000000,"minimum":0,"type":"number"},"job_executions_per_day":{"maximum":1000000000000,"minimum":0,"type":"number"},"job_executions_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"keywords_tracked":{"maximum":1000000000000,"minimum":0,"type":"number"},"mau":{"maximum":1000000000000,"minimum":0,"type":"number"},"meeting_minutes":{"maximum":1000000000000,"minimum":0,"type":"number"},"members":{"maximum":1000000000000,"minimum":0,"type":"number"},"monitors":{"maximum":1000000000000,"minimum":0,"type":"number"},"mtu":{"maximum":1000000000000,"minimum":0,"type":"number"},"object_reads_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"object_writes_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"pageviews_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"payout_volume_usd_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"payouts_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"phone_minutes_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"projects":{"maximum":1000000000000,"minimum":0,"type":"number"},"proxy_gb_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"records":{"maximum":1000000000000,"minimum":0,"type":"number"},"requests_per_day":{"maximum":1000000000000,"minimum":0,"type":"number"},"requests_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"responses_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"revenue_usd_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"sandbox_hours_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"scim_connections":{"maximum":1000000000000,"minimum":0,"type":"number"},"searches_per_hour":{"maximum":1000000000000,"minimum":0,"type":"number"},"searches_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"seats":{"maximum":1000000000000,"minimum":0,"type":"number"},"session_minutes":{"maximum":1000000000000,"minimum":0,"type":"number"},"sites":{"maximum":1000000000000,"minimum":0,"type":"number"},"sms_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"sso_connections":{"maximum":1000000000000,"minimum":0,"type":"number"},"sso_users":{"maximum":1000000000000,"minimum":0,"type":"number"},"storage_gb":{"maximum":1000000000000,"minimum":0,"type":"number"},"stream_hours_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"tasks_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"tokens_in_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"tokens_out_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"tokens_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"transactions_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"vcpu_hours_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"vector_queries_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"vector_read_units_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"vector_write_units_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"vectors_stored":{"maximum":1000000000000,"minimum":0,"type":"number"},"verifications_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"video_minutes":{"maximum":1000000000000,"minimum":0,"type":"number"},"video_minutes_delivered_per_month":{"maximum":1000000000000,"minimum":0,"type":"number"},"video_minutes_stored":{"maximum":1000000000000,"minimum":0,"type":"number"},"videos":{"maximum":1000000000000,"minimum":0,"type":"number"}},"type":"object"},"vendor":{"description":"Vendor id from the scan (e.g. 'sendgrid') or a product name as on the invoice ('Airtable', 'Slack Pro')","maxLength":200,"minLength":1,"type":"string"}},"required":["vendor"],"type":"object"},"maxItems":200,"minItems":1,"type":"array"}},"required":["services"],"type":"object"}⟨387 unchanged words⟩ revenue_usd_per_month","phone_minutes_per_month","vector_read_units_per_month","vector_write_units_per_month","identified_events_per_month","boards","MAU","tokens","tokens_in","tokens_out"," ⟨209 unchanged words⟩ revenue_usd_per_month","phone_minutes_per_month","vector_read_units_per_month","vector_write_units_per_month","identified_events_per_month","boards","MAU","tokens","tokens_in","tokens_out"," ⟨193 unchanged words⟩ ","revenue_usd_per_month","phone_minutes_per_month","vector_read_units_per_month","vector_write_units_per_month","identified_events_per_month","boards","MAU","tokens","tokens_in","tokens_out ⟨328 unchanged words⟩
⟨531 unchanged words⟩ emails_per_month, emails_per_day, contacts, domains, events_per_month, identified_events_per_month, pageviews_per_month, errors_per_month, requests_per_month, requests_per_day, searches_per_month, cpu_ms_per_request ⟨9 unchanged words⟩ keywords_tracked, credits_per_month, history_days, apps, files, boards, event_types, monitors, tokens_per_month, images_per_month, audio_minutes_per_month, characters_per_month ⟨107 unchanged words⟩ "minimum":0,"type":"number"},"boards":{"maximum":1000000000000,"minimum":0,"type":"number"},"browser_hours_per_month":{"maximum":1000000000000,"minimum":0, ⟨138 unchanged words⟩ minimum":0,"type":"number"},"history_days":{"maximum":1000000000000,"minimum":0,"type":"number"},"identified_events_per_month":{"maximum":1000000000000,"minimum":0," ⟨387 unchanged words⟩
⟨3 unchanged words⟩ billed_by":{"description":"Who charges them (theircard statement or receiptsays): the companyitself(direct_webdirect_web; direct_app in its app), Apple, Google Play, Amazon, Roku, PayPal, aphone/TVphone or TV provider, a partner,or abusinesscontract.Leave outOmit or 'unknown'to getfor every route and the question toaskask. Short words are aliases","enum":["direct_web","direct_app"," ⟨5 unchanged words⟩ ,"carrier_or_isp","reseller_or_partner","sales_contract","unknown","apple","app_store","ios","itunes","google","android","play","carrier","isp","phone","cable","tv_provider","partner","bundle","reseller","marketplace","web","website","direct","online","company","app","in_app","contract","sales","enterprise","invoice"],"maxLength":2000,"type":"string"},"monthly_price":{"description":"USD a month: with renewal_date or months_left, estimates an early termination fee","maximum":100000,"minimum":0,"type":"number"},"months_left":{"description":"Monthly payments left (else from renewal_date)","maximum":120,"minimum":0,"type":"integer"},"renewal_date":{"description":"Next renewal ⟨47 unchanged words⟩
⟨176 unchanged words⟩ revenue_usd_per_month","phone_minutes_per_month","vector_read_units_per_month","vector_write_units_per_month","identified_events_per_month","boards","MAU","tokens","tokens_in","tokens_out"," ⟨249 unchanged words⟩
{"additionalProperties":false,"properties":{"billed_by":{"description":"The route they used: its billed_by from get_exit_plan (get_exit_plan's aliases are read as their channel here too)","enum":["direct_web","direct_app","apple_app_store", ⟨60 unchanged words⟩
⟨19 unchanged words⟩ ,"gaming","shopping_memberships","finance_apps","other_digital","customer_support","business_finance"],"maxLength":2000,"type":"string"},"limit":{"default":20,"maximumdescription":"At most 100 are returned","maximum":1000000000000,"minimum":1,"type":"integer"}, ⟨16 unchanged words⟩
⟨76 unchanged words⟩ get_recipe has every path, cost and source. intent 'new' prices options for a job they don't pay for yet; requirements labels must-haves. For one product they pay for, find_alternatives re-costs ⟨53 unchanged words⟩
⟨32 unchanged words⟩ "minLength":1,"type":"string"},"intent":{"description":"new: they pay for no tool yet: costs, never savings (default replace)","enum":["new","replace"],"maxLength":2000,"type":"string"},"limit":{"default":10,"maximum":25, ⟨35 unchanged words⟩ backlinks'","maxLength":300,"type":"string"},"requirements":{"additionalProperties":false,"description":"Options per recipe: excluded kinds dropped, must-haves labeled","properties":{"budget_monthly_usd":{"maximum":1000000,"minimum":0,"type":"number"},"exclude":{"description":"self_hosted: on your own server; bundled: needs a suite they'd pay for","items":{"enum":["self_hosted","open_source","build","agent_skill","bundled","per_use","free_tier","trial","per_seat","non_commercial"],"maxLength":2000,"type":"string"},"maxItems":10,"type":"array","uniqueItems":true},"must_have":{"description":"e.g. ['file uploads', 'SSO']","items":{"maxLength":200,"minLength":1,"type":"string"},"maxItems":20,"type":"array"}},"type":"object"},"sort":{"default":"relevance", ⟨28 unchanged words⟩