Skip to main content
Glama

Card Mailer

Quote mailing

quote_mailing
Read-onlyIdempotent

Calculates the unit price including First-Class postage, total for ready recipients, send date and estimated arrival window for a saved US recipient list. A saved design_id includes that design's current front and back preview. Null design_id produces a price-only quote with preview_included: false. arrive_by adds the latest safe send date and whether the requested date can be met. Does not create an order or charge money.

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": {
      "list_id": "<list_id>",
      "design_id": "<design_id>"
    },
    "name": "quote_mailing"
  }
}

Input Schema

NameRequiredDescriptionDefault
list_idYes
arrive_byNoDate the cards should arrive by, YYYY-MM-DD.
design_idYesSaved design identifier for the current front and back preview, or null for a price-only quote without a design. Required field.
send_dateNoDate to print and mail, YYYY-MM-DD. Default: the latest safe date for arrive_by, otherwise the earliest business day (today if it is one).

Output Schema

NameRequiredDescriptionDefault
kindYes
notesYes
totalYes
on_timeNo
quantityYes
design_idNo
send_dateYes
unit_priceYes
total_centsYes
needs_fixingYes
arrives_betweenYes
latest_send_dateNo
preview_includedYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / design_id / description
      Previous value: -"Required preview choice. Use the exact design_id returned by design_card for a preview with price. Use null only for a price-only request without a design. Do not omit."New value: +"Saved design identifier for the current front and back preview, or null for a price-only quote without a design. Required field."
  2. Changed5 schema fields changed
    • changedInput schema / properties / design_id / description
      Previous value: -"Existing design_id from design_card. Pass it when the user wants the actual card preview with the quote, including after an edit. Omit for a price-only quote."New value: +"Required preview choice. Use the exact design_id returned by design_card for a preview with price. Use null only for a price-only request without a design. Do not omit."
    • changedInput schema / properties / design_id / type
      Previous value: -"string"New value: +[
      +  "string",
      +  "null"
      +]
    • changedInput schema / required
      Previous value: -[
      -  "list_id"
      -]New value: +[
      +  "list_id",
      +  "design_id"
      +]
    • addedOutput schema / properties / preview_included
      Added value: +{
      +  "type": "boolean"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "kind",
      -  "quantity",
      -  "unit_price",
      -  "total",
      -  "total_cents",
      -  "send_date",
      -  "arrives_between",
      -  "notes",
      -  "needs_fixing"
      -]New value: +[
      +  "kind",
      +  "preview_included",
      +  "quantity",
      +  "unit_price",
      +  "total",
      +  "total_cents",
      +  "send_date",
      +  "arrives_between",
      +  "notes",
      +  "needs_fixing"
      +]
  3. Changed2 schema fields changed
    • addedInput schema / properties / design_id
      Added value: +{
      +  "description": "Existing design_id from design_card. Pass it when the user wants the actual card preview with the quote, including after an edit. Omit for a price-only quote.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / design_id
      Added value: +{
      +  "type": "string"
      +}
  4. Changed2 schema fields changed
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • changedOutput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  5. First observed

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint false and openWorldHint false, so safety and side-effect profile are covered structurally. The description adds genuinely new behavior: null design_id yields a price-only quote with preview_included false, and arrive_by triggers a latest-safe-send-date calculation plus a feasibility verdict. It does not discuss error cases for invalid list_id or expired designs.

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 with the core calculation, then conditional behaviors, then the non-mutation boundary — a logical order with no filler. The design_id null case is restated from the schema, which is mild redundancy but serves 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?

For a four-parameter, read-only quote tool with an output schema supplying return shapes, the description covers scope, conditional branches and the crucial non-mutation guarantee. Nothing an agent needs in order to call it correctly is missing.

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

Parameters4/5

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

Schema coverage is 75%, so the baseline is near 3, but the description adds meaning the schema lacks — specifically what arrive_by actually produces (latest safe send date and whether the requested date can be met) and what a null design_id changes about the response. send_date default logic is only echoed from the schema, not extended.

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?

States a specific verb and resource: calculates unit price with postage, recipient totals, send date and arrival window for a saved list. The closing line 'Does not create an order or charge money' cleanly separates it from create_mailing, so an agent can route between quote and order without opening either schema.

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

Usage Guidelines4/5

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

Clear context for use — pricing a mailing before committing — and an explicit exclusion ('does not create an order or charge money') that points an agent toward actually placing the order elsewhere. It stops short of naming create_mailing or get_mailing_status as the alternative, so routing is inferred rather than explicit.

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