Recharge MCP by usefulapi
Read subscriptions, customers, charges, orders; skip charges, cancel or activate subscriptions.
Should I use this
Quality & Safety
Findings (1)
- LOWin recharge_cancel_customer_subscription
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
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-httpWhat it can do
Tool inventory
Tools (15)
🟢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
Evidence