← WebMCP Directory

Tool tree

canceldesk.vercel.app

Finance & CryptoTools verified
Website
Cancel subscriptions without hunting for the cancel button. A fictional WebMCP demonstration.
Explore capabilities

    page: Every page

    list_subscriptionsAnswer

    List the user's simulated subscriptions. Optionally filter by status or category. This is read-only.

    View tool JSON
    {
      "name": "list_subscriptions",
      "kind": "answer",
      "impl": "imperative",
      "description": "List the user's simulated subscriptions. Optionally filter by status or category. This is read-only.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "active",
              "paused",
              "cancelled"
            ],
            "description": "Optional subscription status filter."
          },
          "category": {
            "type": "string",
            "maxLength": 50,
            "description": "Optional exact category name, matched case-insensitively."
          },
          "includeProtected": {
            "type": "boolean",
            "default": true,
            "description": "Whether protected subscriptions should be included."
          }
        },
        "additionalProperties": false
      },
      "page": "/"
    }
    get_subscriptionAnswer

    Get complete details, monthly equivalent, and inactivity for one simulated subscription. This is read-only.

    View tool JSON
    {
      "name": "get_subscription",
      "kind": "answer",
      "impl": "imperative",
      "description": "Get complete details, monthly equivalent, and inactivity for one simulated subscription. This is read-only.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "subscriptionId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 64,
            "description": "Stable subscription id, such as fitclub or cloudpro."
          }
        },
        "required": [
          "subscriptionId"
        ],
        "additionalProperties": false
      },
      "page": "/"
    }
    search_subscriptionsAnswer

    Search subscriptions by fictional provider, plan, or category. This is read-only.

    View tool JSON
    {
      "name": "search_subscriptions",
      "kind": "answer",
      "impl": "imperative",
      "description": "Search subscriptions by fictional provider, plan, or category. This is read-only.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100,
            "description": "Provider, plan, or category text to search for."
          }
        },
        "required": [
          "query"
        ],
        "additionalProperties": false
      },
      "page": "/"
    }
    get_upcoming_chargesAnswer

    Find simulated subscription charges due within a number of days. This is read-only.

    View tool JSON
    {
      "name": "get_upcoming_charges",
      "kind": "answer",
      "impl": "imperative",
      "description": "Find simulated subscription charges due within a number of days. This is read-only.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "days": {
            "type": "integer",
            "minimum": 1,
            "maximum": 90,
            "default": 7,
            "description": "Number of days ahead to inspect for charges."
          }
        },
        "additionalProperties": false
      },
      "page": "/"
    }
    find_unused_subscriptionsAnswer

    Find active subscriptions unused for at least N days and optionally costing at least a monthly amount. Protected items can be excluded. This is read-only.

    View tool JSON
    {
      "name": "find_unused_subscriptions",
      "kind": "answer",
      "impl": "imperative",
      "description": "Find active subscriptions unused for at least N days and optionally costing at least a monthly amount. Protected items can be excluded. This is read-only.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "days": {
            "type": "integer",
            "minimum": 1,
            "maximum": 730,
            "default": 60,
            "description": "Minimum number of days since the subscription was last used."
          },
          "minMonthlyPrice": {
            "type": "number",
            "minimum": 0,
            "maximum": 10000,
            "default": 0,
            "description": "Minimum monthly-equivalent price in USD, inclusive."
          },
          "excludeProtected": {
            "type": "boolean",
            "default": true,
            "description": "Exclude subscriptions the user protected from cancellation."
          }
        },
        "additionalProperties": false
      },
      "page": "/"
    }
    calculate_subscription_spendAnswer

    Calculate total monthly and annualized spend for active simulated subscriptions. This is read-only.

    View tool JSON
    {
      "name": "calculate_subscription_spend",
      "kind": "answer",
      "impl": "imperative",
      "description": "Calculate total monthly and annualized spend for active simulated subscriptions. This is read-only.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "page": "/"
    }
    calculate_cancellation_savingsAnswer

    Calculate monthly and annual savings for a specific list of subscription IDs without changing state. Use when calculating savings for potential or unused cancellation candidates.

    View tool JSON
    {
      "name": "calculate_cancellation_savings",
      "kind": "answer",
      "impl": "imperative",
      "description": "Calculate monthly and annual savings for a specific list of subscription IDs without changing state. Use when calculating savings for potential or unused cancellation candidates.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "subscriptionIds": {
            "type": "array",
            "minItems": 1,
            "maxItems": 20,
            "description": "Stable subscription ids whose potential savings should be totaled.",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64
            }
          }
        },
        "required": [
          "subscriptionIds"
        ],
        "additionalProperties": false
      },
      "page": "/"
    }
    get_cancellation_policyAnswer

    Inspect provider-specific cancellation policy, impact, and equivalent UI journey without changing state. This is read-only.

    View tool JSON
    {
      "name": "get_cancellation_policy",
      "kind": "answer",
      "impl": "imperative",
      "description": "Inspect provider-specific cancellation policy, impact, and equivalent UI journey without changing state. This is read-only.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "subscriptionId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 64,
            "description": "Stable subscription id, such as fitclub or cloudpro."
          }
        },
        "required": [
          "subscriptionId"
        ],
        "additionalProperties": false
      },
      "page": "/"
    }
    get_cancellation_optionsAnswer

    Get safe provider-specific options such as cancel, pause, skip, or cancel-after-order. This is read-only.

    View tool JSON
    {
      "name": "get_cancellation_options",
      "kind": "answer",
      "impl": "imperative",
      "description": "Get safe provider-specific options such as cancel, pause, skip, or cancel-after-order. This is read-only.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "subscriptionId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 64,
            "description": "Stable subscription id, such as fitclub or cloudpro."
          }
        },
        "required": [
          "subscriptionId"
        ],
        "additionalProperties": false
      },
      "page": "/"
    }
    prepare_cancellationAction

    Prepare one simulated cancellation, calculate impact, and surface blockers or offers. This never performs final cancellation. It returns a short-lived token only when ready; explicit user approval is still required before confirm_cancellation.

    View tool JSON
    {
      "name": "prepare_cancellation",
      "kind": "act",
      "impl": "imperative",
      "description": "Prepare one simulated cancellation, calculate impact, and surface blockers or offers. This never performs final cancellation. It returns a short-lived token only when ready; explicit user approval is still required before confirm_cancellation.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "subscriptionId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 64,
            "description": "Stable subscription id, such as fitclub or cloudpro."
          }
        },
        "required": [
          "subscriptionId"
        ],
        "additionalProperties": false
      },
      "page": "/"
    }
    prepare_cancellation_planAction

    Fast multi-subscription planning for requests such as cancel unused subscriptions while keeping named services. Protects the requested subscriptions, finds current matches, calculates aggregate savings, and prepares every candidate in one animated operation. It never performs final cancellation and returns a short-lived batch authorization token for later explicit approval.

    View tool JSON
    {
      "name": "prepare_cancellation_plan",
      "kind": "act",
      "impl": "imperative",
      "description": "Fast multi-subscription planning for requests such as cancel unused subscriptions while keeping named services. Protects the requested subscriptions, finds current matches, calculates aggregate savings, and prepares every candidate in one animated operation. It never performs final cancellation and returns a short-lived batch authorization token for later explicit approval.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "days": {
            "type": "integer",
            "minimum": 1,
            "maximum": 730,
            "default": 60,
            "description": "Minimum inactivity in days."
          },
          "minMonthlyPrice": {
            "type": "number",
            "minimum": 0,
            "maximum": 10000,
            "default": 0,
            "description": "Inclusive minimum monthly-equivalent price in USD."
          },
          "protectedSubscriptionIds": {
            "type": "array",
            "maxItems": 20,
            "default": [],
            "description": "Stable ids the user explicitly asked to keep or protect.",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 64
            }
          }
        },
        "additionalProperties": false
      },
      "page": "/"
    }
    resolve_retention_offerAction

    Apply the user's explicit decision on an already surfaced retention offer. Accepting keeps the service; continuing prepares cancellation but still does not cancel.

    View tool JSON
    {
      "name": "resolve_retention_offer",
      "kind": "act",
      "impl": "imperative",
      "description": "Apply the user's explicit decision on an already surfaced retention offer. Accepting keeps the service; continuing prepares cancellation but still does not cancel.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "subscriptionId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 64,
            "description": "Stable id of the subscription with the unresolved offer."
          },
          "decision": {
            "type": "string",
            "enum": [
              "accept_offer",
              "continue_cancellation"
            ],
            "description": "The user's explicit decision after the offer has been shown."
          }
        },
        "required": [
          "subscriptionId",
          "decision"
        ],
        "additionalProperties": false
      },
      "page": "/"
    }
    confirm_cancellationSensitive Action

    CONSEQUENTIAL: Finalize one simulated cancellation only after explicit user approval. Requires the exact unexpired token returned by prepare_cancellation or resolve_retention_offer. Never call speculatively or as part of discovery.

    View tool JSON
    {
      "name": "confirm_cancellation",
      "kind": "transact",
      "impl": "imperative",
      "description": "CONSEQUENTIAL: Finalize one simulated cancellation only after explicit user approval. Requires the exact unexpired token returned by prepare_cancellation or resolve_retention_offer. Never call speculatively or as part of discovery.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "subscriptionId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 64,
            "description": "Stable id of the prepared subscription."
          },
          "confirmationToken": {
            "type": "string",
            "pattern": "^cd_[A-Za-z0-9]+$",
            "maxLength": 64,
            "description": "Exact unexpired token returned by preparation after the user reviewed the impact."
          }
        },
        "required": [
          "subscriptionId",
          "confirmationToken"
        ],
        "additionalProperties": false
      },
      "page": "/"
    }
    finalize_cancellation_planSensitive Action

    CONSEQUENTIAL: Finalize exactly one previously reviewed multi-subscription plan after explicit user approval. Requires the exact unexpired batch token from prepare_cancellation_plan and explicit decisions for every surfaced retention offer. Validates the complete plan before changing subscriptions, then animates each approved result.

    View tool JSON
    {
      "name": "finalize_cancellation_plan",
      "kind": "transact",
      "impl": "imperative",
      "description": "CONSEQUENTIAL: Finalize exactly one previously reviewed multi-subscription plan after explicit user approval. Requires the exact unexpired batch token from prepare_cancellation_plan and explicit decisions for every surfaced retention offer. Validates the complete plan before changing subscriptions, then animates each approved result.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "batchAuthorizationToken": {
            "type": "string",
            "pattern": "^cd_[A-Za-z0-9]+$",
            "maxLength": 64,
            "description": "Exact unexpired token returned by prepare_cancellation_plan after the user reviewed the plan."
          },
          "retentionDecisions": {
            "type": "array",
            "maxItems": 20,
            "default": [],
            "description": "Explicit user decisions for every retention offer in the plan.",
            "items": {
              "type": "object",
              "properties": {
                "subscriptionId": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 64
                },
                "decision": {
                  "type": "string",
                  "enum": [
                    "accept_offer",
                    "continue_cancellation"
                  ]
                }
              },
              "required": [
                "subscriptionId",
                "decision"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "batchAuthorizationToken"
        ],
        "additionalProperties": false
      },
      "page": "/"
    }
    pause_subscriptionSensitive Action

    Pause an eligible simulated subscription for 1–8 weeks. This is reversible and does not cancel it.

    View tool JSON
    {
      "name": "pause_subscription",
      "kind": "transact",
      "impl": "imperative",
      "description": "Pause an eligible simulated subscription for 1–8 weeks. This is reversible and does not cancel it.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "subscriptionId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 64,
            "description": "Stable id of a subscription whose provider offers pausing."
          },
          "weeks": {
            "type": "integer",
            "minimum": 1,
            "maximum": 8,
            "default": 4,
            "description": "Pause duration in weeks."
          }
        },
        "required": [
          "subscriptionId"
        ],
        "additionalProperties": false
      },
      "page": "/"
    }
    skip_deliveryAction

    Skip the next available MealBox delivery while preserving the subscription. A currently processing order is not affected.

    View tool JSON
    {
      "name": "skip_delivery",
      "kind": "act",
      "impl": "imperative",
      "description": "Skip the next available MealBox delivery while preserving the subscription. A currently processing order is not affected.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "subscriptionId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 64,
            "description": "Stable subscription id, such as fitclub or cloudpro."
          }
        },
        "required": [
          "subscriptionId"
        ],
        "additionalProperties": false
      },
      "page": "/"
    }
    protect_subscriptionSensitive Action

    Protect or unprotect a simulated subscription (e.g. subscriptionId 'streambox', 'fitclub', 'cloudpro', 'mealbox'). Use when user says 'Never cancel X', 'Keep X', 'Protect X', or 'Cancel everything except X'. Protection prevents preparation and final cancellation.

    View tool JSON
    {
      "name": "protect_subscription",
      "kind": "transact",
      "impl": "imperative",
      "description": "Protect or unprotect a simulated subscription (e.g. subscriptionId 'streambox', 'fitclub', 'cloudpro', 'mealbox'). Use when user says 'Never cancel X', 'Keep X', 'Protect X', or 'Cancel everything except X'. Protection prevents preparation and final cancellation.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "subscriptionId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 64,
            "description": "Stable id of the subscription to protect or unprotect, such as streambox."
          },
          "protected": {
            "type": "boolean",
            "default": true,
            "description": "True to prevent cancellation preparation and confirmation; false to remove protection."
          }
        },
        "required": [
          "subscriptionId"
        ],
        "additionalProperties": false
      },
      "page": "/"
    }
    get_cancellation_run_statusAnswer

    Read current reactive mission-control statuses, decisions, and progress for prepared subscription operations.

    View tool JSON
    {
      "name": "get_cancellation_run_status",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read current reactive mission-control statuses, decisions, and progress for prepared subscription operations.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "page": "/"
    }
    abandon_cancellation_runAction

    Safely abandon or clear prepared cancellations and pending retention offers without cancelling anything. Use when the user says 'Never mind', 'Don't cancel these', 'Cancel this run', or wants to abort prepared operations.

    View tool JSON
    {
      "name": "abandon_cancellation_run",
      "kind": "act",
      "impl": "imperative",
      "description": "Safely abandon or clear prepared cancellations and pending retention offers without cancelling anything. Use when the user says 'Never mind', 'Don't cancel these', 'Cancel this run', or wants to abort prepared operations.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "subscriptionId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 64,
            "description": "Optional specific subscription id to remove from the prepared run. If omitted, clears the entire run."
          }
        },
        "additionalProperties": false
      },
      "page": "/"
    }
    reset_demoAction

    Reset all fictional subscriptions, protections, prepared operations, and activity history to CancelDesk's deterministic seed state. Use before an isolated demo or test run. This never affects a real subscription or external provider.

    View tool JSON
    {
      "name": "reset_demo",
      "kind": "act",
      "impl": "imperative",
      "description": "Reset all fictional subscriptions, protections, prepared operations, and activity history to CancelDesk's deterministic seed state. Use before an isolated demo or test run. This never affects a real subscription or external provider.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "page": "/"
    }