Skip to main content
Glama

SMKlog Parcel Shipping Rates

Create a payment session for a shipping label

create_checkout_link

Turns a decided shipment into a payment session: the amount and a handoff URL to prefilled SMKlog checkout. Pass quote_id from get_parcel_quote: its price is reused, no second carrier call. Keep the returned session_id for get_checkout_status. It never charges: the human confirms contents and consents, then pays on the page.

Side effects: writes a 30-day session record; not idempotent, two calls make two sessions. No session for a non-parcel, several boxes, or an installed lithium battery crossing a border.

Parameter rules:

  • A valid quote_id overrides product, from_zip, to_zip, to_country and quantity; service still applies.

  • An expired quote_id reprices from the fields, or fails with missing_required_fields without them.

  • service is a case-insensitive fragment of the display name; no match anchors the quote's first rate, not always the cheapest.

  • from_zip: 5-digit US ZIP; to_zip follows to_country (US, CA, GB, DE, AU).

  • International: customs on the page; the recipient pays duty.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "create_checkout_link"
  }
}

Input Schema

NameRequiredDescriptionDefault
to_zipNoDestination postal code: a 5-digit ZIP for the US, or the destination country's own postal code. Required unless quote_id is given.
productNoPlain-words item description. Required unless quote_id is given.
serviceNoService to anchor the amount to, e.g. "USPS Ground Advantage". Omitted or unmatched, the amount anchors the quote's first rate, top of the best-value ranking rather than the cheapest; the human can still pick any service on the page.
from_zipNoOrigin US ZIP code, 5 digits. Required unless quote_id is given.
quantityNoHow many of the item ship together. Default 1.
quote_idNoThe quote_id returned by a previous get_parcel_quote call. Valid for 15 minutes.
to_countryNoTwo-letter destination country: US (default), CA, GB, DE, AU.US

Output Schema

NameRequiredDescriptionDefault
noteNoStanding caveats: live quote, human confirms consents and pays
amountYesLive-quoted checkout total for the anchored service, USD
intentYesAlways "session" — this tool never charges
methodNoPayment rails behind the checkout, e.g. stripe, card
serviceNoThe service the amount is anchored to
currencyYesISO currency, USD
session_idNoHandle for get_checkout_status, shaped as_ plus a UUID, good for 30 days. Null only when the session record could not be stored.
handoff_urlYesOpens the SMKlog checkout prefilled with this shipment
quote_reusedNoTrue when the amount came from a quote_id you supplied, so no carrier call was spent. False when this tool priced the shipment live -- either because no quote_id was given, or because the one given had expired.
identified_product_titleNoWhat the estimator understood the item to be

Schema Changelog

