Skip to main content
Glama

Server Details

Your agent sends real postcards and letters. You approve; we print and mail.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 21 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
ryan-tish/sendpaper-plugin
GitHub Stars
0
Server Listing
sendpaper

TDQS

A4.1/5.0

Scored across 6 tools

Disambiguation5/5

Each tool targets a distinct action-object pair: create_letter and create_postcard are separate products, while cancel_order, get_order, get_pricing, and pay_order have clearly different purposes. There is no meaningful overlap that would cause an agent to misselect.

Naming Consistency5/5

All six tools follow a consistent snake_case verb_noun pattern (cancel_order, create_letter, create_postcard, get_order, get_pricing, pay_order). The convention is predictable throughout.

Tool Count5/5

Six tools is well-scoped for a printed-mail ordering service. Each tool earns its place, covering creation, pricing, payment, status, and cancellation without redundancy.

Completeness4/5

The core lifecycle is covered: create letter/postcard, pay, retrieve status, cancel, and check pricing. Minor gaps exist, such as no list_orders to retrieve a user's order history or edit a draft before payment, but agents can work around these if the user provides an order id.

Available Tools

6 tools
cancel_orderCancel an unpaid orderA
DestructiveIdempotent
Inspect

Cancel an order that has not been paid yet. Paid orders can be cancelled by emailing support before they are printed.

NameRequiredDescriptionDefault
order_idYesOrder id, ord_…

Output Schema

