Recharge MCP by usefulapi

Read subscriptions, customers, charges, orders; skip charges, cancel or activate subscriptions.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
91%
Naming quality
79%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (1)

  • LOWTool 'recharge_cancel_customer_subscription' name length outside 3-30 rangein recharge_cancel_customer_subscription

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~4,216Tokens (tool definitions)
~2.3 KBTypical response size
Significant attention impact (3.29% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "recharge": {
      "url": "https://recharge.usefulapi.io/mcp"
    }
  }
}

Remote endpoints

https://recharge.usefulapi.io/mcpstreamable-http

What it can do

Tool inventory

Tools (15)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢recharge_get_store

Get the Recharge store/shop info — name, domain, currency, timezone, and account settings. Recharge REST: GET /store.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢recharge_list_subscriptions(customer_id, address_id, status, ids, created_at_min, ...)

List subscriptions with optional filters (customer, address, status, ids, created/updated date ranges) and sorting. Returns { subscriptions }. Pagination is cursor-based: pass `limit` (default 50, max 250) and read `next_cursor` / `previous_cursor` from the response. IMPORTANT: when paging with `cursor`, Recharge accepts ONLY `limit` alongside it — omit every other filter on cursor requests. Recharge REST: GET /subscriptions.

Input Schema

{
  "type": "object",
  "properties": {
    "customer_id": {
      "description": "Filter by customer id.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "address_id": {
      "description": "Filter by address id.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "status": {
      "description": "Filter by subscription status, e.g. active | cancelled | expired.",
      "type": "string"
    },
    "ids": {
      "description": "Comma-separated list of subscription ids to fetch.",
      "type": "string"
    },
    "created_at_min": {
      "description": "Filter to subscriptions created on/after this date (ISO 8601).",
      "type": "string"
    },
    "created_at_max": {
      "description": "Filter to subscriptions created on/before this date (ISO 8601).",
      "type": "string"
    },
    "updated_at_min": {
      "description": "Filter to subscriptions updated on/after this date (ISO 8601).",
      "type": "string"
    },
    "updated_at_max": {
      "description": "Filter to subscriptions updated on/before this date (ISO 8601).",
      "type": "string"
    },
    "sort_by": {
      "description": "Sort order: id-asc | id-desc | created_at-asc | created_at-desc | updated_at-asc | updated_at-desc.",
      "type": "string",
      "enum": [
        "id-asc",
        "id-desc",
        "created_at-asc",
        "created_at-desc",
        "updated_at-asc",
        "updated_at-desc"
      ]
    },
    "limit": {
      "description": "Max results per page (1-250, default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 250
    },
    "cursor": {
      "description": "Pagination cursor (next_cursor / previous_cursor from a prior response). Use it ALONE with `limit` — omit all other filters on cursor requests.",
      "type": "string"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢recharge_get_subscription(id)

Get a single subscription by id, including product, quantity, price, charge interval, and next charge date. Recharge REST: GET /subscriptions/{id}.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "Subscription id."
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢recharge_list_customers(email, ids, created_at_min, created_at_max, updated_at_min, ...)

List customers with optional filters (email, ids, created/updated date ranges) and sorting. Returns { customers }. Pagination is cursor-based: pass `limit` (default 50, max 250) and read `next_cursor` / `previous_cursor` from the response. IMPORTANT: when paging with `cursor`, Recharge accepts ONLY `limit` alongside it — omit every other filter on cursor requests. Recharge REST: GET /customers.

Input Schema

{
  "type": "object",
  "properties": {
    "email": {
      "description": "Filter by customer email.",
      "type": "string"
    },
    "ids": {
      "description": "Comma-separated list of customer ids to fetch.",
      "type": "string"
    },
    "created_at_min": {
      "description": "Filter to customers created on/after this date (ISO 8601).",
      "type": "string"
    },
    "created_at_max": {
      "description": "Filter to customers created on/before this date (ISO 8601).",
      "type": "string"
    },
    "updated_at_min": {
      "description": "Filter to customers updated on/after this date (ISO 8601).",
      "type": "string"
    },
    "updated_at_max": {
      "description": "Filter to customers updated on/before this date (ISO 8601).",
      "type": "string"
    },
    "sort_by": {
      "description": "Sort order: id-asc | id-desc | created_at-asc | created_at-desc | updated_at-asc | updated_at-desc.",
      "type": "string",
      "enum": [
        "id-asc",
        "id-desc",
        "created_at-asc",
        "created_at-desc",
        "updated_at-asc",
        "updated_at-desc"
      ]
    },
    "limit": {
      "description": "Max results per page (1-250, default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 250
    },
    "cursor": {
      "description": "Pagination cursor (next_cursor / previous_cursor from a prior response). Use it ALONE with `limit` — omit all other filters on cursor requests.",
      "type": "string"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢recharge_get_customer(id)

Get a single customer by id, including contact details, Shopify customer id, and subscription/charge counts. Recharge REST: GET /customers/{id}.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "Customer id."
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢recharge_list_charges(customer_id, address_id, status, ids, purchase_item_id, ...)

List charges with optional filters (customer, address, status, ids, purchase item, scheduled/created/updated date ranges) and sorting. Returns { charges }. Pagination is cursor-based: pass `limit` (default 50, max 250) and read `next_cursor` / `previous_cursor` from the response. IMPORTANT: when paging with `cursor`, Recharge accepts ONLY `limit` alongside it — omit every other filter on cursor requests. Recharge REST: GET /charges.

Input Schema

{
  "type": "object",
  "properties": {
    "customer_id": {
      "description": "Filter by customer id.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "address_id": {
      "description": "Filter by address id.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "status": {
      "description": "Filter by charge status: success | queued | error | refunded | partially_refunded | skipped | pending_manual_payment | pending.",
      "type": "string",
      "enum": [
        "success",
        "queued",
        "error",
        "refunded",
        "partially_refunded",
        "skipped",
        "pending_manual_payment",
        "pending"
      ]
    },
    "ids": {
      "description": "Comma-separated list of charge ids to fetch.",
      "type": "string"
    },
    "purchase_item_id": {
      "description": "Filter to charges containing this purchase item (subscription/onetime line item) id.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "scheduled_at": {
      "description": "Filter to charges scheduled on this date (ISO 8601).",
      "type": "string"
    },
    "scheduled_at_min": {
      "description": "Filter to charges scheduled on/after this date (ISO 8601).",
      "type": "string"
    },
    "scheduled_at_max": {
      "description": "Filter to charges scheduled on/before this date (ISO 8601).",
      "type": "string"
    },
    "created_at_min": {
      "description": "Filter to charges created on/after this date (ISO 8601).",
      "type": "string"
    },
    "created_at_max": {
      "description": "Filter to charges created on/before this date (ISO 8601).",
      "type": "string"
    },
    "updated_at_min": {
      "description": "Filter to charges updated on/after this date (ISO 8601).",
      "type": "string"
    },
    "updated_at_max": {
      "description": "Filter to charges updated on/before this date (ISO 8601).",
      "type": "string"
    },
    "sort_by": {
      "description": "Sort order: id-asc | id-desc | updated_at-asc | updated_at-desc | scheduled_at-asc | scheduled_at-desc.",
      "type": "string",
      "enum": [
        "id-asc",
        "id-desc",
        "updated_at-asc",
        "updated_at-desc",
        "scheduled_at-asc",
        "scheduled_at-desc"
      ]
    },
    "limit": {
      "description": "Max results per page (1-250, default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 250
    },
    "cursor": {
      "description": "Pagination cursor (next_cursor / previous_cursor from a prior response). Use it ALONE with `limit` — omit all other filters on cursor requests.",
      "type": "string"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢recharge_get_charge(id)

Get a single charge by id, including line items, totals, status, scheduled date, and customer/address. Recharge REST: GET /charges/{id}.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "Charge id."
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢recharge_list_orders(customer_id, address_id, subscription_id, status, ids, ...)

List orders with optional filters (customer, address, subscription, status, ids, created/updated/scheduled date ranges) and sorting. Returns { orders }. Pagination is cursor-based: pass `limit` (default 50, max 250) and read `next_cursor` / `previous_cursor` from the response. IMPORTANT: when paging with `cursor`, Recharge accepts ONLY `limit` alongside it — omit every other filter on cursor requests. Recharge REST: GET /orders.

Input Schema

{
  "type": "object",
  "properties": {
    "customer_id": {
      "description": "Filter by customer id.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "address_id": {
      "description": "Filter by address id.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "subscription_id": {
      "description": "Filter by subscription id.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "status": {
      "description": "Filter by order status, e.g. success | queued | error | refunded | skipped | cancelled.",
      "type": "string"
    },
    "ids": {
      "description": "Comma-separated list of order ids to fetch.",
      "type": "string"
    },
    "created_at_min": {
      "description": "Filter to orders created on/after this date (ISO 8601).",
      "type": "string"
    },
    "created_at_max": {
      "description": "Filter to orders created on/before this date (ISO 8601).",
      "type": "string"
    },
    "updated_at_min": {
      "description": "Filter to orders updated on/after this date (ISO 8601).",
      "type": "string"
    },
    "updated_at_max": {
      "description": "Filter to orders updated on/before this date (ISO 8601).",
      "type": "string"
    },
    "scheduled_at_min": {
      "description": "Filter to orders scheduled on/after this date (ISO 8601).",
      "type": "string"
    },
    "scheduled_at_max": {
      "description": "Filter to orders scheduled on/before this date (ISO 8601).",
      "type": "string"
    },
    "sort_by": {
      "description": "Sort order: id-asc | id-desc | created_at-asc | created_at-desc | updated_at-asc | updated_at-desc.",
      "type": "string",
      "enum": [
        "id-asc",
        "id-desc",
        "created_at-asc",
        "created_at-desc",
        "updated_at-asc",
        "updated_at-desc"
      ]
    },
    "limit": {
      "description": "Max results per page (1-250, default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 250
    },
    "cursor": {
      "description": "Pagination cursor (next_cursor / previous_cursor from a prior response). Use it ALONE with `limit` — omit all other filters on cursor requests.",
      "type": "string"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢recharge_get_order(id)

Get a single order by id, including line items, totals, status, and the charge/subscription it came from. Recharge REST: GET /orders/{id}.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "Order id."
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢recharge_list_onetimes(customer_id, address_id, created_at_min, created_at_max, updated_at_min, ...)

List one-time (non-recurring) line items with optional filters (customer, address, created/updated date ranges). Returns { onetimes }. Pagination is cursor-based: pass `limit` (default 50, max 250) and read `next_cursor` / `previous_cursor` from the response. IMPORTANT: when paging with `cursor`, Recharge accepts ONLY `limit` alongside it — omit every other filter on cursor requests. Recharge REST: GET /onetimes.

Input Schema

{
  "type": "object",
  "properties": {
    "customer_id": {
      "description": "Filter by customer id.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "address_id": {
      "description": "Filter by address id.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "created_at_min": {
      "description": "Filter to one-times created on/after this date (ISO 8601).",
      "type": "string"
    },
    "created_at_max": {
      "description": "Filter to one-times created on/before this date (ISO 8601).",
      "type": "string"
    },
    "updated_at_min": {
      "description": "Filter to one-times updated on/after this date (ISO 8601).",
      "type": "string"
    },
    "updated_at_max": {
      "description": "Filter to one-times updated on/before this date (ISO 8601).",
      "type": "string"
    },
    "limit": {
      "description": "Max results per page (1-250, default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 250
    },
    "cursor": {
      "description": "Pagination cursor (next_cursor / previous_cursor from a prior response). Use it ALONE with `limit` — omit all other filters on cursor requests.",
      "type": "string"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢recharge_list_products(ids, limit, cursor)

List Recharge products (subscription rules / discounts per product) with optional id filter. Returns { products }. Pagination is cursor-based: pass `limit` (default 50, max 250) and read `next_cursor` / `previous_cursor` from the response. IMPORTANT: when paging with `cursor`, Recharge accepts ONLY `limit` alongside it — omit every other filter on cursor requests. Recharge REST: GET /products.

Input Schema

{
  "type": "object",
  "properties": {
    "ids": {
      "description": "Comma-separated list of product ids to fetch.",
      "type": "string"
    },
    "limit": {
      "description": "Max results per page (1-250, default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 250
    },
    "cursor": {
      "description": "Pagination cursor (next_cursor / previous_cursor from a prior response). Use it ALONE with `limit` — omit all other filters on cursor requests.",
      "type": "string"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢recharge_list_addresses(customer_id, ids, created_at_min, created_at_max, updated_at_min, ...)

List customer addresses with optional filters (customer, ids, created/updated date ranges). Returns { addresses }. Pagination is cursor-based: pass `limit` (default 50, max 250) and read `next_cursor` / `previous_cursor` from the response. IMPORTANT: when paging with `cursor`, Recharge accepts ONLY `limit` alongside it — omit every other filter on cursor requests. Recharge REST: GET /addresses.

Input Schema

{
  "type": "object",
  "properties": {
    "customer_id": {
      "description": "Filter by customer id.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "ids": {
      "description": "Comma-separated list of address ids to fetch.",
      "type": "string"
    },
    "created_at_min": {
      "description": "Filter to addresses created on/after this date (ISO 8601).",
      "type": "string"
    },
    "created_at_max": {
      "description": "Filter to addresses created on/before this date (ISO 8601).",
      "type": "string"
    },
    "updated_at_min": {
      "description": "Filter to addresses updated on/after this date (ISO 8601).",
      "type": "string"
    },
    "updated_at_max": {
      "description": "Filter to addresses updated on/before this date (ISO 8601).",
      "type": "string"
    },
    "limit": {
      "description": "Max results per page (1-250, default 50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 250
    },
    "cursor": {
      "description": "Pagination cursor (next_cursor / previous_cursor from a prior response). Use it ALONE with `limit` — omit all other filters on cursor requests.",
      "type": "string"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴recharge_skip_charge(id, purchase_item_ids)

SKIPS a scheduled charge — prevents it from processing on its scheduled date. This MODIFIES live billing data. Some stores require the specific line items to skip via `purchase_item_ids`. Recharge REST: POST /charges/{id}/skip with JSON body { purchase_item_ids? }. Returns { charge }.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "Charge id to skip."
    },
    "purchase_item_ids": {
      "description": "The subscription/onetime line item ids to skip (some stores require this).",
      "type": "array",
      "items": {
        "type": "integer",
        "minimum": -9007199254740991,
        "maximum": 9007199254740991
      }
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴recharge_cancel_customer_subscription(id, cancellation_reason, cancellation_reason_comments)

CANCELS an active subscription — stops all future charges. This MODIFIES live data. A `cancellation_reason` is required. Recharge REST: POST /subscriptions/{id}/cancel with JSON body { cancellation_reason, cancellation_reason_comments? }. Returns { subscription }.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "Subscription id to cancel."
    },
    "cancellation_reason": {
      "type": "string",
      "description": "Reason for cancelling (required by Recharge)."
    },
    "cancellation_reason_comments": {
      "description": "Optional free-text detail about the cancellation.",
      "type": "string"
    }
  },
  "required": [
    "id",
    "cancellation_reason"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴recharge_activate_subscription(id)

REACTIVATES a cancelled subscription — resumes future charges. This MODIFIES live data. Recharge REST: POST /subscriptions/{id}/activate (no body). Returns { subscription }.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "Subscription id to reactivate."
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded15 tools
verifiedversion not recorded15 tools
verifiedversion not recorded15 tools
verifiedversion not recorded15 tools
failed observationversion not recorded—