ActionShip by Teapplix Demo
Server Details
Multi-carrier shipping functionality with built-in, discounted carrier accounts. Compare rates, generate PDF shipping labels, schedule pickups and track packages in automated way or in your chatbox, no coding required. This is a demo server that is functional with no account needed and no auth. For production use please find our production version.
- Status
- Healthy
- Uptime
- 99.9% over 78 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 32 tools
Most tools target distinct resource+action pairs, but several clusters overlap: set_order_ship_options vs. update_order.Options (descriptions even point at each other circularly for insurance), manage_order_tags vs. manage_tag, and split_order vs. split_order_cont. The manage_* vs. get_* resource pairs are readable, but the ship-options trio will likely cause misselection.
Consistent teapplix_ prefix and snake_case throughout, with clear verb_noun forms (get_*, purchase_*, split_*). However, CRUD is inconsistent: orders use create_order/update_order while other resources use manage_queue/manage_tag/manage_warehouse/manage_shipping_profile, and the get/manage pairs mismatch in number (get_queues vs. manage_queue, get_tags vs. manage_tag).
32 tools is on the heavy side and exceeds the comfortable 3-15 range, but the domain is genuinely broad (orders, rates, labels, manifests, warehouses, queues, tags, profiles, 3PL, splits). Each tool has a defensible role, though a few (split_order_cont, generate_sscc_label) are niche.
Strong lifecycle coverage: order create/get/update, split/revert, packing plans, tagging, review, rates, label purchase/cancel, manifests, 3PL submission, tracking, and address validation. Gaps exist — no order cancel/delete, no way to list/inspect already-purchased labels or packing plans — but these are workable around.
Available Tools
32 toolsteapplix_apply_packing_planApply Packing PlanBDestructiveInspect
Apply packing plan to one or more orders. Adds extra packages or splits orders based on the packing plan configuration. [DEMO]
| Name | Required | Description | Default |
|---|---|---|---|
| TxnIds | Yes | One or more Teapplix order IDs to apply the packing plan to. |
Output Schema
| Name | Required | Description |
|---|---|---|
| OrdersResult | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the agent knows this is a mutating operation. The description adds that it 'adds extra packages or splits orders', which provides some behavioral context. However, it does not disclose reversibility, side effects on labels or inventory, or any error conditions. The description adds moderate value beyond annotations.
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 concise and front-loaded: the first sentence states the primary action, and the second sentence explains the effect. The '[DEMO]' suffix is minor noise but not redundant. Overall, it is appropriately sized with no wasted words.
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 one well-documented parameter, high schema coverage, an output schema, and annotations providing the destructive hint, the description is adequate but not thorough. It does not explain what a packing plan is, when it is available, or whether the operation is reversible—though the annotations partially cover the risk. The description is minimally complete for a simple tool, but leaves room for more context.
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% for the single parameter TxnIds, which has a clear description. The tool description adds no extra parameter semantics beyond what the schema provides. Baseline of 3 is appropriate since the schema fully documents the parameter.
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 tool's function: applying a packing plan to one or more orders, and specifies the effects (adds extra packages or splits orders). This is a specific verb+resource combination, but it does not explicitly differentiate from sibling tools like split_order or revert_split_order, which could overlap in functionality.
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 provides no explicit guidance on when to use this tool versus alternatives. It does not mention prerequisites, exclusions, or alternatives (e.g., using split_order for manual splitting). The usage context is only implied by the function name and description, which is insufficient for an AI agent to decide between this and related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
teapplix_cancel_labelCancel Shipping LabelADestructiveInspect
Cancel a purchased shipping label. Provide one of: TxnId (cancels all labels for the order), ClientRequestId, or TrackingNumber+TrackingCarrier. [DEMO]
| Name | Required | Description | Default |
|---|---|---|---|
| Force | No | Mark order as unshipped even if FedEx/UPS cancellation fails. | |
| TxnId | No | Cancel all labels for this order ID. If the order has extra packages, all are cancelled. | |
| TrackingNumber | No | Cancel by tracking number. Use together with TrackingCarrier. | |
| ClientRequestId | No | Cancel by client request ID (used when the label was purchased via PurchaseLabel without an order). | |
| TrackingCarrier | No | Carrier name for tracking-number cancellation (e.g. UPS, FedEx, USPS). |
Output Schema
| Name | Required | Description |
|---|---|---|
| Status | No | |
| Message | No | |
| Success | No | |
| Description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, covering the safety profile. The description adds that TxnId cancels all labels for the order, which is a useful behavioral consequence beyond a single label. However, it doesn't disclose failure modes or the Force parameter's effect on unshipped status. With annotations present, this is adequate but not rich.
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 two sentences, front-loaded with the action, followed by clear selection guidance. It contains zero redundant information and is efficiently structured.
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 5 parameters, no required fields, and an output schema, the description covers the essential selection logic. It doesn't mention the Force parameter or cancellation failure behavior, but these are documented in the schema and annotations. For a cancellation tool, this is reasonably complete.
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 baseline is 3. The description adds value by grouping parameters into mutually exclusive alternatives and noting that TxnId cancels all labels, reinforcing schema semantics. This selection logic is not explicitly encoded in the schema, so the description enhances parameter understanding.
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 states 'Cancel a purchased shipping label' with a specific verb and resource, clearly distinguishing it from sibling tools like purchase_label and track. The action and target are unambiguous.
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 provides explicit selection guidance: 'Provide one of: TxnId, ClientRequestId, or TrackingNumber+TrackingCarrier.' This tells the agent exactly how to invoke the tool, though it doesn't explicitly compare with alternatives like purchase_label or track. The context is clear enough for correct usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
teapplix_create_manifestCreate Carrier ManifestAInspect
Create a carrier manifest / SCAN form for a list of orders. The base64-encoded PDF is returned in PickupDocument. [DEMO]
| Name | Required | Description | Default |
|---|---|---|---|
| Force | No | Include orders already added to a prior manifest. Default: false. | |
| TxnIds | Yes | Order IDs to include in the manifest. | |
| Provider | No | Label provider. Default: TEAPPLIX. | |
| AirwayBillId | No | Carrier-specific airway bill ID (if required by the carrier). |
Output Schema
| Name | Required | Description |
|---|---|---|
| Status | No | |
| Message | No | |
| Success | No | |
| Warnings | No | |
| PickupDocument | No | Base64-encoded SCAN form / pickup manifest PDF. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-read-only, non-destructive, and non-idempotent behavior. The description adds valuable context: it reveals the output is a base64-encoded PDF returned in "PickupDocument." It also clarifies the tool creates a manifest (a side effect), aligning with the create semantics. No contradiction with annotations.
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 two sentences (plus a [DEMO] marker), front-loads the core purpose, and every clause provides useful information. It avoids redundancy and is appropriately sized for the tool's complexity.
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?
Given the output schema, annotations, and full parameter descriptions, the description is largely sufficient. It covers the essential purpose and return format. It lacks explicit usage context (e.g., when a manifest is needed, how to obtain PickupDocument) but this is not critical given the structured data. Overall, the description is complete for a straightforward creation 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 100%: all four parameters (TxnIds, Force, Provider, AirwayBillId) have descriptions in the schema. The tool description does not add parameter-level information, so baseline 3 is appropriate since the schema fully handles parameter semantics.
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 uses the specific verb "Create" with a clear resource "carrier manifest / SCAN form" and scope "for a list of orders." This directly distinguishes it from sibling tools like teapplix_purchase_label or teapplix_get_orders by describing a distinct operation.
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 "for a list of orders" implies the tool should be used when generating a manifest from order IDs, but it does not explicitly state when to use this tool versus alternatives, nor does it mention exclusions or prerequisites. No alternative tools are named, giving only implied context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
teapplix_create_orderCreate OrdersCDestructiveInspect
Create one or more orders in Teapplix. Per-row Status is one of: Accepted, Declined, Exists. [DEMO]
| Name | Required | Description | Default |
|---|---|---|---|
| Orders | Yes | Array of order objects to create. | |
| Operation | No | Operation type. Defaults to Submit when omitted. |
Output Schema
| Name | Required | Description |
|---|---|---|
| OrdersResult | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and readOnlyHint=false, so the description doesn't need to reiterate that this is a write operation. However, it adds only 'Per-row Status is one of: Accepted, Declined, Exists' and '[DEMO]'—neither of which discloses side effects, idempotency, or failure modes. This is minimal value beyond the annotations.
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 very concise and front-loads the main purpose in one sentence. The inclusion of the per-row status and '[DEMO]' adds minor extra information but is still efficient and not bloated.
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?
Given the extremely rich input schema, annotations, and presence of an output schema, the description is minimally sufficient for understanding what the tool does. However, it lacks usage guidelines and any behavioral context beyond the raw create action, making it adequate but with clear gaps.
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%, with all parameters fully described in the input schema. The description adds no parameter-level meaning beyond the schema, so the baseline score 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?
The description clearly states the tool's function: 'Create one or more orders in Teapplix.' This is a specific verb (create) and resource (orders). While it doesn't explicitly differentiate from sibling teapplix_update_order, the 'create' verb and mention of 'one or more' sufficiently convey the core purpose.
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 provides no guidance on when to use this tool versus alternatives like teapplix_update_order or teapplix_purchase_label. It lacks any mention of prerequisites, exclusions, or scenarios where a different tool would be preferred, so the agent is left without contextual usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
teapplix_generate_sscc_labelGenerate SSCC Pallet LabelAInspect
Generate an SSCC (Serial Shipping Container Code) pallet label for bulk B2B shipments to distributors or 3PL warehouses. Used for EDI retailer orders (e.g. Home Depot, Walmart) that require GS1-compliant container labels, not for individual consumer orders. [DEMO]
| Name | Required | Description | Default |
|---|---|---|---|
| TxnIds | Yes | Order IDs to generate SSCC labels for. | |
| ProfileId | Yes | Shipping profile ID to use for label generation. | |
| ForceRegen | No | Force re-generation even if a label already exists. Default: false. |
Output Schema
| Name | Required | Description |
|---|---|---|
| Status | No | |
| Message | No | |
| Results | No | |
| Document | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since annotations are generic (all false) with no readOnly or destructive hints, the description carries the full burden for behavioral disclosure. It mentions 'Generate' but does not disclose side effects such as order status changes, costs, or implications of ForceRegen beyond what the schema states. This is a gap for a write operation.
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 two sentences that are well-structured and front-loaded: the first states the core function, the second adds crucial context. The [DEMO] tag is extra but not distracting. Every sentence earns its place without 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?
Given the presence of a full output schema and complete parameter descriptions, the description provides sufficient context for basic invocation. It covers the main use case and exclusions but omits side-effect caveats, which are relevant but covered under behavioral transparency.
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 input schema already includes detailed descriptions for all three parameters (TxnIds, ProfileId, ForceRegen) with 100% coverage. The description adds no additional parameter-specific meaning, so it relies on the schema as the baseline.
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 'Generate an SSCC pallet label' and specifies the exact use case ('bulk B2B shipments', 'EDI retailer orders') with concrete examples (Home Depot, Walmart). It distinguishes itself from sibling label tools by explicitly noting it is 'not for individual consumer 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?
The description gives explicit when-to-use ('bulk B2B shipments to distributors or 3PL warehouses', 'EDI retailer orders that require GS1-compliant container labels') and when-not-to-use ('not for individual consumer orders'). However, it does not name a specific alternative sibling tool, so it does not fully meet the 'alternatives' criterion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
teapplix_get_ordersGet OrdersARead-onlyInspect
Download / query orders from Teapplix. At least one of the following is required: TxnId, QueueId, Tag, SeqStart, SeqEnd, PaymentDateStart, PaymentDateEnd, UpdateDateStart, UpdateDateEnd, ShipDateStart, ShipDateEnd, or Shipped=0. IMPORTANT: results are paginated — loop through all pages using PageNumber until PageNumber >= Pagination.TotalPages. [DEMO]
| Name | Required | Description | Default |
|---|---|---|---|
| Tag | No | Filter by order tag name. Comma-separate multiple names (e.g. "urgent,vip") to match orders with any of those tags. | |
| TxnId | No | Unique Teapplix order ID. Use to fetch a single order. | |
| SeqEnd | No | TxnSequence <= this value (inclusive). | |
| Combine | No | Combined-order handling. Default: combine. | |
| Invoice | No | Marketplace order number / invoice number. | |
| QueueId | No | Queue ID. 0 = Normal queue. | |
| Shipped | No | 0 = unshipped/open orders only; 1 = shipped orders only. | |
| PageSize | No | Records per page (default 100, max 1000). Use PageSize=1000 to minimize round-trips when iterating all pages. | |
| SellerId | No | eBay username or Amazon merchant ID. | |
| SeqStart | No | TxnSequence >= this value (inclusive). Ideal for incremental polling. | |
| StoreKey | No | 3-letter cart prefix, or 2-letter country code for Amazon. | |
| StoreType | No | Marketplace type, e.g. ebay, amazon, walmart, shopify. | |
| PageNumber | No | Page number, 1-indexed. Response includes data.Pagination.TotalPages — iterate from PageNumber=1 up to TotalPages to retrieve all orders. Response orders are in data.Orders array. | |
| DetailLevel | No | Additional data: none, shipping, inventory, dropship, marketplace. Pipe-separate multiple values. | |
| ShipDateEnd | No | Ship date <= value (YYYY/MM/DD). Interpreted as Pacific timezone. | |
| WarehouseId | No | Filter by warehouse ID. | |
| PaymentStatus | No | Filter by payment status. | |
| ShipDateStart | No | Ship date >= value (YYYY/MM/DD). Shipped orders only. Interpreted as Pacific timezone. | |
| UpdateDateEnd | No | LastUpdateDate <= value (YYYY/MM/DD). Interpreted as Pacific timezone. | |
| PaymentDateEnd | No | Payment date <= value (YYYY/MM/DD). Interpreted as Pacific timezone. | |
| UpdateDateStart | No | LastUpdateDate >= value (YYYY/MM/DD). Interpreted as Pacific timezone. | |
| PaymentDateStart | No | Payment date >= value (YYYY/MM/DD). Interpreted as Pacific timezone. |
Output Schema
| Name | Required | Description |
|---|---|---|
| Orders | No | |
| Pagination | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the read-only nature is known. The description adds valuable behavioral context: the requirement for at least one filter and the pagination loop (PageNumber until >= TotalPages), which are not derivable from annotations. This goes beyond the structured metadata.
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 concise and front-loaded with the main purpose. The list of acceptable filter parameters is necessary and not wasteful. The 'IMPORTANT' pagination note is a useful highlight. The trailing '[DEMO]' is minor noise but doesn't detract significantly.
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?
Given the tool's complexity (22 parameters) and the presence of an output schema, the description covers the two most critical operational aspects: mandatory filter requirement and pagination. It doesn't need to explain return structure since the output schema exists. This is adequate and complete for safe invocation.
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%, so the baseline is 3. The description adds cross-parameter semantics by enumerating which parameters can satisfy the 'at least one required' constraint, and clarifies pagination parameters' relationship. This is meaningful additive value beyond individual schema descriptions.
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 tool's function: 'Download / query orders from Teapplix.' This is a specific verb+resource combination that distinguishes it from sibling tools like teapplix_create_order, teapplix_update_order, and teapplix_manage_order_tags. The scope is unambiguous.
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 provides clear usage context by specifying that at least one of several filters is required (TxnId, QueueId, Tag, etc.) and gives explicit pagination instructions. It doesn't explicitly mention alternatives or when-not-to-use, but the required-filter condition is strong guidance for correct invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
teapplix_get_order_ship_optionsGet Order Shipping OptionsARead-onlyInspect
Retrieve the current shipping options for an order. By default returns carrier-agnostic fields (InsuranceType, Delivery.Signature, Delivery.Residential). Pass DetailLevel="carrier" to receive the full carrier-specific Options tree. Returns HTTP 409 for cancelled or split orders. [DEMO]
| Name | Required | Description | Default |
|---|---|---|---|
| TxnId | Yes | Teapplix order ID to retrieve options for. | |
| DetailLevel | No | Pass "carrier" to receive the full carrier-specific Options tree. Default returns only carrier-agnostic fields (Delivery, InsuranceType). |
Output Schema
| Name | Required | Description |
|---|---|---|
| TxnId | No | |
| Options | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds concrete behavioral details beyond the read-only annotation: it specifies the default fields (InsuranceType, Delivery.Signature, Delivery.Residential), the carrier-specific Options tree via DetailLevel, and the HTTP 409 error for cancelled/split orders. This enriches the agent's understanding of the tool's behavior.
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 two compact sentences with the main action first, followed by optional behavior and an error condition. No wasted words.
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?
Given the tool's simplicity (one required param, optional detail level), the presence of an output schema, and readOnly annotation, the description covers the essential behavioral facts including an error case. It is complete for agent use.
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 schema already covers both parameters with clear descriptions (100% coverage). The description adds a bit more specificity on field names but doesn't introduce new semantics beyond the schema. Baseline for high schema coverage is 3.
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 uses 'Retrieve' as a specific verb and 'current shipping options for an order' as the resource, clearly distinguishing it from sibling tools like teapplix_set_order_ship_options, which modifies options.
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 default behavior and the DetailLevel parameter for carrier-specific options, and notes the HTTP 409 condition for cancelled or split orders, providing clear usage context. It doesn't explicitly name alternatives, but the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
teapplix_get_queuesGet Order QueuesARead-onlyInspect
List order queues, optionally filtered by QueueId, QueueName, QueueType, or WarehouseId/WarehouseName. Queues group orders by warehouse and shipping profile. [DEMO]
| Name | Required | Description | Default |
|---|---|---|---|
| QueueId | No | Filter by queue ID. | |
| QueueName | No | Substring filter by queue name. | |
| QueueType | No | Filter by queue type. | |
| WarehouseId | No | Filter by warehouse ID. | |
| WarehouseName | No | Filter by warehouse name. |
Output Schema
| Name | Required | Description |
|---|---|---|
| Queues | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds the semantic role of queues (warehouse/shipping-profile grouping), but says nothing about pagination, result volume, or auth needs; the '[DEMO]' tag is unexplained and adds ambiguity rather than context.
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?
Two compact sentences front-load the core action and filters, with no wasted prose. The trailing '[DEMO]' marker is the only element of unclear 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?
Return values are covered by the existing output schema, so the description needn't explain them. For a simple filtered-list tool, what remains is a minor gap around paging and the meaning of the DEMO tag.
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%, so each of the five filters is already documented in the schema. The description restates the filter names without adding format details (e.g., substring semantics for QueueName, which the schema covers), 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 clear verb+resource ('List order queues') and enumerates the filterable fields, so an agent can tell this is a read/list operation. It doesn't explicitly differentiate from the sibling teapplix_manage_queue, leaving that inference to the agent.
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 implies usage by noting filters are optional and explaining that queues group orders by warehouse and shipping profile, but gives no explicit when-to-use/when-not guidance or pointer to teapplix_manage_queue for creation/modification.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
teapplix_get_ratesGet Shipping RatesBRead-onlyInspect
Get shipping rates for a shipment without an existing order. [DEMO]
| Name | Required | Description | Default |
|---|---|---|---|
| To | Yes | Destination address. | |
| From | Yes | Ship-from address OR a saved shipping profile — supply exactly one shape. | |
| Packages | Yes | One or more packages to rate. Each package must include Method; Weight and Dimensions set the package size for the rate query. All packages must use the same carrier. To compare carriers, prefer a RATESHOP method; otherwise make separate calls per carrier. | |
| Provider | No | Force the rate source. MARKETPLACE = rate through the marketplace's carrier accounts at marketplace-negotiated rates (e.g. Amazon Buy Shipping, Walmart shipping programs — same carriers like UPS/FedEx/USPS but at the marketplace's rates); NATIVE = rate through the seller's own carrier account from the shipping profile. When omitted on a RATESHOP method, the API automatically compares both marketplace and native rates and returns the cheapest — check Rate.Provider in the response to see which source won (marketplace name like "amazon" if marketplace, absent if native). When omitted on a direct method, uses whichever provider is configured on the profile. To explicitly compare marketplace vs native rates, make two identical calls differing only in Provider. | |
| ShipDate | No | Ship date (YYYY-MM-DD). Defaults to today. Interpreted as Pacific timezone. | |
| CustomsDeclaration | No | International shipments only. Omit unless shipping outside US. Fields: ReasonForExport, IOssNumber, Items: [{Description, Quantity, Value, Weight, HSTariffNumber, CountryOfOrigin}]. |
Output Schema
| Name | Required | Description |
|---|---|---|
| Rate | No | Rate for the requested method. If present with Error set, the method is unavailable on this route (Transportation=0) — treat as a failure. If absent, the requested method failed — inspect AltRates for carrier suggestions. For RATESHOP, this is the winning (lowest-cost) candidate. |
| Zone | No | Carrier zone for the selected rate (e.g. "3"). |
| AltRates | No | Carrier-provided alternate quotes. May appear alongside a successful Rate (carrier suggestions) or without Rate (requested method failed). Items with Error set are methods the carrier could not quote. For RATESHOP, all non-winning evaluated candidates — valid higher-cost quotes and failed methods. |
| Warnings | No | Warnings about the rate response. When the main Rate has Error set (service unavailable), Warnings contains the specific reason the carrier cannot service this route. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds the useful behavioral fact that no pre-existing order or state is required, but the '[DEMO]' marker is unexplained — an agent cannot tell whether it means sandbox data, a demo carrier account, or a deprecated tool, which introduces ambiguity rather than clarity.
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?
Two short fragments, front-loaded with the core action and scope — nothing padded. The trailing '[DEMO]' is unexplained noise that slightly dilutes an otherwise tight definition.
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 tool with 6 params, nested address/package objects, an enum, and an output schema, the description covers only the purpose and the no-order scope; carrier-consistency, RATESHOP vs direct methods, and Provider behavior live entirely in the schema. Because the output schema exists, return values needn't be explained, but the description is thinner than the tool's complexity warrants.
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 the nested From/To/Packages/Provider/ShipDate fields are all richly documented in the schema itself, so the baseline of 3 applies. The description contributes no additional parameter meaning, but it also loses nothing since the schema carries the load.
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 ('Get shipping rates') and adds a scoping qualifier ('for a shipment without an existing order') that separates it from the sibling get_rates_for_order. It stops short of naming the sibling explicitly, so the differentiation is implicit rather than spelled out.
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 'without an existing order' implies the selection rule: use this when no order exists, use get_rates_for_order otherwise. There is no explicit 'use X instead when...' statement, and nothing says what to do when an order does exist or how this relates to get_order_ship_options or purchase_label.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
teapplix_get_rates_for_orderGet Shipping Rates for OrderARead-onlyInspect
Get shipping rates for an existing Teapplix order. Requires TxnId, From (ship-from address or profile), and a Packages array (each package must include Method; Weight and Dimensions default to the order's stored values if omitted). [DEMO]
| Name | Required | Description | Default |
|---|---|---|---|
| From | Yes | Ship-from address OR a saved shipping profile — supply exactly one shape. | |
| TxnId | Yes | Teapplix order ID. | |
| Options | No | Advanced, rarely used. Omit unless the user explicitly requests features such as signature confirmation, insurance type, COD, etc. | |
| Packages | Yes | One or more packages to rate. Each package must include Method; Weight and Dimensions default to the order's stored values if omitted. All packages must use the same carrier. To compare carriers, prefer a RATESHOP method; otherwise make separate calls per carrier. | |
| Provider | No | Force the rate source. MARKETPLACE = rate through the marketplace's carrier accounts at marketplace-negotiated rates (e.g. Amazon Buy Shipping, Walmart shipping programs — same carriers like UPS/FedEx/USPS but at the marketplace's rates); NATIVE = rate through the seller's own carrier account from the shipping profile. When omitted on a RATESHOP method, the API automatically compares both marketplace and native rates and returns the cheapest — check Rate.Provider in the response to see which source won (marketplace name like "amazon" if marketplace, absent if native). When omitted on a direct method, uses whichever provider is configured on the profile. | |
| ShipDate | No | Ship date (YYYY-MM-DD). Defaults to today. Interpreted as Pacific timezone. | |
| CustomsDeclaration | No | International shipments only. Omit unless shipping outside the domestic country. Fields: ReasonForExport, IOssNumber, Items: [{Description, Quantity, Value, Weight, HSTariffNumber, CountryOfOrigin}]. |
Output Schema
| Name | Required | Description |
|---|---|---|
| Rate | No | Rate for the requested method. If present with Error set, the method is unavailable on this route (Transportation=0) — treat as a failure. If absent, the requested method failed — inspect AltRates for carrier suggestions. For RATESHOP, this is the winning (lowest-cost) candidate. |
| Zone | No | Carrier zone for the selected rate (e.g. "3"). |
| AltRates | No | Carrier-provided alternate quotes. May appear alongside a successful Rate (carrier suggestions) or without Rate (requested method failed). Items with Error set are methods the carrier could not quote. For RATESHOP, all non-winning evaluated candidates — valid higher-cost quotes and failed methods. |
| Warnings | No | Warnings about the rate response. When the main Rate has Error set (service unavailable), Warnings contains the specific reason the carrier cannot service this route. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety profile. The description adds one genuinely useful behavioral flag, the '[DEMO]' marker, plus the note that Weight/Dimensions silently fall back to stored order values. It says nothing about latency, rate-limiting, or how failed carrier lookups behave.
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?
Three tight sentences with the resource named first and the required inputs following; nothing is padding. The trailing '[DEMO]' tag is terse but its meaning is unexplained, slightly weakening the structure.
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 an output schema present and full parameter coverage in the schema, the description need not explain return values or optional fields, and it correctly front-loads the three required inputs. Its one real gap is the unresolved overlap with the sibling teapplix_get_rates tool, which the description never addresses.
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%, so the schema already documents every parameter exhaustively, including the defaulting behavior the description restates. The description adds no syntax, format, or constraint detail beyond what the schema provides, so the baseline of 3 is correct.
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 ('Get shipping rates for an existing Teapplix order'), which distinguishes it from the bare rate tool by anchoring it to an order. However, it never names teapplix_get_rates or teapplix_get_order_ship_options, so the agent must infer the boundary rather than being told.
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 enumerates required inputs (TxnId, From, Packages) which implies usage 'when you have an existing order', but gives no explicit when-to-use vs. when-not guidance and no routing to the sibling rate/ship-option tools. Rich guidance about Method, RATESHOP, and Provider lives in the schema rather than the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
teapplix_get_ship_methodsGet Shipping MethodsARead-onlyInspect
Returns supported shipping method constants, carrier, and package type. The Name field is the value to use in Packages[].Method for rate quotes and label purchase. Common examples: USPS_PRIORITY_PACKAGE, USPS_GROUND_ADVANTAGE. Call with no parameters for all 200+ methods; filter by Carrier (USPS, FEDEX, UPS, etc.) for a shorter list. [DEMO]
| Name | Required | Description | Default |
|---|---|---|---|
| Carrier | No | Filter by carrier (e.g. FEDEX, UPS, USPS, DHLEC, DHLE, ONTRAC, RATESHOP). | |
| PackageType | No | Filter by package category: "envelope" for letter/flat services, "package" for all others. |
Output Schema
| Name | Required | Description |
|---|---|---|
| Methods | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description does not contradict that. The description adds valuable context beyond the annotation by disclosing data scale (200+ methods), the meaning of the Name field as a constant to consume, and filterability. This goes beyond the minimal read-only hint.
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 consists of three sentences that front-load the primary purpose, then provide usage examples and the calling pattern. Every sentence earns its place, and the '[DEMO]' marker is a minimal but relevant note. No redundancy or 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?
Given the tool's simplicity (no required parameters, output schema present), the description is complete. It tells the caller how to invoke (no-args vs filter), what the output represents (constants for Method), and the scale (200+ methods). Nothing essential is missing for a read-only lookup of this type.
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%: Carrier has examples, PackageType has enum and explanation. The description does not add meaning beyond the schema; it only restates the Carrier filter option and mentions scale. This matches the baseline 3 for full schema coverage.
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 explicitly states the tool 'Returns supported shipping method constants, carrier, and package type,' which is a specific verb+resource that distinguishes it from sibling tools like get_rates (pricing) and get_order_ship_options (order-specific options). It further clarifies the purpose by explaining that the Name field is used in Packages[].Method for rate quotes and label purchase.
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 provides explicit usage instructions: 'Call with no parameters for all 200+ methods; filter by Carrier (USPS, FEDEX, UPS, etc.) for a shorter list.' It also ties the output to a concrete downstream use case. However, it does not explicitly name alternative tools or when-not-to-use scenarios, so it does not fully meet the 5-level criterion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
teapplix_get_shipping_profilesGet Shipping ProfilesARead-onlyInspect
List shipping profiles, optionally filtered by ProfileId, ProfileName, or Active status. Profiles define shipper address, return address, and carrier credentials for label generation. Each profile includes a read-only CarrierInfo array showing configured carrier accounts. When BillThirdParty=true on a UPS or FedEx entry, that carrier will not provide rate quotes for that profile. When InheritedFromMaster=true, the profile borrows credentials from the master profile (profile 1). [DEMO]
| Name | Required | Description | Default |
|---|---|---|---|
| Active | No | Filter by active status. | |
| ProfileId | No | Filter by profile ID. | |
| ProfileName | No | Filter by profile name. |
Output Schema
| Name | Required | Description |
|---|---|---|
| Profiles | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered; the description goes further by explaining that profiles carry shipper/return addresses and carrier credentials, that CarrierInfo is read-only, and by disclosing two non-obvious behaviors (BillThirdParty=true suppresses rate quotes on UPS/FedEx; InheritedFromMaster=true borrows master credentials). That is real value beyond the annotations, though it says nothing about result volume or pagination.
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 core action and filters, then moves to domain behavior; every sentence carries information and none is redundant. The trailing '[DEMO]' marker is slightly noisy but does not obscure the content.
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 an output schema present, return-shape explanation is not required, and the description still pre-empts confusion about the CarrierInfo array. Combined with full schema coverage and clear annotations, an agent has everything needed to call this 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?
Schema description coverage is 100%, so the three filter parameters are already fully documented with types and meanings. The description only restates them by name without adding matching semantics (e.g., exact vs partial name matching, whether filters combine with AND). Baseline 3 is appropriate.
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 ('List shipping profiles') plus the available filter dimensions, which is unambiguous. It doesn't explicitly name teapplix_manage_shipping_profile as the mutation counterpart, so the read/write split is only implied by the verb.
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 filter list hints at how to narrow results, but there is no explicit when-to-use or when-not-to-use guidance, and no mention of the sibling teapplix_manage_shipping_profile that would be the alternative for creating or editing profiles. Usage is inferable but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
teapplix_get_tagsGet TagsBRead-onlyInspect
List tag definitions, optionally filtered by TagId or TagName. Tags are colored labels applied to orders for visual grouping. [DEMO]
| Name | Required | Description | Default |
|---|---|---|---|
| TagId | No | Filter by tag ID. | |
| TagName | No | Substring search by tag name. |
Output Schema
| Name | Required | Description |
|---|---|---|
| Tags | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds useful domain context (tags are colored order labels) but says nothing about result volume, ordering, or whether an empty filter returns all tags — modest value beyond 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?
Two short, front-loaded sentences: purpose first, domain gloss second. The trailing '[DEMO]' marker is noise, but the rest is efficiently sized 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?
An output schema exists and annotations cover the safety profile, so the description needn't explain return values. For a simple 2-optional-filter listing tool, what remains is only the missing sibling routing, which is a minor gap.
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 both parameters are documented in-schema, including the substring-match behavior for TagName. The description only restates that filtering is optional by TagId or TagName, adding no syntax, format, or matching nuance beyond the schema; 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 ('List tag definitions') plus the domain meaning of a tag ('colored labels applied to orders'). It reads clearly as the read-only listing counterpart to teapplix_manage_tag and teapplix_manage_order_tags, though it never names those siblings explicitly.
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 notes the optional filters but gives no guidance on when to call this versus teapplix_manage_tag (definition CRUD) or teapplix_manage_order_tags (applying tags to orders). An agent must infer the read-vs-write split from tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
teapplix_get_warehousesGet WarehousesBRead-onlyInspect
List warehouses, optionally filtered by WarehouseId, WarehouseName, or WarehouseType. [DEMO]
| Name | Required | Description | Default |
|---|---|---|---|
| WarehouseId | No | Filter by exact warehouse ID. | |
| WarehouseName | No | Case-insensitive substring filter by warehouse name. | |
| WarehouseType | No | Filter by warehouse type, e.g. GENERIC, FBA, ECCANGWMS. |
Output Schema
| Name | Required | Description |
|---|---|---|
| Warehouses | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds only that filters are optional; it leaves the "[DEMO]" marker unexplained, which could confuse an agent about whether this hits live data or a sandbox.
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 front-loaded sentence that earns its place; the trailing "[DEMO]" tag is the only questionable element since its meaning is never defined.
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?
An output schema exists, so return values need no explanation, and annotations cover read-only semantics. What's missing is the read-vs-write relationship to the sibling manage tool and any note about result size or pagination for an unfiltered list.
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%, so the schema already documents matching semantics (exact ID, case-insensitive substring, type examples like GENERIC/FBA/ECCANGWMS). The description merely restates the three parameter names and adds nothing beyond them, 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?
Specific verb and resource ("List warehouses") plus the filterable fields. It does not distinguish itself from the sibling teapplix_manage_warehouse (create/update), so an agent must infer that this is the read counterpart.
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?
"Optionally filtered by" implies that calling with no parameters returns everything and that filters are narrowing, which is useful. But there is no explicit when-to-use guidance and no mention of teapplix_manage_warehouse as the alternative for mutations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
teapplix_get_zonesCalculate Shipping ZonesARead-onlyInspect
Calculate carrier shipping zones between origin and destination ZIP codes. Each route returns its computed Zone or an Error sub-object explaining why zone lookup failed. [DEMO]
| Name | Required | Description | Default |
|---|---|---|---|
| Routes | Yes | Array of route objects. |
Output Schema
| Name | Required | Description |
|---|---|---|
| Routes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral detail by stating that each route returns a computed Zone or an Error sub-object explaining why zone lookup failed. This goes beyond the readOnlyHint and openWorldHint annotations, though it does not cover rate limits or prerequisites.
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 two sentences long, with the main action in the first sentence and output behavior in the second. It is front-loaded and free of unnecessary detail, earning a perfect score.
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?
Given the tool's low complexity (one array parameter), full schema coverage, and presence of an output schema, the description provides sufficient context. The error behavior disclosure covers the only non-obvious aspect, making it complete.
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 input schema fully describes all three parameters (Carrier, OriginZip, DestinationZip) with 100% coverage, so the description provides no additional parameter-specific insight. The baseline of 3 is appropriate since 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?
The description explicitly states 'Calculate carrier shipping zones between origin and destination ZIP codes,' which identifies a specific verb and resource. This clearly distinguishes the tool from siblings like get_rates or validate_address by focusing on zone calculation.
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 gives clear context that the tool is for calculating shipping zones between ZIP codes, but it does not mention alternative tools or exclusions. This matches the rubric's 'clear context, no exclusions' level, justifying a 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
teapplix_helpARead-onlyInspect
Returns the full Teapplix MCP tool catalog grouped by category. Call this when you cannot find a tool or suspect the tools list was truncated. Use teapplix_get_ship_methods to get the live list of valid shipping method codes. [DEMO]
| Name | Required | Description | Default |
|---|---|---|---|
| Topic | No | Optional topic. "shipping_methods" returns the full list of valid carrier method codes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint=true and openWorldHint=false. The description adds usage context (when tools list is truncated) and discloses the behavior of the 'shipping_methods' topic, though it doesn't describe response format or pagination. No contradiction.
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?
Three sentences, each serving a purpose: state function, give usage trigger, provide alternative. No wasteful text.
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?
The tool is straightforward with one optional parameter and no output schema. The description explains when to use it, what it returns, and distinguishes from a sibling tool. It doesn't enumerate all possible topics, but the parameter schema covers that. [DEMO] hint may reduce reliability confidence, but not a completeness gap.
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 Topic parameter described fully, including the shipping_methods example. The description does not add additional parameter details beyond what the schema already states, only restating the same example.
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?
Description uses specific verb 'Returns' and identifies the resource 'full Teapplix MCP tool catalog grouped by category.' It distinguishes from siblings by naming teapplix_get_ship_methods as the live alternative.
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 states when to call: 'when you cannot find a tool or suspect the tools list was truncated.' Also names an alternative tool for a specific sub-case ('Use teapplix_get_ship_methods to get the live list of valid shipping method codes').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
teapplix_manage_order_tagsManage Order TagsAInspect
Get, add, or remove tags on orders, dispatched by Operation (get/add/remove). [DEMO]
| Name | Required | Description | Default |
|---|---|---|---|
| TxnId | No | Teapplix order ID. Required for add/remove; optional filter for get. | |
| TagList | No | Tag names to add or remove. Required for add/remove. | |
| Operation | Yes | get: retrieve tags for an order (TxnId optional filter). add: apply tags (TxnId+TagList required). remove: strip tags (TxnId+TagList required). |
Output Schema
| Name | Required | Description |
|---|---|---|
| Orders | No | |
| OrdersResult | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With all annotations false, the description carries the burden of disclosing side effects. It only states the operations (get/add/remove) which are already present in the schema. It does not mention that add/remove mutate order state, any permission requirements, or potential impacts, so transparency is low.
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 extremely concise and front-loaded, stating the core function in a single sentence. The '[DEMO]' suffix is a minor extra but does not detract from efficiency.
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?
An output schema exists, so return values are covered. However, as a mutation tool with no annotations, the description lacks usage guidance and behavioral warnings. It is adequate for a basic understanding but leaves gaps for safe invocation.
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%, so the schema fully documents all parameters. The description adds no additional parameter semantics beyond what the schema provides, meriting the baseline score of 3.
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 'Get, add, or remove tags on orders' uses a specific verb and resource, clearly stating the tool's scope. It distinguishes itself from the sibling 'teapplix_manage_tag' by focusing on order tags, and from other order-related tools by its tag-specific purpose.
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 provides clear context: it is for managing tags on orders, which implies when to use it. However, it does not explicitly exclude alternatives or mention when not to use it, so it lacks full usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
teapplix_manage_queueManage Order QueuesAInspect
Create, update, or delete order queues, dispatched by Operation (create/update/delete). Queues group orders by warehouse and shipping profile. Use QueueType=AGENT with AgentInstructions (Markdown) to create an AI-managed queue. Built-in queues (QueueId 1-4) and queues with active orders cannot be deleted. Use teapplix_get_queues to list existing queues. [DEMO]
| Name | Required | Description | Default |
|---|---|---|---|
| QueueId | No | Queue ID. Optional explicit ID on create (1-4 reserved); identifier (update/delete). | |
| Operation | Yes | create: new queue (QueueName required). update: modify queue (QueueId or QueueName required). delete: remove queue (QueueId or QueueName required; built-in queues 1-4 and queues with active orders cannot be deleted). | |
| ProfileId | No | Shipping profile assignment (FK to /ShippingProfile). Applies to create/update. | |
| QueueName | No | Queue name. Required unique name (create); identifier or new name (update); identifier (delete). | |
| QueueType | No | Queue behavior type. AGENT queues are processed by an AI agent using AgentInstructions. Defaults to DISPLAY. Applies to create/update. | |
| ProfileName | No | Shipping profile name — alternative to ProfileId. Applies to create/update. | |
| WarehouseId | No | Warehouse assignment (FK to /Warehouse). Applies to create/update. | |
| WarehouseName | No | Warehouse name — alternative to WarehouseId. Applies to create/update. | |
| AgentInstructions | No | Markdown instructions for the AI agent. Only applicable when QueueType is AGENT. Applies to create/update. |
Output Schema
| Name | Required | Description |
|---|---|---|
| Queues | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations it discloses the meaningful consequences: which queues are undeletable, that AGENT-type queues are driven by Markdown AgentInstructions, and the default QueueType of DISPLAY. There is mild tension with destructiveHint=false since deletion is supported, but the description compensates by spelling out exactly when deletion is blocked, so an agent is not misled about risk.
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?
Four tight sentences front-loaded with the operation dispatch and ending with the sibling pointer and demo tag. No filler, though the '[DEMO]' marker is noise for invocation decisions.
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?
Given an output schema, full annotations, and 100% schema coverage, the description supplies the missing operational context: dispatch semantics, AGENT-queue behavior, and delete preconditions. Only the not-found/name-collision handling on update is unaddressed.
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%, so parameter meaning is already fully documented per-field. The description restates a few key points (QueueType=AGENT pairing with AgentInstructions, built-in QueueId range) but adds no format/syntax detail beyond the schema; 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?
The description opens with a specific verb set and resource ('Create, update, or delete order queues') and explains the dispatch mechanism via Operation. It also states what a queue is conceptually (grouping orders by warehouse and shipping profile), which separates it cleanly from sibling tools like teapplix_get_queues or teapplix_manage_warehouse.
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 names the read counterpart explicitly ('Use teapplix_get_queues to list existing queues') and gives hard preconditions for delete (built-in queues 1-4 and queues with active orders cannot be deleted). It stops short of saying when to choose update vs create for an existing queue, or what to do when a QueueName collides, so it is clear but not fully exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
teapplix_manage_shipping_profileManage Shipping ProfilesAInspect
Create, update, or delete shipping profiles, dispatched by Operation (create/update/delete). Profiles define shipper address, return address, and carrier credentials for label generation. Carrier account setup is managed separately in Teapplix and cannot be changed through this tool. Use teapplix_get_shipping_profiles to list existing profiles. [DEMO]
| Name | Required | Description | Default |
|---|---|---|---|
| Active | No | Active flag. Default true (create); true/false to activate/deactivate (update). | |
| Address | No | Shipper (ship-from) address printed on labels. Applies to create/update. | |
| Operation | Yes | create: new profile (ProfileName required). update: modify profile (ProfileId or ProfileName required). delete: remove profile (ProfileId or ProfileName required). | |
| ProfileId | No | Profile ID. Identifier for update/delete. | |
| Reference1 | No | Reference field 1. Applies to create/update. | |
| Reference2 | No | Reference field 2. Applies to create/update. | |
| Reference3 | No | Reference field 3. Applies to create/update. | |
| Reference4 | No | Reference field 4. Applies to create/update. | |
| ProfileName | No | Profile name. Required unique name (create); lookup or rename (update); identifier (delete). | |
| ReturnAddress | No | Return address printed on labels. Defaults to Address if omitted. Applies to create/update. | |
| OnlyBill3rdParty | No | When true, only bill 3rd party for carrier charges. Applies to create/update. |
Output Schema
| Name | Required | Description |
|---|---|---|
| Profiles | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states the tool can 'delete' a profile that is removed, while annotations declare destructiveHint=false, so the safety signal an agent relies on is undercut for one of the three operations; it also stays silent on delete side effects (e.g. whether a profile in use by open shipments can be removed). It does add real value beyond the schema by flagging that carrier credentials are managed elsewhere and are not modifiable here.
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?
Purpose and dispatch mechanism are front-loaded, followed by scope (addresses, not credentials) and sibling routing — no wasted sentences. The trailing '[DEMO]' marker and the slightly redundant 'dispatched by Operation' phrasing keep it from being fully tight.
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 multi-operation mutation tool with 11 parameters and a 100%-described schema plus an output schema, the description covers purpose, sibling routing, and the main scope exclusion. The remaining gap is delete semantics — consequences and preconditions for removing a profile are undisclosed.
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 schema itself documents the Operation enum, ProfileName/ProfileId requirements per operation, and nested address fields (including the ReturnAddress-defaults-to-Address rule). The description adds no parameter-level detail beyond that, which is the expected baseline when the schema does the work.
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 specific verbs plus the resource: 'Create, update, or delete shipping profiles, dispatched by Operation.' The operation-dispatch pattern is called out explicitly, and the sibling read tool teapplix_get_shipping_profiles is named, so an agent can distinguish mutating vs listing behavior immediately.
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?
Explicit routing: 'Use teapplix_get_shipping_profiles to list existing profiles,' and an explicit exclusion: carrier account setup 'is managed separately in Teapplix and cannot be changed through this tool.' This covers when to use it, when to use a sibling instead, and what it cannot do.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
teapplix_manage_tagManage TagsAInspect
Create, update, or delete order tag definitions, dispatched by Operation (create/update/delete). Tags are colored labels applied to orders for visual grouping. System tags (TagId 1=Ready To Ship, 2=Hold) cannot be deleted. Use teapplix_get_tags to list existing tags. [DEMO]
| Name | Required | Description | Default |
|---|---|---|---|
| Color | No | CSS color string, e.g. #ff0000 or red. Required on create; optional on update. | |
| TagId | No | Tag ID. Identifier for update/delete. | |
| TagName | No | Tag name. Unique name (create/update); name to delete (delete). | |
| Operation | Yes | create: new tag (TagName+Color required). update: modify tag (TagId or TagName required). delete: remove tag (TagId or TagName required; system tags cannot be deleted). |
Output Schema
| Name | Required | Description |
|---|---|---|
| Tags | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description advertises deletion of tag definitions ('delete: remove tag'), yet annotations declare destructiveHint=false, which per MCP semantics means the tool only performs additive updates. That mismatch matters for an agent deciding whether a delete is safe or reversible. The system-tag protection note (TagId 1/2 cannot be deleted) is useful, but the write-profile contradiction dominates.
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?
Three short sentences, front-loaded with the verb/resource and the dispatch mechanism, then the domain context, then the constraint and sibling pointer. No sentence is filler, apart from a trivial '[DEMO]' tag.
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 4-parameter mutation tool with a full schema and an output schema, the description covers dispatch, required fields per operation, constraints on system tags, and where to list tags. It omits whether deletes are permanent, whether update can rename a tag, and how duplicate-name errors behave, but the essentials for correct invocation are present.
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 baseline is 3, and the description adds genuine value on top: it names the concrete system tag IDs (1=Ready To Ship, 2=Hold) that are immune to delete, and reiterates per-operation requirements for TagId/TagName/Color. This goes beyond the schema's generic field notes.
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 specific verbs (create/update/delete) and a specific resource (order tag definitions), dispatched by the Operation enum, and clarifies that tags are colored labels on orders. It does not explicitly separate itself from the sibling teapplix_manage_order_tags (which appears to apply tags to orders rather than define them), leaving one plausible confusion unresolved.
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?
Provides clear context: Operation selects create/update/delete, and it names teapplix_get_tags as the tool for listing existing tags. It is clear about the happy path but offers no exclusion against teapplix_manage_order_tags, so the when-not is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
teapplix_manage_warehouseManage WarehousesAInspect
Create, update, or delete warehouses, dispatched by Operation (create/update/delete). WarehouseId 1 (default) cannot be deleted; warehouses with active orders, channel mappings, or listings cannot be deleted. Use teapplix_get_warehouses to list existing warehouses. [DEMO]
| Name | Required | Description | Default |
|---|---|---|---|
| 3PLKey | No | Identifies which account when you have multiple accounts at the same 3PL. Leave blank if you only have one account per 3PL. | |
| Operation | Yes | create: new warehouse (WarehouseType and WarehouseName required). update: modify warehouse (WarehouseId or WarehouseName required). delete: remove warehouse (WarehouseId or WarehouseName required). | |
| CountryCode | No | ISO country code for the 3PL warehouse location. Applies to create/update. | |
| WarehouseId | No | Unique warehouse identifier. For create: omit to auto-assign. For update/delete: identifies the warehouse. WarehouseId 1 is the default warehouse and cannot be deleted. | |
| WarehouseName | No | Warehouse display name. Must be unique across all warehouses. Required on create. For update/delete: exact-match identifier (alternative to WarehouseId). | |
| WarehouseType | No | Type of warehouse. Required on create. GENERIC: your own warehouse, inventory tracked in Teapplix. QB: inventory tracked in QuickBooks. RECONCILE: virtual warehouse to compare quantities against a 3rd-party report. DROPSHIP/DROPSHIP-T: dropship warehouses. FBA: Amazon Fulfillment. 3PL types (e.g. ECCANGWMS): third-party warehouses that manage your inventory. For 3PL and FBA types, WarehouseType cannot be changed after creation. | |
| 3PLWarehouseCode | No | Identifies a specific warehouse facility at the 3PL. Required on create for 3PL types. Links this warehouse entry to a facility for inventory tracking and order fulfillment. | |
| QuantityAlgorithm | No | Inventory quantity calculation method. CALCULATED: from credits/debits plus order activity (each inbound order debits inventory). STATIC: from credits/debits only, without order activity. FIXED: always shows a fixed quantity. Applicable to GENERIC and RECONCILE warehouse types only; ignored for externally managed warehouses. | |
| ReconcileForWarehouseId | No | Only for WarehouseType RECONCILE. The existing warehouse with this ID will have its paired reconcile warehouse set to the newly created warehouse. |
Output Schema
| Name | Required | Description |
|---|---|---|
| Warehouses | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly advertises deletion ('delete warehouses', 'cannot be deleted') while the annotations declare destructiveHint=false, which per MCP semantics means non-destructive/additive only. An agent trusting the annotation could invoke a delete without confirmation. The description does add useful constraint context, but the direct conflict with the annotation is disqualifying.
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?
Three tight sentences: operation dispatch first, then deletion constraints, then the listing alternative. No filler, though the trailing '[DEMO]' marker is noise.
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?
An output schema exists, so return values need no explanation, and the schema carries all parameter detail. The description covers the mutation scope and the key guardrails; only confirmation/permission expectations for destructive operations 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%, so Operation, WarehouseType, WarehouseId, and the 3PL fields are already fully documented in structured form. The description only restates the Operation dispatch and the WarehouseId 1 restriction, adding nothing beyond the schema.
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 set and resource ('Create, update, or delete warehouses') and immediately explains the dispatch mechanism (Operation). It is clearly distinguished from the read-only sibling teapplix_get_warehouses, which it names explicitly.
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 routes listing to teapplix_get_warehouses and states the two deletion preconditions (WarehouseId 1 is undeletable; warehouses with active orders, channel mappings, or listings cannot be deleted). It does not explain when to prefer create vs update vs delete, though the schema's Operation enum covers that.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
teapplix_mark_reviewMark Orders for ReviewAIdempotentInspect
Mark one or more orders for manual review. Returns a single scalar status, not a per-order array. [DEMO]
| Name | Required | Description | Default |
|---|---|---|---|
| TxnIds | Yes | List of Teapplix order IDs to flag for review. |
Output Schema
| Name | Required | Description |
|---|---|---|
| Status | No | |
| Message | No | |
| Success | No | |
| Description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations providing idempotentHint=true, destructiveHint=false, and readOnlyHint=false, the description adds the important return-value nuance ('single scalar status, not a per-order array'). This helps prevent the agent from expecting an array, adding behavioral context beyond annotations.
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 two sentences with no fluff. The first sentence states the action, the second clarifies the return type. The [DEMO] marker is a minor artifact but doesn't detract.
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 single-parameter flagging operation with an output schema and sufficient annotations, the description covers the essential nuance (scalar return). It doesn't explain side effects, but the operation is simple and the annotations cover safety. A minor gap is the lack of context on when manual review is triggered.
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 schema already documents the only parameter with a clear description. The description's repetition of 'one or more orders' adds no new syntax or format details. Baseline 3 is appropriate given 100% schema coverage.
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 uses the specific verb 'Mark' with the resource 'orders for manual review', clearly stating the operation. The added note about returning a scalar status adds specificity, distinguishing its output contract.
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 guidance is provided about when to use this tool versus alternatives like teapplix_manage_queue or teapplix_update_order. There is no mention of prerequisites, ordering, or when manual review is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
teapplix_purchase_labelPurchase Shipping LabelADestructiveInspect
Purchase a standalone shipping label. Does not require an existing Teapplix order. Label bytes are base64-encoded inside LabelData[]; additional carrier documents (customs forms, return slips) are in DocumentsData[]. [DEMO]
| Name | Required | Description | Default |
|---|---|---|---|
| To | Yes | Destination address: {Name, Company, Street, Street2, City, State, ZipCode, CountryCode, Phone}. | |
| From | Yes | Ship-from address OR a saved shipping profile — supply exactly one shape. | |
| Options | No | Advanced, rarely used. Omit unless the user explicitly requests features such as signature confirmation, insurance type, COD, etc. | |
| IsReturn | No | true = generate a return label. | |
| Packages | Yes | One or more packages to ship. The first entry is the main package; additional entries are extra packages. All packages must use the same carrier. | |
| ShipDate | No | Ship date (YYYY-MM-DD). Defaults to today. Interpreted as Pacific timezone. | |
| ImageFormat | No | Label image format override. | |
| ClientRequestId | Yes | Unique client-generated ID for idempotency. Re-sending with the same ID returns the existing label. | |
| CustomsDeclaration | No | International shipments only. Omit unless shipping outside the domestic country. Fields: ReasonForExport, IOssNumber, Items: [{Description, Quantity, Value, Weight, HSTariffNumber, CountryOfOrigin}]. |
Output Schema
| Name | Required | Description |
|---|---|---|
| Status | No | |
| LabelData | No | Label bytes; one entry per package. Content is base64-encoded. |
| TrackingInfo | No | |
| DocumentsData | No | Additional documents (customs forms, return slips, etc.). |
| PostageAmount | No | |
| ClientRequestId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey non-read-only, destructive, and non-idempotent behavior, lowering the burden on the description. The description adds valuable context about the response structure (LabelData for label bytes, DocumentsData for additional carrier documents) and the [DEMO] marker, giving the agent insight into what to expect from the output.
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 brief and front-loaded with the action ('Purchase'), followed by the key differentiator and output format. Every sentence adds distinct value, and the [DEMO] marker is a concise extra note. No fluff or 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?
Given the tool's complexity (9 params, nested objects, output schema present), the description provides the essential context: standalone use, response structure, and demo status. The rich schema handles parameter details, and the annotations provide safety behavior. A warning about costs or non-refundability could improve it, but the combination of schema, annotations, and description is largely complete.
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 schema has 100% documentation coverage, so the baseline is 3. The description adds no parameter-specific meaning beyond what the schema already provides; however, it does not need to, as the schema descriptions are exhaustive. The mention of LabelData/DocumentsData relates to output, not input parameters.
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 uses a specific verb ('Purchase') and resource ('shipping label'), clearly distinguishing it as a standalone label purchase. It explicitly notes that no existing Teapplix order is required, which differentiates it from teapplix_purchase_label_for_order and other 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 description clearly states when to use this tool: for standalone labels without an existing order. It does not explicitly name alternatives (e.g., teapplix_purchase_label_for_order), but the sibling name and the 'standalone' qualifier imply the distinction. No exclusions or prerequisites are mentioned, but the key context is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
teapplix_purchase_label_for_orderPurchase Label for OrderBDestructiveInspect
Purchase a shipping label for an existing Teapplix order. Requires TxnId, From (ship-from address or profile), and a Packages array (each package must include Method; Weight and Dimensions default to the order's stored values if omitted). [DEMO]
| Name | Required | Description | Default |
|---|---|---|---|
| From | Yes | Ship-from address OR a saved shipping profile — supply exactly one shape. | |
| TxnId | Yes | Teapplix order ID to purchase label for. | |
| Options | No | Advanced, rarely used. Omit unless the user explicitly requests features such as signature confirmation, insurance type, COD, etc. | |
| Packages | Yes | One or more packages. The first entry is the main package; additional entries are extra packages. Each package must include Method; Weight and Dimensions default to the order's stored values if omitted. All packages must use the same carrier. | |
| Provider | No | Force the label provider. MARKETPLACE = purchase through the marketplace's carrier accounts at marketplace-negotiated rates (e.g. Amazon Buy Shipping, Walmart shipping programs — same carriers like UPS/FedEx/USPS but at the marketplace's rates); NATIVE = purchase through the seller's own carrier account from the shipping profile. When omitted, the API uses whichever provider is configured on the profile. Works on RATESHOP methods too — forces the winning method to purchase through the specified provider. | |
| ShipDate | No | Ship date (YYYY-MM-DD). Defaults to today. Interpreted as Pacific timezone. | |
| CustomsDeclaration | No | International shipments only. Omit unless shipping outside the domestic country. Fields: ReasonForExport, IOssNumber, Items: [{Description, Quantity, Value, Weight, HSTariffNumber, CountryOfOrigin}]. |
Output Schema
| Name | Required | Description |
|---|---|---|
| Status | No | |
| LabelData | No | Label bytes; one entry per package. Content is base64-encoded. |
| TrackingInfo | No | |
| DocumentsData | No | Additional documents (customs forms, return slips, etc.). |
| PostageAmount | No | |
| ClientRequestId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, openWorldHint=true, and idempotentHint=false, so the irreversible/real-world nature of a label purchase is partially covered. The description adds the useful defaulting rule for Weight/Dimensions but does not say that this spends money, that cancel_label is the reversal path, or what the unexplained '[DEMO]' tag implies. With annotations carrying the safety profile, a 3 is fair.
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?
Two tightly written sentences that front-load the action and required inputs; little waste. The bracketed '[DEMO]' tag is unexplained and slightly dilutes an otherwise clean structure.
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 a rich input schema, an output schema, and annotations covering safety, the description need not explain return values. It is nonetheless thin for a destructive purchase tool: no routing versus teapplix_purchase_label / get_rates_for_order, no note on cost or reversal, and an unexplained demo marker.
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%, so all seven parameters including nested From/Packages shapes are already documented in the schema. The description restates the three required params and the Weight/Dimensions defaults, but that defaulting rule is also present verbatim in the schema, so added value is minimal. Baseline 3.
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 (purchase a shipping label) scoped to an existing Teapplix order, which an agent can act on directly. It does not, however, distinguish this from the near-identical sibling teapplix_purchase_label, leaving ambiguity about which of the two applies.
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 when-to-use guidance, no prerequisites (e.g. rates should be fetched first), and no reference to alternatives. Most notably it never acknowledges the sibling teapplix_purchase_label, so an agent has no basis for choosing between the two.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
teapplix_revert_split_orderRevert Split OrderADestructiveInspect
Revert a previously split order back to a single order. [DEMO]
| Name | Required | Description | Default |
|---|---|---|---|
| TxnId | Yes | TxnId of the original (parent) order to revert. |
Output Schema
| Name | Required | Description |
|---|---|---|
| OrdersResult | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false. The description adds no additional behavioral details (e.g., what happens to child orders, reversibility, or error states) beyond stating the revert intent. It does not contradict annotations but also enriches them minimally.
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, concise sentence with no filler. '[DEMO]' is a minor suffix but does not detract from clarity or structure.
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 one-parameter destructive operation with annotations and an existing output schema, the description provides sufficient context. It could mention prerequisites or failure modes, but 'previously split order' implies the main prerequisite, and the schema covers the parameter.
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%, with the TxnId parameter documented as 'TxnId of the original (parent) order to revert.' The description adds no extra semantic details beyond the schema, but the schema fully covers the meaning.
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 states a specific verb ('revert'), resource ('previously split order'), and outcome ('back to a single order'). It clearly distinguishes from sibling tools like teapplix_split_order and teapplix_split_order_cont.
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 clearly implies when to use this tool: after an order has been split and you want to undo that split. It does not explicitly list alternatives or exclusions, but the context is unambiguous given the tool name and sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
teapplix_set_order_ship_optionsSet Order Shipping OptionsAIdempotentInspect
Set carrier-specific advanced shipping options (Service flags, COD) and CustomsOptions. For the common sparse options — InsuranceType and Delivery.Signature / Delivery.Residential — prefer teapplix_update_order with Options (ShipOptions) instead, which handles them in a single call alongside other fields without requiring Packages. Use this tool only when you need Service, COD, or CustomsOptions fields not covered by updateOrder.Options. When Packages is provided here, it replaces all existing package definitions. [DEMO]
| Name | Required | Description | Default |
|---|---|---|---|
| TxnId | Yes | Teapplix order ID to modify. | |
| Options | No | Advanced shipping options applied to all packages: InsuranceType, Delivery (Signature, Residential, etc.), Service, Cod, etc. | |
| Packages | No | Package definitions required when setting Options or CustomsOptions (to specify carrier method context). If provided, ALL existing package definitions for the order are replaced. First entry is the main package; additional entries are extra packages. To update ship method / weight / dimensions without advanced options, use teapplix.updateOrder with ShippingDetails (OrderShipment) instead. | |
| CustomsOptions | No | Customs options for international shipments (e.g. ReasonForExport). |
Output Schema
| Name | Required | Description |
|---|---|---|
| OrdersResult | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate idempotent and non-destructive behavior, but the description adds critical context by disclosing that providing Packages replaces all existing package definitions. This is valuable behavioral information beyond what annotations convey, and it does not contradict them.
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 concise (4 sentences), front-loaded with purpose, and every sentence serves a distinct function: purpose, alternative guidance, restrictive use case, and a caveat. No unnecessary repetition or fluff.
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?
Given the tool's complexity (nested objects, multiple advanced options) and rich schema, the description adequately covers what it does, when to use it, and a key behavioral caveat. The output schema handles return-value documentation, so no further explanation is needed.
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 detailed descriptions, so the baseline is 3. The description adds value by explaining when Packages is required (for setting Options or CustomsOptions) and clarifying its replacement semantics, which enriches understanding beyond the schema alone.
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 tool's purpose: 'Set carrier-specific advanced shipping options (Service flags, COD) and CustomsOptions.' It distinguishes from sibling teapplix_update_order by explicitly naming when to use which tool, making its role unique.
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 provides explicit usage guidance: prefer teapplix_update_order for common sparse options, and use this tool only when Service, COD, or CustomsOptions fields are needed. It also warns about Packages replacing existing definitions, giving clear when-to-use and when-not-to-use context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
teapplix_split_orderSplit OrderADestructiveInspect
Split an order into multiple child orders by dividing its line items. Use this for the normal split workflow. Do not use split_order_cont — that is a specialized follow-up for orders with "Hold" children. [DEMO]
| Name | Required | Description | Default |
|---|---|---|---|
| TxnId | Yes | Teapplix order ID to split. | |
| Orders | No | Array of child order configurations defining how to split the line items. |
Output Schema
| Name | Required | Description |
|---|---|---|
| OrdersResult | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the bar is lower. The description adds context about the mechanism (dividing line items) and positions this as the normal workflow, but does not disclose reversibility or side effects beyond the annotations. This merits a 4 rather than 3 due to the added context.
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 efficiently structured, with the first sentence giving the core purpose and the next two providing usage guidance. However, the trailing '[DEMO]' artifact adds no value and reduces clarity, making a 4 instead of 5.
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 complex, destructive operation, the description is adequate but misses important context about reversibility (e.g., that teapplix_revert_split_order exists) and any preconditions beyond the split_order_cont exclusion. The rich schema and annotations compensate somewhat, but the gap justifies a 3.
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% with detailed descriptions for all parameters and nested properties. The description does not add parameter-specific details, so the baseline of 3 is appropriate.
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 states a specific verb and resource ('Split an order into multiple child orders') and clearly distinguishes from the sibling tool split_order_cont by naming it and its specialized purpose. The mechanism ('by dividing its line items') adds clarity.
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 gives explicit guidance on when to use ('normal split workflow') and when not to ('Do not use split_order_cont — that is a specialized follow-up for orders with "Hold" children'), naming the alternative and the condition for its use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
teapplix_split_order_contContinue Split OrderADestructiveInspect
Use this operation to further split an order that has a "Hold" children. This is a specialized case where an order was first split into shippable and on-hold (out-of-stock) parts; when restocked, the hold child is split again so the newly shippable items become a separate child order. Do not use this for normal splits — use split_order instead. [DEMO]
| Name | Required | Description | Default |
|---|---|---|---|
| TxnId | Yes | TxnId of the order being split (from the previous SplitOrder call). | |
| Orders | No | Continuation child order configurations. |
Output Schema
| Name | Required | Description |
|---|---|---|
| OrdersResult | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is known. The description adds valuable context about the precise operational scenario (hold child re-split), but does not disclose additional behavioral details such as whether the original hold child is removed or modified, or any irreversibility beyond the annotation. That leaves some gaps, but the description is not misleading.
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?
Three sentences, front-loaded with the core purpose, followed by scenario clarification and an explicit exclusion. No wasted words; the [DEMO] tag is a minor non-semantic appendage that doesn't detract.
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?
The description is complete enough for a specialized continuation operation, clearly explaining the split scenario and pointing to the correct sibling for normal cases. The extensive schema and output schema cover remaining details. It could mention prerequisites or what happens to the original hold order, but this is not essential for selecting and invoking the 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 coverage is 100% for the two parameters, and the schema includes detailed descriptions for TxnId and Orders, including nested fields. The description itself adds no parameter-specific information, so the baseline of 3 is appropriate.
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 tool's specific purpose: further splitting an order that has a 'Hold' child, in the specialized restock scenario. It uses a specific verb ('split') and resource ('order'), and explicitly distinguishes it from normal splits by naming the alternative (split_order).
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 provides explicit when-to-use guidance (when a hold child needs to be split after restocking) and when-not-to-use guidance ('Do not use this for normal splits — use split_order instead.'). This fully addresses selection vs. siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
teapplix_submit_3plSubmit Order to 3PLAInspect
Submit an order to a 3PL (third-party logistics) vendor for fulfillment. Handles both unshipped orders (submit path) and already-shipped orders (review path, when a tracking number exists). Status is one of: Accepted, Declined, NotFound. Use teapplix_get_ship_methods with Carrier=<3PLType> to discover valid ShipMethod values for the vendor. [DEMO]
| Name | Required | Description | Default |
|---|---|---|---|
| TxnId | Yes | Teapplix order ID to submit to the 3PL. | |
| 3PLKey | No | If you linked more than one account with the same 3PLType, 3PLKey uniquely identifies the account. | |
| Weight | No | Total weight of the order items. Optional; many 3PLs will compute this themselves based on item info in the order. | |
| 3PLType | Yes | 3PL vendor type (e.g. "lingxingwms", "eccangwms"). The value of this is typcally provided from request context. | |
| ShipMethod | No | 3PL service code or ship method requested. May be required for certain 3PLs; for others it may be computed based on other parameters. | |
| 3PLWarehouseCode | No | For most 3PLs, an id indicating requested warehouse facility to ship the order out of. For 3PLType="teapplix" this is the receiver_account_name. |
Output Schema
| Name | Required | Description |
|---|---|---|
| TxnId | No | Original Teapplix TxnId |
| Status | No | Accepted vs Declined |
| Message | No | |
| Success | No | true for success, false for failure |
| DropshipTxnId | No | 3PL assigned order id. This is saved internally also to Teapplix so you not have to remember them |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and idempotentHint=false, signaling a non-read-only, non-idempotent operation. The description adds behavioral insight by explaining the dual-path (submit/review) behavior and the possible status outcomes (Accepted, Declined, NotFound). It does not contradict annotations and provides context beyond the structured flags.
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 three sentences, all informative and free of fluff. It front-loads the main action, then adds relevant details about paths, status, and parameter discovery. The [DEMO] tag is minor noise but does not detract from conciseness.
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?
Given the tool's complexity (6 params, nested object, multiple paths), the description covers key aspects: the purpose, the two modes, status values, and a useful parameter tip. The existence of an output schema and full schema descriptions reduces the need to detail return values. It could have elaborated more on account prerequisites or the submit/review difference, but it is sufficiently complete for an agent to use.
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%, so the baseline is 3. The description adds valuable guidance for the ShipMethod parameter by advising the use of teapplix_get_ship_methods with Carrier=<3PLType> to discover valid values. This goes beyond the schema's generic description, enhancing semantic understanding.
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 tool's function: 'Submit an order to a 3PL vendor for fulfillment.' It uses a specific verb ('Submit') and resource ('order to 3PL'), and differentiates from siblings by focusing on 3PL submission. It also specifies handling of both unshipped and already-shipped orders, adding clarity.
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 provides clear context for when to use the tool: for submitting orders to a 3PL, including the submit path for unshipped and review path for already-shipped orders. It also gives a practical tip to use teapplix_get_ship_methods to discover valid ShipMethod values. However, it does not explicitly contrast with sibling tools or state when not to use it, which would have pushed it to 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
teapplix_trackTrack ShipmentARead-onlyInspect
Track a shipment by carrier and tracking number. Returns a delivery summary plus a chronological TrackingEvents array. [DEMO]
| Name | Required | Description | Default |
|---|---|---|---|
| Carrier | No | Carrier name (e.g. UPS, FedEx, USPS). | |
| TrackingNumber | No | Shipment tracking number. |
Output Schema
| Name | Required | Description |
|---|---|---|
| CarrierName | No | |
| IsDelivered | No | |
| TrackingEvents | No | |
| TrackingNumber | No | |
| EstimatedDeliveryDate | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description adds valuable behavioral context by specifying the return format: 'a delivery summary plus a chronological TrackingEvents array.' The '[DEMO]' flag also indicates a demo mode. This goes beyond what annotations provide.
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, well-structured sentence that communicates purpose, required inputs, and output behavior with no wasted words. It is appropriately front-loaded and concise.
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-only tracking tool with an output schema present, the description fully covers the tool's purpose and return behavior. The readOnlyHint annotation addresses safety, and the output schema covers return details. No significant gaps remain.
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%, so the schema already fully documents both parameters. The description only restates the parameter names ('by carrier and tracking number') without adding additional semantic context, so it meets the baseline but doesn't elevate it.
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 tool's function: 'Track a shipment by carrier and tracking number.' It specifies both the verb and resource, and distinguishes itself from sibling tools by focusing on tracking, which no other tool covers.
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 implies when to use the tool (when you need to track a shipment) but provides no explicit guidance on alternatives or exclusions. Since there are no sibling tracking tools, the context is clear, but it lacks explicit 'when to use vs. alternatives' language.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
teapplix_update_orderUpdate OrdersADestructiveInspect
Update existing orders in Teapplix. Top-level fields: PaymentStatus, To (ship-to address), OrderItems, OrderDetails sub-object: QueueId (move to queue), WarehouseId (reassign warehouse), TagList (fully replaces existing tags), Memo (buyer-visible note), PrivateMemo (seller-only note), Custom, Custom2. AppendMode (when true, Memo/PrivateMemo text is appended rather than replaced). ShippingDetails: update ship method / weight / dimensions (replaces all existing packages). Options (ShipOptions): set Delivery.Signature / Delivery.Residential in the same call as other updates. For InsuranceType use setOrderShipOptions. Per-row Status is one of: Accepted, Declined, Processed. [DEMO]
| Name | Required | Description | Default |
|---|---|---|---|
| Orders | Yes | Array of order update objects. Each must include TxnId. |
Output Schema
| Name | Required | Description |
|---|---|---|
| OrdersResult | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and readOnlyHint=false; the description adds valuable destructive semantics: TagList 'fully replaces existing tags,' ShippingDetails 'replaces all existing packages,' and AppendMode toggles append vs replace. It also discloses the per-row Status enum values. No contradictions with annotations.
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 dense paragraph that front-loads the core purpose. It efficiently lists key fields and behaviors, though the [DEMO] suffix is noise and the structure could benefit from bullet points for readability. It earns its length for a complex tool.
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 complex mutation tool, the description covers all major capabilities, replacement behaviors, and the correct alternative for insurance type. The schema provides full parameter details and an output schema exists, so the lack of return-value discussion is acceptable. It could mention that Orders is an array and TxnId is required, but these are visible in the schema.
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 schema already documents parameters in detail. The description contributes a high-level field summary (top-level, sub-objects) and adds the per-row Status enum values, which are not present in the input schema. This goes beyond simple repetition, though most details are mirrored in the schema.
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 opens with 'Update existing orders in Teapplix'—a clear verb+resource pair. It distinguishes from siblings by listing specific updatable fields and explicitly routing InsuranceType to setOrderShipOptions, differentiating from related tools like create_order and manage_* tools.
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 provides an explicit alternative: 'For InsuranceType use setOrderShipOptions.' It also implies when to use this tool (for order-level updates including payment status, address, items, tags, queue, warehouse, memos, shipping details) but does not explicitly enumerate exclusions such as tag-only updates using manage_order_tags. This is clear context with one explicit alternative, but not comprehensive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
teapplix_validate_addressValidate Shipping AddressARead-onlyInspect
Validate and normalize a US shipping address against a carrier's validation engine. Only US addresses (CountryCode=US) are supported — non-US addresses return an error. Branch on Status: "Validated Changed" → engine corrected one or more fields, diff Address vs. input and update the record; "Validated Not Changed" → address is already valid, no action needed; "Not Changed" → engine rejected the address, surface Message to the user. [DEMO]
| Name | Required | Description | Default |
|---|---|---|---|
| Address | Yes | US address to validate. Supply at least Street, City, State, and ZipCode (or Street + ZipCode for ZIP-only normalization). Only US addresses (CountryCode=US) are supported. | |
| Provider | No | Address validation engine. FEDEX is the preferred provider (best quality) but requires a linked FedEx carrier account. TEAPPLIX is always available for every account (USPS-based) and serves as the universal fallback. UPS requires a linked UPS account. Use FEDEX when available, fall back to TEAPPLIX otherwise. | TEAPPLIX |
Output Schema
| Name | Required | Description |
|---|---|---|
| Status | Yes | Validation result. Three known values: "Validated Changed" — address is valid but change is suggested; "Validated Not Changed" — address is valid no change needed; "Not Changed" — address is invalid impossible to fix. |
| Address | Yes | Input address, but if suggested change is given under Status="Validated Changed", certain fields in this object are modified based on carrier feedback. |
| Message | No | Detail message about address validation return. |
| Residential | No | True for residential delivery, false for commercial. Populated when the validating carrier reports it. |
| DeliveryPoint | No | USPS DPV postal-barcode delivery point digits, when available. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered; the description goes further by disclosing the failure mode (non-US input errors out) and, critically, the tri-state Status semantics including that 'Validated Changed' means the engine mutated fields and the caller must diff and update. That is behavior beyond the annotations and essential to correct consumption.
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 core action and scope, then a compact status branch list; every sentence earns its place. The trailing '[DEMO]' marker is noise that slightly clutters an otherwise tight definition.
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?
An output schema exists, so return-shape explanation is unnecessary; combined with annotations covering safety and a 100% documented schema, the description fills the remaining gaps (US-only restriction, status-driven next actions) completely for an agent to call and act on results.
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%, so both the nested Address fields and the Provider enum/fallback logic are already fully documented in structured data. The description only reinforces the CountryCode=US constraint, adding little beyond the schema — baseline 3.
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 pair (validate and normalize) plus the precise resource (a US shipping address) and the engine it consults. It is the only address-validation tool among the siblings, and the description makes the US-only scope explicit so it can't be confused with rate, label, or order tools.
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 explicit when-to-use conditions ('Only US addresses (CountryCode=US) are supported — non-US addresses return an error') and a full branch table telling the agent what action to take for each Status value. This is actionable routing guidance rather than a generic blurb.
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.
8 tool updates
- Added
teapplix_get_queues - Added
teapplix_get_shipping_profiles - Added
teapplix_get_tags - Added
teapplix_get_warehouses - Changed
teapplix_manage_queue8 fields changed- changed
Input schema / properties / Operation / descriptionPrevious value: -"get: list/filter queues. create: new queue (QueueName required). update: modify queue (QueueId or QueueName required). delete: remove queue (QueueId or QueueName required; built-in queues 1-4 and queues with active orders cannot be deleted)."New value: +"create: new queue (QueueName required). update: modify queue (QueueId or QueueName required). delete: remove queue (QueueId or QueueName required; built-in queues 1-4 and queues with active orders cannot be deleted)." - changed
Input schema / properties / Operation / enumPrevious value: -[ - "get", - "create", - "update", - "delete" -]New value: +[ + "create", + "update", + "delete" +] - changed
Input schema / properties / ProfileId / descriptionPrevious value: -"Shipping profile assignment (FK to /ShippingProfile). Applies to get/create/update."New value: +"Shipping profile assignment (FK to /ShippingProfile). Applies to create/update." - changed
Input schema / properties / ProfileName / descriptionPrevious value: -"Shipping profile name — alternative to ProfileId. Applies to get/create/update."New value: +"Shipping profile name — alternative to ProfileId. Applies to create/update." - changed
Input schema / properties / QueueId / descriptionPrevious value: -"Queue ID. Filter (get); optional explicit ID on create (1-4 reserved); identifier (update/delete)."New value: +"Queue ID. Optional explicit ID on create (1-4 reserved); identifier (update/delete)." - changed
Input schema / properties / QueueName / descriptionPrevious value: -"Queue name. Substring filter (get); required unique name (create); identifier or new name (update); identifier (delete)."New value: +"Queue name. Required unique name (create); identifier or new name (update); identifier (delete)." - changed
Input schema / properties / WarehouseId / descriptionPrevious value: -"Warehouse assignment (FK to /Warehouse). Applies to get/create/update."New value: +"Warehouse assignment (FK to /Warehouse). Applies to create/update." - changed
Input schema / properties / WarehouseName / descriptionPrevious value: -"Warehouse name — alternative to WarehouseId. Applies to get/create/update."New value: +"Warehouse name — alternative to WarehouseId. Applies to create/update."
- Changed
teapplix_manage_shipping_profile5 fields changed- changed
Input schema / properties / Active / descriptionPrevious value: -"Active flag. Filter (get); default true (create); true/false to activate/deactivate (update)."New value: +"Active flag. Default true (create); true/false to activate/deactivate (update)." - changed
Input schema / properties / Operation / descriptionPrevious value: -"get: list/filter profiles. create: new profile (ProfileName required). update: modify profile (ProfileId or ProfileName required). delete: remove profile (ProfileId or ProfileName required)."New value: +"create: new profile (ProfileName required). update: modify profile (ProfileId or ProfileName required). delete: remove profile (ProfileId or ProfileName required)." - changed
Input schema / properties / Operation / enumPrevious value: -[ - "get", - "create", - "update", - "delete" -]New value: +[ + "create", + "update", + "delete" +] - changed
Input schema / properties / ProfileId / descriptionPrevious value: -"Profile ID. Filter (get) or identifier (update/delete)."New value: +"Profile ID. Identifier for update/delete." - changed
Input schema / properties / ProfileName / descriptionPrevious value: -"Profile name. Filter (get); required unique name (create); lookup or rename (update); identifier (delete)."New value: +"Profile name. Required unique name (create); lookup or rename (update); identifier (delete)."
- Changed
teapplix_manage_tag4 fields changed- changed
Input schema / properties / Operation / descriptionPrevious value: -"get: list/filter tags. create: new tag (TagName+Color required). update: modify tag (TagId or TagName required). delete: remove tag (TagId or TagName required; system tags cannot be deleted)."New value: +"create: new tag (TagName+Color required). update: modify tag (TagId or TagName required). delete: remove tag (TagId or TagName required; system tags cannot be deleted)." - changed
Input schema / properties / Operation / enumPrevious value: -[ - "get", - "create", - "update", - "delete" -]New value: +[ + "create", + "update", + "delete" +] - changed
Input schema / properties / TagId / descriptionPrevious value: -"Tag ID. Filter (get) or identifier (update/delete)."New value: +"Tag ID. Identifier for update/delete." - changed
Input schema / properties / TagName / descriptionPrevious value: -"Tag name. Substring search (get); unique name (create/update); name to delete (delete)."New value: +"Tag name. Unique name (create/update); name to delete (delete)."
- Changed
teapplix_manage_warehouse4 fields changed- changed
Input schema / properties / Operation / descriptionPrevious value: -"get: list/filter warehouses. create: new warehouse (WarehouseType and WarehouseName required). update: modify warehouse (WarehouseId or WarehouseName required). delete: remove warehouse (WarehouseId or WarehouseName required)."New value: +"create: new warehouse (WarehouseType and WarehouseName required). update: modify warehouse (WarehouseId or WarehouseName required). delete: remove warehouse (WarehouseId or WarehouseName required)." - changed
Input schema / properties / Operation / enumPrevious value: -[ - "get", - "create", - "update", - "delete" -]New value: +[ + "create", + "update", + "delete" +] - changed
Input schema / properties / WarehouseId / descriptionPrevious value: -"Unique warehouse identifier. For get: exact match filter. For create: omit to auto-assign. For update/delete: identifies the warehouse. WarehouseId 1 is the default warehouse and cannot be deleted."New value: +"Unique warehouse identifier. For create: omit to auto-assign. For update/delete: identifies the warehouse. WarehouseId 1 is the default warehouse and cannot be deleted." - changed
Input schema / properties / WarehouseName / descriptionPrevious value: -"Warehouse display name. Must be unique across all warehouses. For get: case-insensitive substring filter. Required on create. For update/delete: exact-match identifier (alternative to WarehouseId)."New value: +"Warehouse display name. Must be unique across all warehouses. Required on create. For update/delete: exact-match identifier (alternative to WarehouseId)."
3 tool updates
- Changed
teapplix_get_rates1 field changed- added
Input schema / properties / ProviderAdded value: +{ + "description": "Force the rate source. MARKETPLACE = rate through the marketplace's carrier accounts at marketplace-negotiated rates (e.g. Amazon Buy Shipping, Walmart shipping programs — same carriers like UPS/FedEx/USPS but at the marketplace's rates); NATIVE = rate through the seller's own carrier account from the shipping profile. When omitted on a RATESHOP method, the API automatically compares both marketplace and native rates and returns the cheapest — check Rate.Provider in the response to see which source won (marketplace name like \"amazon\" if marketplace, absent if native). When omitted on a direct method, uses whichever provider is configured on the profile. To explicitly compare marketplace vs native rates, make two identical calls differing only in Provider.", + "enum": [ + "MARKETPLACE", + "NATIVE" + ], + "type": "string" +}
- Changed
teapplix_manage_shipping_profile1 field changed- added
Output schema / properties / Profiles / items / properties / CarrierInfoAdded value: +{ + "description": "Read-only. Carrier accounts configured in this profile. Only present on GET responses — cannot be set or modified through this tool. Carrier account setup is managed separately in Teapplix carrier configuration. Use this field to assess rate-shop eligibility: skip any profile/carrier combination where BillThirdParty=true (no rate quotes available).", + "items": { + "additionalProperties": {}, + "properties": { + "AccountId": { + "description": "Carrier account identifier (e.g. FedEx Account Number, UPS Shipper Number). Empty for Teapplix-managed accounts.", + "type": "string" + }, + "AccountType": { + "description": "How the account is held: \"teapplix\" = Teapplix-provided account, \"direct\" = business's own carrier account, \"merchant\" = USPS merchant account", + "type": "string" + }, + "BillThirdParty": { + "description": "When true, carrier charges are billed to a third-party account rather than the shipper. UPS and FedEx only. Blocks rate quotes (carrier will not return rates for third-party billed shipments) but label purchase works — the label is charged to the third-party account. Commonly used when a marketplace mandates fulfillment through their own carrier account.", + "type": "boolean" + }, + "BillThirdPartyAccountId": { + "description": "Third-party carrier account number to bill. Required for both UPS and FedEx when BillThirdParty=true.", + "type": "string" + }, + "BillThirdPartyCountryCode": { + "description": "Country code of the third-party billing account. Required for UPS; not needed for FedEx.", + "type": "string" + }, + "BillThirdPartyPostalCode": { + "description": "Postal code of the third-party billing account. Required for UPS; not needed for FedEx.", + "type": "string" + }, + "Carrier": { + "description": "Carrier name: USPS, FEDEX, UPS, DHL, DHLE, ONTRAC, ESTES, PUROLATOR, CAPOST, AUPOST, SWA, GOFO, YANWEN, UNIUNI", + "type": "string" + }, + "FreightAccountNumber": { + "description": "FedEx Freight LTL account number (separate from the standard FedEx Account Number)", + "type": "string" + }, + "InheritedFromMaster": { + "description": "When true, this profile has no dedicated credentials for this carrier and falls back to the master profile (profile 1) for account credentials.", + "type": "boolean" + }, + "Provider": { + "description": "Integration provider for USPS accounts: usps, pbowes, easypost, wiselution, stamps, endicia", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" +}
- Changed
teapplix_validate_address1 field changed- changed
Input schema / properties / Provider / descriptionPrevious value: -"Address validation engine. Defaults to TEAPPLIX (uses the account default, typically EasyPost). UPS and FEDEX route to that carrier's native validator — only specify these if the user explicitly requests carrier-specific validation and has that carrier account linked."New value: +"Address validation engine. FEDEX is the preferred provider (best quality) but requires a linked FedEx carrier account. TEAPPLIX is always available for every account (USPS-based) and serves as the universal fallback. UPS requires a linked UPS account. Use FEDEX when available, fall back to TEAPPLIX otherwise."
3 tool updates
- Changed
teapplix_get_rates6 fields changed- changed
Output schema / properties / AltRates / items / properties / Error / descriptionPrevious value: -"This will only be returne inside AltRates, never the main Rate return. When running RATESHOP, this is set to indicate that one of the candidate rates did not return a successful result and is skipped. Having this means that the winning rate may not be fully optimal as we have some methods fail to obtain a rate for comparison. It is up to calling logic to decide to proceed or force user to solve the failure."New value: +"Error message indicating a rate could not be obtained. Can appear on both AltRates and the main Rate. On AltRate: a candidate method failed (e.g. during RATESHOP evaluation) — the winning Rate may not be fully optimal. On main Rate: the specifically-requested method is unavailable on this route (service unavailable). Transportation will be 0. Callers must check Rate.Error before treating Rate as a valid quote." - changed
Output schema / properties / AltRates / items / properties / Provider / descriptionPrevious value: -"This typically will indicate that this rate is supplied by a e-commerce marketplace like Amazon or Walmart that supplied their own shipping labels"New value: +"Present when the rate comes from a marketplace's carrier account. The value is the marketplace name in lowercase (e.g. \"amazon\", \"ebay\", \"walmart\", \"tiktok\") — NOT the literal string \"MARKETPLACE\". Absent or empty when the rate comes from the seller's own native carrier account. Note: if you set Provider in the request, you already know the source — this response field is mainly useful when Provider was omitted and you need to detect whether the profile's default used a marketplace rate." - changed
Output schema / properties / Rate / descriptionPrevious value: -"Rate for the requested method when it succeeded. Absent means the requested method failed — inspect AltRates for carrier suggestions. For RATESHOP, this is the winning (lowest-cost) candidate."New value: +"Rate for the requested method. If present with Error set, the method is unavailable on this route (Transportation=0) — treat as a failure. If absent, the requested method failed — inspect AltRates for carrier suggestions. For RATESHOP, this is the winning (lowest-cost) candidate." - changed
Output schema / properties / Rate / properties / Error / descriptionPrevious value: -"This will only be returne inside AltRates, never the main Rate return. When running RATESHOP, this is set to indicate that one of the candidate rates did not return a successful result and is skipped. Having this means that the winning rate may not be fully optimal as we have some methods fail to obtain a rate for comparison. It is up to calling logic to decide to proceed or force user to solve the failure."New value: +"Error message indicating a rate could not be obtained. Can appear on both AltRates and the main Rate. On AltRate: a candidate method failed (e.g. during RATESHOP evaluation) — the winning Rate may not be fully optimal. On main Rate: the specifically-requested method is unavailable on this route (service unavailable). Transportation will be 0. Callers must check Rate.Error before treating Rate as a valid quote." - changed
Output schema / properties / Rate / properties / Provider / descriptionPrevious value: -"This typically will indicate that this rate is supplied by a e-commerce marketplace like Amazon or Walmart that supplied their own shipping labels"New value: +"Present when the rate comes from a marketplace's carrier account. The value is the marketplace name in lowercase (e.g. \"amazon\", \"ebay\", \"walmart\", \"tiktok\") — NOT the literal string \"MARKETPLACE\". Absent or empty when the rate comes from the seller's own native carrier account. Note: if you set Provider in the request, you already know the source — this response field is mainly useful when Provider was omitted and you need to detect whether the profile's default used a marketplace rate." - changed
Output schema / properties / Warnings / descriptionPrevious value: -"optional warning message, you can safely ignore"New value: +"Warnings about the rate response. When the main Rate has Error set (service unavailable), Warnings contains the specific reason the carrier cannot service this route."
- Changed
teapplix_get_rates_for_order7 fields changed- added
Input schema / properties / ProviderAdded value: +{ + "description": "Force the rate source. MARKETPLACE = rate through the marketplace's carrier accounts at marketplace-negotiated rates (e.g. Amazon Buy Shipping, Walmart shipping programs — same carriers like UPS/FedEx/USPS but at the marketplace's rates); NATIVE = rate through the seller's own carrier account from the shipping profile. When omitted on a RATESHOP method, the API automatically compares both marketplace and native rates and returns the cheapest — check Rate.Provider in the response to see which source won (marketplace name like \"amazon\" if marketplace, absent if native). When omitted on a direct method, uses whichever provider is configured on the profile.", + "enum": [ + "MARKETPLACE", + "NATIVE" + ], + "type": "string" +} - changed
Output schema / properties / AltRates / items / properties / Error / descriptionPrevious value: -"This will only be returne inside AltRates, never the main Rate return. When running RATESHOP, this is set to indicate that one of the candidate rates did not return a successful result and is skipped. Having this means that the winning rate may not be fully optimal as we have some methods fail to obtain a rate for comparison. It is up to calling logic to decide to proceed or force user to solve the failure."New value: +"Error message indicating a rate could not be obtained. Can appear on both AltRates and the main Rate. On AltRate: a candidate method failed (e.g. during RATESHOP evaluation) — the winning Rate may not be fully optimal. On main Rate: the specifically-requested method is unavailable on this route (service unavailable). Transportation will be 0. Callers must check Rate.Error before treating Rate as a valid quote." - changed
Output schema / properties / AltRates / items / properties / Provider / descriptionPrevious value: -"This typically will indicate that this rate is supplied by a e-commerce marketplace like Amazon or Walmart that supplied their own shipping labels"New value: +"Present when the rate comes from a marketplace's carrier account. The value is the marketplace name in lowercase (e.g. \"amazon\", \"ebay\", \"walmart\", \"tiktok\") — NOT the literal string \"MARKETPLACE\". Absent or empty when the rate comes from the seller's own native carrier account. Note: if you set Provider in the request, you already know the source — this response field is mainly useful when Provider was omitted and you need to detect whether the profile's default used a marketplace rate." - changed
Output schema / properties / Rate / descriptionPrevious value: -"Rate for the requested method when it succeeded. Absent means the requested method failed — inspect AltRates for carrier suggestions. For RATESHOP, this is the winning (lowest-cost) candidate."New value: +"Rate for the requested method. If present with Error set, the method is unavailable on this route (Transportation=0) — treat as a failure. If absent, the requested method failed — inspect AltRates for carrier suggestions. For RATESHOP, this is the winning (lowest-cost) candidate." - changed
Output schema / properties / Rate / properties / Error / descriptionPrevious value: -"This will only be returne inside AltRates, never the main Rate return. When running RATESHOP, this is set to indicate that one of the candidate rates did not return a successful result and is skipped. Having this means that the winning rate may not be fully optimal as we have some methods fail to obtain a rate for comparison. It is up to calling logic to decide to proceed or force user to solve the failure."New value: +"Error message indicating a rate could not be obtained. Can appear on both AltRates and the main Rate. On AltRate: a candidate method failed (e.g. during RATESHOP evaluation) — the winning Rate may not be fully optimal. On main Rate: the specifically-requested method is unavailable on this route (service unavailable). Transportation will be 0. Callers must check Rate.Error before treating Rate as a valid quote." - changed
Output schema / properties / Rate / properties / Provider / descriptionPrevious value: -"This typically will indicate that this rate is supplied by a e-commerce marketplace like Amazon or Walmart that supplied their own shipping labels"New value: +"Present when the rate comes from a marketplace's carrier account. The value is the marketplace name in lowercase (e.g. \"amazon\", \"ebay\", \"walmart\", \"tiktok\") — NOT the literal string \"MARKETPLACE\". Absent or empty when the rate comes from the seller's own native carrier account. Note: if you set Provider in the request, you already know the source — this response field is mainly useful when Provider was omitted and you need to detect whether the profile's default used a marketplace rate." - changed
Output schema / properties / Warnings / descriptionPrevious value: -"optional warning message, you can safely ignore"New value: +"Warnings about the rate response. When the main Rate has Error set (service unavailable), Warnings contains the specific reason the carrier cannot service this route."
- Changed
teapplix_purchase_label_for_order1 field changed- added
Input schema / properties / ProviderAdded value: +{ + "description": "Force the label provider. MARKETPLACE = purchase through the marketplace's carrier accounts at marketplace-negotiated rates (e.g. Amazon Buy Shipping, Walmart shipping programs — same carriers like UPS/FedEx/USPS but at the marketplace's rates); NATIVE = purchase through the seller's own carrier account from the shipping profile. When omitted, the API uses whichever provider is configured on the profile. Works on RATESHOP methods too — forces the winning method to purchase through the specified provider.", + "enum": [ + "MARKETPLACE", + "NATIVE" + ], + "type": "string" +}
28 tool updates
- First observed
teapplix_apply_packing_plan - First observed
teapplix_cancel_label - First observed
teapplix_create_manifest - First observed
teapplix_create_order - First observed
teapplix_generate_sscc_label - First observed
teapplix_get_order_ship_options - First observed
teapplix_get_orders - First observed
teapplix_get_rates - First observed
teapplix_get_rates_for_order - First observed
teapplix_get_ship_methods - First observed
teapplix_get_zones - First observed
teapplix_help - First observed
teapplix_manage_order_tags - First observed
teapplix_manage_queue - First observed
teapplix_manage_shipping_profile - First observed
teapplix_manage_tag - First observed
teapplix_manage_warehouse - First observed
teapplix_mark_review - First observed
teapplix_purchase_label - First observed
teapplix_purchase_label_for_order - First observed
teapplix_revert_split_order - First observed
teapplix_set_order_ship_options - First observed
teapplix_split_order - First observed
teapplix_split_order_cont - First observed
teapplix_submit_3pl - First observed
teapplix_track - First observed
teapplix_update_order - First observed
teapplix_validate_address
Related MCP Connectors
Compare rates, manage orders, buy labels, schedule pickups, and report on shipping.
Multi-carrier shipping for AI agents: compare rates, buy labels, track packages, validate addresses
Multi-carrier shipping in Mexico: grouped rates, labels, tracking, pickups, address book, webhooks.
Compare carrier rates and buy US shipping labels, QR return labels, pickups and tracking.
Related MCP Servers
- AlicenseAqualityFmaintenanceCarrier-agnostic shipping labels as a self-hostable MCP server. Build one shipment request, get a tracking number and a print-ready label back for DHL, DPD, UPS, FedEx, GLS, Sendcloud, and Shipcloud.32MIT
- 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

Easyship MCPofficial
AlicenseNot gradedqualityFmaintenanceEnables AI agents to manage global shipping operations, including rate comparison, shipment creation, label purchasing, tracking, pickup scheduling, address validation, billing, and analytics, via natural language.135 npmMIT
Shippo MCPofficial
AlicenseNot gradedqualityCmaintenanceAI-powered shipping integrations with Shippo: shipping labels, rates, address validation, tracking and more for USPS, UPS, FedEx, DHL and other carriers.3MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.