Skip to main content
Glama

ActionShip by Teapplix Demo

Get Shipping Rates

teapplix_get_rates
Read-only

Get shipping rates for a shipment without an existing order. [DEMO]

Input Schema

NameRequiredDescriptionDefault
ToYesDestination address.
FromYesShip-from address OR a saved shipping profile — supply exactly one shape.
PackagesYesOne 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.
ProviderNoForce 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.
ShipDateNoShip date (YYYY-MM-DD). Defaults to today. Interpreted as Pacific timezone.
CustomsDeclarationNoInternational shipments only. Omit unless shipping outside US. Fields: ReasonForExport, IOssNumber, Items: [{Description, Quantity, Value, Weight, HSTariffNumber, CountryOfOrigin}].

Output Schema

NameRequiredDescriptionDefault
RateNoRate 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.
ZoneNoCarrier zone for the selected rate (e.g. "3").
AltRatesNoCarrier-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.
WarningsNoWarnings about the rate response. When the main Rate has Error set (service unavailable), Warnings contains the specific reason the carrier cannot service this route.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / Provider
      Added 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"
      +}
  2. Changed6 schema fields changed
    • changedOutput schema / properties / AltRates / items / properties / Error / description
      Previous 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."
    • changedOutput schema / properties / AltRates / items / properties / Provider / description
      Previous 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."
    • changedOutput schema / properties / Rate / description
      Previous 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."
    • changedOutput schema / properties / Rate / properties / Error / description
      Previous 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."
    • changedOutput schema / properties / Rate / properties / Provider / description
      Previous 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."
    • changedOutput schema / properties / Warnings / description
      Previous 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."
  3. First observed

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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

Schema description coverage is 100% and the nested 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.

Purpose4/5

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.

Usage Guidelines3/5

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.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources