Skip to main content
Glama

Card Mailer

Create order and payment link

create_mailing

Creates an unpaid order for the ready recipients in a saved list and the selected saved card design. Returns a cards.onmax.me link for the user to review recipients and pay. Nothing is printed, mailed or charged until the user pays on that page. Rows needing fixes are excluded. Each call creates a separate order link. An optional US sender address is printed as the return address.

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": "create_mailing"
  }
}

Input Schema

NameRequiredDescriptionDefault
senderNoReturn address (US).
list_idYes
arrive_byNo
design_idYes
send_dateNoDate to print and mail, YYYY-MM-DD.

Output Schema

NameRequiredDescriptionDefault
kindYes
notesYes
totalYes
list_idYes
on_timeNo
quantityYes
design_idYes
send_dateYes
mailing_idYes
unit_priceYes
total_centsYes
checkout_urlYes
needs_fixingYes
arrives_betweenYes
latest_send_dateNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. 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"
  2. First observed

TDQS

A3.9/5.0
Behavior4/5

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

Beyond the annotations, the description discloses the key behavioral facts an agent could not otherwise know: nothing is printed, mailed or charged until the user pays on the returned page, and each call creates a separate order link (concretely reinforcing the non-idempotent hint). It also explains that defective rows are silently dropped and that the optional sender address becomes the printed return address. It stops short of stating permission/scope requirements or what happens if the list has zero ready recipients.

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?

Five short sentences, front-loaded with the core action and result, and each sentence carries distinct information (link return, no side effects until payment, row exclusion, per-call isolation, sender semantics). Minor density in the trailing sender sentence, but no filler.

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

Completeness4/5

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

For a mutating, open-world, non-idempotent tool, the description covers the essentials: what is created, what is not yet done, what is returned, and the repeat-call behavior. With an output schema present and annotations covering safety flags, the remaining gaps (arrive_by semantics, empty-list behavior) are moderate rather than disqualifying.

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 only 40%, and the description partly compensates: it clarifies that list_id and design_id reference a pre-existing saved list and saved card design, and that `sender` is a US return address that gets printed. However, arrive_by and send_date receive no added meaning beyond the schema (send_date only has the schema's own 'YYYY-MM-DD' note; arrive_by has a pattern but no explanation of what it constrains), leaving real gaps at 40% coverage.

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 description names a specific verb and resource ('Creates an unpaid order') plus the two inputs it consumes ('ready recipients in a saved list', 'selected saved card design'), and the return artifact (a cards.onmax.me link). This clearly distinguishes it from sibling tools such as quote_mailing and design_card, which quote or produce assets rather than create an order.

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?

Usage is implied rather than stated: 'Rows needing fixes are excluded' hints that fix_address should be run first, and the deferred-payment framing implies quote_mailing is a cheaper preview, but neither sibling is named and no explicit when-to-use/when-not guidance is given. An agent can infer the workflow but must do the inference itself.

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