NameRequiredDescription
idYesOrder id, ord_…
batchNoPresent when the order was created with recipients: the whole group. The top-level fields describe the first recipient's order; use batch.price and batch.checkout_url for the total and payment.
priceYes
objectYes
ordersNoEvery order in the group, when created with recipients
statusYesawaiting_payment, paid, printing, mailed, cancelled or refunded
productYesProduct id, e.g. postcard_4x6 or letter_certified
discountYesFirst-order discount, already taken off price; null when none applies
trackingYesUSPS tracking, for Certified Mail once printed
certifiedYesnone, certified or certified_return_receipt
order_urlYesOrder status page
preview_urlYesExact print preview
checkout_urlYesWhere the user pays; null once paid or cancelled
product_nameYes
status_detailYesPlain-English status to show the user
preview_image_urlNoPNG picture of the piece (postcard front and back, or the letter's first page) to show the user

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is covered structurally. The description adds real behavioral context beyond that: the eligibility boundary (unpaid only) and the escalation route for paid orders. It does not spell out what state the order lands in after cancellation, which keeps it short of a 5.

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

Conciseness5/5

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

Two tight sentences with the primary constraint front-loaded and the fallback path second. No filler, no repetition of the title.

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?

An output schema exists, so return values need not be described. Between the annotations, the schema and these two sentences, an agent has what it needs to decide and invoke correctly; only the post-cancellation order state is unstated, which is minor.

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?

One parameter with 100% schema description coverage ('Order id, ord_…'), so the schema fully documents the input. The description adds no format, prefix or validation detail beyond that, making the baseline 3 appropriate.

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

Purpose4/5

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

Names a specific verb and resource ('Cancel an order') and adds a scope constraint ('that has not been paid yet'), which is more than a restatement of the title. It does not explicitly differentiate itself from the siblings, but none of them (create_letter, create_postcard, get_order, get_pricing, pay_order) overlap with cancellation, so ambiguity is low.

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?

States the condition for use (order must be unpaid) and gives an explicit alternative path for the excluded case (paid orders must go through support email before printing). It stops short of naming a sibling tool, but there is no sibling that performs this action.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_letterCreate a letterAInspect

Create a printed letter order (8.5x11, mailed in a #10 envelope) and get a payment link. Either write it (content.body, up to ~3 pages, optional photo) or mail the user's own PDF (content.pdf_url, a public https link, up to 6 pages). Set certified to "certified" for USPS Certified Mail with tracking and proof of delivery, or "certified_return_receipt" to add the recipient's signature; use these when the user needs proof (tax notice replies, lease notices, disputes, demand letters). Or set express for USPS Priority Mail (not with certified). Prices: get_pricing. Mails only after the user pays.

NameRequiredDescriptionDefault
toNoRecipient's US mailing address (or use recipients for several people)
fromYesReturn address; printed on the mail piece
contentYesThe letter: body text (optionally with a photo) or your own PDF
expressNoSend by express (USPS Priority Mail, usually 2–3 days, with tracking) for an extra charge; see get_pricing. Not available with certified.
certifiedNoUSPS Certified Mail. "certified": tracking number and proof of mailing and delivery. "certified_return_receipt": adds the recipient's signature as proof of delivery, which landlords, courts and agencies often require. "none": regular First-Class. Prices: get_pricing.none
recipientsNoSend the same piece to several people: 2-25 US addresses, used INSTEAD of to. Each gets their own order and tracking; one payment covers all.
customer_emailNoWhere to send the receipt and status updates
idempotency_keyNoAny unique string; retrying with the same key returns the original order instead of creating a duplicate

Output Schema

NameRequiredDescription
idYesOrder id, ord_…
batchNoPresent when the order was created with recipients: the whole group. The top-level fields describe the first recipient's order; use batch.price and batch.checkout_url for the total and payment.
priceYes
objectYes
ordersNoEvery order in the group, when created with recipients
statusYesawaiting_payment, paid, printing, mailed, cancelled or refunded
productYesProduct id, e.g. postcard_4x6 or letter_certified
discountYesFirst-order discount, already taken off price; null when none applies
trackingYesUSPS tracking, for Certified Mail once printed
certifiedYesnone, certified or certified_return_receipt
order_urlYesOrder status page
preview_urlYesExact print preview
checkout_urlYesWhere the user pays; null once paid or cancelled
product_nameYes
status_detailYesPlain-English status to show the user
preview_image_urlNoPNG picture of the piece (postcard front and back, or the letter's first page) to show the user

TDQS

A4.3/5.0
Behavior4/5

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

Annotations declare it is a write operation (readOnlyHint=false) that is non-destructive and open-world; the description adds the crucial behavioral fact that nothing mails until the user pays, plus the payment-link flow. It does not describe rate limits or cancellation, but a sibling cancel_order exists so that is inferable.

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-loads what the tool produces, then the content choice, then the mailing options. Dense but every sentence carries a decision-relevant constraint; only slight compression cost from packing pricing and enum guidance together.

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 an 8-parameter, multi-mode, payment-gated tool with an output schema, the description covers the key decision paths (body vs PDF, certified levels, express) and the pay-before-mail rule. It omits the multi-recipient 'recipients' path, which the schema documents but the description never mentions.

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 100%, so baseline is 3, but the description adds real decision semantics: body vs pdf_url mutually exclusive alternatives with page limits, certified enum value meanings, and the express/certified incompatibility. This meaningfully exceeds 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?

States a specific verb+resource ('Create a printed letter order') and immediately scopes it (8.5x11, #10 envelope, returns a payment link). It is clearly distinguishable from the sibling create_postcard by naming the letter format and envelope.

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?

Gives concrete when-to-use guidance for certified vs certified_return_receipt (tax notice replies, lease notices, disputes) and notes express is 'not with certified'. It does not explicitly contrast against create_postcard, but the routing to get_pricing and the payment-gated flow are clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_postcardCreate a postcardAInspect

Create a postcard order (4x6, 6x9 or 6x11) and get a payment link. Front layouts: a big headline on a color, one photo, a photo with a caption, or a collage of 2-4 photos; the back carries the message (handwriting, serif or sans) and addresses. Set express for USPS Priority Mail (2-3 days, tracked). Mails only after the user pays.

NameRequiredDescriptionDefault
toNoRecipient's US mailing address (or use recipients for several people)
fromYesReturn address; printed on the mail piece
sizeNoPostcard size: 4x6, 6x9 or 6x11 (see get_pricing for prices)4x6
contentYesFront (an image URL or a headline) and the message on the back
expressNoSend by express (USPS Priority Mail, usually 2–3 days, with tracking) for an extra charge; see get_pricing. Not available with certified.
recipientsNoSend the same piece to several people: 2-25 US addresses, used INSTEAD of to. Each gets their own order and tracking; one payment covers all.
customer_emailNoWhere to send the receipt and status updates
idempotency_keyNoAny unique string; retrying with the same key returns the original order instead of creating a duplicate

Output Schema

NameRequiredDescription
idYesOrder id, ord_…
batchNoPresent when the order was created with recipients: the whole group. The top-level fields describe the first recipient's order; use batch.price and batch.checkout_url for the total and payment.
priceYes
objectYes
ordersNoEvery order in the group, when created with recipients
statusYesawaiting_payment, paid, printing, mailed, cancelled or refunded
productYesProduct id, e.g. postcard_4x6 or letter_certified
discountYesFirst-order discount, already taken off price; null when none applies
trackingYesUSPS tracking, for Certified Mail once printed
certifiedYesnone, certified or certified_return_receipt
order_urlYesOrder status page
preview_urlYesExact print preview
checkout_urlYesWhere the user pays; null once paid or cancelled
product_nameYes
status_detailYesPlain-English status to show the user
preview_image_urlNoPNG picture of the piece (postcard front and back, or the letter's first page) to show the user

TDQS

A3.7/5.0
Behavior4/5

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

Annotations only declare readOnlyHint=false, destructiveHint=false and openWorldHint=true. The description adds real behavioral value the annotations cannot: the order is created but nothing mails until the user pays, a payment link is returned, and express triggers USPS Priority Mail (2-3 days, tracked). It stops short of covering idempotency behavior or any auth/permission requirements.

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?

Three dense sentences, with the core action and payment-link outcome front-loaded before the layout/size and shipping details. Every sentence carries information, though the layout enumeration is somewhat schema-duplicative.

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?

An output schema exists so return values needn't be explained, and the description covers the create-then-pay lifecycle, sizing, front/back content and express shipping. It omits the multi-recipient path and idempotency nuance, but those are fully described in the schema, so nothing critical is missing.

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?

With schema description coverage at 100%, the schema already documents every parameter and enum, so the baseline is 3. The description restates sizes, layouts and the express trade-off but adds no format or constraint detail (e.g. recipients-vs-to exclusivity, idempotency_key) beyond what the schema already carries.

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

Purpose4/5

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

The description opens with a specific verb and resource ('Create a postcard order') plus the returned artifact ('get a payment link'), and enumerates sizes and layouts. It is clearly distinguishable from siblings in intent, but it never contrasts itself with the very similar create_letter, leaving the agent to infer which to pick.

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 through the workflow ('Mails only after the user pays', 'get a payment link'), which hints this runs before pay_order, and it cross-references get_pricing for prices. It never states when to choose this over create_letter or what prerequisites/preconditions apply, so guidance is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_orderCheck an orderA
Read-only
Inspect

Get the status of a postcard or letter order by id (ord_...).

NameRequiredDescriptionDefault
order_idYesOrder id, ord_…

Output Schema

NameRequiredDescription
idYesOrder id, ord_…
batchNoPresent when the order was created with recipients: the whole group. The top-level fields describe the first recipient's order; use batch.price and batch.checkout_url for the total and payment.
priceYes
objectYes
ordersNoEvery order in the group, when created with recipients
statusYesawaiting_payment, paid, printing, mailed, cancelled or refunded
productYesProduct id, e.g. postcard_4x6 or letter_certified
discountYesFirst-order discount, already taken off price; null when none applies
trackingYesUSPS tracking, for Certified Mail once printed
certifiedYesnone, certified or certified_return_receipt
order_urlYesOrder status page
preview_urlYesExact print preview
checkout_urlYesWhere the user pays; null once paid or cancelled
product_nameYes
status_detailYesPlain-English status to show the user
preview_image_urlNoPNG picture of the piece (postcard front and back, or the letter's first page) to show the user

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered without the description. The description adds the id prefix format hint, which is minor, and says nothing about ordering of results, caching, or error behavior for unknown ids.

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

Conciseness5/5

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

One sentence, front-loaded with the verb and resource, with zero filler. Nothing could be removed without losing information.

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 one-parameter read tool with full schema coverage, complete annotations, and an output schema that carries the return shape, the description is nearly sufficient. It only misses any note on error cases or what 'status' values may appear.

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 100% and the single parameter already documents 'Order id, ord_…'. The description's '(ord_...)' repeats what the schema provides rather than adding new meaning, so the baseline of 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('Get the status of a postcard or letter order') and scopes it by id, so the agent can distinguish it from cancel_order or pay_order in practice. It never names a sibling explicitly, so it stops short of a 5.

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?

The read-only 'get the status' framing implies the usage context (lookup rather than mutation), but there is no explicit when-to-use, no prerequisites, and no mention of the alternative order-management tools. Implied usage only.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_pricingGet pricesA
Read-only
Inspect

List mail products and prices (USD, printing + USPS First-Class postage included, US addresses only).

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
expressYesSurcharge for express delivery
paymentYes
productsYes
pdf_lettersYesMailing your own PDF as a letter
letter_photoYesSurcharge for a letter printed in color (a photo, or a PDF with color on)
first_order_discountYesCurrent first-order discount (0 when none)

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so safety is covered structurally. The description adds meaningful business context beyond that: prices are in USD, include printing plus USPS First-Class postage, and apply to US addresses only — constraints an agent cannot derive from annotations or schema.

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

Conciseness5/5

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

A single front-loaded sentence that conveys the resource and three scoping constraints with no filler. Every clause earns its place.

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 no parameters, full annotation coverage, and an output schema handling return values, the description only needs to convey scope — which it does (USD, postage included, US-only). Nothing an agent needs to call this 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?

The tool takes zero parameters, so the baseline is 4. Schema coverage is 100% and there is nothing for the description to disambiguate about inputs.

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

Purpose4/5

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

States a specific verb (List) and resource (mail products and prices) with currency and scope qualifiers, so the agent immediately knows this is a catalog lookup rather than an ordering action. It does not name sibling tools, but the contrast with create_letter/create_postcard/pay_order is obvious from the verb.

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?

Use is implied (fetch price list, presumably before creating or paying for an order) but never stated. There are no explicit when/when-not cues or references to alternatives, so the agent must infer the trigger from context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pay_orderPay for an orderA
DestructiveIdempotent
Inspect

Pay for an unpaid order with a Stripe shared payment token (spt_…) the user approved, scoped to at least the order amount in USD. For an order created with recipients, this pays for the whole group at once (scope the token to batch.price). On success the order is paid and goes to print. Use only after the user approved the purchase.

NameRequiredDescriptionDefault
order_idYesOrder id from create_postcard or create_letter, ord_…
shared_payment_tokenYesStripe shared payment token, spt_…

Output Schema

NameRequiredDescription
idYesOrder id, ord_…
batchNoPresent when the order was created with recipients: the whole group. The top-level fields describe the first recipient's order; use batch.price and batch.checkout_url for the total and payment.
priceYes
objectYes
ordersNoEvery order in the group, when created with recipients
statusYesawaiting_payment, paid, printing, mailed, cancelled or refunded
productYesProduct id, e.g. postcard_4x6 or letter_certified
discountYesFirst-order discount, already taken off price; null when none applies
trackingYesUSPS tracking, for Certified Mail once printed
certifiedYesnone, certified or certified_return_receipt
order_urlYesOrder status page
preview_urlYesExact print preview
checkout_urlYesWhere the user pays; null once paid or cancelled
product_nameYes
status_detailYesPlain-English status to show the user
preview_image_urlNoPNG picture of the piece (postcard front and back, or the letter's first page) to show the user

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is covered. The description adds genuine context beyond them: the token must be scoped to at least the order amount in USD (batch.price for groups), and on success the order is paid and 'goes to print' – a side effect the annotations do not convey.

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

Conciseness5/5

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

Three tight sentences, front-loaded with the core action and its required credential, followed by the group-payment edge case and the approval precondition. No filler.

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?

An output schema exists, so return values need not be described. The description covers the mutation's precondition, the credential scoping rules, the batch case, and the success side effect (order goes to print) – everything an agent needs to invoke it correctly.

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?

With 100% schema coverage, both parameters are already documented, so the baseline is 3. The description adds real meaning beyond the schema: the token must be scoped to at least the order amount in USD and, for recipient orders, to batch.price – constraints that matter for correct invocation.

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 ('Pay for an unpaid order') and immediately identifies the required payment artifact (Stripe shared payment token). An agent can distinguish this from create_postcard/create_letter (creates orders) and cancel_order without opening any 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?

Gives a clear precondition ('Use only after the user approved the purchase') and clarifies behavior for a specific case (orders created with recipients pay the whole group at once). It does not explicitly name sibling alternatives or when-not to use, but the context is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updates
    • Changedcancel_order1 field changed
      • addedOutput schema / properties / preview_image_url
        Added value: +{
        +  "description": "PNG picture of the piece (postcard front and back, or the letter's first page) to show the user",
        +  "type": "string"
        +}
    • Changedcreate_letter1 field changed
      • addedOutput schema / properties / preview_image_url
        Added value: +{
        +  "description": "PNG picture of the piece (postcard front and back, or the letter's first page) to show the user",
        +  "type": "string"
        +}
    • Changedcreate_postcard1 field changed
      • addedOutput schema / properties / preview_image_url
        Added value: +{
        +  "description": "PNG picture of the piece (postcard front and back, or the letter's first page) to show the user",
        +  "type": "string"
        +}
    • Changedget_order1 field changed
      • addedOutput schema / properties / preview_image_url
        Added value: +{
        +  "description": "PNG picture of the piece (postcard front and back, or the letter's first page) to show the user",
        +  "type": "string"
        +}
    • Changedpay_order1 field changed
      • addedOutput schema / properties / preview_image_url
        Added value: +{
        +  "description": "PNG picture of the piece (postcard front and back, or the letter's first page) to show the user",
        +  "type": "string"
        +}
  2. 6 tool updates
    • Changedcancel_order2 fields changed
      • addedOutput schema / properties / batch
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Present when the order was created with recipients: the whole group. The top-level fields describe the first recipient's order; use batch.price and batch.checkout_url for the total and payment.",
        +  "properties": {
        +    "checkout_url": {
        +      "description": "One payment link for every unpaid order in the group",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "count": {
        +      "description": "How many recipients (one order each)",
        +      "type": "number"
        +    },
        +    "discount": {
        +      "anyOf": [
        +        {
        +          "additionalProperties": false,
        +          "properties": {
        +            "amount_cents": {
        +              "type": "number"
        +            },
        +            "display": {
        +              "type": "string"
        +            },
        +            "reason": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "amount_cents",
        +            "display",
        +            "reason"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "id": {
        +      "type": "string"
        +    },
        +    "price": {
        +      "additionalProperties": false,
        +      "description": "Total for the whole group",
        +      "properties": {
        +        "amount_cents": {
        +          "type": "number"
        +        },
        +        "currency": {
        +          "type": "string"
        +        },
        +        "display": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "amount_cents",
        +        "currency",
        +        "display"
        +      ],
        +      "type": "object"
        +    },
        +    "url": {
        +      "description": "Group page listing every recipient",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "count",
        +    "url",
        +    "checkout_url",
        +    "price",
        +    "discount"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / orders
        Added value: +{
        +  "description": "Every order in the group, when created with recipients",
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "id": {
        +        "type": "string"
        +      },
        +      "order_url": {
        +        "type": "string"
        +      },
        +      "preview_url": {
        +        "type": "string"
        +      },
        +      "to": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "id",
        +      "to",
        +      "order_url",
        +      "preview_url"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • Changedcreate_letter15 fields changed
      • changedInput schema / properties / certified / description
        Previous value: -"USPS Certified Mail. \"certified\" ($14.99): tracking number and proof of mailing and delivery. \"certified_return_receipt\" ($19.99): adds the recipient's signature as proof of delivery, which landlords, courts and agencies often require. \"none\" ($4.99): regular First-Class."New value: +"USPS Certified Mail. \"certified\": tracking number and proof of mailing and delivery. \"certified_return_receipt\": adds the recipient's signature as proof of delivery, which landlords, courts and agencies often require. \"none\": regular First-Class. Prices: get_pricing."
      • changedInput schema / properties / content / description
        Previous value: -"The letter text and font"New value: +"The letter: body text (optionally with a photo) or your own PDF"
      • changedInput schema / properties / content / properties / body / description
        Previous value: -"Full letter text. Plain text; blank lines separate paragraphs."New value: +"Full letter text. Plain text; blank lines separate paragraphs. Use this OR pdf_url."
      • addedInput schema / properties / content / properties / color
        Added value: +{
        +  "description": "PDF letters only: print in color (costs a little more; see get_pricing). Text letters print in color automatically when they include image_url.",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / content / properties / font / description
        Previous value: -"Typeface for the letter body"New value: +"Typeface for the letter body (text letters)"
      • changedInput schema / properties / content / properties / image_url / description
        Previous value: -"Optional photo printed at the top of the letter (https JPG or PNG). A letter with a photo prints in color, for a small surcharge (see get_pricing)."New value: +"Text letters only: optional photo printed at the top (https JPG or PNG). A letter with a photo prints in color, for a small surcharge (see get_pricing)."
      • addedInput schema / properties / content / properties / pdf_pages
        Added value: +{
        +  "description": "Set by Sendpaper: page count of the PDF",
        +  "maximum": 9007199254740991,
        +  "minimum": -9007199254740991,
        +  "type": "integer"
        +}
      • addedInput schema / properties / content / properties / pdf_url
        Added value: +{
        +  "description": "Mail your own document instead of body text: a public https link to a PDF (up to 6 pages). Pages are fitted to 8.5×11 and a blank address page is added in front.",
        +  "maxLength": 2000,
        +  "type": "string"
        +}
      • removedInput schema / properties / content / required
        Removed value: -[
        -  "body"
        -]
      • addedInput schema / properties / express
        Added value: +{
        +  "default": false,
        +  "description": "Send by express (USPS Priority Mail, usually 2–3 days, with tracking) for an extra charge; see get_pricing. Not available with certified.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / recipients
        Added value: +{
        +  "description": "Send the same piece to several people: 2-25 US addresses, used INSTEAD of to. Each gets their own order and tracking; one payment covers all.",
        +  "items": {
        +    "properties": {
        +      "city": {
        +        "description": "City",
        +        "maxLength": 40,
        +        "minLength": 2,
        +        "type": "string"
        +      },
        +      "company": {
        +        "description": "Company name, printed under the person's name",
        +        "maxLength": 60,
        +        "type": "string"
        +      },
        +      "line1": {
        +        "description": "Street address",
        +        "maxLength": 64,
        +        "minLength": 3,
        +        "type": "string"
        +      },
        +      "line2": {
        +        "description": "Apartment, suite, unit",
        +        "maxLength": 64,
        +        "type": "string"
        +      },
        +      "name": {
        +        "description": "Recipient or sender full name",
        +        "maxLength": 60,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "state": {
        +        "description": "Two-letter US state code, e.g. NY",
        +        "type": "string"
        +      },
        +      "zip": {
        +        "description": "5-digit US ZIP code, or ZIP+4",
        +        "pattern": "^\\d{5}(-\\d{4})?$",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "name",
        +      "line1",
        +      "city",
        +      "state",
        +      "zip"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 25,
        +  "minItems": 2,
        +  "type": "array"
        +}
      • changedInput schema / properties / to / description
        Previous value: -"Recipient's US mailing address"New value: +"Recipient's US mailing address (or use recipients for several people)"
      • changedInput schema / required
        Previous value: -[
        -  "to",
        -  "from",
        -  "content"
        -]New value: +[
        +  "from",
        +  "content"
        +]
      • addedOutput schema / properties / batch
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Present when the order was created with recipients: the whole group. The top-level fields describe the first recipient's order; use batch.price and batch.checkout_url for the total and payment.",
        +  "properties": {
        +    "checkout_url": {
        +      "description": "One payment link for every unpaid order in the group",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "count": {
        +      "description": "How many recipients (one order each)",
        +      "type": "number"
        +    },
        +    "discount": {
        +      "anyOf": [
        +        {
        +          "additionalProperties": false,
        +          "properties": {
        +            "amount_cents": {
        +              "type": "number"
        +            },
        +            "display": {
        +              "type": "string"
        +            },
        +            "reason": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "amount_cents",
        +            "display",
        +            "reason"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "id": {
        +      "type": "string"
        +    },
        +    "price": {
        +      "additionalProperties": false,
        +      "description": "Total for the whole group",
        +      "properties": {
        +        "amount_cents": {
        +          "type": "number"
        +        },
        +        "currency": {
        +          "type": "string"
        +        },
        +        "display": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "amount_cents",
        +        "currency",
        +        "display"
        +      ],
        +      "type": "object"
        +    },
        +    "url": {
        +      "description": "Group page listing every recipient",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "count",
        +    "url",
        +    "checkout_url",
        +    "price",
        +    "discount"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / orders
        Added value: +{
        +  "description": "Every order in the group, when created with recipients",
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "id": {
        +        "type": "string"
        +      },
        +      "order_url": {
        +        "type": "string"
        +      },
        +      "preview_url": {
        +        "type": "string"
        +      },
        +      "to": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "id",
        +      "to",
        +      "order_url",
        +      "preview_url"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • Changedcreate_postcard16 fields changed
      • addedInput schema / properties / content / properties / caption
        Added value: +{
        +  "description": "photo_caption: short text over a band at the bottom of the photo",
        +  "maxLength": 80,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • changedInput schema / properties / content / properties / front_headline / description
        Previous value: -"Big text for the front if there is no image, e.g. 'Happy birthday, Sam!'"New value: +"headline layout: big text for the front, e.g. 'Happy birthday, Sam!'"
      • changedInput schema / properties / content / properties / front_image_url / description
        Previous value: -"https URL of a photo or design for the front (JPG or PNG)"New value: +"https URL of a photo or design for the front (JPG or PNG); for photo and photo_caption"
      • addedInput schema / properties / content / properties / front_images
        Added value: +{
        +  "description": "Collage: 2 to 4 https photo URLs, laid out in a grid",
        +  "items": {
        +    "maxLength": 2000,
        +    "type": "string"
        +  },
        +  "maxItems": 4,
        +  "minItems": 2,
        +  "type": "array"
        +}
      • changedInput schema / properties / content / properties / front_theme / description
        Previous value: -"Color theme for a text-only front"New value: +"headline layout: color theme (ink, sky, sunset, forest, rose, sand, night, mint)"
      • changedInput schema / properties / content / properties / front_theme / enum
        Previous value: -[
        -  "ink",
        -  "sky",
        -  "sunset",
        -  "forest"
        -]New value: +[
        +  "ink",
        +  "sky",
        +  "sunset",
        +  "forest",
        +  "rose",
        +  "sand",
        +  "night",
        +  "mint"
        +]
      • addedInput schema / properties / content / properties / headline_font
        Added value: +{
        +  "default": "serif",
        +  "description": "Font for the headline or caption: serif, sans or script (handwritten)",
        +  "enum": [
        +    "serif",
        +    "sans",
        +    "script"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / content / properties / layout
        Added value: +{
        +  "description": "Front layout: headline (big text on a color), photo (one full-bleed photo), photo_caption (photo with a caption band), collage (2-4 photos). Inferred from the fields when omitted.",
        +  "enum": [
        +    "headline",
        +    "photo",
        +    "photo_caption",
        +    "collage"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / content / properties / message / description
        Previous value: -"Handwritten-style message on the back"New value: +"The message on the back"
      • addedInput schema / properties / content / properties / message_font
        Added value: +{
        +  "default": "handwriting",
        +  "description": "Font for the message on the back",
        +  "enum": [
        +    "handwriting",
        +    "serif",
        +    "sans"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / express
        Added value: +{
        +  "default": false,
        +  "description": "Send by express (USPS Priority Mail, usually 2–3 days, with tracking) for an extra charge; see get_pricing. Not available with certified.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / recipients
        Added value: +{
        +  "description": "Send the same piece to several people: 2-25 US addresses, used INSTEAD of to. Each gets their own order and tracking; one payment covers all.",
        +  "items": {
        +    "properties": {
        +      "city": {
        +        "description": "City",
        +        "maxLength": 40,
        +        "minLength": 2,
        +        "type": "string"
        +      },
        +      "company": {
        +        "description": "Company name, printed under the person's name",
        +        "maxLength": 60,
        +        "type": "string"
        +      },
        +      "line1": {
        +        "description": "Street address",
        +        "maxLength": 64,
        +        "minLength": 3,
        +        "type": "string"
        +      },
        +      "line2": {
        +        "description": "Apartment, suite, unit",
        +        "maxLength": 64,
        +        "type": "string"
        +      },
        +      "name": {
        +        "description": "Recipient or sender full name",
        +        "maxLength": 60,
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "state": {
        +        "description": "Two-letter US state code, e.g. NY",
        +        "type": "string"
        +      },
        +      "zip": {
        +        "description": "5-digit US ZIP code, or ZIP+4",
        +        "pattern": "^\\d{5}(-\\d{4})?$",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "name",
        +      "line1",
        +      "city",
        +      "state",
        +      "zip"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 25,
        +  "minItems": 2,
        +  "type": "array"
        +}
      • changedInput schema / properties / to / description
        Previous value: -"Recipient's US mailing address"New value: +"Recipient's US mailing address (or use recipients for several people)"
      • changedInput schema / required
        Previous value: -[
        -  "to",
        -  "from",
        -  "content"
        -]New value: +[
        +  "from",
        +  "content"
        +]
      • addedOutput schema / properties / batch
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Present when the order was created with recipients: the whole group. The top-level fields describe the first recipient's order; use batch.price and batch.checkout_url for the total and payment.",
        +  "properties": {
        +    "checkout_url": {
        +      "description": "One payment link for every unpaid order in the group",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "count": {
        +      "description": "How many recipients (one order each)",
        +      "type": "number"
        +    },
        +    "discount": {
        +      "anyOf": [
        +        {
        +          "additionalProperties": false,
        +          "properties": {
        +            "amount_cents": {
        +              "type": "number"
        +            },
        +            "display": {
        +              "type": "string"
        +            },
        +            "reason": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "amount_cents",
        +            "display",
        +            "reason"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "id": {
        +      "type": "string"
        +    },
        +    "price": {
        +      "additionalProperties": false,
        +      "description": "Total for the whole group",
        +      "properties": {
        +        "amount_cents": {
        +          "type": "number"
        +        },
        +        "currency": {
        +          "type": "string"
        +        },
        +        "display": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "amount_cents",
        +        "currency",
        +        "display"
        +      ],
        +      "type": "object"
        +    },
        +    "url": {
        +      "description": "Group page listing every recipient",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "count",
        +    "url",
        +    "checkout_url",
        +    "price",
        +    "discount"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / orders
        Added value: +{
        +  "description": "Every order in the group, when created with recipients",
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "id": {
        +        "type": "string"
        +      },
        +      "order_url": {
        +        "type": "string"
        +      },
        +      "preview_url": {
        +        "type": "string"
        +      },
        +      "to": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "id",
        +      "to",
        +      "order_url",
        +      "preview_url"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • Changedget_order2 fields changed
      • addedOutput schema / properties / batch
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Present when the order was created with recipients: the whole group. The top-level fields describe the first recipient's order; use batch.price and batch.checkout_url for the total and payment.",
        +  "properties": {
        +    "checkout_url": {
        +      "description": "One payment link for every unpaid order in the group",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "count": {
        +      "description": "How many recipients (one order each)",
        +      "type": "number"
        +    },
        +    "discount": {
        +      "anyOf": [
        +        {
        +          "additionalProperties": false,
        +          "properties": {
        +            "amount_cents": {
        +              "type": "number"
        +            },
        +            "display": {
        +              "type": "string"
        +            },
        +            "reason": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "amount_cents",
        +            "display",
        +            "reason"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "id": {
        +      "type": "string"
        +    },
        +    "price": {
        +      "additionalProperties": false,
        +      "description": "Total for the whole group",
        +      "properties": {
        +        "amount_cents": {
        +          "type": "number"
        +        },
        +        "currency": {
        +          "type": "string"
        +        },
        +        "display": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "amount_cents",
        +        "currency",
        +        "display"
        +      ],
        +      "type": "object"
        +    },
        +    "url": {
        +      "description": "Group page listing every recipient",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "count",
        +    "url",
        +    "checkout_url",
        +    "price",
        +    "discount"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / orders
        Added value: +{
        +  "description": "Every order in the group, when created with recipients",
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "id": {
        +        "type": "string"
        +      },
        +      "order_url": {
        +        "type": "string"
        +      },
        +      "preview_url": {
        +        "type": "string"
        +      },
        +      "to": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "id",
        +      "to",
        +      "order_url",
        +      "preview_url"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • Changedget_pricing8 fields changed
      • addedOutput schema / properties / express
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Surcharge for express delivery",
        +  "properties": {
        +    "amount_cents": {
        +      "type": "number"
        +    },
        +    "description": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "amount_cents",
        +    "description"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / first_order_discount / description
        Added value: +"Current first-order discount (0 when none)"
      • removedOutput schema / properties / first_order_discount / properties / amount_cents
        Removed value: -{
        -  "type": "number"
        -}
      • addedOutput schema / properties / first_order_discount / properties / percent
        Added value: +{
        +  "type": "number"
        +}
      • changedOutput schema / properties / first_order_discount / required
        Previous value: -[
        -  "amount_cents",
        -  "description"
        -]New value: +[
        +  "percent",
        +  "description"
        +]
      • changedOutput schema / properties / letter_photo / description
        Previous value: -"Surcharge for a letter with a photo (prints in color)"New value: +"Surcharge for a letter printed in color (a photo, or a PDF with color on)"
      • addedOutput schema / properties / pdf_letters
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Mailing your own PDF as a letter",
        +  "properties": {
        +    "description": {
        +      "type": "string"
        +    },
        +    "max_pages": {
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "max_pages",
        +    "description"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "products",
        -  "payment",
        -  "first_order_discount",
        -  "letter_photo"
        -]New value: +[
        +  "products",
        +  "payment",
        +  "first_order_discount",
        +  "letter_photo",
        +  "express",
        +  "pdf_letters"
        +]
    • Changedpay_order2 fields changed
      • addedOutput schema / properties / batch
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Present when the order was created with recipients: the whole group. The top-level fields describe the first recipient's order; use batch.price and batch.checkout_url for the total and payment.",
        +  "properties": {
        +    "checkout_url": {
        +      "description": "One payment link for every unpaid order in the group",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "count": {
        +      "description": "How many recipients (one order each)",
        +      "type": "number"
        +    },
        +    "discount": {
        +      "anyOf": [
        +        {
        +          "additionalProperties": false,
        +          "properties": {
        +            "amount_cents": {
        +              "type": "number"
        +            },
        +            "display": {
        +              "type": "string"
        +            },
        +            "reason": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "amount_cents",
        +            "display",
        +            "reason"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "id": {
        +      "type": "string"
        +    },
        +    "price": {
        +      "additionalProperties": false,
        +      "description": "Total for the whole group",
        +      "properties": {
        +        "amount_cents": {
        +          "type": "number"
        +        },
        +        "currency": {
        +          "type": "string"
        +        },
        +        "display": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "amount_cents",
        +        "currency",
        +        "display"
        +      ],
        +      "type": "object"
        +    },
        +    "url": {
        +      "description": "Group page listing every recipient",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "count",
        +    "url",
        +    "checkout_url",
        +    "price",
        +    "discount"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / orders
        Added value: +{
        +  "description": "Every order in the group, when created with recipients",
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "id": {
        +        "type": "string"
        +      },
        +      "order_url": {
        +        "type": "string"
        +      },
        +      "preview_url": {
        +        "type": "string"
        +      },
        +      "to": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "id",
        +      "to",
        +      "order_url",
        +      "preview_url"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
  3. 6 tool updates
    • Changedcancel_order3 fields changed
      • addedOutput schema / properties / discount
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "amount_cents": {
        +          "type": "number"
        +        },
        +        "display": {
        +          "type": "string"
        +        },
        +        "reason": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "amount_cents",
        +        "display",
        +        "reason"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "First-order discount, already taken off price; null when none applies"
        +}
      • removedOutput schema / properties / first_postcard_free
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Present when the first-postcard-free offer applies",
        -  "properties": {
        -    "applied": {
        -      "type": "boolean"
        -    },
        -    "eligible": {
        -      "type": "boolean"
        -    },
        -    "how": {
        -      "type": "string"
        -    }
        -  },
        -  "type": "object"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "id",
        -  "object",
        -  "product",
        -  "product_name",
        -  "certified",
        -  "status",
        -  "status_detail",
        -  "price",
        -  "checkout_url",
        -  "order_url",
        -  "preview_url",
        -  "tracking"
        -]New value: +[
        +  "id",
        +  "object",
        +  "product",
        +  "product_name",
        +  "certified",
        +  "status",
        +  "status_detail",
        +  "price",
        +  "checkout_url",
        +  "order_url",
        +  "preview_url",
        +  "tracking",
        +  "discount"
        +]
    • Changedcreate_letter4 fields changed
      • addedInput schema / properties / content / properties / image_url
        Added value: +{
        +  "description": "Optional photo printed at the top of the letter (https JPG or PNG). A letter with a photo prints in color, for a small surcharge (see get_pricing).",
        +  "maxLength": 2000,
        +  "type": "string"
        +}
      • addedOutput schema / properties / discount
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "amount_cents": {
        +          "type": "number"
        +        },
        +        "display": {
        +          "type": "string"
        +        },
        +        "reason": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "amount_cents",
        +        "display",
        +        "reason"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "First-order discount, already taken off price; null when none applies"
        +}
      • removedOutput schema / properties / first_postcard_free
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Present when the first-postcard-free offer applies",
        -  "properties": {
        -    "applied": {
        -      "type": "boolean"
        -    },
        -    "eligible": {
        -      "type": "boolean"
        -    },
        -    "how": {
        -      "type": "string"
        -    }
        -  },
        -  "type": "object"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "id",
        -  "object",
        -  "product",
        -  "product_name",
        -  "certified",
        -  "status",
        -  "status_detail",
        -  "price",
        -  "checkout_url",
        -  "order_url",
        -  "preview_url",
        -  "tracking"
        -]New value: +[
        +  "id",
        +  "object",
        +  "product",
        +  "product_name",
        +  "certified",
        +  "status",
        +  "status_detail",
        +  "price",
        +  "checkout_url",
        +  "order_url",
        +  "preview_url",
        +  "tracking",
        +  "discount"
        +]
    • Changedcreate_postcard5 fields changed
      • changedInput schema / properties / size / description
        Previous value: -"Postcard size: 4x6 ($2.99) or 6x9 ($3.99)"New value: +"Postcard size: 4x6, 6x9 or 6x11 (see get_pricing for prices)"
      • changedInput schema / properties / size / enum
        Previous value: -[
        -  "4x6",
        -  "6x9"
        -]New value: +[
        +  "4x6",
        +  "6x9",
        +  "6x11"
        +]
      • addedOutput schema / properties / discount
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "amount_cents": {
        +          "type": "number"
        +        },
        +        "display": {
        +          "type": "string"
        +        },
        +        "reason": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "amount_cents",
        +        "display",
        +        "reason"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "First-order discount, already taken off price; null when none applies"
        +}
      • removedOutput schema / properties / first_postcard_free
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Present when the first-postcard-free offer applies",
        -  "properties": {
        -    "applied": {
        -      "type": "boolean"
        -    },
        -    "eligible": {
        -      "type": "boolean"
        -    },
        -    "how": {
        -      "type": "string"
        -    }
        -  },
        -  "type": "object"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "id",
        -  "object",
        -  "product",
        -  "product_name",
        -  "certified",
        -  "status",
        -  "status_detail",
        -  "price",
        -  "checkout_url",
        -  "order_url",
        -  "preview_url",
        -  "tracking"
        -]New value: +[
        +  "id",
        +  "object",
        +  "product",
        +  "product_name",
        +  "certified",
        +  "status",
        +  "status_detail",
        +  "price",
        +  "checkout_url",
        +  "order_url",
        +  "preview_url",
        +  "tracking",
        +  "discount"
        +]
    • Changedget_order3 fields changed
      • addedOutput schema / properties / discount
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "amount_cents": {
        +          "type": "number"
        +        },
        +        "display": {
        +          "type": "string"
        +        },
        +        "reason": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "amount_cents",
        +        "display",
        +        "reason"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "First-order discount, already taken off price; null when none applies"
        +}
      • removedOutput schema / properties / first_postcard_free
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Present when the first-postcard-free offer applies",
        -  "properties": {
        -    "applied": {
        -      "type": "boolean"
        -    },
        -    "eligible": {
        -      "type": "boolean"
        -    },
        -    "how": {
        -      "type": "string"
        -    }
        -  },
        -  "type": "object"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "id",
        -  "object",
        -  "product",
        -  "product_name",
        -  "certified",
        -  "status",
        -  "status_detail",
        -  "price",
        -  "checkout_url",
        -  "order_url",
        -  "preview_url",
        -  "tracking"
        -]New value: +[
        +  "id",
        +  "object",
        +  "product",
        +  "product_name",
        +  "certified",
        +  "status",
        +  "status_detail",
        +  "price",
        +  "checkout_url",
        +  "order_url",
        +  "preview_url",
        +  "tracking",
        +  "discount"
        +]
    • Changedget_pricing4 fields changed
      • addedOutput schema / properties / first_order_discount
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "amount_cents": {
        +      "type": "number"
        +    },
        +    "description": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "amount_cents",
        +    "description"
        +  ],
        +  "type": "object"
        +}
      • removedOutput schema / properties / first_postcard_free
        Removed value: -{
        -  "additionalProperties": false,
        -  "properties": {
        -    "available": {
        -      "type": "boolean"
        -    },
        -    "description": {
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "description",
        -    "available"
        -  ],
        -  "type": "object"
        -}
      • addedOutput schema / properties / letter_photo
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Surcharge for a letter with a photo (prints in color)",
        +  "properties": {
        +    "amount_cents": {
        +      "type": "number"
        +    },
        +    "description": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "amount_cents",
        +    "description"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "products",
        -  "payment",
        -  "first_postcard_free"
        -]New value: +[
        +  "products",
        +  "payment",
        +  "first_order_discount",
        +  "letter_photo"
        +]
    • Changedpay_order3 fields changed
      • addedOutput schema / properties / discount
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "amount_cents": {
        +          "type": "number"
        +        },
        +        "display": {
        +          "type": "string"
        +        },
        +        "reason": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "amount_cents",
        +        "display",
        +        "reason"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "First-order discount, already taken off price; null when none applies"
        +}
      • removedOutput schema / properties / first_postcard_free
        Removed value: -{
        -  "additionalProperties": false,
        -  "description": "Present when the first-postcard-free offer applies",
        -  "properties": {
        -    "applied": {
        -      "type": "boolean"
        -    },
        -    "eligible": {
        -      "type": "boolean"
        -    },
        -    "how": {
        -      "type": "string"
        -    }
        -  },
        -  "type": "object"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "id",
        -  "object",
        -  "product",
        -  "product_name",
        -  "certified",
        -  "status",
        -  "status_detail",
        -  "price",
        -  "checkout_url",
        -  "order_url",
        -  "preview_url",
        -  "tracking"
        -]New value: +[
        +  "id",
        +  "object",
        +  "product",
        +  "product_name",
        +  "certified",
        +  "status",
        +  "status_detail",
        +  "price",
        +  "checkout_url",
        +  "order_url",
        +  "preview_url",
        +  "tracking",
        +  "discount"
        +]
  4. 6 tool updates
    • Changedcancel_order2 fields changed
      • addedInput schema / properties / order_id / description
        Added value: +"Order id, ord_…"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "certified": {
        +      "description": "none, certified or certified_return_receipt",
        +      "type": "string"
        +    },
        +    "checkout_url": {
        +      "description": "Where the user pays; null once paid or cancelled",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "first_postcard_free": {
        +      "additionalProperties": false,
        +      "description": "Present when the first-postcard-free offer applies",
        +      "properties": {
        +        "applied": {
        +          "type": "boolean"
        +        },
        +        "eligible": {
        +          "type": "boolean"
        +        },
        +        "how": {
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "id": {
        +      "description": "Order id, ord_…",
        +      "type": "string"
        +    },
        +    "object": {
        +      "enum": [
        +        "postcard",
        +        "letter"
        +      ],
        +      "type": "string"
        +    },
        +    "order_url": {
        +      "description": "Order status page",
        +      "type": "string"
        +    },
        +    "preview_url": {
        +      "description": "Exact print preview",
        +      "type": "string"
        +    },
        +    "price": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "amount_cents": {
        +          "type": "number"
        +        },
        +        "currency": {
        +          "type": "string"
        +        },
        +        "display": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "amount_cents",
        +        "currency",
        +        "display"
        +      ],
        +      "type": "object"
        +    },
        +    "product": {
        +      "description": "Product id, e.g. postcard_4x6 or letter_certified",
        +      "type": "string"
        +    },
        +    "product_name": {
        +      "type": "string"
        +    },
        +    "status": {
        +      "description": "awaiting_payment, paid, printing, mailed, cancelled or refunded",
        +      "type": "string"
        +    },
        +    "status_detail": {
        +      "description": "Plain-English status to show the user",
        +      "type": "string"
        +    },
        +    "tracking": {
        +      "anyOf": [
        +        {
        +          "additionalProperties": false,
        +          "properties": {
        +            "number": {
        +              "type": "string"
        +            },
        +            "url": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "number",
        +            "url"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "USPS tracking, for Certified Mail once printed"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "object",
        +    "product",
        +    "product_name",
        +    "certified",
        +    "status",
        +    "status_detail",
        +    "price",
        +    "checkout_url",
        +    "order_url",
        +    "preview_url",
        +    "tracking"
        +  ],
        +  "type": "object"
        +}
    • Changedcreate_letter13 fields changed
      • addedInput schema / properties / content / description
        Added value: +"The letter text and font"
      • addedInput schema / properties / content / properties / font / description
        Added value: +"Typeface for the letter body"
      • addedInput schema / properties / from / properties / city / description
        Added value: +"City"
      • addedInput schema / properties / from / properties / company / description
        Added value: +"Company name, printed under the person's name"
      • addedInput schema / properties / from / properties / state / description
        Added value: +"Two-letter US state code, e.g. NY"
      • addedInput schema / properties / from / properties / zip / description
        Added value: +"5-digit US ZIP code, or ZIP+4"
      • addedInput schema / properties / idempotency_key / description
        Added value: +"Any unique string; retrying with the same key returns the original order instead of creating a duplicate"
      • addedInput schema / properties / to / description
        Added value: +"Recipient's US mailing address"
      • addedInput schema / properties / to / properties / city / description
        Added value: +"City"
      • addedInput schema / properties / to / properties / company / description
        Added value: +"Company name, printed under the person's name"
      • addedInput schema / properties / to / properties / state / description
        Added value: +"Two-letter US state code, e.g. NY"
      • addedInput schema / properties / to / properties / zip / description
        Added value: +"5-digit US ZIP code, or ZIP+4"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "certified": {
        +      "description": "none, certified or certified_return_receipt",
        +      "type": "string"
        +    },
        +    "checkout_url": {
        +      "description": "Where the user pays; null once paid or cancelled",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "first_postcard_free": {
        +      "additionalProperties": false,
        +      "description": "Present when the first-postcard-free offer applies",
        +      "properties": {
        +        "applied": {
        +          "type": "boolean"
        +        },
        +        "eligible": {
        +          "type": "boolean"
        +        },
        +        "how": {
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "id": {
        +      "description": "Order id, ord_…",
        +      "type": "string"
        +    },
        +    "object": {
        +      "enum": [
        +        "postcard",
        +        "letter"
        +      ],
        +      "type": "string"
        +    },
        +    "order_url": {
        +      "description": "Order status page",
        +      "type": "string"
        +    },
        +    "preview_url": {
        +      "description": "Exact print preview",
        +      "type": "string"
        +    },
        +    "price": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "amount_cents": {
        +          "type": "number"
        +        },
        +        "currency": {
        +          "type": "string"
        +        },
        +        "display": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "amount_cents",
        +        "currency",
        +        "display"
        +      ],
        +      "type": "object"
        +    },
        +    "product": {
        +      "description": "Product id, e.g. postcard_4x6 or letter_certified",
        +      "type": "string"
        +    },
        +    "product_name": {
        +      "type": "string"
        +    },
        +    "status": {
        +      "description": "awaiting_payment, paid, printing, mailed, cancelled or refunded",
        +      "type": "string"
        +    },
        +    "status_detail": {
        +      "description": "Plain-English status to show the user",
        +      "type": "string"
        +    },
        +    "tracking": {
        +      "anyOf": [
        +        {
        +          "additionalProperties": false,
        +          "properties": {
        +            "number": {
        +              "type": "string"
        +            },
        +            "url": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "number",
        +            "url"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "USPS tracking, for Certified Mail once printed"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "object",
        +    "product",
        +    "product_name",
        +    "certified",
        +    "status",
        +    "status_detail",
        +    "price",
        +    "checkout_url",
        +    "order_url",
        +    "preview_url",
        +    "tracking"
        +  ],
        +  "type": "object"
        +}
    • Changedcreate_postcard13 fields changed
      • addedInput schema / properties / content / description
        Added value: +"Front (an image URL or a headline) and the message on the back"
      • addedInput schema / properties / from / properties / city / description
        Added value: +"City"
      • addedInput schema / properties / from / properties / company / description
        Added value: +"Company name, printed under the person's name"
      • addedInput schema / properties / from / properties / state / description
        Added value: +"Two-letter US state code, e.g. NY"
      • addedInput schema / properties / from / properties / zip / description
        Added value: +"5-digit US ZIP code, or ZIP+4"
      • addedInput schema / properties / idempotency_key / description
        Added value: +"Any unique string; retrying with the same key returns the original order instead of creating a duplicate"
      • addedInput schema / properties / size / description
        Added value: +"Postcard size: 4x6 ($2.99) or 6x9 ($3.99)"
      • addedInput schema / properties / to / description
        Added value: +"Recipient's US mailing address"
      • addedInput schema / properties / to / properties / city / description
        Added value: +"City"
      • addedInput schema / properties / to / properties / company / description
        Added value: +"Company name, printed under the person's name"
      • addedInput schema / properties / to / properties / state / description
        Added value: +"Two-letter US state code, e.g. NY"
      • addedInput schema / properties / to / properties / zip / description
        Added value: +"5-digit US ZIP code, or ZIP+4"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "certified": {
        +      "description": "none, certified or certified_return_receipt",
        +      "type": "string"
        +    },
        +    "checkout_url": {
        +      "description": "Where the user pays; null once paid or cancelled",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "first_postcard_free": {
        +      "additionalProperties": false,
        +      "description": "Present when the first-postcard-free offer applies",
        +      "properties": {
        +        "applied": {
        +          "type": "boolean"
        +        },
        +        "eligible": {
        +          "type": "boolean"
        +        },
        +        "how": {
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "id": {
        +      "description": "Order id, ord_…",
        +      "type": "string"
        +    },
        +    "object": {
        +      "enum": [
        +        "postcard",
        +        "letter"
        +      ],
        +      "type": "string"
        +    },
        +    "order_url": {
        +      "description": "Order status page",
        +      "type": "string"
        +    },
        +    "preview_url": {
        +      "description": "Exact print preview",
        +      "type": "string"
        +    },
        +    "price": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "amount_cents": {
        +          "type": "number"
        +        },
        +        "currency": {
        +          "type": "string"
        +        },
        +        "display": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "amount_cents",
        +        "currency",
        +        "display"
        +      ],
        +      "type": "object"
        +    },
        +    "product": {
        +      "description": "Product id, e.g. postcard_4x6 or letter_certified",
        +      "type": "string"
        +    },
        +    "product_name": {
        +      "type": "string"
        +    },
        +    "status": {
        +      "description": "awaiting_payment, paid, printing, mailed, cancelled or refunded",
        +      "type": "string"
        +    },
        +    "status_detail": {
        +      "description": "Plain-English status to show the user",
        +      "type": "string"
        +    },
        +    "tracking": {
        +      "anyOf": [
        +        {
        +          "additionalProperties": false,
        +          "properties": {
        +            "number": {
        +              "type": "string"
        +            },
        +            "url": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "number",
        +            "url"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "USPS tracking, for Certified Mail once printed"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "object",
        +    "product",
        +    "product_name",
        +    "certified",
        +    "status",
        +    "status_detail",
        +    "price",
        +    "checkout_url",
        +    "order_url",
        +    "preview_url",
        +    "tracking"
        +  ],
        +  "type": "object"
        +}
    • Changedget_order2 fields changed
      • addedInput schema / properties / order_id / description
        Added value: +"Order id, ord_…"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "certified": {
        +      "description": "none, certified or certified_return_receipt",
        +      "type": "string"
        +    },
        +    "checkout_url": {
        +      "description": "Where the user pays; null once paid or cancelled",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "first_postcard_free": {
        +      "additionalProperties": false,
        +      "description": "Present when the first-postcard-free offer applies",
        +      "properties": {
        +        "applied": {
        +          "type": "boolean"
        +        },
        +        "eligible": {
        +          "type": "boolean"
        +        },
        +        "how": {
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "id": {
        +      "description": "Order id, ord_…",
        +      "type": "string"
        +    },
        +    "object": {
        +      "enum": [
        +        "postcard",
        +        "letter"
        +      ],
        +      "type": "string"
        +    },
        +    "order_url": {
        +      "description": "Order status page",
        +      "type": "string"
        +    },
        +    "preview_url": {
        +      "description": "Exact print preview",
        +      "type": "string"
        +    },
        +    "price": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "amount_cents": {
        +          "type": "number"
        +        },
        +        "currency": {
        +          "type": "string"
        +        },
        +        "display": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "amount_cents",
        +        "currency",
        +        "display"
        +      ],
        +      "type": "object"
        +    },
        +    "product": {
        +      "description": "Product id, e.g. postcard_4x6 or letter_certified",
        +      "type": "string"
        +    },
        +    "product_name": {
        +      "type": "string"
        +    },
        +    "status": {
        +      "description": "awaiting_payment, paid, printing, mailed, cancelled or refunded",
        +      "type": "string"
        +    },
        +    "status_detail": {
        +      "description": "Plain-English status to show the user",
        +      "type": "string"
        +    },
        +    "tracking": {
        +      "anyOf": [
        +        {
        +          "additionalProperties": false,
        +          "properties": {
        +            "number": {
        +              "type": "string"
        +            },
        +            "url": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "number",
        +            "url"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "USPS tracking, for Certified Mail once printed"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "object",
        +    "product",
        +    "product_name",
        +    "certified",
        +    "status",
        +    "status_detail",
        +    "price",
        +    "checkout_url",
        +    "order_url",
        +    "preview_url",
        +    "tracking"
        +  ],
        +  "type": "object"
        +}
    • Changedget_pricing1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "first_postcard_free": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "available": {
        +          "type": "boolean"
        +        },
        +        "description": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "description",
        +        "available"
        +      ],
        +      "type": "object"
        +    },
        +    "payment": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "currency": {
        +          "type": "string"
        +        },
        +        "options": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "stripe_network_id": {
        +          "description": "Scope Stripe shared payment tokens to this network id",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "options",
        +        "currency"
        +      ],
        +      "type": "object"
        +    },
        +    "products": {
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "cents": {
        +            "type": "number"
        +          },
        +          "id": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "price": {
        +            "description": "Display price, e.g. $2.99",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "name",
        +          "cents",
        +          "price"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "products",
        +    "payment",
        +    "first_postcard_free"
        +  ],
        +  "type": "object"
        +}
    • Changedpay_order2 fields changed
      • addedInput schema / properties / order_id / description
        Added value: +"Order id from create_postcard or create_letter, ord_…"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "certified": {
        +      "description": "none, certified or certified_return_receipt",
        +      "type": "string"
        +    },
        +    "checkout_url": {
        +      "description": "Where the user pays; null once paid or cancelled",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "first_postcard_free": {
        +      "additionalProperties": false,
        +      "description": "Present when the first-postcard-free offer applies",
        +      "properties": {
        +        "applied": {
        +          "type": "boolean"
        +        },
        +        "eligible": {
        +          "type": "boolean"
        +        },
        +        "how": {
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "id": {
        +      "description": "Order id, ord_…",
        +      "type": "string"
        +    },
        +    "object": {
        +      "enum": [
        +        "postcard",
        +        "letter"
        +      ],
        +      "type": "string"
        +    },
        +    "order_url": {
        +      "description": "Order status page",
        +      "type": "string"
        +    },
        +    "preview_url": {
        +      "description": "Exact print preview",
        +      "type": "string"
        +    },
        +    "price": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "amount_cents": {
        +          "type": "number"
        +        },
        +        "currency": {
        +          "type": "string"
        +        },
        +        "display": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "amount_cents",
        +        "currency",
        +        "display"
        +      ],
        +      "type": "object"
        +    },
        +    "product": {
        +      "description": "Product id, e.g. postcard_4x6 or letter_certified",
        +      "type": "string"
        +    },
        +    "product_name": {
        +      "type": "string"
        +    },
        +    "status": {
        +      "description": "awaiting_payment, paid, printing, mailed, cancelled or refunded",
        +      "type": "string"
        +    },
        +    "status_detail": {
        +      "description": "Plain-English status to show the user",
        +      "type": "string"
        +    },
        +    "tracking": {
        +      "anyOf": [
        +        {
        +          "additionalProperties": false,
        +          "properties": {
        +            "number": {
        +              "type": "string"
        +            },
        +            "url": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "number",
        +            "url"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "USPS tracking, for Certified Mail once printed"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "object",
        +    "product",
        +    "product_name",
        +    "certified",
        +    "status",
        +    "status_detail",
        +    "price",
        +    "checkout_url",
        +    "order_url",
        +    "preview_url",
        +    "tracking"
        +  ],
        +  "type": "object"
        +}
  5. 1 tool update
    • Changedcreate_letter1 field changed
      • addedInput schema / properties / certified
        Added value: +{
        +  "default": "none",
        +  "description": "USPS Certified Mail. \"certified\" ($14.99): tracking number and proof of mailing and delivery. \"certified_return_receipt\" ($19.99): adds the recipient's signature as proof of delivery, which landlords, courts and agencies often require. \"none\" ($4.99): regular First-Class.",
        +  "enum": [
        +    "none",
        +    "certified",
        +    "certified_return_receipt"
        +  ],
        +  "type": "string"
        +}
  6. 6 tool updates
    • First observedcancel_order
    • First observedcreate_letter
    • First observedcreate_postcard
    • First observedget_order
    • First observedget_pricing
    • First observedpay_order

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Send real physical postcards worldwide via AI agents. Supports single and bulk send (up to 500 recipients), balance checking, delivery tracking, and volume pricing from $0.72/card.
    5
    3 npm
    5
    MIT
  • F
    license
    Not graded
    quality
    A
    maintenance
    BYO email for your agents. A full-featured email (gmail, outlook, imap, icloud) mailroom for you and your agents with "oops" protections built in.
    6
    -
  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables AI assistants to create, design, and send physical postcards directly through the PostcardAI platform. It provides comprehensive tools for managing contacts, generating postcard designs from prompts, and tracking mailing delivery metrics.
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.