Extensiv MCP by usefulapi

Read Extensiv warehouse records, create outbound orders and cancel eligible orders.

我該用這個嗎

品質與安全性

A
說明品質
95%
結構描述完整度
88%
命名品質
80%
汙染風險
100%
權限相符程度
100%
協定合規性
100%

根據工具定義與協定合規性的自動化分析。

上下文成本

~4,433Token(工具定義)
~2.1 KB典型回應大小
顯著的注意力影響(128k 上下文的 3.46%)

這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。

安裝

一鍵安裝

將以下內容加入你的 `claude_desktop_config.json` 檔案:

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

遠端端點

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

它能做什麼

工具清單

工具(16)

🟢 唯讀🟡 寫入🔴 刪除⚪ 未知
🟢extensiv_list_facilities

List the warehouse's facilities with their ids and properties (facility ids are needed for orders, stock details and receivers). GET /properties/facilities.

輸入結構描述

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢extensiv_list_carriers

List the carriers with their shipment services (modes) and billing codes, the values an order's routingInfo and billingCode must use. GET /properties/carriers.

輸入結構描述

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢extensiv_list_customers(rql, sort, pgsiz, pgnum)

List the warehouse's customers (the companies whose goods it stores), with their customer ids. GET /customers.

輸入結構描述

{
  "type": "object",
  "properties": {
    "rql": {
      "description": "Optional RQL filter, for example `ReadOnly.CustomerIdentifier.id==1` or `readonly.processDate=gt=2026-10-01T00:00:00;readonly.processDate=lt=2026-10-02T00:00:00` (';' = and).",
      "type": "string",
      "maxLength": 1000
    },
    "sort": {
      "description": "Optional sort expression, for example `ReadOnly.CreationDate`.",
      "type": "string",
      "maxLength": 200
    },
    "pgsiz": {
      "description": "Page size (default 100, max 500).",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    },
    "pgnum": {
      "description": "Page number, from 1 (default 1). Use totalResults and _links.next of the previous reply.",
      "type": "integer",
      "minimum": 1,
      "maximum": 100000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢extensiv_get_customer(customer_id)

One customer by customer id: company info, contacts and settings. GET /customers/{customer_id}.

輸入結構描述

{
  "type": "object",
  "properties": {
    "customer_id": {
      "type": "string",
      "pattern": "^[0-9]{1,12}$",
      "description": "The customer id (from extensiv_list_customers)."
    }
  },
  "required": [
    "customer_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢extensiv_list_items(customer_id, rql, sort, pgsiz, pgnum)

List the items (SKUs) of one customer, with item ids, descriptions and units. Filter with rql, for example `sku==ABC-1`. GET /customers/{customer_id}/items.

輸入結構描述

{
  "type": "object",
  "properties": {
    "customer_id": {
      "type": "string",
      "pattern": "^[0-9]{1,12}$",
      "description": "The customer id (from extensiv_list_customers)."
    },
    "rql": {
      "description": "Optional RQL filter, for example `ReadOnly.CustomerIdentifier.id==1` or `readonly.processDate=gt=2026-10-01T00:00:00;readonly.processDate=lt=2026-10-02T00:00:00` (';' = and).",
      "type": "string",
      "maxLength": 1000
    },
    "sort": {
      "description": "Optional sort expression, for example `ReadOnly.CreationDate`.",
      "type": "string",
      "maxLength": 200
    },
    "pgsiz": {
      "description": "Page size (default 100, max 500).",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    },
    "pgnum": {
      "description": "Page number, from 1 (default 1). Use totalResults and _links.next of the previous reply.",
      "type": "integer",
      "minimum": 1,
      "maximum": 100000
    }
  },
  "required": [
    "customer_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢extensiv_list_orders(rql, detail, itemdetail, sort, pgsiz, ...)

List outbound orders matching an RQL filter, for example `ReadOnly.CustomerIdentifier.id==1` or `readonly.processDate=gt=2026-10-01T00:00:00` (orders closed after that time). Use detail=OrderItems to include the line items. Orders carry the ship-to name, address and contact details (personal data). GET /orders.

輸入結構描述

{
  "type": "object",
  "properties": {
    "rql": {
      "description": "Optional RQL filter, for example `ReadOnly.CustomerIdentifier.id==1` or `readonly.processDate=gt=2026-10-01T00:00:00;readonly.processDate=lt=2026-10-02T00:00:00` (';' = and).",
      "type": "string",
      "maxLength": 1000
    },
    "detail": {
      "description": "Order-level detail, comma-delimited: None (default), OrderItems, BillingDetails, SavedElements, Packages, Contacts, ProposedBilling, OutboundSerialNumbers, SmallParcel, All.",
      "type": "string",
      "pattern": "^(none|orderitems|billingdetails|savedelements|packages|contacts|proposedbilling|outboundserialnumbers|smallparcel|all)(,(none|orderitems|billingdetails|savedelements|packages|contacts|proposedbilling|outboundserialnumbers|smallparcel|all))*$"
    },
    "itemdetail": {
      "description": "Item-level detail, comma-delimited: None (default), SavedElements, Allocations, AllocationsWithDetail, All.",
      "type": "string",
      "pattern": "^(none|savedelements|allocations|allocationswithdetail|all)(,(none|savedelements|allocations|allocationswithdetail|all))*$"
    },
    "sort": {
      "description": "Optional sort expression, for example `ReadOnly.CreationDate`.",
      "type": "string",
      "maxLength": 200
    },
    "pgsiz": {
      "description": "Page size (default 100, max 500).",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    },
    "pgnum": {
      "description": "Page number, from 1 (default 1). Use totalResults and _links.next of the previous reply.",
      "type": "integer",
      "minimum": 1,
      "maximum": 100000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢extensiv_get_order(order_id, detail, itemdetail)

One order by its transaction id (the order id from extensiv_list_orders): status, ship-to, routing, and with detail=OrderItems the lines. GET /orders/{transaction_id}.

輸入結構描述

{
  "type": "object",
  "properties": {
    "order_id": {
      "type": "string",
      "pattern": "^[0-9]{1,12}$",
      "description": "The order's transaction id."
    },
    "detail": {
      "description": "Order-level detail, comma-delimited: None (default), OrderItems, BillingDetails, SavedElements, Packages, Contacts, ProposedBilling, OutboundSerialNumbers, SmallParcel, All.",
      "type": "string",
      "pattern": "^(none|orderitems|billingdetails|savedelements|packages|contacts|proposedbilling|outboundserialnumbers|smallparcel|all)(,(none|orderitems|billingdetails|savedelements|packages|contacts|proposedbilling|outboundserialnumbers|smallparcel|all))*$"
    },
    "itemdetail": {
      "description": "Item-level detail, comma-delimited: None (default), SavedElements, Allocations, AllocationsWithDetail, All.",
      "type": "string",
      "pattern": "^(none|savedelements|allocations|allocationswithdetail|all)(,(none|savedelements|allocations|allocationswithdetail|all))*$"
    }
  },
  "required": [
    "order_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢extensiv_list_stock_summaries(rql, pgsiz, pgnum)

Inventory totals per item and facility (on hand, allocated, available). Filter with rql, for example `ItemId==123` or a customer filter. GET /inventory/stocksummaries.

輸入結構描述

{
  "type": "object",
  "properties": {
    "rql": {
      "description": "Optional RQL filter, for example `ReadOnly.CustomerIdentifier.id==1` or `readonly.processDate=gt=2026-10-01T00:00:00;readonly.processDate=lt=2026-10-02T00:00:00` (';' = and).",
      "type": "string",
      "maxLength": 1000
    },
    "pgsiz": {
      "description": "Page size (default 100, max 500).",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    },
    "pgnum": {
      "description": "Page number, from 1 (default 1). Use totalResults and _links.next of the previous reply.",
      "type": "integer",
      "minimum": 1,
      "maximum": 100000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢extensiv_list_inventory(rql, pgsiz, pgnum)

Inventory detail lines (location, lot, quantities). Filter with rql, for example `itemIdentifier.sku==SF-Box-DG`. GET /inventory.

輸入結構描述

{
  "type": "object",
  "properties": {
    "rql": {
      "description": "Optional RQL filter, for example `ReadOnly.CustomerIdentifier.id==1` or `readonly.processDate=gt=2026-10-01T00:00:00;readonly.processDate=lt=2026-10-02T00:00:00` (';' = and).",
      "type": "string",
      "maxLength": 1000
    },
    "pgsiz": {
      "description": "Page size (default 100, max 500).",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    },
    "pgnum": {
      "description": "Page number, from 1 (default 1). Use totalResults and _links.next of the previous reply.",
      "type": "integer",
      "minimum": 1,
      "maximum": 100000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢extensiv_list_stock_details(customer_id, facility_id, pgsiz, pgnum)

All inventory of one customer in one facility, broken out by receive item (lot number, serial number and other track-by values). Both ids are required. GET /inventory/stockdetails.

輸入結構描述

{
  "type": "object",
  "properties": {
    "customer_id": {
      "type": "string",
      "pattern": "^[0-9]{1,12}$",
      "description": "The customer id."
    },
    "facility_id": {
      "type": "string",
      "pattern": "^[0-9]{1,12}$",
      "description": "The facility id (from extensiv_list_facilities)."
    },
    "pgsiz": {
      "description": "Page size (default 100, max 500).",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    },
    "pgnum": {
      "description": "Page number, from 1 (default 1). Use totalResults and _links.next of the previous reply.",
      "type": "integer",
      "minimum": 1,
      "maximum": 100000
    }
  },
  "required": [
    "customer_id",
    "facility_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢extensiv_list_receivers(rql, detail, itemdetail, pgsiz, pgnum)

List inbound receivers (receipts of goods), for example `ReadOnly.CustomerIdentifier.id==1`. Use detail=ReceiveItems for the lines. GET /inventory/receivers.

輸入結構描述

{
  "type": "object",
  "properties": {
    "rql": {
      "description": "Optional RQL filter, for example `ReadOnly.CustomerIdentifier.id==1` or `readonly.processDate=gt=2026-10-01T00:00:00;readonly.processDate=lt=2026-10-02T00:00:00` (';' = and).",
      "type": "string",
      "maxLength": 1000
    },
    "detail": {
      "description": "Receiver-level detail, comma-delimited: None (default), ReceiveItems, BillingDetails, SavedElements, ProposedBilling, All.",
      "type": "string",
      "pattern": "^(none|receiveitems|billingdetails|savedelements|proposedbilling|all)(,(none|receiveitems|billingdetails|savedelements|proposedbilling|all))*$"
    },
    "itemdetail": {
      "description": "Item-level detail, comma-delimited: None (default), SavedElements, All.",
      "type": "string",
      "pattern": "^(none|savedelements|all)(,(none|savedelements|all))*$"
    },
    "pgsiz": {
      "description": "Page size (default 100, max 500).",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    },
    "pgnum": {
      "description": "Page number, from 1 (default 1). Use totalResults and _links.next of the previous reply.",
      "type": "integer",
      "minimum": 1,
      "maximum": 100000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢extensiv_get_receiver(receiver_id)

One receiver by its transaction id. GET /inventory/receivers/{transaction_id}.

輸入結構描述

{
  "type": "object",
  "properties": {
    "receiver_id": {
      "type": "string",
      "pattern": "^[0-9]{1,12}$",
      "description": "The receiver's transaction id (from extensiv_list_receivers)."
    }
  },
  "required": [
    "receiver_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢extensiv_list_receiver_items(receiver_id, detail)

The line items of one receiver, with item details. GET /inventory/receivers/{transaction_id}/items.

輸入結構描述

{
  "type": "object",
  "properties": {
    "receiver_id": {
      "type": "string",
      "pattern": "^[0-9]{1,12}$",
      "description": "The receiver's transaction id (from extensiv_list_receivers)."
    },
    "detail": {
      "description": "Detail level, comma-delimited: None (default), SavedElements, All.",
      "type": "string",
      "pattern": "^(none|savedelements|all)(,(none|savedelements|all))*$"
    }
  },
  "required": [
    "receiver_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢extensiv_list_purchase_orders(rql, sort, pgsiz, pgnum)

List inbound purchase orders per customer. Filter with rql, sort with sort. GET /inventory/pos.

輸入結構描述

{
  "type": "object",
  "properties": {
    "rql": {
      "description": "Optional RQL filter, for example `ReadOnly.CustomerIdentifier.id==1` or `readonly.processDate=gt=2026-10-01T00:00:00;readonly.processDate=lt=2026-10-02T00:00:00` (';' = and).",
      "type": "string",
      "maxLength": 1000
    },
    "sort": {
      "description": "Optional sort expression, for example `ReadOnly.CreationDate`.",
      "type": "string",
      "maxLength": 200
    },
    "pgsiz": {
      "description": "Page size (default 100, max 500).",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    },
    "pgnum": {
      "description": "Page number, from 1 (default 1). Use totalResults and _links.next of the previous reply.",
      "type": "integer",
      "minimum": 1,
      "maximum": 100000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡extensiv_create_order(customer_id, facility_id, reference_num, ship_to, items, ...)

WRITE: submit a new outbound order for a customer and facility (the warehouse will pick and ship it). Not idempotent: calling twice creates two orders, so check extensiv_list_orders for the reference_num first. Needs ids from extensiv_list_customers, extensiv_list_facilities and SKUs from extensiv_list_items; billing_code, carrier and mode are required by Extensiv and must come from extensiv_list_carriers. POST /orders.

輸入結構描述

{
  "type": "object",
  "properties": {
    "customer_id": {
      "type": "string",
      "pattern": "^[0-9]{1,12}$",
      "description": "The customer id the order is for."
    },
    "facility_id": {
      "type": "string",
      "pattern": "^[0-9]{1,12}$",
      "description": "The facility id that fulfils it."
    },
    "reference_num": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Your reference number for the order (for example a PO or web-shop order number)."
    },
    "ship_to": {
      "type": "object",
      "properties": {
        "company_name": {
          "type": "string",
          "minLength": 1,
          "maxLength": 100
        },
        "name": {
          "type": "string",
          "minLength": 1,
          "maxLength": 100
        },
        "address1": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "address2": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "city": {
          "type": "string",
          "minLength": 1,
          "maxLength": 100
        },
        "state": {
          "description": "State or province code, for example CA.",
          "type": "string",
          "minLength": 1,
          "maxLength": 50
        },
        "zip": {
          "type": "string",
          "minLength": 1,
          "maxLength": 30
        },
        "country": {
          "type": "string",
          "minLength": 1,
          "maxLength": 2,
          "description": "Two-letter country code, for example US."
        },
        "email_address": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "phone_number": {
          "type": "string",
          "minLength": 1,
          "maxLength": 50
        }
      },
      "required": [
        "name",
        "address1",
        "city",
        "country"
      ],
      "description": "The ship-to address."
    },
    "items": {
      "minItems": 1,
      "maxItems": 200,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "sku": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100,
            "description": "The item SKU."
          },
          "qty": {
            "type": "number",
            "exclusiveMinimum": 0,
            "maximum": 1000000
          }
        },
        "required": [
          "sku",
          "qty"
        ]
      },
      "description": "The order lines."
    },
    "notes": {
      "description": "Warehouse instructions.",
      "type": "string",
      "minLength": 1,
      "maxLength": 1000
    },
    "shipping_notes": {
      "description": "Carrier-specific shipping instructions.",
      "type": "string",
      "minLength": 1,
      "maxLength": 1000
    },
    "billing_code": {
      "type": "string",
      "minLength": 1,
      "maxLength": 50,
      "description": "Freight billing code as listed for the carrier by extensiv_list_carriers (billingCodes), for example Prepaid or BillThirdParty."
    },
    "carrier": {
      "type": "string",
      "minLength": 1,
      "maxLength": 50,
      "description": "Carrier name, for example UPS (from extensiv_list_carriers)."
    },
    "mode": {
      "type": "string",
      "minLength": 1,
      "maxLength": 50,
      "description": "The carrier's service mode code (from extensiv_list_carriers)."
    },
    "account": {
      "description": "The shipper account number for third-party or collect billing.",
      "type": "string",
      "minLength": 1,
      "maxLength": 50
    }
  },
  "required": [
    "customer_id",
    "facility_id",
    "reference_num",
    "ship_to",
    "items",
    "billing_code",
    "carrier",
    "mode"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴extensiv_cancel_order(order_id, reason, charge)

WRITE: cancel one order by transaction id, with a reason and an optional cancellation fee. This cannot be undone; the order must be in a state the warehouse can still cancel (otherwise Extensiv answers with an error). The tool first reads the order to get the ETag Extensiv requires (If-Match). POST /orders/{transaction_id}/canceler.

輸入結構描述

{
  "type": "object",
  "properties": {
    "order_id": {
      "type": "string",
      "pattern": "^[0-9]{1,12}$",
      "description": "The order's transaction id (from extensiv_list_orders)."
    },
    "reason": {
      "type": "string",
      "minLength": 1,
      "maxLength": 500,
      "description": "Why the order is cancelled."
    },
    "charge": {
      "description": "Cancellation fee to bill, 0 (default) if none.",
      "type": "number",
      "minimum": 0,
      "maximum": 1000000
    }
  },
  "required": [
    "order_id",
    "reason"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

社群

為此伺服器評分

證據

近期觀測

已驗證未記錄版本16 個工具