Skip to main content
Glama

PostalForm

Create a mail order draft from letter text

postalform.create_letter_order_draft

Prepare letter text for mailing and return the order ID, total, hosted checkout URL, and checkout session. Accepts text directly; no PDF upload or browser is needed. Letter drafts may include typed or drawn signatures. After buyer approval, a compatible client can use complete_checkout with a Stripe shared payment token; otherwise present the hosted checkout URL. To prepare for MPP, set payment_protocol=mpp and buyer_email; receive a PDF preview, hosted checkout_url fallback and MPP challenge, then use postalform.pay_order with the order_id after buyer approval. Draft creation never pays. For x402, use postalform.create_machine_order.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
colorNo
letterYes
certifiedNo
buyer_nameNoReceipt name; defaults to sender_name for MPP.
mail_classNo
request_idNo
buyer_emailNoRequired for MPP receipt delivery.
sender_nameYes
double_sidedNo
recipient_nameYes
payment_protocolNoOptional payment path. Defaults to hosted checkout. Choose mpp to return a payment challenge for this same prepared order; buyer_email is required. Draft creation never pays.
sender_address_idNo
sender_address_textNo
sender_address_typeYes
recipient_address_idNo
sender_address_manualNo
recipient_address_textNo
recipient_address_typeYes
certified_return_receiptNo
recipient_address_manualNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
viewYes
paymentNo
order_idYes
price_usdYes
page_countYes
preview_urlNo
sender_nameYes
checkout_urlYes
recipient_nameYes
checkout_sessionNo
payment_protocolNo
sender_address_textYes
recipient_address_textYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.3/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false, destructiveHint=false, openWorldHint=true, so the write/safety profile is already covered. The description adds real behavioral context beyond that: 'Draft creation never pays', the exact return payload (order ID, total, hosted checkout URL, checkout session), the MPP challenge/preview behavior, and that signatures may be typed or drawn. It stops short of stating auth requirements or rate limits.

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 action and the returned artifacts, then the checkout/MPP branches. Every sentence carries routing or behavioral information; the MPP and x402 sentences are dense but each names a distinct flow rather than padding.

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 20-parameter, nested-object tool with an output schema, the description covers the payment lifecycle, the signature capability, and sibling routing well. The remaining gap is the address-selection parameters and mailing options (mail_class, certified, double_sided), which are left entirely to a sparse schema.

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 15% across 20 parameters, so the description carries a heavy burden. It does clarify payment_protocol and buyer_email and notes that letter text and signatures are supplied inline, but it never explains the Address/Container/Manual address_type enums or how address_id vs address_text vs address_manual differ — the single most ambiguous part of the schema.

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 ('Prepare letter text for mailing' returning an order ID), and clearly distinguishes itself from create_pdf_upload ('no PDF upload or browser is needed') and create_machine_order ('For x402, use postalform.create_machine_order'). An agent can route among the sibling draft creators without opening a schema.

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?

Explicitly lays out the branches: use complete_checkout after buyer approval with a Stripe shared payment token, otherwise present the hosted checkout URL; set payment_protocol=mpp plus buyer_email for MPP and then call postalform.pay_order; use create_machine_order for x402. When-to-use and which-alternative are both spelled out.

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