Cratejoy MCP by usefulapi
Read Cratejoy subscriptions, customers, orders and shipments; skip or cancel subscriptions.
¿Debería usar esto?
Calidad y seguridad
Hallazgos (5)
- LOWen cratejoy_list_subscription_coupons
- LOWen cratejoy_skip_subscription_renewal
- LOWen cratejoy_cancel_customer_subscription
- LOWen cratejoy_reactivate_subscription
- LOWen cratejoy_retry_subscription_renewal
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"cratejoy": {
"url": "https://cratejoy.usefulapi.io/mcp"
}
}
}Puntos de conexión remotos
https://cratejoy.usefulapi.io/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (18)
🟢cratejoy_get_store_metadata
The store-level metadata record (id, store_id, created_at, updated_at, data: free-form JSON attached to the store). GET /v1/metadata/.
Esquema de entrada
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cratejoy_list_customers(email, name, filters, with, limit, ...)
List customers (id, name, email, country, location, num_orders, num_subscriptions, subscription_status, total_revenue). Filter by email or name, or with `filters` (e.g. { 'addresses.city': 'Austin' }). Relationships: addresses, logs, carts, notes, orders, shipments, subscriptions. GET /v1/customers/.
Esquema de entrada
{
"type": "object",
"properties": {
"email": {
"description": "Exact customer email.",
"type": "string",
"minLength": 3,
"maxLength": 200
},
"name": {
"description": "Customer name contains this text (case-insensitive).",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"filters": {
"description": "Extra Cratejoy filters as { '[relation.]property[__comparison]': value }. Comparisons: eq (default), ne, lt, le, gt, ge, like, ilike (% is the wildcard), in, nin (comma-separated), is_null. Status columns take integers. Example: { 'customer.email__like': '%@example.com' }.",
"type": "object",
"propertyNames": {
"type": "string",
"maxLength": 80
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
},
"with": {
"description": "Relationships to embed: comma-separated names (e.g. 'customer,orders'), 'all', or an empty string for none. Omit it for the vendor default.",
"type": "string",
"pattern": "^(?:all|[a-z_]+(?:,[a-z_]+)*)?$"
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"page": {
"description": "Page number, counting from 0 (default 0). Pass the previous reply's next_page.",
"type": "integer",
"minimum": 0,
"maximum": 100000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cratejoy_get_customer(customer_id, with)
One customer by id, optionally with relationships (addresses, subscriptions, orders, shipments, notes...). GET /v1/customers/{customer_id}/.
Esquema de entrada
{
"type": "object",
"properties": {
"customer_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Cratejoy customer id."
},
"with": {
"description": "Relationships to embed: comma-separated names (e.g. 'customer,orders'), 'all', or an empty string for none. Omit it for the vendor default.",
"type": "string",
"pattern": "^(?:all|[a-z_]+(?:,[a-z_]+)*)?$"
}
},
"required": [
"customer_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cratejoy_list_subscriptions(status, ends_after, ends_before, filters, with, ...)
List subscriptions (id, status, autorenew, billing_name, start_date, end_date, skipped_date, is_test, product_billing_id). Filter by status and end-date range, or with `filters` (e.g. { 'customer.email__like': '%@example.com' }). Relationships: customer, billing, term, product, address, orders, shipments, logs. GET /v1/subscriptions/.
Esquema de entrada
{
"type": "object",
"properties": {
"status": {
"description": "Subscription status (unpaid, suspended and others are deprecated by Cratejoy).",
"type": "string",
"enum": [
"unpaid",
"active",
"cancelled",
"suspended",
"expired",
"past_due",
"pending_renewal",
"renewing",
"unpaid_order_failed",
"transferred"
]
},
"ends_after": {
"description": "Only subscriptions whose end_date is on or after this date/date-time.",
"type": "string"
},
"ends_before": {
"description": "Only subscriptions whose end_date is on or before this date/date-time.",
"type": "string"
},
"filters": {
"description": "Extra Cratejoy filters as { '[relation.]property[__comparison]': value }. Comparisons: eq (default), ne, lt, le, gt, ge, like, ilike (% is the wildcard), in, nin (comma-separated), is_null. Status columns take integers. Example: { 'customer.email__like': '%@example.com' }.",
"type": "object",
"propertyNames": {
"type": "string",
"maxLength": 80
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
},
"with": {
"description": "Relationships to embed: comma-separated names (e.g. 'customer,orders'), 'all', or an empty string for none. Omit it for the vendor default.",
"type": "string",
"pattern": "^(?:all|[a-z_]+(?:,[a-z_]+)*)?$"
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"page": {
"description": "Page number, counting from 0 (default 0). Pass the previous reply's next_page.",
"type": "integer",
"minimum": 0,
"maximum": 100000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cratejoy_get_subscription(subscription_id, with)
One subscription by id, optionally with relationships (customer, billing, term, product, address, orders, shipments, logs). GET /v1/subscriptions/{sub_id}/.
Esquema de entrada
{
"type": "object",
"properties": {
"subscription_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Cratejoy subscription id."
},
"with": {
"description": "Relationships to embed: comma-separated names (e.g. 'customer,orders'), 'all', or an empty string for none. Omit it for the vendor default.",
"type": "string",
"pattern": "^(?:all|[a-z_]+(?:,[a-z_]+)*)?$"
}
},
"required": [
"subscription_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cratejoy_list_subscription_coupons(subscription_id, limit, page)
Coupons applied to a subscription's next renewal (coupon_id, code_used, enabled, num_renewals). GET /v1/subscriptions/{sub_id}/coupons/.
Esquema de entrada
{
"type": "object",
"properties": {
"subscription_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Cratejoy subscription id."
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"page": {
"description": "Page number, counting from 0 (default 0). Pass the previous reply's next_page.",
"type": "integer",
"minimum": 0,
"maximum": 100000
}
},
"required": [
"subscription_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cratejoy_list_orders(financial_status, placed_after, placed_before, filters, with, ...)
List orders (id, customer_id, placed_at, status, financial_status, fulfillment_status, is_renewal, is_gift, sub_total, total, total_shipping, total_tax). Amounts are in cents. Filter by payment status and placed-at range, or with `filters`. Relationships: customer, products, coupons, bill_address, ship_address, fulfillments, transactions, subscriptions. GET /v1/orders/.
Esquema de entrada
{
"type": "object",
"properties": {
"financial_status": {
"description": "Payment status of the order.",
"type": "string",
"enum": [
"pending",
"authorized",
"partially_paid",
"paid",
"partially_refunded",
"refunded",
"voided"
]
},
"placed_after": {
"description": "Only orders placed on or after this date/date-time.",
"type": "string"
},
"placed_before": {
"description": "Only orders placed on or before this date/date-time.",
"type": "string"
},
"filters": {
"description": "Extra Cratejoy filters as { '[relation.]property[__comparison]': value }. Comparisons: eq (default), ne, lt, le, gt, ge, like, ilike (% is the wildcard), in, nin (comma-separated), is_null. Status columns take integers. Example: { 'customer.email__like': '%@example.com' }.",
"type": "object",
"propertyNames": {
"type": "string",
"maxLength": 80
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
},
"with": {
"description": "Relationships to embed: comma-separated names (e.g. 'customer,orders'), 'all', or an empty string for none. Omit it for the vendor default.",
"type": "string",
"pattern": "^(?:all|[a-z_]+(?:,[a-z_]+)*)?$"
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"page": {
"description": "Page number, counting from 0 (default 0). Pass the previous reply's next_page.",
"type": "integer",
"minimum": 0,
"maximum": 100000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cratejoy_get_order(order_id, with)
One order by id, optionally with relationships (customer, products, coupons, addresses, fulfillments, transactions). GET /v1/orders/{order_id}/.
Esquema de entrada
{
"type": "object",
"properties": {
"order_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Cratejoy order id."
},
"with": {
"description": "Relationships to embed: comma-separated names (e.g. 'customer,orders'), 'all', or an empty string for none. Omit it for the vendor default.",
"type": "string",
"pattern": "^(?:all|[a-z_]+(?:,[a-z_]+)*)?$"
}
},
"required": [
"order_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cratejoy_list_shipments(status, created_after, created_before, filters, with, ...)
List shipments (id, customer_id, status, created_at, target_at, shipped_at, tracking_number, is_gift). Filter by status and creation range, or with `filters`. Relationships: customer, fulfillments, labels, ship_address, subscriptions. GET /v1/shipments/.
Esquema de entrada
{
"type": "object",
"properties": {
"status": {
"description": "Shipment status.",
"type": "string",
"enum": [
"unshipped",
"shipped",
"cancelled"
]
},
"created_after": {
"description": "Only shipments created on or after this date/date-time.",
"type": "string"
},
"created_before": {
"description": "Only shipments created on or before this date/date-time.",
"type": "string"
},
"filters": {
"description": "Extra Cratejoy filters as { '[relation.]property[__comparison]': value }. Comparisons: eq (default), ne, lt, le, gt, ge, like, ilike (% is the wildcard), in, nin (comma-separated), is_null. Status columns take integers. Example: { 'customer.email__like': '%@example.com' }.",
"type": "object",
"propertyNames": {
"type": "string",
"maxLength": 80
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
},
"with": {
"description": "Relationships to embed: comma-separated names (e.g. 'customer,orders'), 'all', or an empty string for none. Omit it for the vendor default.",
"type": "string",
"pattern": "^(?:all|[a-z_]+(?:,[a-z_]+)*)?$"
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"page": {
"description": "Page number, counting from 0 (default 0). Pass the previous reply's next_page.",
"type": "integer",
"minimum": 0,
"maximum": 100000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cratejoy_get_shipment(shipment_id, with)
One shipment by id, optionally with relationships (customer, fulfillments, labels, ship_address, subscriptions). GET /v1/shipments/{ship_id}/.
Esquema de entrada
{
"type": "object",
"properties": {
"shipment_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Cratejoy shipment id."
},
"with": {
"description": "Relationships to embed: comma-separated names (e.g. 'customer,orders'), 'all', or an empty string for none. Omit it for the vendor default.",
"type": "string",
"pattern": "^(?:all|[a-z_]+(?:,[a-z_]+)*)?$"
}
},
"required": [
"shipment_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cratejoy_list_products(product_type, filters, with, limit, page)
List products (id, name, sku, slug, description, visible, listed, giftable, ship_option, ship_weight, has_subscribers). Filter by type or with `filters` (e.g. { 'visible': true }). Relationships: billing, instances, variants, subscription_types. GET /v1/products/.
Esquema de entrada
{
"type": "object",
"properties": {
"product_type": {
"description": "Product type.",
"type": "string",
"enum": [
"subscription",
"one_time",
"gift_card"
]
},
"filters": {
"description": "Extra Cratejoy filters as { '[relation.]property[__comparison]': value }. Comparisons: eq (default), ne, lt, le, gt, ge, like, ilike (% is the wildcard), in, nin (comma-separated), is_null. Status columns take integers. Example: { 'customer.email__like': '%@example.com' }.",
"type": "object",
"propertyNames": {
"type": "string",
"maxLength": 80
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
},
"with": {
"description": "Relationships to embed: comma-separated names (e.g. 'customer,orders'), 'all', or an empty string for none. Omit it for the vendor default.",
"type": "string",
"pattern": "^(?:all|[a-z_]+(?:,[a-z_]+)*)?$"
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"page": {
"description": "Page number, counting from 0 (default 0). Pass the previous reply's next_page.",
"type": "integer",
"minimum": 0,
"maximum": 100000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cratejoy_get_product(product_id, with)
One product by id, optionally with relationships. GET /v1/products/{prod_id}/.
Esquema de entrada
{
"type": "object",
"properties": {
"product_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Cratejoy product id."
},
"with": {
"description": "Relationships to embed: comma-separated names (e.g. 'customer,orders'), 'all', or an empty string for none. Omit it for the vendor default.",
"type": "string",
"pattern": "^(?:all|[a-z_]+(?:,[a-z_]+)*)?$"
}
},
"required": [
"product_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cratejoy_list_transactions(result, created_after, created_before, filters, with, ...)
List payment transactions (id, created_at, result: authorized/captured/failed/refunded, total in cents, is_test, order). Filter by result and creation range, or with `filters`. GET /v1/transactions/.
Esquema de entrada
{
"type": "object",
"properties": {
"result": {
"description": "Transaction result.",
"type": "string",
"enum": [
"authorized",
"captured",
"failed",
"refunded",
"failed_refund"
]
},
"created_after": {
"description": "Only transactions created on or after this date/date-time.",
"type": "string"
},
"created_before": {
"description": "Only transactions created on or before this date/date-time.",
"type": "string"
},
"filters": {
"description": "Extra Cratejoy filters as { '[relation.]property[__comparison]': value }. Comparisons: eq (default), ne, lt, le, gt, ge, like, ilike (% is the wildcard), in, nin (comma-separated), is_null. Status columns take integers. Example: { 'customer.email__like': '%@example.com' }.",
"type": "object",
"propertyNames": {
"type": "string",
"maxLength": 80
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
},
"with": {
"description": "Relationships to embed: comma-separated names (e.g. 'customer,orders'), 'all', or an empty string for none. Omit it for the vendor default.",
"type": "string",
"pattern": "^(?:all|[a-z_]+(?:,[a-z_]+)*)?$"
},
"limit": {
"description": "Results per page, 1-100 (default 25).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"page": {
"description": "Page number, counting from 0 (default 0). Pass the previous reply's next_page.",
"type": "integer",
"minimum": 0,
"maximum": 100000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cratejoy_get_transaction(transaction_id, with)
One payment transaction by id. GET /v1/transactions/{trans_id}/.
Esquema de entrada
{
"type": "object",
"properties": {
"transaction_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Cratejoy transaction id."
},
"with": {
"description": "Relationships to embed: comma-separated names (e.g. 'customer,orders'), 'all', or an empty string for none. Omit it for the vendor default.",
"type": "string",
"pattern": "^(?:all|[a-z_]+(?:,[a-z_]+)*)?$"
}
},
"required": [
"transaction_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴cratejoy_skip_subscription_renewal(subscription_id, action, confirm)
WRITE: skip a subscriber's next renewal (action 'skip') or undo the skip (action 'unskip'). Requires confirm=true. Repeating the same action changes nothing more. This changes a merchant customer's subscription in Cratejoy; it is not this server's own billing. PUT /v1/subscriptions/{sub_id}/skip/.
Esquema de entrada
{
"type": "object",
"properties": {
"subscription_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Cratejoy subscription id."
},
"action": {
"type": "string",
"enum": [
"skip",
"unskip"
],
"description": "'skip' skips the next renewal; 'unskip' restores it."
},
"confirm": {
"type": "boolean",
"const": true,
"description": "Must be true: confirms the customer's renewal schedule should change."
}
},
"required": [
"subscription_id",
"action",
"confirm"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴cratejoy_cancel_customer_subscription(subscription_id, confirm, log_note)
WRITE: cancel a subscriber's subscription in Cratejoy (the customer stops receiving boxes and renewals). This cancels the merchant's customer subscription, NOT this server's Pro plan (use the *_cancel_subscription tool for that). Requires confirm=true. A cancelled subscription can be restored with cratejoy_reactivate_subscription. PUT /v1/subscriptions/{sub_id}/cancel/.
Esquema de entrada
{
"type": "object",
"properties": {
"subscription_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Cratejoy subscription id."
},
"confirm": {
"type": "boolean",
"const": true,
"description": "Must be true: confirms the customer's subscription should be cancelled."
},
"log_note": {
"description": "Optional note recorded in the subscription's log.",
"type": "string",
"minLength": 1,
"maxLength": 500
}
},
"required": [
"subscription_id",
"confirm"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴cratejoy_reactivate_subscription(subscription_id, confirm, log_note)
WRITE: reactivate a cancelled subscription so it renews and charges the customer again. Requires confirm=true. Reactivating an active subscription changes nothing more. PUT /v1/subscriptions/{sub_id}/reactivate/.
Esquema de entrada
{
"type": "object",
"properties": {
"subscription_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Cratejoy subscription id."
},
"confirm": {
"type": "boolean",
"const": true,
"description": "Must be true: confirms the subscription should renew (and be charged) again."
},
"log_note": {
"description": "Optional note recorded in the subscription's log.",
"type": "string",
"minLength": 1,
"maxLength": 500
}
},
"required": [
"subscription_id",
"confirm"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴cratejoy_retry_subscription_renewal(subscription_id, confirm, log_note)
WRITE: retry the renewal of a PAST-DUE subscription whose renewal failed within the last 30 days. This charges the customer's saved payment method. Requires confirm=true. PUT /v1/subscriptions/{sub_id}/renew/.
Esquema de entrada
{
"type": "object",
"properties": {
"subscription_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Cratejoy subscription id (status past_due)."
},
"confirm": {
"type": "boolean",
"const": true,
"description": "Must be true: confirms the customer's payment method should be charged."
},
"log_note": {
"description": "Optional note recorded in the subscription's log.",
"type": "string",
"minLength": 1,
"maxLength": 500
}
},
"required": [
"subscription_id",
"confirm"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Comunidad
Evidencia