swell
Manage your Swell headless-commerce store — products, orders, customers, and subscriptions.
Should I use this
Quality & Safety
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": {
"swell": {
"url": "https://swell.usefulapi.io/mcp"
}
}
}Remote endpoints
https://swell.usefulapi.io/mcpstreamable-httpWhat it can do
Tool inventory
Tools (16)
🟢swell_list_products(limit, page, where, sort, expand, ...)
List products in the store, with MongoDB-style filtering, sorting, search, field selection, and expansion. Swell backend REST API: GET /products.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Max records to return (1–1000, Swell default 15).",
"type": "integer",
"minimum": 1,
"maximum": 1000
},
"page": {
"description": "Page number for pagination (default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"where": {
"description": "MongoDB-style filter as a JSON object string, e.g. {\"active\":true,\"price\":{\"$gte\":10}}.",
"type": "string"
},
"sort": {
"description": "Sort expression, e.g. \"date_created desc\" or \"name asc\".",
"type": "string"
},
"expand": {
"description": "Comma-separated related fields to expand, e.g. \"variants,categories\".",
"type": "string"
},
"fields": {
"description": "Comma-separated fields to return, e.g. \"name,price,active\".",
"type": "string"
},
"search": {
"description": "Free-text search across the model's searchable fields.",
"type": "string"
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢swell_get_product(id, expand, fields)
Fetch a single product by its record id or its slug. Supports `expand` and `fields`. Swell backend REST API: GET /products/{id}.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Product id or slug."
},
"expand": {
"description": "Comma-separated related fields to expand, e.g. \"variants,categories\".",
"type": "string"
},
"fields": {
"description": "Comma-separated fields to return, e.g. \"name,price\".",
"type": "string"
}
},
"required": [
"id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢swell_list_categories(limit, page, where, sort, expand, ...)
List product categories, with filtering, sorting, search, and expansion. Swell backend REST API: GET /categories.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Max records to return (1–1000, Swell default 15).",
"type": "integer",
"minimum": 1,
"maximum": 1000
},
"page": {
"description": "Page number for pagination (default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"where": {
"description": "MongoDB-style filter as a JSON object string, e.g. {\"active\":true,\"price\":{\"$gte\":10}}.",
"type": "string"
},
"sort": {
"description": "Sort expression, e.g. \"date_created desc\" or \"name asc\".",
"type": "string"
},
"expand": {
"description": "Comma-separated related fields to expand, e.g. \"variants,categories\".",
"type": "string"
},
"search": {
"description": "Free-text search across the model's searchable fields.",
"type": "string"
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢swell_list_orders(limit, page, where, sort, expand, ...)
List orders, with MongoDB-style filtering, sorting, search, and expansion. Swell backend REST API: GET /orders.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Max records to return (1–1000, Swell default 15).",
"type": "integer",
"minimum": 1,
"maximum": 1000
},
"page": {
"description": "Page number for pagination (default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"where": {
"description": "MongoDB-style filter as a JSON object string, e.g. {\"active\":true,\"price\":{\"$gte\":10}}.",
"type": "string"
},
"sort": {
"description": "Sort expression, e.g. \"date_created desc\" or \"name asc\".",
"type": "string"
},
"expand": {
"description": "Comma-separated related fields to expand, e.g. \"variants,categories\".",
"type": "string"
},
"search": {
"description": "Free-text search across the model's searchable fields.",
"type": "string"
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢swell_get_order(id, expand, fields)
Fetch a single order by its record id or its order number. Supports `expand` and `fields`. Swell backend REST API: GET /orders/{id}.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Order id or order number."
},
"expand": {
"description": "Comma-separated related fields to expand, e.g. \"items,account\".",
"type": "string"
},
"fields": {
"description": "Comma-separated fields to return.",
"type": "string"
}
},
"required": [
"id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢swell_list_customers(limit, page, where, sort, expand, ...)
List customers. In Swell, customers are the `accounts` model — this queries GET /accounts, with filtering, sorting, search, and expansion.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Max records to return (1–1000, Swell default 15).",
"type": "integer",
"minimum": 1,
"maximum": 1000
},
"page": {
"description": "Page number for pagination (default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"where": {
"description": "MongoDB-style filter as a JSON object string, e.g. {\"active\":true,\"price\":{\"$gte\":10}}.",
"type": "string"
},
"sort": {
"description": "Sort expression, e.g. \"date_created desc\" or \"name asc\".",
"type": "string"
},
"expand": {
"description": "Comma-separated related fields to expand, e.g. \"variants,categories\".",
"type": "string"
},
"search": {
"description": "Free-text search across the model's searchable fields.",
"type": "string"
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢swell_get_customer(id, expand, fields)
Fetch a single customer (Swell `accounts` model) by id. Supports `expand` and `fields`. Swell backend REST API: GET /accounts/{id}.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Customer (account) id."
},
"expand": {
"description": "Comma-separated related fields to expand, e.g. \"orders,subscriptions\".",
"type": "string"
},
"fields": {
"description": "Comma-separated fields to return.",
"type": "string"
}
},
"required": [
"id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢swell_list_carts(limit, page, where, sort, expand)
List shopping carts (including abandoned carts), with filtering, sorting, and expansion. Swell backend REST API: GET /carts.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Max records to return (1–1000, Swell default 15).",
"type": "integer",
"minimum": 1,
"maximum": 1000
},
"page": {
"description": "Page number for pagination (default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"where": {
"description": "MongoDB-style filter as a JSON object string, e.g. {\"active\":true,\"price\":{\"$gte\":10}}.",
"type": "string"
},
"sort": {
"description": "Sort expression, e.g. \"date_created desc\" or \"name asc\".",
"type": "string"
},
"expand": {
"description": "Comma-separated related fields to expand, e.g. \"variants,categories\".",
"type": "string"
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢swell_list_subscriptions(limit, page, where, sort, expand)
List subscriptions, with filtering, sorting, and expansion. Swell backend REST API: GET /subscriptions.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Max records to return (1–1000, Swell default 15).",
"type": "integer",
"minimum": 1,
"maximum": 1000
},
"page": {
"description": "Page number for pagination (default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"where": {
"description": "MongoDB-style filter as a JSON object string, e.g. {\"active\":true,\"price\":{\"$gte\":10}}.",
"type": "string"
},
"sort": {
"description": "Sort expression, e.g. \"date_created desc\" or \"name asc\".",
"type": "string"
},
"expand": {
"description": "Comma-separated related fields to expand, e.g. \"variants,categories\".",
"type": "string"
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢swell_get_subscription(id, expand)
Fetch a single subscription by id. Supports `expand`. Swell backend REST API: GET /subscriptions/{id}.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Subscription id."
},
"expand": {
"description": "Comma-separated related fields to expand, e.g. \"account,product\".",
"type": "string"
}
},
"required": [
"id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢swell_list_invoices(limit, page, where, sort, expand)
List invoices (typically subscription invoices), with filtering, sorting, and expansion. Swell backend REST API: GET /invoices.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Max records to return (1–1000, Swell default 15).",
"type": "integer",
"minimum": 1,
"maximum": 1000
},
"page": {
"description": "Page number for pagination (default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"where": {
"description": "MongoDB-style filter as a JSON object string, e.g. {\"active\":true,\"price\":{\"$gte\":10}}.",
"type": "string"
},
"sort": {
"description": "Sort expression, e.g. \"date_created desc\" or \"name asc\".",
"type": "string"
},
"expand": {
"description": "Comma-separated related fields to expand, e.g. \"variants,categories\".",
"type": "string"
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢swell_list_coupons(limit, page, where, sort)
List discount coupons, with filtering and sorting. Swell backend REST API: GET /coupons.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Max records to return (1–1000, Swell default 15).",
"type": "integer",
"minimum": 1,
"maximum": 1000
},
"page": {
"description": "Page number for pagination (default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"where": {
"description": "MongoDB-style filter as a JSON object string, e.g. {\"active\":true,\"price\":{\"$gte\":10}}.",
"type": "string"
},
"sort": {
"description": "Sort expression, e.g. \"date_created desc\" or \"name asc\".",
"type": "string"
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢swell_query(collection, limit, page, where, sort, ...)
Power tool: read-only (GET only) access to ANY Swell model not covered by a dedicated tool — e.g. stock, promotions, giftcards, payments, shipments, settings. Supply the collection name plus the usual list params (limit, page, where, sort, expand, fields, search). Swell backend REST API: GET /{collection}.
Input Schema
{
"type": "object",
"properties": {
"collection": {
"type": "string",
"description": "Swell model/collection name, e.g. \"products\", \"stock\", \"promotions\", \"giftcards\"."
},
"limit": {
"description": "Max records to return (1–1000, Swell default 15).",
"type": "integer",
"minimum": 1,
"maximum": 1000
},
"page": {
"description": "Page number for pagination (default 1).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"where": {
"description": "MongoDB-style filter as a JSON object string, e.g. {\"active\":true,\"price\":{\"$gte\":10}}.",
"type": "string"
},
"sort": {
"description": "Sort expression, e.g. \"date_created desc\" or \"name asc\".",
"type": "string"
},
"expand": {
"description": "Comma-separated related fields to expand, e.g. \"variants,categories\".",
"type": "string"
},
"fields": {
"description": "Comma-separated fields to return, e.g. \"name,price,active\".",
"type": "string"
},
"search": {
"description": "Free-text search across the model's searchable fields.",
"type": "string"
}
},
"required": [
"collection"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴swell_create_product(name, price, active, sku, stock_level, ...)
MUTATES LIVE STORE DATA. Create a new product in the store. Provide the common fields directly (name is required); anything else goes in `fields`, which is merged into the request body. Swell backend REST API: POST /products.
Input Schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Product name (required)."
},
"price": {
"description": "Product price.",
"type": "number"
},
"active": {
"description": "Whether the product is active/visible.",
"type": "boolean"
},
"sku": {
"description": "Stock-keeping unit.",
"type": "string"
},
"stock_level": {
"description": "Available stock quantity.",
"type": "number"
},
"type": {
"description": "Product type, e.g. \"standard\", \"subscription\", \"digital\".",
"type": "string"
},
"description": {
"description": "Product description.",
"type": "string"
},
"fields": {
"description": "Any additional product fields, merged into the request body (e.g. attributes, options, images).",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"required": [
"name"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴swell_update_product(id, fields)
MUTATES LIVE STORE DATA. Partially update an existing product by id. Provide the id plus a `fields` object of attributes to change. Swell backend REST API: PUT /products/{id}.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Product id to update (required)."
},
"fields": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {},
"description": "Partial set of product attributes to update, e.g. {\"price\":19.99,\"active\":false}."
}
},
"required": [
"id",
"fields"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴swell_update_order(id, fields)
MUTATES A LIVE ORDER. Partially update an existing order by id — e.g. change status, fulfillment, or notes. Provide the id plus a `fields` object of attributes to change, e.g. {"status":"complete"}. Swell backend REST API: PUT /orders/{id}.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Order id to update (required)."
},
"fields": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {},
"description": "Partial set of order attributes to update, e.g. {\"status\":\"complete\"} or fulfillment fields."
}
},
"required": [
"id",
"fields"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}Community
Evidence