Shipcloud MCP by usefulapi

Track shipments and quote shipping; prepare shipments, buy labels and request carrier pickups.

Should I use this

Quality & Safety

A
Description quality
96%
Schema completeness
76%
Naming quality
76%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (4)

  • LOWTool 'shipcloud_create_prepared_shipment' name length outside 3-30 rangein shipcloud_create_prepared_shipment
  • LOWTool 'shipcloud_create_shipment_with_label' name length outside 3-30 rangein shipcloud_create_shipment_with_label
  • LOWTool 'shipcloud_create_pickup_request' name length outside 3-30 rangein shipcloud_create_pickup_request
  • LOWTool 'shipcloud_find_dropoff_locations' name length outside 3-30 rangein shipcloud_find_dropoff_locations

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~9,275Tokens (tool definitions)
~3.6 KBTypical response size
Significant attention impact (7.25% 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": {
    "shipcloud": {
      "url": "https://shipcloud.usefulapi.io/mcp"
    }
  }
}

Remote endpoints

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

What it can do

Tool inventory

Tools (22)

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

The shipcloud user behind this API key: id, email, customer number, plan, and the ENVIRONMENT of the key (production = real labels and charges, sandbox = free test labels). Check this before creating labels. GET /me.

Input Schema

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

The carriers this account can use, each with its services, package types, additional services and label formats per service. Use the values when creating shipments. GET /carriers.

Input Schema

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

One of the account's saved default addresses: shipping (the default sender), returns (the default recipient of return shipments) or invoice (the invoice address). GET /default_shipping_address, /default_returns_address or /invoice_address.

