Have It Printed
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Print and mail physical documents in the US via USPS, with quotes, agent payment and tracking.
| Author | com.haveitprinted |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 255 ms |
| Last measured | 2026-10-24 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"Have It Printed": {
"url": "https://agents.haveitprinted.com/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (11)
hip_get_service_inforead-onlyWhat Have It Printed does, what it costs, what file types and sizes are accepted, and how mailing works. Needs a Bearer API key, like every tools/call (POST /v1/onboard to get one).
Hints: read-only yes · destructive no · idempotent yes · open-world no
hip_create_jobStart a print-and-mail job. Returns an opaque job_handle used by every later call. Creates nothing chargeable.
Hints: read-only no · destructive no · idempotent no · open-world no
hip_get_upload_targetGet a short-lived upload URL for the customer's document. PUT the bytes to it. File type and size limits are the same as the website.
Parameters:
job_handle(required) — stringfilename(required) — stringcontent_type— string
Hints: read-only no · destructive no · idempotent no · open-world no
hip_add_text_documentAdd a letter or document whose text you wrote with the person. Have It Printed typesets it on US Letter paper in a clean serif font, in black and white, and counts its pages. Plain text only: separate paragraphs with a blank line; no images, tables or formatting. Call once per document.
Parameters:
job_handle(required) — stringtitle(required) — string — a short name for the document; it names the file and is not printedtext(required) — string — the full text to print, exactly as it should readcopies— integer — copies (default 1)
Hints: read-only no · destructive no · idempotent no · open-world no
hip_update_jobSet the documents, print options and US mailing recipient on a job. Price fields are rejected: the server computes all amounts.
Parameters:
job_handle(required) — stringfiles— arrayoptions— objectproduct— string — how the job is mailed. tracked_document (the default): printed and mailed flat in a rigid mailer with a free tracking number. basic_letter: up to 5 pages, one copy of each document, folded into a standard envelope and mailed First-Class, with no tracking. certified_letter: the same letter sent by Certified Mail, with a tracking number. hip_get_service_info has the prices.recipient— object — US mailing address
Hints: read-only no · destructive no · idempotent yes · open-world no
hip_quoteExact price for the job, computed by the same pricing the website checkout uses. Tax, if any, is added by Stripe at payment.
Parameters:
job_handle(required) — string
Hints: read-only no · destructive no · idempotent yes · open-world no
hip_create_checkoutCreate a Stripe Checkout session for the job and return its URL. This does NOT take payment: the customer completes payment at that URL. Show them the quote first.
Parameters:
job_handle(required) — stringcustomer_email— string — for the receipt and tracking email
Hints: read-only no · destructive no · idempotent no · open-world yes
hip_get_checkout_statusWhether the customer has paid yet. Payment truth comes from the order record Stripe's webhook creates, never from a browser redirect.
Parameters:
job_handle(required) — string
Hints: read-only no · destructive no · idempotent yes · open-world no
hip_prepare_paymentResolve the EXACT amount HIP will charge, before any payment authorization is obtained or spent. This does NOT charge anything. Returns subtotal_cents, tax_cents, total_cents, currency, a pricing fingerprint and the authorization types HIP accepts. Tax is calculated by Stripe from the destination, so hip_quote alone is not the payable amount. The returned total is bound to this job's documents, options and recipient: change any of them and payment is refused with QUOTE_STALE until you prepare again. Use this when paying autonomously with a delegated payment authorization; a human paying in a browser does not need it. Commits the job to the autonomous payment rail.
Parameters:
job_handle(required) — stringbuyer_email— string — optional: the buyer's email address. Have It Printed sends its order confirmation there once the payment succeeds.address_confirmed— boolean — optional, no longer needed: accepted for compatibility and ignored.
Hints: read-only no · destructive no · idempotent yes · open-world no
hip_complete_paymentdestructivePay for the job with a delegated payment authorization, with no browser and no human step. payment_authorization must be a Stripe shared payment token (spt_...) granted to Have It Printed whose maximum is at least the total from hip_prepare_payment; HIP charges exactly that total and never more. NEVER send a card number, expiry, CVV or any reusable credential to this tool. If the cardholder's bank requires authentication, this returns payment_status=requires_user_action rather than bypassing it.
Parameters:
job_handle(required) — stringpayment_authorization(required) — string — opaque delegated payment token (spt_...)
Hints: read-only no · destructive yes · idempotent no · open-world yes
hip_get_orderStatus and tracking number for the paid order belonging to this job.
Parameters:
job_handle(required) — string
Hints: read-only no · destructive no · idempotent yes · open-world no
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.