Skip to main content
Glama

SMKlog Parcel Shipping Rates

Get live parcel shipping rates from a US origin

get_parcel_quote
Read-only

Live parcel rates from a US origin: USPS, UPS, FedEx; DHL Express to DE and AU. Describe the item to estimate the box, or give exact dimensions and weight. Up to five services, each a total with the SMKlog fee inside (itemized only on the checkout receipt). To buy on smklog.com: quote_id to create_checkout_link. Typical prices: get_price_index (free).

Parameter rules:

  • weight_lb, length_in, width_in, height_in count only as a set of four above zero, else the box is estimated.

  • One label per box: units that fit one box are priced as that box; more boxes or a quantity above 1 sent with exact dimensions: multiple_boxes.

  • Over 150 lb, 108 in longest side or 165 in length plus girth, or pallet or freight: mode not_a_parcel.

  • product: the item, up to 200 characters; a bare route, weight or question: product_not_recognized.

  • from_zip: a real 5-digit US ZIP, else invalid_us_zip.

  • to_country: US, CA, GB, DE or AU, else international_unsupported_online; to_zip follows it.

  • 80 calls an hour per client.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "product": "<product>",
      "from_zip": "<from_zip>",
      "to_zip": "<to_zip>"
    },
    "name": "get_parcel_quote"
  }
}

Input Schema

NameRequiredDescriptionDefault
to_zipYesA 5-digit ZIP for the US, else the country's postal code, e.g. M5V 2T6 (Toronto), SW1A 1AA (London).
productYesPlain-words item description, e.g. "65 inch flat screen TV in original box".
from_zipYesOrigin US ZIP code, 5 digits.
quantityNoHow many of the item ship together.
width_inNoPacked box width, inches.
height_inNoPacked box height, inches.
length_inNoPacked box length, inches.
weight_lbNoPacked weight, pounds.
to_countryNoTwo-letter destination country: US (default), CA, GB, DE, AU.US

Output Schema

