Skip to main content
Glama

Create Order

starshipit_create_order

Create a new StarShipIt order with recipient, items, and shipping details, placing it in the unshipped queue for label generation.

Instructions

Create a new order in StarShipIt. The order will appear in the unshipped queue ready for label generation.

When to use: Call this when a new order has been placed and needs to be imported into StarShipIt for fulfilment.

Parameters (all under order object):

  • order_number (required) — Merchant order number (must be unique)

  • destination (required) — Recipient address (name, street, post_code, country are required)

  • order_date (optional) — ISO timestamp when the order was placed

  • reference (optional) — Secondary reference (e.g. customer PO)

  • carrier / carrier_name (optional) — Pre-assign a carrier

  • shipping_method (optional) — Service level (e.g. "Express")

  • signature_required (optional) — Require signature on delivery

  • return_order (optional) — Mark as a return order

  • items (optional) — Array of line items

  • packages (optional) — Array of package dimensions/weights

Returns: Created Order object with assigned order_id.

Errors: 400 if required fields missing or invalid; 409 if order_number already exists; 401 if API keys invalid.

Input Schema

NameRequiredDescriptionDefault
orderYesOrder data to create

Output Schema

NameRequiredDescriptionDefault
errorsNoValidation or processing errors returned by StarShipIt
objectNoThe response payload when StarShipIt returns a non-object value
successNoStarShipIt success flag (a boolean on most endpoints)

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnly=false, openWorld=true, idempotent=false, destructive=false, so the safety profile is covered. The description adds real value beyond them: the order lands in the unshipped queue, order_number must be unique, and specific failure modes (400 invalid, 409 duplicate, 401 bad keys) are spelled out — the 409 effectively warns that a retry of a non-idempotent call will fail rather than duplicate. It does not state permissions/scopes or rate limits, which is the remaining gap.

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 purpose, then when-to-use, then a scannable parameter list, then returns and errors — the structure is easy for an agent to parse. Some of the parameter bullets duplicate schema text and could be trimmed, but no sentence is actively misleading or wasted.

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

Completeness5/5

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

For a create tool with a single top-level object containing deep nesting, the description covers the side effect, the required-vs-optional split, the return value (assigned order_id), and the error contract. With an output schema present and 100% schema coverage, there is nothing material an agent needs to call this correctly that is missing.

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

Parameters3/5

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

Schema description coverage is 100% and the nested order/destination/items/packages fields are all documented in the schema, so the baseline is 3. The description's parameter list largely restates what the schema already declares (required fields, ISO timestamp, item/package arrays); its only additive notes are the uniqueness constraint on order_number and the 'Express' example for shipping_method.

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

Purpose4/5

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

States a specific verb and resource ('Create a new order in StarShipIt') and adds the downstream consequence ('will appear in the unshipped queue ready for label generation'), which tells an agent what happens next. It does not explicitly distinguish itself from the sibling starshipit_create_orders_bulk or starshipit_create_tracking_order, so an agent must infer the singular-vs-bulk split from the name.

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

Usage Guidelines4/5

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

The 'When to use' block gives a clear triggering condition: a new order has been placed and needs importing for fulfilment. It stops short of exclusions — nothing says to prefer starshipit_create_orders_bulk for multiple orders, or starshipit_create_tracking_order when only tracking data exists — so the boundary with those siblings is left to inference.

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