swell

Manage your Swell headless-commerce store — products, orders, customers, and subscriptions.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
95%
Naming quality
80%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~3,431Tokens (tool definitions)
~1.8 KBTypical response size
Significant attention impact (2.68% 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": {
    "swell": {
      "url": "https://swell.usefulapi.io/mcp"
    }
  }
}

Remote endpoints

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

What it can do

Tool inventory

Tools (16)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢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

Rate this Server

Evidence

Recent observations

verifiedversion not recorded16 tools