NameRequiredDescriptionDefault
modeNoparcel_label_ready when rates are listed; otherwise not_a_parcel, multiple_boxes or parcel_restricted
ratesYesUp to five services. Not cheapest first: ranked by checkout total in cents plus 175 per business day in transit (30 when none is quoted), lowest first; a rate with a carrier counter price may lead a near-tie within 50 cents or 2 percent. Sort by amount yourself for the cheapest.
packageNoThe packed box the rates were computed for
quote_idNoValid 15 minutes; pass it to create_checkout_link to skip a second carrier call. Null when no rate came back or it could not be stored.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed11 schema fields changed
    • changedInput schema / properties / from_zip / description
      Previous value: -"Origin US ZIP code, 5 digits. The origin is always in the United States."New value: +"Origin US ZIP code, 5 digits."
    • changedInput schema / properties / quantity / description
      Previous value: -"How many of the item ship together. Default 1."New value: +"How many of the item ship together."
    • changedInput schema / properties / to_zip / description
      Previous value: -"Destination postal code: a 5-digit ZIP for the US, or the destination country's own postal code, e.g. M5V 2T6 for Toronto or SW1A 1AA for London."New value: +"A 5-digit ZIP for the US, else the country's postal code, e.g. M5V 2T6 (Toronto), SW1A 1AA (London)."
    • changedInput schema / properties / weight_lb / description
      Previous value: -"Packed weight, pounds. Decimals allowed."New value: +"Packed weight, pounds."
    • changedOutput schema / description
      Previous value: -"Live rates for the shipment. Empty rates come with a mode that says why: not_a_parcel (SMKlog does not arrange pallet or freight shipments), multiple_boxes (quote each box on its own) or parcel_restricted."New value: +"Live rates; when rates is empty, mode says why."
    • changedOutput schema / properties / mode / description
      Previous value: -"Quote mode: parcel_label_ready when rates are listed; not_a_parcel, multiple_boxes or parcel_restricted when they are not"New value: +"parcel_label_ready when rates are listed; otherwise not_a_parcel, multiple_boxes or parcel_restricted"
    • changedOutput schema / properties / quote_id / description
      Previous value: -"Handle to this quote, good for 15 minutes. Pass it to create_checkout_link as quote_id and that call spends no second carrier call. Null when no rate came back, or when the handle could not be stored."New value: +"Valid 15 minutes; pass it to create_checkout_link to skip a second carrier call. Null when no rate came back or it could not be stored."
    • changedOutput schema / properties / rates / description
      Previous value: -"Up to five purchasable services. Not cheapest first: they are ranked by best value, each rate scored as its checkout total in cents plus 175 per business day of transit (30 days when the carrier quotes none), lowest score first, and a rate that publishes a carrier counter price may lead a near-tie within 50 cents or 2 percent. Sort by amount yourself when you want the cheapest."New value: +"Up to five services. Not cheapest first: ranked by checkout total in cents plus 175 per business day in transit (30 when none is quoted), lowest first; a rate with a carrier counter price may lead a near-tie within 50 cents or 2 percent. Sort by amount yourself for the cheapest."
    • changedOutput schema / properties / rates / items / properties / delivery_days / description
      Previous value: -"Business days in transit when the carrier quotes one"New value: +"Business days in transit, if quoted"
    • changedOutput schema / properties / rates / items / properties / delivery_estimated_date / description
      Previous value: -"Estimated delivery date when quoted"New value: +"Estimated delivery date, if quoted"
    • changedOutput schema / properties / rates / items / properties / retail_amount / description
      Previous value: -"Carrier retail counter price, USD; 0 when not published"New value: +"Carrier counter price, USD; 0 when not published"
  2. Changed1 schema field changed
    • changedInput schema / properties / quantity / description
      Previous value: -"Identical parcels in this shipment. Default 1."New value: +"How many of the item ship together. Default 1."
  3. Changed2 schema fields changed
    • changedOutput schema / description
      Previous value: -"Live rates for the shipment. Empty rates with mode \"freight_manager\" means a person prices it."New value: +"Live rates for the shipment. Empty rates come with a mode that says why: not_a_parcel (SMKlog does not arrange pallet or freight shipments), multiple_boxes (quote each box on its own) or parcel_restricted."
    • changedOutput schema / properties / mode / description
      Previous value: -"Quote mode; \"freight_manager\" routes to a human review"New value: +"Quote mode: parcel_label_ready when rates are listed; not_a_parcel, multiple_boxes or parcel_restricted when they are not"
  4. Changed3 schema fields changed
    • changedOutput schema / properties / rates / items / properties / amount / description
      Previous value: -"Checkout total, USD"New value: +"Checkout total, USD, SMKlog fee inside"
    • removedOutput schema / properties / rates / items / properties / carrier_amount
      Removed value: -{
      -  "description": "Negotiated carrier cost, USD",
      -  "type": "number"
      -}
    • removedOutput schema / properties / rates / items / properties / service_fee
      Removed value: -{
      -  "description": "SMKlog fee, USD",
      -  "type": "number"
      -}
  5. Changed1 schema field changed
    • changedOutput schema / properties / rates / description
      Previous value: -"Purchasable services, cheapest first"New value: +"Up to five purchasable services. Not cheapest first: they are ranked by best value, each rate scored as its checkout total in cents plus 175 per business day of transit (30 days when the carrier quotes none), lowest score first, and a rate that publishes a carrier counter price may lead a near-tie within 50 cents or 2 percent. Sort by amount yourself when you want the cheapest."
  6. Changed1 schema field changed
    • changedOutput schema / properties / rates / items / properties / carrier / description
      Previous value: -"USPS, UPS or FedEx"New value: +"USPS, UPS, FedEx or DHL"
  7. Changed14 schema fields changed
    • changedInput schema / properties / from_zip / description
      Previous value: -"Origin 5-digit US ZIP. The origin is always in the United States; there is no lane that starts abroad."New value: +"Origin US ZIP code, 5 digits. The origin is always in the United States."
    • changedInput schema / properties / height_in / description
      Previous value: -"Packed box height in inches."New value: +"Packed box height, inches."
    • addedInput schema / properties / height_in / exclusiveMinimum
      Added value: +0
    • changedInput schema / properties / length_in / description
      Previous value: -"Packed box length in inches. Supply all three dimensions AND weight_lb to skip the estimate."New value: +"Packed box length, inches."
    • addedInput schema / properties / length_in / exclusiveMinimum
      Added value: +0
    • changedInput schema / properties / product / description
      Previous value: -"Plain-words item description, e.g. \"65 inch flat screen TV in original box\""New value: +"Plain-words item description, e.g. \"65 inch flat screen TV in original box\"."
    • changedInput schema / properties / quantity / description
      Previous value: -"How many identical parcels ship together, priced as separate labels. Defaults to 1."New value: +"Identical parcels in this shipment. Default 1."
    • changedInput schema / properties / to_country / description
      Previous value: -"Two-letter destination country. Omit for a domestic shipment. Sold online: US, CA, GB, DE, AU. Any other country is refused with international_unsupported_online rather than priced, so do not retry it with a different box."New value: +"Two-letter destination country: US (default), CA, GB, DE, AU."
    • addedInput schema / properties / to_country / enum
      Added value: +[
      +  "US",
      +  "CA",
      +  "GB",
      +  "DE",
      +  "AU"
      +]
    • changedInput schema / properties / to_zip / description
      Previous value: -"Destination postal code. A 5-digit ZIP when to_country is US or omitted; otherwise that country's own postal code, e.g. M5V 2T6 for Toronto or SW1A 1AA for London."New value: +"Destination postal code: a 5-digit ZIP for the US, or the destination country's own postal code, e.g. M5V 2T6 for Toronto or SW1A 1AA for London."
    • changedInput schema / properties / weight_lb / description
      Previous value: -"Packed weight in pounds. Optional; estimated from the description when omitted."New value: +"Packed weight, pounds. Decimals allowed."
    • addedInput schema / properties / weight_lb / exclusiveMinimum
      Added value: +0
    • changedInput schema / properties / width_in / description
      Previous value: -"Packed box width in inches."New value: +"Packed box width, inches."
    • addedInput schema / properties / width_in / exclusiveMinimum
      Added value: +0
  8. Changed1 schema field changed
    • addedOutput schema / properties / quote_id
      Added value: +{
      +  "description": "Handle to this quote, good for 15 minutes. Pass it to create_checkout_link as quote_id and that call spends no second carrier call. Null when no rate came back, or when the handle could not be stored.",
      +  "type": "string"
      +}
  9. Changed4 schema fields changed
    • changedInput schema / properties / from_zip / description
      Previous value: -"Origin 5-digit US ZIP"New value: +"Origin 5-digit US ZIP. The origin is always in the United States; there is no lane that starts abroad."
    • changedInput schema / properties / quantity / description
      Previous value: -"How many identical parcels ship together. Defaults to 1."New value: +"How many identical parcels ship together, priced as separate labels. Defaults to 1."
    • addedInput schema / properties / to_country
      Added value: +{
      +  "default": "US",
      +  "description": "Two-letter destination country. Omit for a domestic shipment. Sold online: US, CA, GB, DE, AU. Any other country is refused with international_unsupported_online rather than priced, so do not retry it with a different box.",
      +  "type": "string"
      +}
    • changedInput schema / properties / to_zip / description
      Previous value: -"Destination 5-digit US ZIP"New value: +"Destination postal code. A 5-digit ZIP when to_country is US or omitted; otherwise that country's own postal code, e.g. M5V 2T6 for Toronto or SW1A 1AA for London."
  10. First observed

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare read-only, open-world reading, so the description goes further: it discloses the 80 calls/hour rate limit, that up to five services are returned, that the SMKlog fee is baked into each total and itemized only on the receipt, and the specific error codes for bad input. That is behavior an agent cannot infer from annotations.

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?

