Shippit MCP by usefulapi
Server Details
Get Shippit quotes, track and manage orders; create, label, book and cancel shipments on approval.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- Repository
- m190/usefulapi-mcp
- GitHub Stars
- 0
TDQS
Scored across 12 tools
Each tool targets a distinct action or resource in the Shippit lifecycle: create, label, book, cancel, quote, track, and account/settings reads. The create/label/book sequence could superficially overlap, but the descriptions explicitly distinguish the steps and their prerequisites. No two tools appear to do the same thing.
All tools use a consistent snake_case `shippit_verb_noun` pattern with a uniform server prefix. Minor noun pluralization differences (order vs. orders) are natural and do not undermine predictability.
Twelve tools is well-scoped for a domestic shipping API surface, covering the core order lifecycle plus supporting reads. There is no obvious filler or excessive breadth.
The order lifecycle is well covered from creation through labelling, booking, tracking, and cancellation, along with quotes and delivery estimates. The main gap is webhook management: only `list_webhooks` exists, with no create, update, or delete operations, and there is no order-list tool because Shippit itself lacks that endpoint.
Available Tools
12 toolsshippit_book_ordersBook orders with carriersADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | Must be true. Booking commits the orders to carrier pickup and charges; ask the user to confirm first. | |
| tracking_numbers | Yes | Tracking numbers of the labelled orders to book. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing partial-failure semantics (a wholly-failed call when a tracking number is unknown, per-order success/error in each manifest), the carrier-billing consequence ('the carrier then collects and bills the parcels'), the irreversibility of booking, and the rule that an all-failed reply is itself an error. This is exactly the extra context destructiveHint=true and non-idempotency cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the operation type and purpose in the first clause, then layers precondition, failure behavior, and irreversibility. Every sentence carries operational information; nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still explains what comes back (one manifest per carrier, per-order success/error) and how to interpret an all-failed response. For a destructive, non-idempotent write tool, that covers everything an agent needs before invoking it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters are documented there, including the confirm-must-be-true rule and the tracking-number format. The description's 'Requires confirm: true' largely restates the schema, and it adds no format or batching guidance beyond 'labelled orders', so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('book labelled orders with their carriers for pickup') and names the exact step in Shippit's workflow ('the Shippit book step'). The 'WRITE:' prefix immediately separates it from read tools and from shippit_label_order, which is the preceding step.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly states the precondition ('Orders must have been labelled first (shippit_label_order)'), which routes the agent to the correct prior sibling. It also warns that 'booked orders can no longer be edited' and that confirm must be obtained from the user. It doesn't explicitly contrast with shippit_cancel_order or state when booking is inappropriate, so it falls short of the full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shippit_cancel_orderCancel orderADestructiveIdempotentInspect
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}.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | Must be true. A cancelled order cannot be recovered; ask the user to confirm first. | |
| tracking_number | Yes | The Shippit tracking number of the order (returned by shippit_create_order; usually starts with PP). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: discloses that the order ends in an unrecoverable 'cancelled' state, that some carriers receive a cancellation request, that refusals surface as a 422 with a reason, and that the underlying call is DELETE /orders/{tracking_number}. This is exactly the operational context destructiveHint=true alone does not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight paragraph, front-loaded with the 'WRITE:' severity marker and ending with the HTTP verb and path. Every clause (irreversibility, carrier notification, 422 behavior, confirm gate) carries distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive two-parameter tool with no output schema, the description covers irreversibility, the confirmation requirement, failure semantics, and side effects on the carrier. Nothing an agent needs before calling is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with the confirm gate and tracking-number format already documented in the schema. The description only restates 'by tracking number' and 'Requires confirm: true', adding no new syntax or format detail, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('cancel a Shippit order by tracking number') plus the resulting state. No sibling tool in the list performs cancellation, so the definition stands alone unambiguously.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Makes the trigger condition clear (order must still be cancellable) and describes the failure path: a 422 with a reason once the carrier has the order. No alternatives exist among siblings to route to, so the only gap is the absence of explicit 'when-not-to-use' framing beyond the 422 case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shippit_create_orderCreate orderADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Your own labels for filtering. | |
| confirm | Yes | 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. | |
| parcels | Yes | The parcels (qty and weight are the minimum; leave qty out when you also send products). | |
| features | No | Carrier add-on services; some need prior approval from Shippit. | |
| products | No | Optional line items for the packing slip. | |
| validate | No | Reject the order if suburb and postcode do not match (default true). | |
| courier_type | No | Service level (default standard). Give this or courier_allocation. | |
| receiver_name | No | Name of the person receiving it, if different from the customer. | |
| customer_email | Yes | The customer's email (Shippit sends tracking notifications here unless suppressed). | |
| delivery_state | Yes | State. Australian orders use NSW, VIC, QLD, WA, SA, TAS, ACT or NT. | |
| customer_mobile | No | ||
| delivery_suburb | Yes | ||
| delivery_address | Yes | ||
| delivery_company | No | ||
| retailer_invoice | No | Your order number, printed on the label and packing slip. | |
| delivery_postcode | Yes | ||
| authority_to_leave | No | Whether the parcel may be left unattended. | |
| courier_allocation | No | A specific carrier keyword, e.g. CouriersPlease (see the Shippit carriers list). Instead of courier_type. | |
| customer_last_name | No | ||
| retailer_reference | No | ||
| customer_first_name | Yes | ||
| delivery_country_code | No | Two-letter country code (default: the merchant's home country, usually AU). | |
| delivery_instructions | No | Instructions for the driver, at most 55 characters. | |
| receiver_contact_number | No | ||
| suppress_communications | No | true = Shippit sends no tracking notifications to the customer for this order (default false: it does). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the destructive/non-idempotent annotations: Shippit allocates a carrier, emails the recipient tracking notifications unless suppressed, and "creating twice creates two orders" — a critical duplicate-creation warning aligned with idempotentHint=false. It also discloses that validate returns a suggested address on rejection.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the WRITE tag and the core action, then the booking-flow caveat, then validation and idempotency. Dense but every sentence carries operative information; only the repeated booking note feels slightly heavy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 25-param mutation with no output schema, the description covers the safety profile (confirm, duplicate risk), side effects (emails, carrier allocation), validation behavior, and scope exclusions (international). An agent has enough to call it safely without guessing about return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
At 64% schema coverage, the description earns credit by clarifying the courier_type vs courier_allocation mutual choice, confirm semantics, and that validate defaults to true. These are the highest-risk fields and the description explains them well beyond the schema's per-field text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource and scope: "WRITE: create a domestic shipping order in Shippit." It explicitly delineates against siblings by naming shippit_label_order and shippit_book_orders as the tools that later book standard/express/click-and-collect orders, and rules out priority/on-demand orders.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete preconditions and exclusions: requires confirm:true, international/customs orders are unsupported, and validation defaults reject mismatched suburb/postcode. It clearly routes post-create booking to shippit_label_order and shippit_book_orders. It stops short of describing when to prefer shippit_get_quotes or an upfront quoting flow before creating.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shippit_estimate_delivery_datesEstimate delivery datesARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| couriers | No | Carrier keywords to estimate for, e.g. CouriersPlease (default: all enabled). | |
| to_postcode | Yes | Destination postcode. | |
| from_postcode | Yes | Origin (pickup) postcode. | |
| service_levels | No | ||
| preparation_time | No | Lead time before pickup as DD:HH:MM, e.g. 01:05:30. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and destructiveHint=false. The description adds valuable behavioral context: it names the specific return fields (earliest, latest, confidence, ready-to-show text) and discloses the edge case of returning an empty list when no carrier is enabled. It does not mention rate limits or auth, but the annotation coverage reduces the burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and return shape are front-loaded in a dense but efficient opening sentence, followed by a concise edge-case note and the endpoint. No sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description appropriately explains the return structure and an important empty-list behavior. The only notable omission is preparation_time, which is covered in the schema, so the description is nearly complete for this read-only estimation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 80%, so the schema already documents most parameters. The description adds marginal meaning by indicating the optional courier restriction and service-level choices, but it does not mention preparation_time at all, leaving that schema-only. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb 'estimate' and resource 'delivery dates', with added detail about per-service-level windows. It does not explicitly distinguish itself from sibling shippit_get_quotes, which could cause confusion for an agent choosing between the two.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what the tool does but gives no explicit guidance on when to prefer it over alternatives like shippit_get_quotes. It also lacks prerequisites or exclusions, leaving usage context implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shippit_get_manifest_documentGet manifest documentARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| manifest_id | Yes | The Shippit manifest id (not the carrier's manifest number). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already establish read-only, non-destructive, open-world behavior. The description adds meaningful runtime details beyond that: the returned manifest contents, the pre-signed PDF URL validity period, and the 422 retry condition.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: it states the returned artifact first, then the input source, then the retry condition and endpoint. Every sentence adds operational value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with annotations and no output schema, the description supplies enough context to call it correctly: what it returns, where the id comes from, URL lifetime, and the retry behavior for 422. No important gap remains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the parameter is already well documented, including the distinction from the carrier's manifest number. The description still adds useful provenance by saying the manifest id comes from `shippit_book_orders` or `shippit_get_order`.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource (booking manifest document) and the key input (manifest id). It distinguishes this from sibling tools by naming the tools that produce the manifest id, so an agent can route correctly without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states where the manifest id comes from (`shippit_book_orders` or `shippit_get_order`) and gives a concrete retry instruction for the 422 generating state. It does not explicitly state when not to use it or name a direct alternative, but the usage context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shippit_get_merchantGet merchant accountARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful scope: it returns the merchant account tied to this API key and enumerates the fields returned, which is important because no output schema exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence plus the endpoint, front-loads the resource and returned fields, and contains no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read operation with annotations and no output schema, the field list gives the agent enough context about what will be returned. Nothing needed to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so parameter semantics are not a concern; the baseline score of 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the specific resource (the Shippit merchant account behind the API key) and enumerates the returned fields: store/company name, contact, preparation time, website, and pickup address with country. This clearly distinguishes it from order, tracking, and webhook siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied for retrieving the merchant/store profile associated with the current API key, but the description does not explicitly say when to use this tool versus alternatives or list any prerequisites beyond the API key context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shippit_get_operating_hoursGet store operating hoursARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds real value beyond them by specifying the shape of the returned data (per-weekday open flag, start/end of working day), which matters since there is no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence captures the return content and its purpose, followed by the endpoint path. The raw HTTP path adds little for an MCP consumer but costs only a few tokens, so it is not a meaningful defect.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters and no output schema, the description carries the return-value burden and does so at a reasonable level of detail (per weekday, open flag, start/end). Only finer details such as time format or timezone are omitted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters and the description correctly says nothing about inputs, so there are no parameter semantics to clarify. Baseline of 4 applies for a parameterless read.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the specific resource (per-weekday store operating hours with open flag, start and end) and adds the downstream purpose (pickup and delivery estimates). It is unambiguous about what is returned, though it does not explicitly contrast with siblings like shippit_estimate_delivery_dates, which consume this data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The mention that these are the hours Shippit uses for pickup and delivery estimates implies why an agent would fetch them, but there is no explicit when-to-use or when-not-to-use guidance, nor any stated prerequisites. Usage must be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shippit_get_orderGet orderARead-onlyInspect
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}.
| Name | Required | Description | Default |
|---|---|---|---|
| tracking_number | Yes | The Shippit tracking number of the order (returned by shippit_create_order; usually starts with PP). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered; the description adds real value by disclosing the exact payload contents, including that manifest id/number only appear once booked. It does not discuss error behavior for an unknown tracking number.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and field list, then the negative-scope note. The trailing 'GET /orders/{tracking_number}' endpoint string is redundant filler for an agent that already has the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the enumeration of returned fields carries the burden well, and the booking-state caveat on manifest fields prevents false expectations. Only failure modes and format details are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and already documents the tracking number format and origin, so the description adds nothing new beyond repeating 'by tracking number'. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (retrieve a single Shippit order) and enumerates exactly which fields come back. It also explicitly notes there is no list-orders endpoint, which cleanly separates it from the listing-style siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The note that no list-orders endpoint exists tells the agent this is the only lookup path, and the tracking_number requirement makes the prerequisite clear. It does not, however, contrast itself with shippit_get_tracking, which an agent could easily confuse it with.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shippit_get_quotesGet shipping quotesARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| parcels | Yes | The parcels to quote. | |
| features | No | Carrier add-on services, e.g. white_glove. | |
| order_date | No | Delivery date, yyyy-mm-dd (required for priority quotes). | |
| dropoff_state | No | State. Australian orders use NSW, VIC, QLD, WA, SA, TAS, ACT or NT. | |
| dropoff_suburb | Yes | ||
| service_levels | No | Only quote these service levels. | |
| dropoff_address | No | Street address (required for on-demand quotes). | |
| dutiable_amount | No | Declared customs value (required for international quotes). | |
| dropoff_postcode | Yes | ||
| product_currency | No | ||
| return_all_quotes | No | Return the quotes of all carriers (default: only the cheapest or fastest). | |
| authority_to_leave | No | Whether the parcel may be left unattended. | |
| dropoff_country_code | No | Two-letter country code (default: the merchant's home country, usually AU). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld annotations, it discloses the non-obvious response contract: a 200 can contain per-carrier errors with success false, and a quote of 0 means the carrier cannot take the parcel. It also states the side-effect profile (no booking, no charge) and a hard input limitation (dangerous goods), which is exactly the context annotations cannot carry given there is no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five short sentences, front-loaded with what the tool does and does not do, then the toggle, then the response caveats. Every sentence carries information an agent would otherwise have to infer.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Strong for a 13-parameter, no-output-schema tool: it covers the mutation-free nature and the error/zero-quote return semantics. It leaves the conditional parameter requirements (priority/on-demand/international) to the schema, so an agent must still read the schema to know which optional fields become mandatory.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 77%, so the schema already documents most parameters. The description's only parameter-level contribution — return_all_quotes defaulting to cheapest or fastest — largely restates the schema's own description, and it adds no guidance on service_levels, features, or the conditional requirements (order_date for priority, dropoff_address for on-demand, dutiable_amount for international).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('ask the carriers for a price and delivery estimate') plus the resource and scope ('for given parcels', 'to a destination'). Clearly separable from siblings like shippit_book_orders and shippit_create_order, which perform the mutation this tool deliberately does not.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly frames the tool as a pre-booking enquiry ('Nothing is booked and nothing is charged'), which tells an agent when to reach for it versus the booking siblings, and gives a toggle ('Set return_all_quotes to see every carrier'). It adds one real exclusion ('Dangerous goods cannot be quoted') but never names a sibling as an alternative, so it stops short of full when/when-not routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shippit_get_trackingGet order trackingARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tracking_number | Yes | The Shippit tracking number of the order (returned by shippit_create_order; usually starts with PP). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context by specifying the returned fields (status, date, time, who changed it) and the public tracking URL, which also aligns with openWorldHint=true.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence naming the returned data, followed by a compact endpoint reference. Every element earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with one parameter and no output schema, the description adequately covers what is returned. It could be slightly fuller about the structure of the status history or pagination, but nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the single tracking_number parameter is already fully described in the schema. The description only references it via the endpoint path and adds no format or constraint details beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the resource: an order's status history and its public tracking URL. It is specific about what is returned, though it does not explicitly distinguish this from the sibling shippit_get_order tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'to give the recipient' implies a customer-facing use case, but there is no explicit guidance on when to use this versus shippit_get_order or other order-related siblings, nor any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shippit_label_orderLabel orderAIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tracking_number | Yes | The Shippit tracking number of the order (returned by shippit_create_order; usually starts with PP). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare the generic mutation profile (readOnlyHint=false, idempotentHint=true, destructiveHint=false, openWorldHint=true). The description adds the specific side effect (carrier and price are finalised, order transitions to Ready to Ship), the return payload (carrier, tracking, consignment, pre-signed PDF URLs valid 7 days), and a concrete failure semantic for 422. That is meaningful context beyond the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with a 'WRITE:' marker, then purpose, then behaviour, then error handling, then the endpoint. No sentence is redundant — each adds a distinct fact an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the return burden and does so (carrier, tracking, consignment, three document URLs with a 7-day validity). Mutation effects and the 422 recovery path round out everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With a single parameter at 100% schema description coverage, the schema already explains that tracking_number comes from shippit_create_order and usually starts with PP. The description adds only the URL-path binding, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with an explicit verb and resource ("confirm an order for shipping and fetch its label") and pins down the exact domain step. The closing endpoint reference (GET /orders/{tracking_number}/label) and the note that it precedes shippit_book_orders make it unambiguous against the eleven siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear sequencing guidance — this is the 'label' step, and labelling comes before shippit_book_orders — plus an explicit recovery path for the 422 case. It does not state when to avoid calling it (e.g. before a quote exists, or on an already-labelled order), so it falls short of full when/when-not coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shippit_list_webhooksList webhooksARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, openWorld and non-destructive, so the safety bar is low, but the description still adds real context: the 6-webhook cap, the fact that custom header values are masked by Shippit, and the meaning of the returned flags. It doesn't say whether unauthenticated or scope-limited callers get an error, which keeps it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence front-loads the resource and then lists the payload fields, followed by the endpoint path. No filler and nothing repeated from structured fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of describing the return value and does so by enumerating the fields plus the 6-item cap, which also removes any pagination question. Minor gaps remain around error/auth behavior and the exact response envelope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so there is nothing to disambiguate and the baseline of 4 applies. The description correctly describes only the response fields rather than inventing inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the resource concretely ('tracking webhooks configured on the account') and even enumerates what each entry exposes (url, triggering order states, hidden-detail flags, enabled). The verb is implied by the noun phrase rather than stated, but no sibling tool could be confused with it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance is given, and no alternative tool is named. With zero parameters and a single-purpose read endpoint, the intended use is strongly implied, so this is adequate rather than misleading.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
12 tool updates
- First observed
shippit_book_orders - First observed
shippit_cancel_order - First observed
shippit_create_order - First observed
shippit_estimate_delivery_dates - First observed
shippit_get_manifest_document - First observed
shippit_get_merchant - First observed
shippit_get_operating_hours - First observed
shippit_get_order - First observed
shippit_get_quotes - First observed
shippit_get_tracking - First observed
shippit_label_order - First observed
shippit_list_webhooks
Related MCP Connectors
Read Starshipit orders, tracking, rates and manifests; create and update unshipped orders.
Compare rates, manage orders, buy labels, schedule pickups, and report on shipping.
- ZippendoOAuthcom.zippendo
Manage orders, book shipments, print labels and track parcels with PostNord, GLS, Bring and DHL.
1 Real-time order tracking for Shopify merchants: look up, list, and refresh shipments.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables interaction with Shiprocket shipping services to check courier rates and delivery times, create and manage orders, ship packages, track shipments, and schedule pickups through natural language commands.2 npm29ISC
- AlicenseAqualityDmaintenanceManage shipping workflows by creating labels, tracking packages, and scheduling carrier pickups. Compare live rates from major carriers like FedEx and UPS to optimize costs for every shipment. Organize logistical operations with a centralized address book and detailed shipping analytics.189 npm1MIT
- AlicenseNot gradedqualityDmaintenanceEnables courier rate checks, order management, shipping, and tracking via Shiprocket's API through natural language.2 npmISC
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to buy, track, and refund Australian shipping labels (Aramex, etc.) via the Shippo API, with automatic cheapest-rate selection and no carrier contract required.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.