ecwid

Read store products, orders, customers, categories and coupons; adjust inventory and update orders.

Should I use this

Quality & Safety

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

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,547Tokens (tool definitions)
~1.7 KBTypical response size
Moderate attention impact (1.99% 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": {
    "ecwid": {
      "url": "https://ecwid.usefulapi.io/mcp"
    }
  }
}

Remote endpoints

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

What it can do

Tool inventory

Tools (12)

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

Get the store's profile — general info (store id, name, currency), company details, and settings. Ecwid REST: GET /profile.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢ecwid_search_products(keyword, sku, category, inStock, enabled, ...)

Search / list the store's products with optional filters (keyword, SKU, category, stock, price range) and sorting. Returns a paged collection ({total, count, offset, limit, items}). Ecwid REST: GET /products.

Input Schema

{
  "type": "object",
  "properties": {
    "keyword": {
      "description": "Full-text search term (matches title, description, SKU…).",
      "type": "string"
    },
    "sku": {
      "description": "Filter by exact product SKU.",
      "type": "string"
    },
    "category": {
      "description": "Filter to products in this category id (0 = root).",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "inStock": {
      "description": "Filter to in-stock (true) or out-of-stock (false) products.",
      "type": "boolean"
    },
    "enabled": {
      "description": "Filter to enabled (true) or disabled (false) products.",
      "type": "boolean"
    },
    "priceFrom": {
      "description": "Minimum price (inclusive).",
      "type": "number"
    },
    "priceTo": {
      "description": "Maximum price (inclusive).",
      "type": "number"
    },
    "sortBy": {
      "description": "Sort order: RELEVANCE | PRICE_ASC | PRICE_DESC | NAME_ASC | NAME_DESC | ADDED_TIME_ASC | ADDED_TIME_DESC | UPDATED_TIME_ASC | UPDATED_TIME_DESC.",
      "type": "string",
      "enum": [
        "RELEVANCE",
        "PRICE_ASC",
        "PRICE_DESC",
        "NAME_ASC",
        "NAME_DESC",
        "ADDED_TIME_ASC",
        "ADDED_TIME_DESC",
        "UPDATED_TIME_ASC",
        "UPDATED_TIME_DESC"
      ]
    },
    "offset": {
      "description": "Pagination offset.",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "limit": {
      "description": "Max results per page (1-100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢ecwid_get_product(product_id)

Get a single product by its id, including price, stock, options, images, and category assignments. Ecwid REST: GET /products/{productId}.

Input Schema

{
  "type": "object",
  "properties": {
    "product_id": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "Product id."
    }
  },
  "required": [
    "product_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢ecwid_search_orders(keyword, email, customer_id, payment_status, fulfillment_status, ...)

Search / list the store's orders with optional filters (keyword, customer email/id, payment & fulfillment status, coupon, created-date range). Returns a paged collection. Ecwid REST: GET /orders.

Input Schema

{
  "type": "object",
  "properties": {
    "keyword": {
      "description": "Full-text search term (order number, customer name, email…).",
      "type": "string"
    },
    "email": {
      "description": "Filter by customer email.",
      "type": "string"
    },
    "customer_id": {
      "description": "Filter by customer id.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "payment_status": {
      "description": "Filter by payment status: AWAITING_PAYMENT | PAID | CANCELLED | REFUNDED | PARTIALLY_REFUNDED | INCOMPLETE.",
      "type": "string",
      "enum": [
        "AWAITING_PAYMENT",
        "PAID",
        "CANCELLED",
        "REFUNDED",
        "PARTIALLY_REFUNDED",
        "INCOMPLETE"
      ]
    },
    "fulfillment_status": {
      "description": "Filter by fulfillment status: AWAITING_PROCESSING | PROCESSING | SHIPPED | DELIVERED | WILL_NOT_DELIVER | RETURNED | READY_FOR_PICKUP | OUT_FOR_DELIVERY.",
      "type": "string",
      "enum": [
        "AWAITING_PROCESSING",
        "PROCESSING",
        "SHIPPED",
        "DELIVERED",
        "WILL_NOT_DELIVER",
        "RETURNED",
        "READY_FOR_PICKUP",
        "OUT_FOR_DELIVERY"
      ]
    },
    "coupon_code": {
      "description": "Filter by applied coupon code.",
      "type": "string"
    },
    "created_from": {
      "description": "Filter to orders created on/after this date (YYYY-MM-DD or Unix timestamp).",
      "type": "string"
    },
    "created_to": {
      "description": "Filter to orders created on/before this date (YYYY-MM-DD or Unix timestamp).",
      "type": "string"
    },
    "offset": {
      "description": "Pagination offset.",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "limit": {
      "description": "Max results per page (1-100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢ecwid_get_order(order_number)

Get a single order by its order number, including line items, totals, customer, and payment/fulfillment status. Ecwid REST: GET /orders/{orderNumber}.

Input Schema

{
  "type": "object",
  "properties": {
    "order_number": {
      "anyOf": [
        {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        {
          "type": "string"
        }
      ],
      "description": "Order number (the store-visible order id)."
    }
  },
  "required": [
    "order_number"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢ecwid_search_customers(keyword, email, name, customer_group_id, offset, ...)

Search / list the store's customers with optional filters (keyword, email, name, customer group). Returns a paged collection. Ecwid REST: GET /customers.

Input Schema

{
  "type": "object",
  "properties": {
    "keyword": {
      "description": "Full-text search term (name, email…).",
      "type": "string"
    },
    "email": {
      "description": "Filter by customer email.",
      "type": "string"
    },
    "name": {
      "description": "Filter by customer name.",
      "type": "string"
    },
    "customer_group_id": {
      "description": "Filter by customer group id.",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "offset": {
      "description": "Pagination offset.",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "limit": {
      "description": "Max results per page (1-100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢ecwid_get_customer(customer_id)

Get a single customer by id, including contact details, addresses, and customer group. Ecwid REST: GET /customers/{customerId}.

Input Schema

{
  "type": "object",
  "properties": {
    "customer_id": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "Customer id."
    }
  },
  "required": [
    "customer_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢ecwid_list_categories(parent, hidden_categories, offset, limit)

List the store's product categories, optionally scoped to a parent category and including hidden ones. Returns a paged collection. Ecwid REST: GET /categories.

Input Schema

{
  "type": "object",
  "properties": {
    "parent": {
      "description": "List only subcategories of this parent category id (0 = root).",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "hidden_categories": {
      "description": "Include hidden (disabled) categories when true.",
      "type": "boolean"
    },
    "offset": {
      "description": "Pagination offset.",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "limit": {
      "description": "Max results per page (1-100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢ecwid_get_category(category_id)

Get a single category by id, including its name, parent, product ids, and images. Ecwid REST: GET /categories/{categoryId}.

Input Schema

{
  "type": "object",
  "properties": {
    "category_id": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "Category id."
    }
  },
  "required": [
    "category_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢ecwid_list_discount_coupons(coupon_code, discount_type, availability, offset, limit)

List the store's discount coupons with optional filters (coupon code, discount type, availability). Returns a paged collection. Ecwid REST: GET /discount_coupons.

Input Schema

{
  "type": "object",
  "properties": {
    "coupon_code": {
      "description": "Filter by exact coupon code.",
      "type": "string"
    },
    "discount_type": {
      "description": "Filter by discount type, e.g. ABS | PERCENT | SHIPPING | ABS_AND_SHIPPING | PERCENT_AND_SHIPPING.",
      "type": "string"
    },
    "availability": {
      "description": "Filter by availability, e.g. ACTIVE | PAUSED | EXPIRED | COMPLETE.",
      "type": "string"
    },
    "offset": {
      "description": "Pagination offset.",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "limit": {
      "description": "Max results per page (1-100).",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴ecwid_adjust_product_inventory(product_id, quantity_delta)

ADJUSTS a product's in-stock quantity by a delta — this MODIFIES live store data. Positive increases stock, negative decreases it. Ecwid REST: PUT /products/{productId}/inventory with JSON body {quantityDelta}. Returns {updateCount, warning?}.

Input Schema

{
  "type": "object",
  "properties": {
    "product_id": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "Product id to adjust."
    },
    "quantity_delta": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "Change in stock quantity — positive increases stock, negative decreases."
    }
  },
  "required": [
    "product_id",
    "quantity_delta"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴ecwid_update_order(order_number, payment_status, fulfillment_status, tracking_number)

UPDATES an order — its payment status, fulfillment status, and/or tracking number. This MODIFIES live store data and may trigger customer notifications. Ecwid REST: PUT /orders/{orderNumber}. Provide only the fields you want to change. Returns {updateCount}.

Input Schema

{
  "type": "object",
  "properties": {
    "order_number": {
      "anyOf": [
        {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        {
          "type": "string"
        }
      ],
      "description": "Order number to update."
    },
    "payment_status": {
      "description": "New payment status: AWAITING_PAYMENT | PAID | CANCELLED | REFUNDED | PARTIALLY_REFUNDED | INCOMPLETE.",
      "type": "string",
      "enum": [
        "AWAITING_PAYMENT",
        "PAID",
        "CANCELLED",
        "REFUNDED",
        "PARTIALLY_REFUNDED",
        "INCOMPLETE"
      ]
    },
    "fulfillment_status": {
      "description": "New fulfillment status: AWAITING_PROCESSING | PROCESSING | SHIPPED | DELIVERED | WILL_NOT_DELIVER | RETURNED | READY_FOR_PICKUP | OUT_FOR_DELIVERY.",
      "type": "string",
      "enum": [
        "AWAITING_PROCESSING",
        "PROCESSING",
        "SHIPPED",
        "DELIVERED",
        "WILL_NOT_DELIVER",
        "RETURNED",
        "READY_FOR_PICKUP",
        "OUT_FOR_DELIVERY"
      ]
    },
    "tracking_number": {
      "description": "Shipping tracking number to record on the order.",
      "type": "string"
    }
  },
  "required": [
    "order_number"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded12 tools