Changes observed during successful MCP inspections.

  1. 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."
  2. Changed1 schema field changed
    • changedInput schema / properties / service / description
      Previous value: -"Service to anchor the amount to, e.g. \"USPS Ground Advantage\". Cheapest when omitted; the human can still pick any service on the page."New value: +"Service to anchor the amount to, e.g. \"USPS Ground Advantage\". Omitted or unmatched, the amount anchors the quote's first rate, top of the best-value ranking rather than the cheapest; the human can still pick any service on the page."
  3. Changed1 schema field changed
    • addedOutput schema / properties / session_id
      Added value: +{
      +  "description": "Handle for get_checkout_status, shaped as_ plus a UUID, good for 30 days. Null only when the session record could not be stored.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
  4. Changed7 schema fields changed
    • changedInput schema / properties / from_zip / description
      Previous value: -"Origin 5-digit US ZIP. Required unless quote_id is given. The origin is always in the United States."New value: +"Origin US ZIP code, 5 digits. Required unless quote_id is given."
    • 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 / quote_id / description
      Previous value: -"The quote_id returned by a previous get_parcel_quote call, valid for 15 minutes. Pass it and the shipment is taken from that quote, which spends no second carrier call; product, from_zip, to_zip and to_country are then ignored. Omit it and this tool prices the shipment live from the fields below. If the id has expired the tool prices live instead and says so with quote_reused false."New value: +"The quote_id returned by a previous get_parcel_quote call. Valid for 15 minutes."
    • changedInput schema / properties / service / description
      Previous value: -"Optional service to anchor the amount, e.g. \"USPS Ground Advantage\". Cheapest when omitted; the human can still pick any service on the page."New value: +"Service to anchor the amount to, e.g. \"USPS Ground Advantage\". Cheapest when omitted; the human can still pick any service on the page."
    • changedInput schema / properties / to_country / description
      Previous value: -"Two-letter destination country. Omit for domestic. Sold online: US, CA, GB, DE, AU. On the four international lanes the human completes the customs declaration on the handoff page before paying, and duty is billed to the recipient on arrival (DDU) rather than added here."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."New value: +"Destination postal code: a 5-digit ZIP for the US, or the destination country's own postal code. Required unless quote_id is given."
  5. Changed5 schema fields changed
    • changedInput schema / properties / from_zip / description
      Previous value: -"Origin 5-digit US ZIP. The origin is always in the United States."New value: +"Origin 5-digit US ZIP. Required unless quote_id is given. The origin is always in the United States."
    • changedInput schema / properties / product / description
      Previous value: -"Plain-words item description"New value: +"Plain-words item description. Required unless quote_id is given."
    • addedInput schema / properties / quote_id
      Added value: +{
      +  "description": "The quote_id returned by a previous get_parcel_quote call, valid for 15 minutes. Pass it and the shipment is taken from that quote, which spends no second carrier call; product, from_zip, to_zip and to_country are then ignored. Omit it and this tool prices the shipment live from the fields below. If the id has expired the tool prices live instead and says so with quote_reused false.",
      +  "type": "string"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "product",
      -  "from_zip",
      -  "to_zip"
      -]New value: +[]
    • addedOutput schema / properties / quote_reused
      Added value: +{
      +  "description": "True when the amount came from a quote_id you supplied, so no carrier call was spent. False when this tool priced the shipment live -- either because no quote_id was given, or because the one given had expired.",
      +  "type": "boolean"
      +}
  6. Changed5 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."
    • 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 domestic. Sold online: US, CA, GB, DE, AU. On the four international lanes the human completes the customs declaration on the handoff page before paying, and duty is billed to the recipient on arrival (DDU) rather than added here.",
      +  "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."
    • changedOutput schema / description
      Previous value: -"A payment session, not a charge: the amount and the handoff URL where the human pays."New value: +"A payment session, not a charge: the amount and the handoff URL where the human pays. The amount is a live quote at this moment, not a hold or a reservation, and no money moves until the human completes the page."
  7. First observed

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already flag non-read-only, non-idempotent and open-world, but the description adds concrete consequences: a 30-day session record is written, two calls make two sessions, and the tool never charges because a human confirms and consents on the page. Those are exactly the behavioral facts an agent cannot infer from the annotation flags.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded summary, then side effects, then parameter rules — every section earns its place and the structure is skimmable. Minor overlap with the schema, such as repeating the 5-digit ZIP rule and the country list, slightly exceeds what the description needed to say.

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?

Given an output schema exists, the description need not explain return values, and it covers the remaining gaps: side effects, idempotency, quote precedence, expiry failure mode, and international duty handling. Nothing an agent needs to invoke this correctly is 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?

Schema coverage is 100%, yet the description still adds precedence semantics the schema does not state: quote_id overrides product, from_zip, to_zip, to_country and quantity while service still applies, and an expired quote reprices from fields or fails with missing_required_fields. It also clarifies that an unmatched service anchors the first rate rather than the cheapest, correcting a likely misreading of the schema text.

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?

Opens with a specific verb+resource framing ("Turns a decided shipment into a payment session") and immediately names its inputs and outputs — amount plus a handoff URL to prefilled SMKlog checkout. The explicit handoff to get_parcel_quote and get_checkout_status makes it distinguishable from every sibling in the list.

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?

Gives positive routing (pass quote_id from get_parcel_quote; keep session_id for get_checkout_status) and explicit exclusions (no session for a non-parcel, several boxes, or an installed lithium battery crossing a border). An agent knows both when to call this and when to refuse.

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.