Input Schema

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "shipping",
        "returns",
        "invoice"
      ],
      "description": "Which default address."
    }
  },
  "required": [
    "kind"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢shipcloud_list_shipments(carrier, service, carrier_tracking_no, shipcloud_tracking_no, reference_number, ...)

List shipments (newest first as shipcloud returns them) with carrier, service, price, tracking number, tracking URL, label URL, addresses and tracking events. Filters can be combined. Paged: pass the previous reply's next_page. shipcloud sends no totals, so next_page is a guess (a full page suggests more). GET /shipments.

Input Schema

{
  "type": "object",
  "properties": {
    "carrier": {
      "type": "string",
      "enum": [
        "angel_de",
        "asendia",
        "cargo_international",
        "dhl",
        "dhl_express",
        "dpag",
        "dpd",
        "gls",
        "go",
        "hermes",
        "iloxx",
        "parcel_one",
        "ups"
      ]
    },
    "service": {
      "type": "string",
      "enum": [
        "standard",
        "one_day",
        "one_day_early",
        "returns",
        "asendia_epaq_standard_economy",
        "asendia_epaq_standard_priority",
        "cargo_international_express",
        "dhl_europaket",
        "dhl_prio",
        "dhl_warenpost",
        "dpag_warenpost",
        "dpag_warenpost_signature",
        "dpag_warenpost_untracked",
        "gls_express_0800",
        "gls_express_0900",
        "gls_express_1000",
        "gls_express_1200",
        "ups_express_1200"
      ]
    },
    "carrier_tracking_no": {
      "description": "The carrier's tracking number.",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "shipcloud_tracking_no": {
      "description": "The shipcloud shipment id / tracking number.",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "reference_number": {
      "description": "The reference_number given when the shipment was created.",
      "type": "string",
      "minLength": 1,
      "maxLength": 30
    },
    "shipment_type": {
      "description": "prepared = saved without a label; label_created = has a label; tracking_only = imported tracker.",
      "type": "string",
      "enum": [
        "prepared",
        "label_created",
        "tracking_only"
      ]
    },
    "source": {
      "description": "Where the shipment was created.",
      "type": "string",
      "enum": [
        "api",
        "webui",
        "return_portal"
      ]
    },
    "tracking_status": {
      "description": "Only shipments with this tracking status.",
      "type": "string",
      "enum": [
        "awaits_pickup_by_receiver",
        "canceled",
        "delayed",
        "delivered",
        "destroyed",
        "exception",
        "label_created",
        "not_delivered",
        "notification",
        "out_for_delivery",
        "picked_up",
        "registered",
        "transit",
        "unknown"
      ]
    },
    "tracking_status_not": {
      "description": "Only shipments WITHOUT this tracking status, e.g. delivered.",
      "type": "string",
      "enum": [
        "awaits_pickup_by_receiver",
        "canceled",
        "delayed",
        "delivered",
        "destroyed",
        "exception",
        "label_created",
        "not_delivered",
        "notification",
        "out_for_delivery",
        "picked_up",
        "registered",
        "transit",
        "unknown"
      ]
    },
    "created_after": {
      "type": "string",
      "description": "ISO 8601 date-time with a timezone, e.g. 2026-10-01T00:00:00Z."
    },
    "created_before": {
      "type": "string",
      "description": "ISO 8601 date-time with a timezone, e.g. 2026-10-01T00:00:00Z."
    },
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "per_page": {
      "description": "Results per page, 1-100 (default 25).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢shipcloud_get_shipment(shipment_id)

One shipment by id: addresses, packages with tracking events, price, label URL, tracking URL. Sandbox shipments have no tracking events and price 0. GET /shipments/{id}.

Input Schema

{
  "type": "object",
  "properties": {
    "shipment_id": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{1,100}$",
      "description": "The id shipcloud returned."
    }
  },
  "required": [
    "shipment_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢shipcloud_get_shipment_quote(carrier, service, to, from, packages)

What shipcloud would charge for a shipment (price in EUR excl. VAT). Read-only: nothing is created and nothing is charged. Only works for carrier contracts owned by shipcloud. Use it before shipcloud_create_shipment_with_label. POST /shipment_quotes.

Input Schema

{
  "type": "object",
  "properties": {
    "carrier": {
      "type": "string",
      "enum": [
        "angel_de",
        "asendia",
        "cargo_international",
        "dhl",
        "dhl_express",
        "dpag",
        "dpd",
        "gls",
        "go",
        "hermes",
        "iloxx",
        "parcel_one",
        "ups"
      ],
      "description": "Carrier acronym (shipcloud_list_carriers shows the ones this account can use)."
    },
    "service": {
      "type": "string",
      "enum": [
        "standard",
        "one_day",
        "one_day_early",
        "returns",
        "asendia_epaq_standard_economy",
        "asendia_epaq_standard_priority",
        "cargo_international_express",
        "dhl_europaket",
        "dhl_prio",
        "dhl_warenpost",
        "dpag_warenpost",
        "dpag_warenpost_signature",
        "dpag_warenpost_untracked",
        "gls_express_0800",
        "gls_express_0900",
        "gls_express_1000",
        "gls_express_1200",
        "ups_express_1200"
      ],
      "description": "Service (default standard). Which services a carrier offers: shipcloud_list_carriers."
    },
    "to": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "company": {
              "description": "Company name.",
              "type": "string",
              "minLength": 1,
              "maxLength": 100
            },
            "first_name": {
              "type": "string",
              "minLength": 1,
              "maxLength": 50
            },
            "last_name": {
              "description": "Last name. Give this or a company.",
              "type": "string",
              "minLength": 1,
              "maxLength": 50
            },
            "care_of": {
              "type": "string",
              "minLength": 1,
              "maxLength": 100
            },
            "street": {
              "type": "string",
              "minLength": 1,
              "maxLength": 100,
              "description": "Street name (may include the house number)."
            },
            "street_no": {
              "description": "House number, when the carrier needs it separately.",
              "type": "string",
              "minLength": 1,
              "maxLength": 20
            },
            "zip_code": {
              "type": "string",
              "minLength": 1,
              "maxLength": 20
            },
            "city": {
              "type": "string",
              "minLength": 1,
              "maxLength": 100
            },
            "state": {
              "type": "string",
              "minLength": 1,
              "maxLength": 50
            },
            "country": {
              "type": "string",
              "pattern": "^[A-Z]{2}$",
              "description": "Country, uppercase ISO 3166-1 alpha-2, e.g. DE."
            },
            "phone": {
              "description": "Phone (mandatory for UPS express services and for international UPS shipments).",
              "type": "string",
              "minLength": 1,
              "maxLength": 40
            },
            "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,}$"
            }
          },
          "required": [
            "street",
            "zip_code",
            "city",
            "country"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "pattern": "^[A-Za-z0-9_-]{1,100}$",
              "description": "The id shipcloud returned."
            }
          },
          "required": [
            "id"
          ],
          "additionalProperties": false
        }
      ],
      "description": "An address (street, zip_code, city, country are enough), or {id} of a saved address."
    },
    "from": {
      "description": "Sender; omitted = the account's default sender address.",
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "company": {
              "description": "Company name.",
              "type": "string",
              "minLength": 1,
              "maxLength": 100
            },
            "first_name": {
              "type": "string",
              "minLength": 1,
              "maxLength": 50
            },
            "last_name": {
              "description": "Last name. Give this or a company.",
              "type": "string",
              "minLength": 1,
              "maxLength": 50
            },
            "care_of": {
              "type": "string",
              "minLength": 1,
              "maxLength": 100
            },
            "street": {
              "type": "string",
              "minLength": 1,
              "maxLength": 100,
              "description": "Street name (may include the house number)."
            },
            "street_no": {
              "description": "House number, when the carrier needs it separately.",
              "type": "string",
              "minLength": 1,
              "maxLength": 20
            },
            "zip_code": {
              "type": "string",
              "minLength": 1,
              "maxLength": 20
            },
            "city": {
              "type": "string",
              "minLength": 1,
              "maxLength": 100
            },
            "state": {
              "type": "string",
              "minLength": 1,
              "maxLength": 50
            },
            "country": {
              "type": "string",
              "pattern": "^[A-Z]{2}$",
              "description": "Country, uppercase ISO 3166-1 alpha-2, e.g. DE."
            },
            "phone": {
              "description": "Phone (mandatory for UPS express services and for international UPS shipments).",
              "type": "string",
              "minLength": 1,
              "maxLength": 40
            },
            "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,}$"
            }
          },
          "required": [
            "street",
            "zip_code",
            "city",
            "country"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "pattern": "^[A-Za-z0-9_-]{1,100}$",
              "description": "The id shipcloud returned."
            }
          },
          "required": [
            "id"
          ],
          "additionalProperties": false
        }
      ]
    },
    "packages": {
      "minItems": 1,
      "maxItems": 10,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "length": {
            "type": "number",
            "exclusiveMinimum": 0,
            "maximum": 1000,
            "description": "Length in cm."
          },
          "width": {
            "type": "number",
            "exclusiveMinimum": 0,
            "maximum": 1000,
            "description": "Width in cm."
          },
          "height": {
            "type": "number",
            "exclusiveMinimum": 0,
            "maximum": 1000,
            "description": "Height in cm."
          },
          "weight": {
            "type": "number",
            "exclusiveMinimum": 0,
            "maximum": 1000,
            "description": "Weight in kg."
          }
        },
        "required": [
          "length",
          "width",
          "height",
          "weight"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "carrier",
    "service",
    "to",
    "packages"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡shipcloud_create_prepared_shipment(carrier, service, to, from, packages, ...)

WRITE: save a shipment in shipcloud WITHOUT buying a label (create_shipping_label=false). Nothing is charged and no carrier is contacted; a prepared shipment can be deleted any time. Returns the shipment id. To buy the label use shipcloud_create_shipment_with_label. POST /shipments.

Input Schema

{
  "type": "object",
  "properties": {
    "carrier": {
      "type": "string",
      "enum": [
        "angel_de",
        "asendia",
        "cargo_international",
        "dhl",
        "dhl_express",
        "dpag",
        "dpd",
        "gls",
        "go",
        "hermes",
        "iloxx",
        "parcel_one",
        "ups"
      ],
      "description": "Carrier acronym (shipcloud_list_carriers shows the ones this account can use)."
    },
    "service": {
      "type": "string",
      "enum": [
        "standard",
        "one_day",
        "one_day_early",
        "returns",
        "asendia_epaq_standard_economy",
        "asendia_epaq_standard_priority",
        "cargo_international_express",
        "dhl_europaket",
        "dhl_prio",
        "dhl_warenpost",
        "dpag_warenpost",
        "dpag_warenpost_signature",
        "dpag_warenpost_untracked",
        "gls_express_0800",
        "gls_express_0900",
        "gls_express_1000",
        "gls_express_1200",
        "ups_express_1200"
      ],
      "description": "Service (default standard). Which services a carrier offers: shipcloud_list_carriers."
    },
    "to": {
      "type": "object",
      "properties": {
        "company": {
          "description": "Company name.",
          "type": "string",
          "minLength": 1,
          "maxLength": 100
        },
        "first_name": {
          "type": "string",
          "minLength": 1,
          "maxLength": 50
        },
        "last_name": {
          "description": "Last name. Give this or a company.",
          "type": "string",
          "minLength": 1,
          "maxLength": 50
        },
        "care_of": {
          "type": "string",
          "minLength": 1,
          "maxLength": 100
        },
        "street": {
          "type": "string",
          "minLength": 1,
          "maxLength": 100,
          "description": "Street name (may include the house number)."
        },
        "street_no": {
          "description": "House number, when the carrier needs it separately.",
          "type": "string",
          "minLength": 1,
          "maxLength": 20
        },
        "zip_code": {
          "type": "string",
          "minLength": 1,
          "maxLength": 20
        },
        "city": {
          "type": "string",
          "minLength": 1,
          "maxLength": 100
        },
        "state": {
          "type": "string",
          "minLength": 1,
          "maxLength": 50
        },
        "country": {
          "type": "string",
          "pattern": "^[A-Z]{2}$",
          "description": "Country, uppercase ISO 3166-1 alpha-2, e.g. DE."
        },
        "phone": {
          "description": "Phone (mandatory for UPS express services and for international UPS shipments).",
          "type": "string",
          "minLength": 1,
          "maxLength": 40
        },
        "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,}$"
        }
      },
      "required": [
        "street",
        "zip_code",
        "city",
        "country"
      ],
      "additionalProperties": false,
      "description": "Recipient full address (company or last_name needed). Read a saved address first to copy its fields."
    },
    "from": {
      "description": "Sender full address. If omitted, shipcloud uses the default sender address of the account.",
      "type": "object",
      "properties": {
        "company": {
          "description": "Company name.",
          "type": "string",
          "minLength": 1,
          "maxLength": 100
        },
        "first_name": {
          "type": "string",
          "minLength": 1,
          "maxLength": 50
        },
        "last_name": {
          "description": "Last name. Give this or a company.",
          "type": "string",
          "minLength": 1,
          "maxLength": 50
        },
        "care_of": {
          "type": "string",
          "minLength": 1,
          "maxLength": 100
        },
        "street": {
          "type": "string",
          "minLength": 1,
          "maxLength": 100,
          "description": "Street name (may include the house number)."
        },
        "street_no": {
          "description": "House number, when the carrier needs it separately.",
          "type": "string",
          "minLength": 1,
          "maxLength": 20
        },
        "zip_code": {
          "type": "string",
          "minLength": 1,
          "maxLength": 20
        },
        "city": {
          "type": "string",
          "minLength": 1,
          "maxLength": 100
        },
        "state": {
          "type": "string",
          "minLength": 1,
          "maxLength": 50
        },
        "country": {
          "type": "string",
          "pattern": "^[A-Z]{2}$",
          "description": "Country, uppercase ISO 3166-1 alpha-2, e.g. DE."
        },
        "phone": {
          "description": "Phone (mandatory for UPS express services and for international UPS shipments).",
          "type": "string",
          "minLength": 1,
          "maxLength": 40
        },
        "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,}$"
        }
      },
      "required": [
        "street",
        "zip_code",
        "city",
        "country"
      ],
      "additionalProperties": false
    },
    "packages": {
      "minItems": 1,
      "maxItems": 10,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "length": {
            "type": "number",
            "exclusiveMinimum": 0,
            "maximum": 1000,
            "description": "Length in cm."
          },
          "width": {
            "type": "number",
            "exclusiveMinimum": 0,
            "maximum": 1000,
            "description": "Width in cm."
          },
          "height": {
            "type": "number",
            "exclusiveMinimum": 0,
            "maximum": 1000,
            "description": "Height in cm."
          },
          "weight": {
            "type": "number",
            "exclusiveMinimum": 0,
            "maximum": 1000,
            "description": "Weight in kg."
          },
          "type": {
            "description": "Package type (default parcel).",
            "type": "string",
            "enum": [
              "books",
              "bulk",
              "letter",
              "parcel",
              "parcel_letter"
            ]
          },
          "description": {
            "description": "Contents. Mandatory for UPS returns.",
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "declared_value": {
            "description": "Books extra carrier insurance (extra carrier fees apply).",
            "type": "object",
            "properties": {
              "amount": {
                "type": "number",
                "exclusiveMinimum": 0,
                "maximum": 1000000
              },
              "currency": {
                "type": "string",
                "const": "EUR"
              }
            },
            "required": [
              "amount",
              "currency"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "length",
          "width",
          "height",
          "weight"
        ],
        "additionalProperties": false
      },
      "description": "The packages (one entry for a single parcel). Several packages: only UPS supports them."
    },
    "description": {
      "description": "Contents. Mandatory for UPS international/non-standard and DHL Express. Shipments that need a customs declaration (outside the EU) are not supported here: create them in the shipcloud backoffice.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "notification_email": {
      "description": "shipcloud emails this address on tracking updates.",
      "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,}$"
    },
    "label_format": {
      "description": "Label format, e.g. pdf_a6 or zpl2_4x6in_203dpi; carriers support different ones (shipcloud_list_carriers shows them per service).",
      "type": "string",
      "pattern": "^(pdf|zpl2)_[a-z0-9_]{1,40}$"
    },
    "reference_number": {
      "description": "Your own reference (max 30 characters), searchable later.",
      "type": "string",
      "minLength": 1,
      "maxLength": 30
    }
  },
  "required": [
    "carrier",
    "to",
    "packages"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴shipcloud_create_shipment_with_label(carrier, service, to, from, packages, ...)

WRITE, COSTS MONEY: create a shipment AND buy its shipping label at the carrier (create_shipping_label=true). With a LIVE key this charges the shipcloud account (price in EUR excl. VAT; get it first from shipcloud_get_shipment_quote) and creates a real label; with the sandbox key it is free and fake. A label can only be cancelled before the carrier's cut-off (about 17:00-20:00) with shipcloud_delete_shipment. The request is sent ONCE and never retried: if it times out or fails with a server error, the label may still exist, so check shipcloud_list_shipments with the same reference_number before trying again. An existing-label lookup and same-instance guard reduce duplicates but are not atomic or global: simultaneous requests across Worker instances can buy duplicate labels. Serialize purchases for each reference and check shipcloud after an uncertain result. Requires confirm=true after the user agreed to the purchase; give a unique reference_number. Shipments needing customs papers are not supported here. POST /shipments.

Input Schema

{
  "type": "object",
  "properties": {
    "carrier": {
      "type": "string",
      "enum": [
        "angel_de",
        "asendia",
        "cargo_international",
        "dhl",
        "dhl_express",
        "dpag",
        "dpd",
        "gls",
        "go",
        "hermes",
        "iloxx",
        "parcel_one",
        "ups"
      ],
      "description": "Carrier acronym (shipcloud_list_carriers shows the ones this account can use)."
    },
    "service": {
      "type": "string",
      "enum": [
        "standard",
        "one_day",
        "one_day_early",
        "returns",
        "asendia_epaq_standard_economy",
        "asendia_epaq_standard_priority",
        "cargo_international_express",
        "dhl_europaket",
        "dhl_prio",
        "dhl_warenpost",
        "dpag_warenpost",
        "dpag_warenpost_signature",
        "dpag_warenpost_untracked",
        "gls_express_0800",
        "gls_express_0900",
        "gls_express_1000",
        "gls_express_1200",
        "ups_express_1200"
      ],
      "description": "Service (default standard). Which services a carrier offers: shipcloud_list_carriers."
    },
    "to": {
      "type": "object",
      "properties": {
        "company": {
          "description": "Company name.",
          "type": "string",
          "minLength": 1,
          "maxLength": 100
        },
        "first_name": {
          "type": "string",
          "minLength": 1,
          "maxLength": 50
        },
        "last_name": {
          "description": "Last name. Give this or a company.",
          "type": "string",
          "minLength": 1,
          "maxLength": 50
        },
        "care_of": {
          "type": "string",
          "minLength": 1,
          "maxLength": 100
        },
        "street": {
          "type": "string",
          "minLength": 1,
          "maxLength": 100,
          "description": "Street name (may include the house number)."
        },
        "street_no": {
          "description": "House number, when the carrier needs it separately.",
          "type": "string",
          "minLength": 1,
          "maxLength": 20
        },
        "zip_code": {
          "type": "string",
          "minLength": 1,
          "maxLength": 20
        },
        "city": {
          "type": "string",
          "minLength": 1,
          "maxLength": 100
        },
        "state": {
          "type": "string",
          "minLength": 1,
          "maxLength": 50
        },
        "country": {
          "type": "string",
          "pattern": "^[A-Z]{2}$",
          "description": "Country, uppercase ISO 3166-1 alpha-2, e.g. DE."
        },
        "phone": {
          "description": "Phone (mandatory for UPS express services and for international UPS shipments).",
          "type": "string",
          "minLength": 1,
          "maxLength": 40
        },
        "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,}$"
        }
      },
      "required": [
        "street",
        "zip_code",
        "city",
        "country"
      ],
      "additionalProperties": false,
      "description": "Recipient full address (company or last_name needed). Read a saved address first to copy its fields."
    },
    "from": {
      "description": "Sender full address. If omitted, shipcloud uses the default sender address of the account.",
      "type": "object",
      "properties": {
        "company": {
          "description": "Company name.",
          "type": "string",
          "minLength": 1,
          "maxLength": 100
        },
        "first_name": {
          "type": "string",
          "minLength": 1,
          "maxLength": 50
        },
        "last_name": {
          "description": "Last name. Give this or a company.",
          "type": "string",
          "minLength": 1,
          "maxLength": 50
        },
        "care_of": {
          "type": "string",
          "minLength": 1,
          "maxLength": 100
        },
        "street": {
          "type": "string",
          "minLength": 1,
          "maxLength": 100,
          "description": "Street name (may include the house number)."
        },
        "street_no": {
          "description": "House number, when the carrier needs it separately.",
          "type": "string",
          "minLength": 1,
          "maxLength": 20
        },
        "zip_code": {
          "type": "string",
          "minLength": 1,
          "maxLength": 20
        },
        "city": {
          "type": "string",
          "minLength": 1,
          "maxLength": 100
        },
        "state": {
          "type": "string",
          "minLength": 1,
          "maxLength": 50
        },
        "country": {
          "type": "string",
          "pattern": "^[A-Z]{2}$",
          "description": "Country, uppercase ISO 3166-1 alpha-2, e.g. DE."
        },
        "phone": {
          "description": "Phone (mandatory for UPS express services and for international UPS shipments).",
          "type": "string",
          "minLength": 1,
          "maxLength": 40
        },
        "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,}$"
        }
      },
      "required": [
        "street",
        "zip_code",
        "city",
        "country"
      ],
      "additionalProperties": false
    },
    "packages": {
      "minItems": 1,
      "maxItems": 10,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "length": {
            "type": "number",
            "exclusiveMinimum": 0,
            "maximum": 1000,
            "description": "Length in cm."
          },
          "width": {
            "type": "number",
            "exclusiveMinimum": 0,
            "maximum": 1000,
            "description": "Width in cm."
          },
          "height": {
            "type": "number",
            "exclusiveMinimum": 0,
            "maximum": 1000,
            "description": "Height in cm."
          },
          "weight": {
            "type": "number",
            "exclusiveMinimum": 0,
            "maximum": 1000,
            "description": "Weight in kg."
          },
          "type": {
            "description": "Package type (default parcel).",
            "type": "string",
            "enum": [
              "books",
              "bulk",
              "letter",
              "parcel",
              "parcel_letter"
            ]
          },
          "description": {
            "description": "Contents. Mandatory for UPS returns.",
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "declared_value": {
            "description": "Books extra carrier insurance (extra carrier fees apply).",
            "type": "object",
            "properties": {
              "amount": {
                "type": "number",
                "exclusiveMinimum": 0,
                "maximum": 1000000
              },
              "currency": {
                "type": "string",
                "const": "EUR"
              }
            },
            "required": [
              "amount",
              "currency"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "length",
          "width",
          "height",
          "weight"
        ],
        "additionalProperties": false
      },
      "description": "The packages (one entry for a single parcel). Several packages: only UPS supports them."
    },
    "description": {
      "description": "Contents. Mandatory for UPS international/non-standard and DHL Express. Shipments that need a customs declaration (outside the EU) are not supported here: create them in the shipcloud backoffice.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "notification_email": {
      "description": "shipcloud emails this address on tracking updates.",
      "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,}$"
    },
    "label_format": {
      "description": "Label format, e.g. pdf_a6 or zpl2_4x6in_203dpi; carriers support different ones (shipcloud_list_carriers shows them per service).",
      "type": "string",
      "pattern": "^(pdf|zpl2)_[a-z0-9_]{1,40}$"
    },
    "reference_number": {
      "type": "string",
      "minLength": 1,
      "maxLength": 30,
      "description": "Your own unique reference (max 30 characters). Required: it is how a possible duplicate is found after a timeout."
    },
    "confirm": {
      "type": "boolean",
      "const": true,
      "description": "Must be exactly true. Set it ONLY after the user has explicitly agreed to buy this label and be charged for it. Ask first; do not assume."
    }
  },
  "required": [
    "carrier",
    "to",
    "packages",
    "reference_number",
    "confirm"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴shipcloud_delete_shipment(shipment_id, confirm)

WRITE, DESTRUCTIVE: delete a shipment. A prepared shipment (no label) can be deleted any time. For a shipment with a label, shipcloud cancels the label only before the carrier's cut-off (about 17:00-20:00); afterwards it fails. Cannot be undone. Requires confirm=true after the user agreed. DELETE /shipments/{id}.

Input Schema

{
  "type": "object",
  "properties": {
    "shipment_id": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{1,100}$",
      "description": "The id shipcloud returned."
    },
    "confirm": {
      "type": "boolean",
      "const": true,
      "description": "Must be exactly true. Set it ONLY after the user has explicitly agreed to delete this shipment (and cancel its label). Ask first; do not assume."
    }
  },
  "required": [
    "shipment_id",
    "confirm"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢shipcloud_list_trackers

List trackers: shipments created OUTSIDE shipcloud that shipcloud tracks by the carrier's tracking number (only for your own carrier contracts), with status and tracking events. GET /trackers.

Input Schema

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

One tracker by id, with status and tracking events. GET /trackers/{id}.

Input Schema

{
  "type": "object",
  "properties": {
    "tracker_id": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{1,100}$",
      "description": "The id shipcloud returned."
    }
  },
  "required": [
    "tracker_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡shipcloud_create_tracker(carrier_tracking_no, carrier, notification_email)

WRITE: have shipcloud track a parcel that was NOT created with shipcloud, by the carrier's tracking number (only for your own carrier contracts; carriers dhl, dpd, gls, ups). Creates a tracker; no label, no shipping charge. POST /trackers.

Input Schema

{
  "type": "object",
  "properties": {
    "carrier_tracking_no": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "The carrier's tracking number."
    },
    "carrier": {
      "type": "string",
      "enum": [
        "dhl",
        "dpd",
        "gls",
        "ups"
      ]
    },
    "notification_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,}$"
    }
  },
  "required": [
    "carrier_tracking_no",
    "carrier"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢shipcloud_list_pickup_requests

List carrier pickup requests with carrier, pickup time window, address and the shipments included. GET /pickup_requests.

Input Schema

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

One pickup request by id. GET /pickup_requests/{id}.

Input Schema

{
  "type": "object",
  "properties": {
    "pickup_request_id": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{1,100}$",
      "description": "The id shipcloud returned."
    }
  },
  "required": [
    "pickup_request_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴shipcloud_create_pickup_request(carrier, earliest, latest, pickup_address, shipment_ids, ...)

WRITE: order a carrier (dpd, gls, hermes or ups) to pick up parcels at an address in a time window. A real request goes to the carrier and cannot be cancelled through this server; carriers may bill pickups. Without `shipment_ids` the carrier collects all shipments not yet picked up; return shipments cannot be picked up. Requires confirm=true after the user agreed. POST /pickup_requests.

Input Schema

{
  "type": "object",
  "properties": {
    "carrier": {
      "type": "string",
      "enum": [
        "dpd",
        "gls",
        "hermes",
        "ups"
      ]
    },
    "earliest": {
      "type": "string",
      "description": "Earliest pickup, ISO 8601 with timezone."
    },
    "latest": {
      "type": "string",
      "description": "Latest pickup, ISO 8601 with timezone."
    },
    "pickup_address": {
      "type": "object",
      "properties": {
        "company": {
          "description": "Company name.",
          "type": "string",
          "minLength": 1,
          "maxLength": 100
        },
        "first_name": {
          "type": "string",
          "minLength": 1,
          "maxLength": 50
        },
        "last_name": {
          "description": "Last name. Give this or a company.",
          "type": "string",
          "minLength": 1,
          "maxLength": 50
        },
        "care_of": {
          "type": "string",
          "minLength": 1,
          "maxLength": 100
        },
        "street": {
          "type": "string",
          "minLength": 1,
          "maxLength": 100,
          "description": "Street name (may include the house number)."
        },
        "street_no": {
          "description": "House number, when the carrier needs it separately.",
          "type": "string",
          "minLength": 1,
          "maxLength": 20
        },
        "zip_code": {
          "type": "string",
          "minLength": 1,
          "maxLength": 20
        },
        "city": {
          "type": "string",
          "minLength": 1,
          "maxLength": 100
        },
        "state": {
          "type": "string",
          "minLength": 1,
          "maxLength": 50
        },
        "country": {
          "type": "string",
          "pattern": "^[A-Z]{2}$",
          "description": "Country, uppercase ISO 3166-1 alpha-2, e.g. DE."
        },
        "phone": {
          "description": "Phone (mandatory for UPS express services and for international UPS shipments).",
          "type": "string",
          "minLength": 1,
          "maxLength": 40
        },
        "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,}$"
        }
      },
      "required": [
        "street",
        "zip_code",
        "city",
        "country"
      ],
      "additionalProperties": false,
      "description": "Where the carrier collects the parcels."
    },
    "shipment_ids": {
      "description": "Only these shipments; omitted = all not yet picked up.",
      "minItems": 1,
      "maxItems": 100,
      "type": "array",
      "items": {
        "type": "string",
        "pattern": "^[A-Za-z0-9_-]{1,100}$",
        "description": "The id shipcloud returned."
      }
    },
    "confirm": {
      "type": "boolean",
      "const": true,
      "description": "Must be exactly true. Set it ONLY after the user has explicitly agreed to order this carrier pickup. Ask first; do not assume."
    }
  },
  "required": [
    "carrier",
    "earliest",
    "latest",
    "pickup_address",
    "confirm"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢shipcloud_find_dropoff_locations(carriers, street, zip_code, city, state, ...)

Search a carrier's parcel shops, lockers and drop-off points near an address or coordinates (opening hours, distance). Give an address (street, zip_code, city, country) or latitude + longitude. GET /pickup_dropoff_locations.

Input Schema

{
  "type": "object",
  "properties": {
    "carriers": {
      "minItems": 1,
      "maxItems": 5,
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "angel_de",
          "asendia",
          "cargo_international",
          "dhl",
          "dhl_express",
          "dpag",
          "dpd",
          "gls",
          "go",
          "hermes",
          "iloxx",
          "parcel_one",
          "ups"
        ],
        "description": "Carrier acronym (shipcloud_list_carriers shows the ones this account can use)."
      },
      "description": "Carrier acronyms to search."
    },
    "street": {
      "type": "string",
      "minLength": 1,
      "maxLength": 255
    },
    "zip_code": {
      "type": "string",
      "minLength": 1,
      "maxLength": 255
    },
    "city": {
      "type": "string",
      "minLength": 1,
      "maxLength": 255
    },
    "state": {
      "type": "string",
      "minLength": 1,
      "maxLength": 255
    },
    "country": {
      "description": "Uppercase ISO 3166-1 alpha-2 code.",
      "type": "string",
      "pattern": "^[A-Z]{2}$"
    },
    "latitude": {
      "type": "number",
      "minimum": -90,
      "maximum": 90
    },
    "longitude": {
      "type": "number",
      "minimum": -180,
      "maximum": 180
    },
    "radius": {
      "description": "Search radius in meters (default 10000).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "limit": {
      "description": "Max locations (default 10).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "required": [
    "carriers"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢shipcloud_list_addresses(first_name, last_name, company, street, zip_code, ...)

List the address book (saved addresses with ids usable as `to` / `from`). Filter by any field. Paged. GET /addresses.

Input Schema

{
  "type": "object",
  "properties": {
    "first_name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "last_name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "company": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "street": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "zip_code": {
      "type": "string",
      "minLength": 1,
      "maxLength": 20
    },
    "city": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "country": {
      "type": "string",
      "pattern": "^[A-Z]{2}$"
    },
    "page": {
      "description": "Page number, from 1 (default 1). Pass the previous reply's next_page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100000
    },
    "per_page": {
      "description": "Results per page, 1-100 (default 25).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢shipcloud_get_address(address_id)

One saved address by id. GET /addresses/{id}.

Input Schema

{
  "type": "object",
  "properties": {
    "address_id": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{1,100}$",
      "description": "The id shipcloud returned."
    }
  },
  "required": [
    "address_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡shipcloud_create_address(address)

WRITE: save an address in the shipcloud address book (no shipment, no cost). Returns its id. It cannot be removed through this server. POST /addresses.

Input Schema

{
  "type": "object",
  "properties": {
    "address": {
      "type": "object",
      "properties": {
        "company": {
          "description": "Company name.",
          "type": "string",
          "minLength": 1,
          "maxLength": 100
        },
        "first_name": {
          "type": "string",
          "minLength": 1,
          "maxLength": 50
        },
        "last_name": {
          "description": "Last name. Give this or a company.",
          "type": "string",
          "minLength": 1,
          "maxLength": 50
        },
        "care_of": {
          "type": "string",
          "minLength": 1,
          "maxLength": 100
        },
        "street": {
          "type": "string",
          "minLength": 1,
          "maxLength": 100,
          "description": "Street name (may include the house number)."
        },
        "street_no": {
          "description": "House number, when the carrier needs it separately.",
          "type": "string",
          "minLength": 1,
          "maxLength": 20
        },
        "zip_code": {
          "type": "string",
          "minLength": 1,
          "maxLength": 20
        },
        "city": {
          "type": "string",
          "minLength": 1,
          "maxLength": 100
        },
        "state": {
          "type": "string",
          "minLength": 1,
          "maxLength": 50
        },
        "country": {
          "type": "string",
          "pattern": "^[A-Z]{2}$",
          "description": "Country, uppercase ISO 3166-1 alpha-2, e.g. DE."
        },
        "phone": {
          "description": "Phone (mandatory for UPS express services and for international UPS shipments).",
          "type": "string",
          "minLength": 1,
          "maxLength": 40
        },
        "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,}$"
        }
      },
      "required": [
        "street",
        "zip_code",
        "city",
        "country"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "address"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢shipcloud_list_orders

List orders sent to shipcloud (order data with line items, used by the Return Portal and linked to shipments by order_id). GET /orders.

Input Schema

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

One order by id, with delivery address and line items. GET /orders/{id}.

Input Schema

{
  "type": "object",
  "properties": {
    "order_id": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{1,100}$",
      "description": "The id shipcloud returned."
    }
  },
  "required": [
    "order_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢shipcloud_list_webhooks

List the webhooks configured in the account: target URL, subscribed event types, deactivated flag. Credentials of a webhook are never shown. GET /webhooks.

Input Schema

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

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded22 tools