Skip to main content
Glama

Batch Update Orders

starshipit_batch_update_orders
Idempotent

Assign the same carrier or shipping service product to multiple StarShipIt orders in one call, useful for bulk reassigning services after rate changes or during fulfilment.

Instructions

Apply the same carrier or shipping service product to a batch of orders in StarShipIt. Use this to reassign carrier/service for multiple orders in a single call.

When to use: Use when you want to reassign the same carrier or product code across many orders at once — e.g. after a carrier rate change or when bulk-selecting a service level in your fulfilment workflow.

Parameters:

  • order_ids (required) — Array of StarShipIt order IDs to update (must not be empty)

  • product_code (optional) — Carrier service product code to assign (e.g. "AUS_PARCEL_REGULAR")

  • carrier_id (optional) — Carrier identifier string to assign

At least one of product_code or carrier_id should be provided alongside order_ids.

Returns: Confirmation of how many orders were updated.

Errors: 400 if order_ids is empty or payload is invalid; 404 if any order not found; 401 if API keys invalid.

Input Schema

NameRequiredDescriptionDefault
order_idsYesArray of StarShipIt order IDs to update
carrier_idNoCarrier identifier to assign to all specified orders
product_codeNoCarrier service product code to assign to all specified orders (e.g. "AUS_PARCEL_REGULAR")

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 cover the safety profile (mutating, idempotent, non-destructive, open-world), so the description's job is to add context — and it does: it states the cross-field requirement that at least one of `product_code` or `carrier_id` must accompany `order_ids`, describes the return shape (count of updated orders), and enumerates 400/404/401 failure conditions. It does not say whether partially-matching order sets are all-or-nothing on the 404 case, which is the main 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-loading the one-line summary before the labelled blocks is good structure, and the parameter, return and error sections are easy to scan. There is minor redundancy, since the 'When to use' paragraph re-explains what the opening sentence already said, but nothing is padded for its own sake.

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?

An output schema exists and the description still names what comes back (update count), and combined with the documented error codes, the inter-parameter constraint, and the required/optional split, an agent has everything needed to construct a correct call or interpret a failure. Nothing material is left unstated for a 3-parameter batch mutation.

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 coverage is 100%, so the descriptions of `order_ids`, `carrier_id` and `product_code` are largely a restatement of structured data, which sets the baseline at 3. The one genuine addition is the constraint that at least one of `product_code` or `carrier_id` should be supplied — a rule the schema does not encode — plus a concrete example value, but this is a modest increment.

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?

The opening sentence states a specific verb and resource — applying one carrier/service product across a batch of orders — which an agent can match to the task immediately. It does not, however, differentiate itself from the very similar sibling `starshipit_update_orders_bulk` or `starshipit_update_order`, leaving an ambiguity an agent must resolve on its own.

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 concrete triggering scenarios (carrier rate change, bulk service-level selection in a fulfilment workflow), which is clear positive guidance. It stops short of naming when NOT to use it or pointing at the bulk/individual update siblings as alternatives, so routing between them is left inferred.

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