Shippit MCP by usefulapi
Get Shippit quotes, track and manage orders; create, label, book and cancel shipments on approval.
我該用這個嗎
品質與安全性
發現項目(1)
- LOW在 shippit_estimate_delivery_dates 中
根據工具定義與協定合規性的自動化分析。
上下文成本
這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。
安裝
一鍵安裝
將以下內容加入你的 `claude_desktop_config.json` 檔案:
{
"mcpServers": {
"shippit": {
"url": "https://shippit.usefulapi.io/mcp"
}
}
}遠端端點
https://shippit.usefulapi.io/mcpstreamable-http它能做什麼
工具清單
工具(12)
🟢shippit_get_merchant
The Shippit merchant account behind this API key: store and company name, contact, preparation time, website and the home (pickup) address with country. GET /merchant.
輸入結構描述
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢shippit_get_operating_hours
The store operating hours per weekday (open flag, start and end of the working day) that Shippit uses for pickup and delivery estimates. GET /merchants/settings/locations/operating_hours.
輸入結構描述
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢shippit_list_webhooks
The tracking webhooks configured on the account (at most 6): url, the order states that trigger each, whether address or receiver details are hidden, enabled flag. Custom header values are masked by Shippit. GET /merchants/webhooks.
輸入結構描述
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢shippit_get_quotes(dropoff_suburb, dropoff_postcode, dropoff_state, dropoff_country_code, dropoff_address, ...)
Ask the carriers enabled on the account for a price and delivery estimate to a destination, for given parcels. Nothing is booked and nothing is charged. Set return_all_quotes to see every carrier instead of only the cheapest or fastest. A 200 can hold per-carrier errors (success false) and a quote of 0 means that carrier cannot take the parcel. Dangerous goods cannot be quoted. POST /quotes.
輸入結構描述
{
"type": "object",
"properties": {
"dropoff_suburb": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"dropoff_postcode": {
"type": "string",
"minLength": 2,
"maxLength": 12
},
"dropoff_state": {
"type": "string",
"minLength": 2,
"maxLength": 40,
"description": "State. Australian orders use NSW, VIC, QLD, WA, SA, TAS, ACT or NT."
},
"dropoff_country_code": {
"type": "string",
"pattern": "^[A-Za-z]{2}$",
"description": "Two-letter country code (default: the merchant's home country, usually AU)."
},
"dropoff_address": {
"description": "Street address (required for on-demand quotes).",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"parcels": {
"minItems": 1,
"maxItems": 100,
"type": "array",
"items": {
"type": "object",
"properties": {
"qty": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 1000,
"description": "Number of parcels of this kind."
},
"weight": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 100000,
"description": "Weight of one parcel in kilograms."
},
"length": {
"description": "Length in metres.",
"type": "number",
"exclusiveMinimum": 0,
"maximum": 100
},
"width": {
"description": "Width in metres.",
"type": "number",
"exclusiveMinimum": 0,
"maximum": 100
},
"depth": {
"description": "Depth (height) in metres.",
"type": "number",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"required": [
"qty",
"weight"
]
},
"description": "The parcels to quote."
},
"service_levels": {
"description": "Only quote these service levels.",
"maxItems": 5,
"type": "array",
"items": {
"type": "string",
"enum": [
"standard",
"express",
"priority",
"on_demand",
"click_and_collect"
]
}
},
"return_all_quotes": {
"description": "Return the quotes of all carriers (default: only the cheapest or fastest).",
"type": "boolean"
},
"order_date": {
"description": "Delivery date, yyyy-mm-dd (required for priority quotes).",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"dutiable_amount": {
"description": "Declared customs value (required for international quotes).",
"type": "number",
"minimum": 0,
"maximum": 10000000
},
"product_currency": {
"type": "string",
"pattern": "^[A-Za-z]{3}$"
},
"authority_to_leave": {
"description": "Whether the parcel may be left unattended.",
"type": "string",
"enum": [
"Yes",
"No"
]
},
"features": {
"description": "Carrier add-on services, e.g. white_glove.",
"maxItems": 10,
"type": "array",
"items": {
"type": "string",
"enum": [
"white_glove",
"book_in_required",
"call_before_collection",
"call_before_delivery",
"driver_assist",
"two_person_lift",
"tail_lift_truck_delivery",
"tail_lift_truck_pickup",
"alcohol",
"pharmaceutical",
"id_check",
"tobacco",
"identity_on_delivery",
"pin_on_delivery"
]
}
}
},
"required": [
"dropoff_suburb",
"dropoff_postcode",
"parcels"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢shippit_estimate_delivery_dates(from_postcode, to_postcode, couriers, service_levels, preparation_time)
Estimated delivery window (earliest, latest, confidence and a ready-to-show text) per service level (standard, express) between two postcodes, optionally limited to some carriers. Returns an empty list if no carrier is enabled. POST /estimated_delivery_dates.
輸入結構描述
{
"type": "object",
"properties": {
"from_postcode": {
"type": "string",
"minLength": 2,
"maxLength": 12,
"description": "Origin (pickup) postcode."
},
"to_postcode": {
"type": "string",
"minLength": 2,
"maxLength": 12,
"description": "Destination postcode."
},
"couriers": {
"description": "Carrier keywords to estimate for, e.g. CouriersPlease (default: all enabled).",
"maxItems": 20,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 60
}
},
"service_levels": {
"maxItems": 2,
"type": "array",
"items": {
"type": "string",
"enum": [
"standard",
"express"
]
}
},
"preparation_time": {
"description": "Lead time before pickup as DD:HH:MM, e.g. 01:05:30.",
"type": "string",
"pattern": "^\\d{2}:\\d{2}:\\d{2}$"
}
},
"required": [
"from_postcode",
"to_postcode"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢shippit_get_order(tracking_number)
One Shippit order by tracking number: state, courier and price allocated, delivery address, receiver, parcels, products, references and (once booked) manifest id and number. There is no list-orders endpoint in the Shippit API. GET /orders/{tracking_number}.
輸入結構描述
{
"type": "object",
"properties": {
"tracking_number": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{3,64}$",
"description": "The Shippit tracking number of the order (returned by shippit_create_order; usually starts with PP)."
}
},
"required": [
"tracking_number"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢shippit_get_tracking(tracking_number)
The status history of an order (status, date, time, who changed it) and the public tracking page URL to give the recipient. GET /orders/{tracking_number}/tracking.
輸入結構描述
{
"type": "object",
"properties": {
"tracking_number": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{3,64}$",
"description": "The Shippit tracking number of the order (returned by shippit_create_order; usually starts with PP)."
}
},
"required": [
"tracking_number"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢shippit_get_manifest_document(manifest_id)
The booking manifest document for a manifest id (from shippit_book_orders or shippit_get_order): carrier, order count, tracking numbers and a pre-signed PDF URL valid for 7 days. A 422 means the manifest is still generating: retry shortly. GET /book/{manifest_id}/document.
輸入結構描述
{
"type": "object",
"properties": {
"manifest_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The Shippit manifest id (not the carrier's manifest number)."
}
},
"required": [
"manifest_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴shippit_create_order(courier_type, courier_allocation, delivery_address, delivery_suburb, delivery_state, ...)
WRITE: create a domestic shipping order in Shippit. Shippit then allocates a carrier (your account rules, or the carrier named in courier_allocation) and, unless suppress_communications is true, emails the recipient tracking notifications. Requires confirm: true. Standard, express and click-and-collect orders are only booked with the carrier later, by shippit_label_order and shippit_book_orders (priority and on-demand orders, which book inside the create request, are not supported here). validate defaults to true: the order is not saved when the suburb and postcode do not match (a suggested address is returned instead). Creating twice creates two orders. International orders (customs data) are not supported here. POST /orders.
輸入結構描述
{
"type": "object",
"properties": {
"courier_type": {
"description": "Service level (default standard). Give this or courier_allocation.",
"type": "string",
"enum": [
"standard",
"express",
"click_and_collect"
]
},
"courier_allocation": {
"description": "A specific carrier keyword, e.g. CouriersPlease (see the Shippit carriers list). Instead of courier_type.",
"type": "string",
"minLength": 1,
"maxLength": 60
},
"delivery_address": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"delivery_suburb": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"delivery_state": {
"type": "string",
"minLength": 2,
"maxLength": 40,
"description": "State. Australian orders use NSW, VIC, QLD, WA, SA, TAS, ACT or NT."
},
"delivery_postcode": {
"type": "string",
"minLength": 2,
"maxLength": 12
},
"delivery_country_code": {
"type": "string",
"pattern": "^[A-Za-z]{2}$",
"description": "Two-letter country code (default: the merchant's home country, usually AU)."
},
"delivery_company": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"delivery_instructions": {
"description": "Instructions for the driver, at most 55 characters.",
"type": "string",
"minLength": 1,
"maxLength": 55
},
"authority_to_leave": {
"description": "Whether the parcel may be left unattended.",
"type": "string",
"enum": [
"Yes",
"No"
]
},
"receiver_name": {
"description": "Name of the person receiving it, if different from the customer.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"receiver_contact_number": {
"type": "string",
"minLength": 3,
"maxLength": 30
},
"customer_email": {
"type": "string",
"maxLength": 200,
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "The customer's email (Shippit sends tracking notifications here unless suppressed)."
},
"customer_first_name": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"customer_last_name": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"customer_mobile": {
"type": "string",
"minLength": 3,
"maxLength": 30
},
"parcels": {
"minItems": 1,
"maxItems": 100,
"type": "array",
"items": {
"type": "object",
"properties": {
"qty": {
"description": "Number of parcels of this kind (required unless products are given).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 1000
},
"weight": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 100000,
"description": "Weight of one parcel in kilograms."
},
"length": {
"description": "Length in metres.",
"type": "number",
"exclusiveMinimum": 0,
"maximum": 100
},
"width": {
"description": "Width in metres.",
"type": "number",
"exclusiveMinimum": 0,
"maximum": 100
},
"depth": {
"description": "Depth (height) in metres.",
"type": "number",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"required": [
"weight"
]
},
"description": "The parcels (qty and weight are the minimum; leave qty out when you also send products)."
},
"products": {
"description": "Optional line items for the packing slip.",
"maxItems": 200,
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {
"description": "Product title (needed for international orders; shown on the packing slip).",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"sku": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"quantity": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"price": {
"description": "Unit price (used for the packing slip, customs and transit protection).",
"type": "number",
"minimum": 0,
"maximum": 10000000
}
},
"required": [
"quantity"
]
}
},
"retailer_invoice": {
"description": "Your order number, printed on the label and packing slip.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"retailer_reference": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"features": {
"description": "Carrier add-on services; some need prior approval from Shippit.",
"maxItems": 10,
"type": "array",
"items": {
"type": "string",
"enum": [
"white_glove",
"book_in_required",
"call_before_collection",
"call_before_delivery",
"driver_assist",
"two_person_lift",
"tail_lift_truck_delivery",
"tail_lift_truck_pickup",
"alcohol",
"pharmaceutical",
"id_check",
"tobacco",
"identity_on_delivery",
"pin_on_delivery"
]
}
},
"tags": {
"description": "Your own labels for filtering.",
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 255
}
},
"validate": {
"description": "Reject the order if suburb and postcode do not match (default true).",
"type": "boolean"
},
"suppress_communications": {
"description": "true = Shippit sends no tracking notifications to the customer for this order (default false: it does).",
"type": "boolean"
},
"confirm": {
"type": "boolean",
"description": "Must be true. The order is real: it can email the customer and, for a named on-demand carrier, book it at once. Ask the user to confirm first."
}
},
"required": [
"delivery_address",
"delivery_suburb",
"delivery_state",
"delivery_postcode",
"customer_email",
"customer_first_name",
"parcels",
"confirm"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢shippit_label_order(tracking_number)
WRITE: confirm an order for shipping and fetch its label. This is the Shippit 'label' step: it finalises the carrier and price (the order moves to Ready to Ship) and returns the carrier, tracking and consignment details plus pre-signed PDF URLs (valid 7 days) for the shipping label, packing slip and any customs documents. A 422 means the order is still processing or has no valid carrier or quote: retry shortly or read the error. Labelling is the step before shippit_book_orders. GET /orders/{tracking_number}/label.
輸入結構描述
{
"type": "object",
"properties": {
"tracking_number": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{3,64}$",
"description": "The Shippit tracking number of the order (returned by shippit_create_order; usually starts with PP)."
}
},
"required": [
"tracking_number"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴shippit_book_orders(tracking_numbers, confirm)
WRITE: book labelled orders with their carriers for pickup (the Shippit 'book' step). Shippit returns one manifest per carrier; the carrier then collects and bills the parcels. Orders must have been labelled first (shippit_label_order). The call fails as a whole when a tracking number is unknown; otherwise each manifest reports success or an error per order. Booked orders can no longer be edited. Requires confirm: true. A reply where every manifest failed is an error. POST /book.
輸入結構描述
{
"type": "object",
"properties": {
"tracking_numbers": {
"minItems": 1,
"maxItems": 200,
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{3,64}$",
"description": "The Shippit tracking number of the order (returned by shippit_create_order; usually starts with PP)."
},
"description": "Tracking numbers of the labelled orders to book."
},
"confirm": {
"type": "boolean",
"description": "Must be true. Booking commits the orders to carrier pickup and charges; ask the user to confirm first."
}
},
"required": [
"tracking_numbers",
"confirm"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴shippit_cancel_order(tracking_number, confirm)
WRITE: cancel a Shippit order by tracking number (the order ends in state cancelled and cannot be revived; for some carriers Shippit also sends a cancellation request to the carrier). Shippit refuses with a 422 and the reason when the order can no longer be cancelled, for example once the carrier has it. Requires confirm: true. DELETE /orders/{tracking_number}.
輸入結構描述
{
"type": "object",
"properties": {
"tracking_number": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{3,64}$",
"description": "The Shippit tracking number of the order (returned by shippit_create_order; usually starts with PP)."
},
"confirm": {
"type": "boolean",
"description": "Must be true. A cancelled order cannot be recovered; ask the user to confirm first."
}
},
"required": [
"tracking_number",
"confirm"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}社群
證據