The lead sentence is front-loaded with purpose and the buyer/price-index routing, and the bulleted parameter rules are scannable. It is dense but nearly every clause carries an actionable rule; the telegraphic phrasing (e.g. 'a bare route, weight or question: product_not_recognized') costs a little readability.

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

Completeness5/5

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

With an output schema present, the description correctly avoids restating return shapes and instead spends its length on inputs, thresholds, error modes, and rate limits. For a nine-parameter quote tool with geographic restrictions, nothing an agent needs to call it correctly appears to be missing.

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

Parameters5/5

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

Despite 100% schema coverage, the description adds genuine conditional semantics the schema lacks: the four dimension fields only apply as a set all above zero or the box is estimated, one label per box with quantity >1 plus dimensions escalating to multiple_boxes, the 150 lb / 108 in / 165 in girth thresholds, the 200-character product limit, and the real-ZIP and country enum constraints.

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

Purpose5/5

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

The opening sentence gives a specific verb and resource (live parcel rates) plus scope (US origin), names the carriers (USPS, UPS, FedEx) and the DHL country limits. It also distinguishes itself from siblings by pointing to create_checkout_link and get_price_index, so an agent can choose correctly without reading schemas.

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

Usage Guidelines5/5

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

It explicitly routes the agent: use this tool for live rates, get_price_index for typical prices (free), and create_checkout_link with the returned quote_id to buy. It also defines when NOT to use it, by mapping oversized/pallet/freight cases to mode not_a_parcel and multi-box cases to multiple_boxes.

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.