eCellar MCP by usefulapi

Read orders, customers, club and stock; add tracking, mark shipped and adjust stock in eCellar.

我该使用它吗

质量与安全性

A
描述质量
91%
模式完整度
93%
命名质量
78%
投毒风险
100%
权限匹配度
100%
协议合规性
100%

发现(6)

  • LOWTool 'ecellar_search_products' description lacks action verb在 ecellar_search_products 中
  • LOWTool 'ecellar_search_product_categories' description lacks action verb在 ecellar_search_product_categories 中
  • LOWTool 'ecellar_search_club_tiers' description lacks action verb在 ecellar_search_club_tiers 中
  • LOWTool 'ecellar_search_reservations' description lacks action verb在 ecellar_search_reservations 中
  • LOWTool 'ecellar_search_product_categories' name length outside 3-30 range在 ecellar_search_product_categories 中
  • LOWTool 'ecellar_search_club_subscriptions' name length outside 3-30 range在 ecellar_search_club_subscriptions 中

基于对工具定义和协议合规性的自动分析。

上下文开销

~8,746token 数(工具定义)
~3.7 KB典型响应大小
对注意力有显著影响(占 128k 上下文窗口的 6.83%)

这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。

安装

一键安装

将以下内容添加到你的 `claude_desktop_config.json` 文件中:

{
  "mcpServers": {
    "ecellar": {
      "url": "https://ecellar.usefulapi.io/mcp"
    }
  }
}

远程端点

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

它能做什么

工具清单

工具(19)

🟢 只读🟡 写入🔴 删除⚪ 未知
🟢ecellar_get_reference_data(kind)

Lookup lists of the winery's eCellar account: brands = brands (brand_key + name); locations = locations (location_id, name, timezone); customer_types = customer types; customer_sources = customer sources; customer_tags = customer tags; order_tags = order tags (tag groups and tags); reservation_types = reservation types; terminals = POS terminals; billing_statuses = billing statuses (enum values for the orders filter billing_statuses); purchase_statuses = order statuses (enum values for the orders filter purchase_statuses); purchase_sources = order sources (Web, POS, club, phone...); carriers = carriers (enum values for ecellar_add_order_tracking carrier_enum); payment_types = payment types; card_types = card types; note_types = customer note types; product_availabilities = product availabilities; product_statuses = product statuses; reservation_statuses = reservation statuses; fulfillment_companies = fulfillment companies; state_codes = state codes; country_codes = country codes. Use brands first: the brand_key values filter orders, club tiers, events and reservations. GET /client/* or /types/*.

输入模式

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "brands",
        "locations",
        "customer_types",
        "customer_sources",
        "customer_tags",
        "order_tags",
        "reservation_types",
        "terminals",
        "billing_statuses",
        "purchase_statuses",
        "purchase_sources",
        "carriers",
        "payment_types",
        "card_types",
        "note_types",
        "product_availabilities",
        "product_statuses",
        "reservation_statuses",
        "fulfillment_companies",
        "state_codes",
        "country_codes"
      ],
      "description": "Which list to return."
    }
  },
  "required": [
    "kind"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢ecellar_search_customers(customer_ids, customer_type_ids, signup_date_start, signup_date_end, modified_date_start, ...)

Customers (club members and buyers) with contact details, type, source, tags, email consent and default addresses. Personal data: use only what the task needs. POST /customers.

输入模式

{
  "type": "object",
  "properties": {
    "customer_ids": {
      "description": "Only these customer ids.",
      "minItems": 1,
      "maxItems": 500,
      "type": "array",
      "items": {
        "type": "integer",
        "exclusiveMinimum": 0,
        "maximum": 9007199254740991
      }
    },
    "customer_type_ids": {
      "description": "Only these customer type ids.",
      "minItems": 1,
      "maxItems": 500,
      "type": "array",
      "items": {
        "type": "integer",
        "exclusiveMinimum": 0,
        "maximum": 9007199254740991
      }
    },
    "signup_date_start": {
      "description": "signup date start (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "signup_date_end": {
      "description": "signup date end (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "modified_date_start": {
      "description": "modified date start (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "modified_date_end": {
      "description": "modified date end (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Rows per page (default 25, max 200).",
      "type": "integer",
      "minimum": 1,
      "maximum": 200
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢ecellar_search_addresses(customer_ids, address_ids, create_date_start, create_date_end, modified_date_start, ...)

Customer billing and shipping addresses. POST /addresses.

输入模式

{
  "type": "object",
  "properties": {
    "customer_ids": {
      "description": "Only these customer ids.",
      "minItems": 1,
      "maxItems": 500,
      "type": "array",
      "items": {
        "type": "integer",
        "exclusiveMinimum": 0,
        "maximum": 9007199254740991
      }
    },
    "address_ids": {
      "description": "Only these address ids.",
      "minItems": 1,
      "maxItems": 500,
      "type": "array",
      "items": {
        "type": "integer",
        "exclusiveMinimum": 0,
        "maximum": 9007199254740991
      }
    },
    "create_date_start": {
      "description": "create date start (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "create_date_end": {
      "description": "create date end (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "modified_date_start": {
      "description": "modified date start (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "modified_date_end": {
      "description": "modified date end (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Rows per page (default 25, max 200).",
      "type": "integer",
      "minimum": 1,
      "maximum": 200
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢ecellar_search_notes(customer_ids, create_date_start, create_date_end, modified_date_start, modified_date_end, ...)

Notes on customer records (type, text, dates). POST /notes.

输入模式

{
  "type": "object",
  "properties": {
    "customer_ids": {
      "description": "Only these customer ids.",
      "minItems": 1,
      "maxItems": 500,
      "type": "array",
      "items": {
        "type": "integer",
        "exclusiveMinimum": 0,
        "maximum": 9007199254740991
      }
    },
    "create_date_start": {
      "description": "create date start (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "create_date_end": {
      "description": "create date end (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "modified_date_start": {
      "description": "modified date start (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "modified_date_end": {
      "description": "modified date end (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Rows per page (default 25, max 200).",
      "type": "integer",
      "minimum": 1,
      "maximum": 200
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢ecellar_search_orders(brand_keys, purchase_ids, customer_ids, purchase_statuses, billing_statuses, ...)

Orders (web, POS, club and phone) with totals, status, billing and shipping details, and their lines, payments, tracking records and tags. Statuses are the enum values from ecellar_get_reference_data purchase_statuses / billing_statuses. Contains customer personal data. POST /orders.

输入模式

{
  "type": "object",
  "properties": {
    "brand_keys": {
      "description": "Only these brands (brand_key values from ecellar_list_brands).",
      "minItems": 1,
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 50
      }
    },
    "purchase_ids": {
      "description": "Only these order ids.",
      "minItems": 1,
      "maxItems": 500,
      "type": "array",
      "items": {
        "type": "integer",
        "exclusiveMinimum": 0,
        "maximum": 9007199254740991
      }
    },
    "customer_ids": {
      "description": "Only these customer ids.",
      "minItems": 1,
      "maxItems": 500,
      "type": "array",
      "items": {
        "type": "integer",
        "exclusiveMinimum": 0,
        "maximum": 9007199254740991
      }
    },
    "purchase_statuses": {
      "description": "Only orders in these statuses (enum values).",
      "minItems": 1,
      "maxItems": 30,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 50
      }
    },
    "billing_statuses": {
      "description": "Only orders with these billing statuses (enum values).",
      "minItems": 1,
      "maxItems": 30,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 50
      }
    },
    "create_date_start": {
      "description": "create date start (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "create_date_end": {
      "description": "create date end (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "close_date_start": {
      "description": "close date start (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "close_date_end": {
      "description": "close date end (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "funds_captured_date_start": {
      "description": "funds captured date start (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "funds_captured_date_end": {
      "description": "funds captured date end (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "modified_date_start": {
      "description": "modified date start (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "modified_date_end": {
      "description": "modified date end (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Rows per page (default 25, max 200).",
      "type": "integer",
      "minimum": 1,
      "maximum": 200
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢ecellar_search_order_lines(purchase_ids, create_date_start, create_date_end, modified_date_start, modified_date_end, ...)

Order lines (product, SKU, quantity, price, discount, tax) across orders. POST /orders/lines.

输入模式

{
  "type": "object",
  "properties": {
    "purchase_ids": {
      "description": "Only these order ids.",
      "minItems": 1,
      "maxItems": 500,
      "type": "array",
      "items": {
        "type": "integer",
        "exclusiveMinimum": 0,
        "maximum": 9007199254740991
      }
    },
    "create_date_start": {
      "description": "create date start (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "create_date_end": {
      "description": "create date end (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "modified_date_start": {
      "description": "modified date start (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "modified_date_end": {
      "description": "modified date end (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Rows per page (default 25, max 200).",
      "type": "integer",
      "minimum": 1,
      "maximum": 200
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢ecellar_search_order_payments(purchase_ids, billing_statuses, create_date_start, create_date_end, funds_captured_date_start, ...)

Order payments (amount, type, billing status, dates, card brand, last digits and expiry; no card numbers). POST /orders/payments.

输入模式

{
  "type": "object",
  "properties": {
    "purchase_ids": {
      "description": "Only these order ids.",
      "minItems": 1,
      "maxItems": 500,
      "type": "array",
      "items": {
        "type": "integer",
        "exclusiveMinimum": 0,
        "maximum": 9007199254740991
      }
    },
    "billing_statuses": {
      "description": "Only payments with these billing statuses (enum values).",
      "minItems": 1,
      "maxItems": 30,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 50
      }
    },
    "create_date_start": {
      "description": "create date start (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "create_date_end": {
      "description": "create date end (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "funds_captured_date_start": {
      "description": "funds captured date start (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "funds_captured_date_end": {
      "description": "funds captured date end (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "modified_date_start": {
      "description": "modified date start (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "modified_date_end": {
      "description": "modified date end (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Rows per page (default 25, max 200).",
      "type": "integer",
      "minimum": 1,
      "maximum": 200
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢ecellar_search_order_trackings(purchase_ids, create_date_start, create_date_end, modified_date_start, modified_date_end, ...)

Carrier tracking records of orders (carrier, tracking number, shipped and delivered dates). POST /orders/trackings.

输入模式

{
  "type": "object",
  "properties": {
    "purchase_ids": {
      "description": "Only these order ids.",
      "minItems": 1,
      "maxItems": 500,
      "type": "array",
      "items": {
        "type": "integer",
        "exclusiveMinimum": 0,
        "maximum": 9007199254740991
      }
    },
    "create_date_start": {
      "description": "create date start (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "create_date_end": {
      "description": "create date end (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "modified_date_start": {
      "description": "modified date start (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "modified_date_end": {
      "description": "modified date end (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Rows per page (default 25, max 200).",
      "type": "integer",
      "minimum": 1,
      "maximum": 200
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢ecellar_search_products(create_date_start, create_date_end, modified_date_start, modified_date_end, page, ...)

Products (wines and merchandise): name, SKU, price, vintage-related fields, categories and inventory SKUs. POST /products.

输入模式

{
  "type": "object",
  "properties": {
    "create_date_start": {
      "description": "create date start (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "create_date_end": {
      "description": "create date end (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "modified_date_start": {
      "description": "modified date start (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "modified_date_end": {
      "description": "modified date end (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Rows per page (default 25, max 200).",
      "type": "integer",
      "minimum": 1,
      "maximum": 200
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢ecellar_search_product_categories(create_date_start, create_date_end, modified_date_start, modified_date_end, page, ...)

Product categories (tree: parent_category_id, category_id, name). POST /products/categories.

输入模式

{
  "type": "object",
  "properties": {
    "create_date_start": {
      "description": "create date start (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "create_date_end": {
      "description": "create date end (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "modified_date_start": {
      "description": "modified date start (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "modified_date_end": {
      "description": "modified date end (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Rows per page (default 25, max 200).",
      "type": "integer",
      "minimum": 1,
      "maximum": 200
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢ecellar_get_inventory_counts(skus, location_ids, location_names)

Current inventory per SKU and location: on_hand, on_hold, invoiced and available. Filter by SKUs and/or locations (ids or names from ecellar_get_reference_data locations); with no filter every SKU and location is returned. POST /inventory/counts.

输入模式

{
  "type": "object",
  "properties": {
    "skus": {
      "description": "Only these SKUs.",
      "minItems": 1,
      "maxItems": 200,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 50
      }
    },
    "location_ids": {
      "description": "Only these locations (36-character location_id values).",
      "minItems": 1,
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 36,
        "maxLength": 36
      }
    },
    "location_names": {
      "description": "Only these locations, by name.",
      "minItems": 1,
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 100
      }
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢ecellar_search_club_subscriptions(customer_ids, club_tier_ids, signup_date_start, signup_date_end, cancel_date_start, ...)

Wine club subscriptions of customers: tier, signup/cancel/hold dates, billing and shipping address, card brand, last digits and expiry (no card numbers). POST /subscriptions.

输入模式

{
  "type": "object",
  "properties": {
    "customer_ids": {
      "description": "Only these customer ids.",
      "minItems": 1,
      "maxItems": 500,
      "type": "array",
      "items": {
        "type": "integer",
        "exclusiveMinimum": 0,
        "maximum": 9007199254740991
      }
    },
    "club_tier_ids": {
      "description": "Only these club tier ids.",
      "minItems": 1,
      "maxItems": 500,
      "type": "array",
      "items": {
        "type": "integer",
        "exclusiveMinimum": 0,
        "maximum": 9007199254740991
      }
    },
    "signup_date_start": {
      "description": "signup date start (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "signup_date_end": {
      "description": "signup date end (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "cancel_date_start": {
      "description": "cancel date start (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "cancel_date_end": {
      "description": "cancel date end (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "cc_expiration_date_start": {
      "description": "cc expiration date start (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "cc_expiration_date_end": {
      "description": "cc expiration date end (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "modified_date_start": {
      "description": "modified date start (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "modified_date_end": {
      "description": "modified date end (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Rows per page (default 25, max 200).",
      "type": "integer",
      "minimum": 1,
      "maximum": 200
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢ecellar_search_club_tiers(brand_keys, create_date_start, create_date_end, modified_date_start, modified_date_end, ...)

Wine club tiers (id, name, description, brand). POST /club/tiers.

输入模式

{
  "type": "object",
  "properties": {
    "brand_keys": {
      "description": "Only these brands (brand_key values from ecellar_list_brands).",
      "minItems": 1,
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 50
      }
    },
    "create_date_start": {
      "description": "create date start (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "create_date_end": {
      "description": "create date end (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "modified_date_start": {
      "description": "modified date start (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "modified_date_end": {
      "description": "modified date end (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Rows per page (default 25, max 200).",
      "type": "integer",
      "minimum": 1,
      "maximum": 200
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢ecellar_search_club_events(brand_keys, club_event_date_start, club_event_date_end, create_date_start, create_date_end, ...)

Club events / shipments (name, date, ship group, tier, pickup location, product totals, remix window). POST /club/events.

输入模式

{
  "type": "object",
  "properties": {
    "brand_keys": {
      "description": "Only these brands (brand_key values from ecellar_list_brands).",
      "minItems": 1,
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 50
      }
    },
    "club_event_date_start": {
      "description": "club event date start (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "club_event_date_end": {
      "description": "club event date end (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "create_date_start": {
      "description": "create date start (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "create_date_end": {
      "description": "create date end (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "modified_date_start": {
      "description": "modified date start (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "modified_date_end": {
      "description": "modified date end (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Rows per page (default 25, max 200).",
      "type": "integer",
      "minimum": 1,
      "maximum": 200
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢ecellar_search_reservations(reservation_ids, create_date_start, create_date_end, modified_date_start, modified_date_end, ...)

Tasting-room and experience reservations (party, times, status, host, notes, contact phone and email). POST /reservations.

输入模式

{
  "type": "object",
  "properties": {
    "reservation_ids": {
      "description": "Only these reservation ids.",
      "minItems": 1,
      "maxItems": 500,
      "type": "array",
      "items": {
        "type": "integer",
        "exclusiveMinimum": 0,
        "maximum": 9007199254740991
      }
    },
    "create_date_start": {
      "description": "create date start (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "create_date_end": {
      "description": "create date end (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "modified_date_start": {
      "description": "modified date start (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "modified_date_end": {
      "description": "modified date end (inclusive range bound). ISO date or date-time (e.g. 2026-01-31 or 2026-01-31T14:00:00Z; a date means 00:00 UTC).",
      "type": "string",
      "maxLength": 40
    },
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "page_size": {
      "description": "Rows per page (default 25, max 200).",
      "type": "integer",
      "minimum": 1,
      "maximum": 200
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴ecellar_mark_order_shipped(order_id, date_shipped)

WRITE: set the shipped date and status of ONE order, to be used when ALL its packages have shipped. eCellar refuses it unless the order status is EXPORTED, HOLD_SHIP, SHIPPED, TO_PICKUP or UNSHIPPED, the date is not before the order date, and the date matches the latest tracking ship date. Check the order and its tracking records first. PATCH /order/{order_id}/shipped.

输入模式

{
  "type": "object",
  "properties": {
    "order_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "eCellar order id (order_id from ecellar_search_orders)."
    },
    "date_shipped": {
      "type": "string",
      "description": "Date the order fully shipped (YYYY-MM-DD)."
    }
  },
  "required": [
    "order_id",
    "date_shipped"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴ecellar_mark_order_delivered(order_id, date_delivered)

WRITE: set the delivered date and status of ONE order, to be used when ALL its packages were delivered. eCellar refuses it unless the order status is DELIVERED or SHIPPED and the date matches the latest tracking delivered date. PATCH /order/{order_id}/delivered.

输入模式

{
  "type": "object",
  "properties": {
    "order_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "eCellar order id."
    },
    "date_delivered": {
      "type": "string",
      "description": "Date the order was fully delivered (YYYY-MM-DD)."
    }
  },
  "required": [
    "order_id",
    "date_delivered"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡ecellar_add_order_tracking(order_id, carrier_enum, carrier_tracking_number, date_shipped, date_delivered)

WRITE: add a carrier tracking record (carrier + tracking number, optional shipped/delivered dates) to ONE order. Adds a record each call; a duplicate tracking number on the same order is refused by eCellar. Get carrier_enum from ecellar_get_reference_data carriers. POST /order/{order_id}/tracking.

输入模式

{
  "type": "object",
  "properties": {
    "order_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "eCellar order id."
    },
    "carrier_enum": {
      "type": "string",
      "minLength": 1,
      "maxLength": 50,
      "description": "Carrier enum value (from the carriers reference list)."
    },
    "carrier_tracking_number": {
      "type": "string",
      "minLength": 1,
      "maxLength": 255,
      "description": "Carrier tracking number."
    },
    "date_shipped": {
      "type": "string",
      "description": "Date shipped via the carrier (YYYY-MM-DD)."
    },
    "date_delivered": {
      "type": "string",
      "description": "Date delivered by the carrier (YYYY-MM-DD)."
    }
  },
  "required": [
    "order_id",
    "carrier_enum",
    "carrier_tracking_number"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴ecellar_adjust_inventory_count(sku, on_hand_adjustment, location_id, location_name)

WRITE: change the on-hand count of ONE SKU at ONE location by a signed amount (+12 adds, -3 removes; it is a delta, not a new total, so repeating it repeats the change). Pass location_id or location_name; eCellar refuses an unknown or ambiguous location, a SKU that is not at that location, or a result below zero. Check ecellar_get_inventory_counts first. PATCH /inventory/counts/{SKU}.

输入模式

{
  "type": "object",
  "properties": {
    "sku": {
      "type": "string",
      "minLength": 1,
      "maxLength": 50,
      "description": "The SKU (SKU from ecellar_search_products inventory_skus or ecellar_get_inventory_counts)."
    },
    "on_hand_adjustment": {
      "type": "integer",
      "minimum": -1000000,
      "maximum": 1000000,
      "description": "Signed change of the on-hand count."
    },
    "location_id": {
      "description": "Inventory location id (36 characters).",
      "type": "string",
      "minLength": 36,
      "maxLength": 36
    },
    "location_name": {
      "description": "Inventory location name (use instead of location_id).",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    }
  },
  "required": [
    "sku",
    "on_hand_adjustment"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

社区

评价此服务器

证据

最近观测

已验证未记录版本19 个工具