Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

PostalForm

REMOTE · POSTALFORM.COM · SCANNED SEP 29

Create mail drafts, upload PDFs, browse forms, track orders, and pay via MPP or x402.

Available components

64 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security74
Transport & Reachability100
Schema Quality & AI Usability37
  • 0% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Fail
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 3321 tokens (~237/item across 14 items; 13 tools + 1 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management7
  • Stability observed for 2 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage84
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 44% of tool parameters carry a description.Partial
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 15 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
  • Supports UI / widget rendering.Pass
Install

How do I install the PostalForm MCP server?

PostalForm is a hosted endpoint at https://postalform.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · postalform.com

# add to Claude Code
claude mcp add --transport http com-postalform-postalform 'https://postalform.com/mcp'
// .cursor/mcp.json
{
  "mcpServers": {
    "com-postalform-postalform": {
      "url": "https://postalform.com/mcp"
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "com-postalform-postalform": {
      "type": "http",
      "url": "https://postalform.com/mcp"
    }
  }
}
# ~/.codex/config.toml
[mcp_servers.com-postalform-postalform]
url = "https://postalform.com/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-postalform-postalform": {
      "type": "remote",
      "url": "https://postalform.com/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add com-postalform-postalform --url 'https://postalform.com/mcp' --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  com-postalform-postalform:
    url: "https://postalform.com/mcp"
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "com-postalform-postalform": {
      "Transport": "http",
      "Url": "https://postalform.com/mcp"
    }
  }
}
# add to Vellum
assistant mcp add com-postalform-postalform -t streamable-http -u 'https://postalform.com/mcp'
// mcp.json
{
  "mcpServers": {
    "com-postalform-postalform": {
      "type": "http",
      "url": "https://postalform.com/mcp"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 29 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

  • 28 Sept 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 27 Sept 26 63

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 29 Sept 2026 · Probed https://postalform.com/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=postalform.com CN=WE1,O=Google Trust Services,C=US 30 Aug 2026 28 Nov 2026 ECDSA 256 ECDSA-SHA256 9b827caa8e09e8d30eeadbbcfacc3647
SANs: postalform.com, projects.postalform.com, *.projects.postalform.com
CN=WE1,O=Google Trust Services,C=US (CA) CN=GTS Root R4,O=Google Trust Services LLC,C=US 13 Dec 2023 20 Feb 2029 ECDSA 256 ECDSA-SHA384 7ff31977972c224a76155d13b6d685e3
CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE 15 Nov 2023 28 Jan 2028 ECDSA 384 SHA256-RSA 7fe530bf331343bedd821610493d8a1b

Background: What to check on a remote MCP endpoint →

DNSSEC insecure

Validation of postalform.com. — Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
com. present 19718 13 Verified
postalform.com. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://postalform.com/mcp Verified 200
http (plaintext) http://postalform.com/mcp HTTPS enforced 301 https://postalform.com/mcp
MCP tools · 13 exposed · ~3,096 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
complete_checkout ~133

After the buyer approves the prepared order and total, pay its existing checkout session using a compatible Stripe payment token, including a shared payment token (spt_...). Pass the order ID as checkout_session_id; do not resend the document or addresses. On an interrupted request, retry the same checkout and token. Existing authorized, processing, or paid payments are reused; follow the returned status and messages.

NameTypeReqDescription
buyer–yesBuyer identity details for the approved checkout.
checkout_session_idstringyesThe checkout session id to finalize.
payment_dataobjectyesBuyer-authorized payment token details. Use provider=stripe.
NameTypeReqDescription
buyerobjectyes–
currencystringyes–
fulfillment_addressobject––
fulfillment_option_idstring––
fulfillment_optionsarrayyes–
idstringyes–
line_itemsarrayyes–
linksarrayyes–
messagesarrayyes–
orderobject––
statusstringyes–
totalsarrayyes–

No examples provided.

postalform.create_form_order_draft ~378

Prepare a supported workflow form for mailing and return the order ID, total, hosted checkout URL, and checkout session. After buyer approval, a compatible client can use complete_checkout with a Stripe shared payment token; otherwise present the hosted checkout URL. To prepare for MPP, set payment_protocol=mpp and buyer_email; receive a PDF preview, hosted checkout_url fallback and MPP challenge, then use postalform.pay_order with the order_id after buyer approval. Draft creation never pays. For x402, use postalform.create_machine_order.

NameTypeReqDescription
attachmentsarray––
buyer_emailstring–Required for MPP receipt delivery.
buyer_namestring–Receipt name; defaults to sender_name for MPP.
certifiedboolean––
certified_return_receiptboolean––
colorboolean––
double_sidedboolean––
fieldsobject––
mail_classstring––
payment_protocolstring–Optional payment path. Defaults to hosted checkout. Choose mpp to return a payment challenge for this same prepared order; buyer_email is required. Draft creation never pays.
recipient_address_idstring––
recipient_address_manualobject––
recipient_address_textstring––
recipient_address_typestring––
recipient_namestring––
request_idstring––
sender_address_idstring––
sender_address_manualobject––
sender_address_textstring––
sender_address_typestringyes–
sender_namestringyes–
slugstringyes–
use_workflow_recipientboolean–Deprecated compatibility field. Predefined and computed workflow recipients are always enforced and cannot be overridden.
NameTypeReqDescription
checkout_sessionobject––
checkout_url–yes–
order_idstringyes–
page_count–yes–
paymentobject––
payment_protocolstring––
preview_url–––
price_usd–yes–
recipient_address_textstringyes–
recipient_namestringyes–
sender_address_textstringyes–
sender_namestringyes–
viewstringyes–

No examples provided.

postalform.create_letter_order_draft ~356

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

NameTypeReqDescription
buyer_emailstring–Required for MPP receipt delivery.
buyer_namestring–Receipt name; defaults to sender_name for MPP.
certifiedboolean––
certified_return_receiptboolean––
colorboolean––
double_sidedboolean––
letterobjectyes–
mail_classstring––
payment_protocolstring–Optional payment path. Defaults to hosted checkout. Choose mpp to return a payment challenge for this same prepared order; buyer_email is required. Draft creation never pays.
recipient_address_idstring––
recipient_address_manualobject––
recipient_address_textstring––
recipient_address_typestringyes–
recipient_namestringyes–
request_idstring––
sender_address_idstring––
sender_address_manualobject––
sender_address_textstring––
sender_address_typestringyes–
sender_namestringyes–
NameTypeReqDescription
checkout_sessionobject––
checkout_url–yes–
order_idstringyes–
page_count–yes–
paymentobject––
payment_protocolstring––
preview_url–––
price_usd–yes–
recipient_address_textstringyes–
recipient_namestringyes–
sender_address_textstringyes–
sender_namestringyes–
viewstringyes–

No examples provided.

postalform.create_machine_order ~683

Create a single PDF, letter, workflow-form order, or bulk letter campaign and pay through MPP or x402 after buyer approval. For bulk, provide exactly one of bulk.csv_content or bulk.recipients (JSON address objects with optional merge_fields), plus a shared PDF or text/HTML template. Omit top-level recipient fields and review campaign_url, recipient count and total. Bulk MPP orders can also use postalform.pay_order after fetching its challenge. The unpaid response also includes checkout_url and status_url for this same order. Without an available compatible wallet, give the buyer checkout_url and poll status_url; never recreate the order to change payment paths. Single-recipient clients with a Stripe shared payment token can instead use a draft tool followed by complete_checkout; other clients should present the hosted checkout URL.

NameTypeReqDescription
bulkobject–Bulk letter campaign: exactly one of csv_content or recipients (JSON list), plus shared PDF or text/HTML template. Omit single-recipient fields, letter, form, and postcard options. color and double_s…
buyer_emailstringyesBuyer email for receipts.
buyer_namestringyesBuyer name for receipts.
certifiedboolean––
certified_return_receiptboolean––
colorboolean––
double_sidedboolean––
file_namestring––
formobject–Workflow form payload from postalform.get_form_schema. Provide exactly one of pdf, letter, or form.
letterobject–Letter text to render and mail. Provide exactly one of pdf, letter, or form. Optional format may be text, html, markdown, or rtf; default is text. Optional signature may be a typed string or drawn si…
mail_classstring––
mailpiece_typestring––
payment_authorizationstring–MPP retry value after paying with Link CLI/Link MCP. Pass the full Authorization header value, usually "Payment ...".
payment_protocolstring–Direct machine payment protocol. Use mpp for Link CLI/Link MCP or Stripe SPT; use x402 for x402 wallet clients. Defaults to mpp.
payment_signaturestring–x402 retry value after paying the PAYMENT-REQUIRED challenge.
pdf––Existing PDF to mail. For a single recipient, provide exactly one of pdf, letter, or form. For bulk.content_mode=pdf, this PDF is sent to every CSV or JSON recipient. Prefer upload_token from postalf…
postcard_sizestring––
recipient_address_idstring––
recipient_address_manualobject––
recipient_address_textstring––
recipient_address_typestring––
recipient_namestring–Required for a single recipient. Omit when bulk supplies the recipient list.
request_idstring–Idempotency key. Reuse the same value and same order fields after a payment challenge.
sender_address_idstring––
sender_address_manualobject––
sender_address_textstring––
sender_address_typestring––
sender_namestringyes–
signature_requiredboolean––
NameTypeReqDescription
bulkobject––
campaign_urlstring––
checkout_url–––
currency–yes–
endpointstringyes–
is_paidbooleanyes–
mailpiece_typestringyes–
next_actionstring––
next_stepstring––
order_complete_url–yes–
order_idstringyes–
page_count–––
payment–––
payment_optionsarray––
payment_statusstringyes–
postcard_size–yes–
preview_url–––
price_usd–yes–
protocolstringyes–
request_idstringyes–
statusstringyes–
status_urlstring––
viewstringyes–

No examples provided.

postalform.create_order_draft ~646

Prepare an existing PDF for mailing and return the order ID, total, hosted checkout URL, and checkout session. After buyer approval, a compatible client can pass a Stripe shared payment token to complete_checkout; otherwise present the hosted checkout URL. To prepare for MPP, set payment_protocol=mpp and buyer_email; receive a PDF preview, hosted checkout_url fallback and MPP challenge, then use postalform.pay_order with the order_id after buyer approval. Draft creation never pays. For x402, use postalform.create_machine_order.

NameTypeReqDescription
buyer_emailstring–Required for MPP receipt delivery.
buyer_namestring–Receipt name; defaults to sender_name for MPP.
certifiedboolean–Whether to add proof mail: USPS Certified Mail for US destinations, Canada Post Registered Mail through PostGrid for Canadian destinations, or PinGen registered mail for supported European destinatio…
certified_return_receiptboolean–Add Electronic Return Receipt for US Certified Mail. Ignored for Canada Post Registered Mail and PinGen registered-mail destinations (default: false).
colorboolean–Whether to print in color (default: false).
double_sidedboolean–Whether to print double-sided (default: true).
file_namestring–Optional display file name.
mail_classstring–Mail service level (standard, priority, express).
payment_protocolstring–Optional payment path. Defaults to hosted checkout. Choose mpp to return a payment challenge for this same prepared order; buyer_email is required. Draft creation never pays.
pdf–yesThe PDF to mail. Accepts attachment objects ({ download_url, file_id }). Fallbacks: upload_token from postalform.create_pdf_upload, data:application/pdf;base64,..., or a public HTTPS download URL.
recipient_address_idstring–Loqate address id for the recipient (required when recipient_address_type is Address).
recipient_address_manualobject–Recipient manual address fields (required when recipient_address_type is Manual).
recipient_address_textstring–Human-readable recipient address preview (required when recipient_address_type is Address; optional for Manual).
recipient_address_typestringyesAddress suggestion type for the recipient (from postalform.search_addresses). Use Manual to pass a structured address with countryCode when outside the US.
recipient_namestringyesRecipient's name.
request_idstring–Optional idempotency key. Reuse the same value if retrying the call.
sender_address_idstring–Loqate address id for the sender (required when sender_address_type is Address).
sender_address_manualobject–Sender manual address fields (required when sender_address_type is Manual).
sender_address_textstring–Human-readable sender address preview (required when sender_address_type is Address; optional for Manual).
sender_address_typestringyesAddress suggestion type for the sender (from postalform.search_addresses). Use Manual to pass a structured address with countryCode when outside the US.
sender_namestringyesSender's name (return address).
NameTypeReqDescription
checkout_sessionobject––
checkout_url–yes–
order_idstringyes–
page_count–yes–
paymentobject––
payment_protocolstring––
preview_url–––
price_usd–yes–
recipient_address_textstringyes–
recipient_namestringyes–
sender_address_textstringyes–
sender_namestringyes–
viewstringyes–

No examples provided.

postalform.create_pdf_upload ~119

Use this when the host cannot provide a PDF file param directly. It creates a short-lived PDF upload URL and upload token (multipart/form-data, file field). Let the HTTP client generate Content-Type with its multipart boundary.

NameTypeReqDescription
content_lengthinteger–Optional content length in bytes.
content_typestring–Optional content type hint (application/pdf).
file_namestring–Optional original file name.
request_idstring–Optional idempotency key. Reuse the same value if retrying the call.
NameTypeReqDescription
expires_atstringyes–
max_bytesintegeryes–
required_headersobjectyes–
upload_tokenstringyes–
upload_urlstringyes–

No examples provided.

postalform.get_form_schema ~56

Use this when you need a machine-usable schema for one supported single-mailpiece PostalForm workflow (fields, groups, attachments, and dependencies).

NameTypeReqDescription
slugstringyesWorkflow slug (e.g. "8822").
NameTypeReqDescription
agent_summarystring––
aliasesarray––
attachmentsarrayyes–
attachments_max_total_size_mbnumberyes–
bulk_form–––
categorystring––
certified_mailstringyes–
checkout_flowstring––
compliance_policy–––
data_collectedarray––
deadline_helper–––
descriptionstring––
fieldsarrayyes–
form_summarystring––
groupsarrayyes–
indexablebooleanyes–
llmsbooleanyes–
multi_recipient–––
namestringyes–
pricingobject––
publish_statestring––
published_atstring––
recipientobjectyes–
recipient_presets–––
recipient_rules–––
schema_versionintegeryes–
slugstringyes–
topicsarray––
updated_atstring––
workflow_versionintegeryes–

No examples provided.

postalform.get_order_status ~101

Read payment, processing, stored mailing/carrier status, the latest 50 public tracking events, and electronic return receipt availability. Bulk orders also return campaign_url, recipient count and per-status counts; use the campaign dashboard for individual recipients. Missing carrier evidence is null; processing or a tracking number alone does not prove mailing or delivery. This read does not pay, mail, or acquire receipts.

NameTypeReqDescription
order_idstringyesPostalForm order id.
NameTypeReqDescription
bulkobject––
campaign_urlstring––
carrier–––
checkout_url–––
current_step–––
delivery_status–––
delivery_status_detail–––
electronic_return_receiptobject––
error–––
estimated_delivery_at–––
foundbooleanyes–
is_paidboolean––
mailing_status–––
mailing_status_normalized–––
next_actionstring––
order_idstringyes–
page_count–––
payment_optionsarray––
payment_statusstring––
signed_by–––
status_urlstring––
tracking_eventsarray––
tracking_number–––
tracking_updated_at–––
viewstringyes–

No examples provided.

postalform.list_forms ~77

Use this when you need the published single-mailpiece PostalForm workflow catalog available to agents. Coordinated statutory multi-recipient workflows are excluded.

NameTypeReqDescription
cursorstring–Pagination cursor (opaque string).
limitinteger–Max results (default 50).
qstring–Optional search query (matches slug/name).
NameTypeReqDescription
formsarrayyes–
next_cursor–yes–

No examples provided.

postalform.pay_order ~167

Get an MPP challenge or pay an existing MPP PDF, letter, workflow-form order, or bulk letter campaign after buyer approval. Use the order_id returned by any draft tool with payment_protocol=mpp or by create_machine_order. When switching from create_machine_order, omit the credential first to get this payment endpoint’s challenge. Review the preview or campaign_url, recipient count and total. No document or addresses are resubmitted. Without payment_authorization this only returns a challenge; with it, this can pay and send real mail. Reuse the same order_id on retries and follow the returned payment status.

NameTypeReqDescription
order_idstringyes–
payment_authorizationstring–Buyer-approved MPP Authorization header, usually Payment ... . Omit to retrieve the challenge.
NameTypeReqDescription
bulkobject––
campaign_urlstring––
checkout_url–––
currency–yes–
endpointstringyes–
is_paidbooleanyes–
mailpiece_typestringyes–
next_actionstring––
next_stepstring––
order_complete_url–yes–
order_idstringyes–
page_count–––
payment–––
payment_optionsarray––
payment_statusstringyes–
postcard_size–yes–
preview_url–––
price_usd–yes–
protocolstringyes–
request_idstringyes–
statusstringyes–
status_urlstring––
viewstringyes–

No examples provided.

postalform.ping ~28

Use this when you want a quick health check that the PostalForm MCP server is reachable.

Input schema present but exposes no named parameters.

NameTypeReqDescription
messagestringyes–
titlestringyes–
viewstringyes–

No examples provided.

postalform.preview_letter_order_draft ~193

Use this to prepare a non-writing preview for a mailed letter before creating checkout. It renders the letter, validates the addresses, and returns a widget with a create-draft action.

NameTypeReqDescription
certifiedboolean––
certified_return_receiptboolean––
colorboolean––
double_sidedboolean––
letterobjectyes–
mail_classstring––
recipient_address_idstring––
recipient_address_manualobject––
recipient_address_textstring––
recipient_address_typestringyes–
recipient_namestringyes–
request_idstring––
sender_address_idstring––
sender_address_manualobject––
sender_address_textstring––
sender_address_typestringyes–
sender_namestringyes–
NameTypeReqDescription
draft_requestobjectyes–
page_countintegeryes–
price_usdnumberyes–
recipient_address_textstringyes–
recipient_namestringyes–
sender_address_textstringyes–
sender_namestringyes–
viewstringyes–

No examples provided.

postalform.search_addresses ~159

Use this to search for a mailing address and return Loqate suggestions with IDs. Pass country_code to filter by country; it defaults to US. If a suggestion has type "Container" (building/complex), call this tool again with container=<id> and a refined query to drill down to type "Address". Only type "Address" is valid for order creation.

NameTypeReqDescription
containerstring–Loqate container id for drilling into suggestions, if provided
country_codestring–Two-letter country code to filter suggestions. Defaults to US.
querystringyesPartial address text, e.g. "123 Main St"
targetstring–Which address field is being searched (used for UI context).
NameTypeReqDescription
querystringyes–
suggestionsarrayyes–
targetstring––
viewstringyes–

No examples provided.

Common questions

What is the PostalForm MCP server?

PostalForm is an MCP server listed in the public MCP registry as com.postalform/postalform. Create mail drafts, upload PDFs, browse forms, track orders, and pay via MPP or x402. This page covers its hosted endpoint (https://postalform.com/mcp).

Is the PostalForm MCP server safe to use?

PostalForm scores 64 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the PostalForm MCP server expose?

PostalForm exposes 13 tools: postalform.list_forms, postalform.get_form_schema, postalform.search_addresses, postalform.create_pdf_upload, postalform.create_order_draft, and 8 more. Their descriptions and schemas cost roughly 3,096 tokens of context every time the server is loaded.

Does the PostalForm MCP server require authentication?

No. We connected to PostalForm without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

Is the PostalForm MCP server still maintained?

PostalForm is still listed as active in the MCP registry. We last reached this channel on 29 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.