Skip to main content
Glama

Shipcloud MCP by usefulapi

Buy a shipping label (costs money)

shipcloud_create_shipment_with_label
Destructive

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

NameRequiredDescriptionDefault
toYesRecipient full address (company or last_name needed). Read a saved address first to copy its fields.
fromNoSender full address. If omitted, shipcloud uses the default sender address of the account.
carrierYesCarrier acronym (shipcloud_list_carriers shows the ones this account can use).
confirmYesMust 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.
serviceNoService (default standard). Which services a carrier offers: shipcloud_list_carriers.
packagesYesThe packages (one entry for a single parcel). Several packages: only UPS supports them.
descriptionNoContents. 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.
label_formatNoLabel format, e.g. pdf_a6 or zpl2_4x6in_203dpi; carriers support different ones (shipcloud_list_carriers shows them per service).
reference_numberYesYour own unique reference (max 30 characters). Required: it is how a possible duplicate is found after a timeout.
notification_emailNoshipcloud emails this address on tracking updates.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructive/non-idempotent/open-world, but the description goes well beyond them: real EUR charge excl. VAT, no-retry semantics, possible duplicate labels after a timeout, non-atomic same-instance duplicate guard that fails across Worker instances, and the ~17:00–20:00 cancellation window. This is exactly the behavioral context an agent needs before spending money.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the 'WRITE, COSTS MONEY' signal and organized as risk → cost → retry → confirmation, with no filler sentences. It is dense and slightly repetitive (checking shipcloud after an uncertain result is stated twice) and packs multiple clauses per sentence, but every sentence carries operational weight.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter, nested-object, money-spending tool with no output schema, the description covers cost, side effects, idempotency hazards and the customs exclusion thoroughly. The remaining gap is return values — with no output schema, the agent is not told what comes back (label document/URL, shipment id), which matters for a purchase call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3; the description still adds meaning by tying reference_number to duplicate detection after a timeout and by stressing it must be unique and serialized per reference. The confirm parameter's 'ask first, do not assume' framing reinforces but largely restates the schema text, so it does not fully exceed the schema's own guidance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource ('create a shipment AND buy its shipping label') and immediately qualifies scope with 'create_shipping_label=true', which separates it from shipcloud_create_prepared_shipment. 'POST /shipments' anchors it to the underlying endpoint, so an agent knows exactly which operation this is.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit routing: fetch the price first from shipcloud_get_shipment_quote, confirm only after the user agreed to be charged, cancel via shipcloud_delete_shipment before the carrier cut-off, and on uncertain results check shipcloud_list_shipments before retrying. It also states a hard exclusion ('shipments needing customs papers are not supported here') and the sandbox-vs-live distinction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.