unopost

MCP 连接器

用 AI 助手寄信

只需在 Claude、ChatGPT 或任何 MCP 客户端中添加一个 URL。AI 助手会准备好您的原始文件,以 A4 打印并通过 Australia Post 寄出,全程可追踪。您在我们的网站上检查预览并付款,未经您确认,什么都不会寄出。

$10 普通邮件$20 Express Post

服务器 URL
https://unopost.com.au/api/mcp

价格与网站相同,含 GST。无需账户、登录或 API 密钥。

要从自己的代码寄信?连接器可用于任何 MCP 客户端或普通 HTTP,但每封信都需在我们的网站上付款。如需完全无人参与地寄信,请使用 x402 API。

连接服务器卡片

连接

该连接器是基于 Streamable HTTP 的远程 MCP 服务器。无需登录,请关闭身份验证。

  • Claude:打开 Customize → Connectors,选择 Add custom connector,命名为 Unopost 并粘贴服务器 URL。在对话中,从工具菜单开启 Unopost。
  • ChatGPT:在开发者模式下,用服务器 URL 添加一个不需要身份验证的自定义连接器,然后在对话中开启。
  • Claude Code 和其他客户端:将其添加为远程 HTTP 服务器。任何支持自定义 MCP 服务器的客户端都使用同一个 URL。
Claude Code
claude mcp add --transport http unopost https://unopost.com.au/api/mcp
.mcp.json
{
  "mcpServers": {
    "unopost": {
      "type": "http",
      "url": "https://unopost.com.au/api/mcp"
    }
  }
}

寄信流程

  1. 确认地址
  2. 准备信件
  3. 等待排版
  4. 用户在网站上付款

AI 助手先向用户确认地址,再准备信件,并给用户一个私密的审阅链接。用户在那里检查预览、填写电子邮件并用银行卡付款。付款后信件才会寄出。

用户这样说
Post this letter by Express Post to Jane Citizen,
12 Example Street, Southbank VIC 3006.
My return address is 1 Sample Road, Carlton VIC 3053.

工具

这些工具由 AI 助手自行调用。prepare_letter, finish_letter_upload 和 get_letter_status 的每个结果都包含 reviewUrl(用户检查预览并付款的私密页面)和 instructions(说明接下来要告诉用户什么)。

prepare_letter

TOOLprepare_letter

接收宿主提供的文件引用(例如 ChatGPT 中的附件),下载原始文件并开始信件。文件绝不会被重新输入、重新制作或以文本形式发送。每次调用都会创建一封新信件,因此 AI 助手只调用一次。

参数

fileobject · 必填
宿主对用户原始附件的引用:download_url 和 file_id,已知时还包括 file_name 和 mime_type。
fileNamestring · 可选
带扩展名的文件名,例如 letter.pdf。仅在缺少 file.file_name 时需要。
recipientAddress · 必填
经用户确认的收信人。除非 service 为 international,否则须在澳大利亚境内。
senderAddress · 必填
用户的回邮地址,印在信封上。可以在任何国家。
servicestring · 可选
express(默认),平放装入 B4 信封;regular,折叠装入 DL 信封,最多 12 页;或 international,投递时需签收。
signatureboolean · 可选
投递时签收,澳大利亚境内另收 $6。加选签收的普通邮件以挂号邮件寄出。
duplexboolean · 可选
双面打印。法定声明始终单面打印。
monoboolean · 可选
黑白打印。默认情况下彩色按彩色打印,不另收费。
stapleboolean · 可选
在左上角将页面装订一次。仅适用于不超过 12 页的文件;超出的文件会在计价时被拒绝。默认为 false。
foldboolean · 可选
将最多 12 页的 Express Post 或国际信件折叠,装入较小的信封。
preparedForstring · 可选
仅当你代表企业写信给其客户时使用:企业名称,最多 60 个字符。付款页面会将其显示为 AI 助手告诉我们的内容,而非经过核实的信息;Unopost、Australia Post、银行或政府机构等名称会被拒绝。
notifyEmailstring · 可选
与 preparedFor 一起使用:企业的电子邮箱。从付款到投递,有关该信件的每封电子邮件都会抄送一份至该邮箱;客户在付款前会看到该地址。
customerEmailstring · 可选
付款客户的电子邮箱(如已知)。付款页面会预先填好该邮箱,追踪邮件将发送至该邮箱。

地址

name、line1 和 suburb 为必填项;姓名和每行地址最多 40 个字符。在澳大利亚,州由邮编决定。寄往海外时,请添加 country;寄往中国的信件,请在 phone 中填写中国手机号码。

namestring · 必填
收件人全名。
companystring · 可选
企业或机构名称。
line1string · 必填
街道地址,或 PO Box,例如 "PO Box 123"。
line2string · 可选
地址第二行。
suburbstring · 必填
城区或城镇。
statestring · 可选
澳大利亚地址请省略:由邮编决定。如果填写,须为 ACT、NSW、NT、QLD、SA、TAS、VIC 或 WA 之一,并与邮编相符。海外地址如该国使用地区,请填写地区。
postcodestring · 可选
四位数字,澳大利亚地址必填。海外地址如该国使用邮编,请填写邮编。
countrystring · 可选
澳大利亚地址请省略,否则填写国家的英文名称。仅当 service 为 international 时,收件人才可在海外。
phonestring · 可选
仅适用于中国境内的收件人:其中国手机号码,中国邮政需要此号码。
tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "prepare_letter",
    "arguments": {
      "file": {
        "download_url": "https://files.example.com/letter.pdf",
        "file_id": "file_abc123",
        "file_name": "letter.pdf",
        "mime_type": "application/pdf"
      },
      "recipient": {
        "name": "Jane Citizen",
        "line1": "12 Example Street",
        "suburb": "Southbank",
        "postcode": "3006"
      },
      "sender": {
        "name": "Sam Sender",
        "line1": "1 Sample Road",
        "suburb": "Carlton",
        "postcode": "3053"
      },
      "service": "express"
    }
  }
}
structuredContent
{
  "jobId": "019d7a7f-a183-752d-9b3b-11511179033b",
  "reviewUrl": "https://unopost.com.au/pay?job=019d7a7f-a183-752d-9b3b-11511179033b",
  "currency": "AUD",
  "status": "CONVERTING",
  "service": "express",
  "instructions": "The letter is being laid out, usually for a few seconds. Then give the user reviewUrl to check the preview, enter an email and pay. Nothing is posted until payment. …"
}

自行上传文件

TOOLcreate_letter_upload → finish_letter_upload

适用于能读取用户文件并发出 HTTP 请求、但宿主没有文件引用的客户端。create_letter_upload 接收文件名并返回 uploadUrl,有效期 5 分钟。把原始字节 PUT 到该地址,然后用 jobId 和与 prepare_letter 相同的信件字段调用 finish_letter_upload。

PUT uploadUrl
curl -X PUT "$UPLOAD_URL" \
  -H "Content-Type: application/octet-stream" \
  --data-binary @letter.pdf

get_letter_status

TOOLget_letter_status

报告信件的进度,排版完成后附上最终的 pageCount 和 costCents。一封信通常只需几秒钟。最多每 5 秒查询一次。

CONVERTED
{
  "jobId": "019d7a7f-a183-752d-9b3b-11511179033b",
  "reviewUrl": "https://unopost.com.au/pay?job=019d7a7f-a183-752d-9b3b-11511179033b",
  "currency": "AUD",
  "status": "CONVERTED",
  "pageCount": 3,
  "costCents": 2000,
  "previewUrl": "https://unopost.com.au/preview/019d7a7f-a183-752d-9b3b-11511179033b/letter.pdf?Expires=...&Signature=...",
  "service": "express",
  "instructions": "Ready: give the user reviewUrl to check the preview, enter an email and pay by card. The letter is posted only once it's paid for. pageCount and costCents (AUD cents) are final."
}
FAILED
{
  "jobId": "019d7a7f-a183-752d-9b3b-11511179033b",
  "reviewUrl": "https://unopost.com.au/pay?job=019d7a7f-a183-752d-9b3b-11511179033b",
  "currency": "AUD",
  "status": "FAILED",
  "error": "document has more than 80 pages",
  "instructions": "Not posted, and nothing was charged. The document has more than 80 pages. Suggest splitting it into separate letters of up to 80 pages each. …"
}

get_letter_info

TOOLget_letter_info

以澳分(AUD cents)表示的当前价格、每个价格包含的页数、页数和文件限制,以及关于寄出时间、投递、追踪和取消的通俗解答。AI 助手在准备任何信件之前,用它来回答问题。

tools/call
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "get_letter_info",
    "arguments": {}
  }
}

限制

pages
每封信最多 80 页。较长的文件请拆分成多封信。
regular
普通邮件以及任何折叠的信件最多 12 页。更长的信件以 Express Post 平放寄出。
size
每个文件最大 50 MB。
files
PDF、Word(.doc、.docx)、JPEG 或 PNG。Word 文件按 A4 排版。
letter
通过连接器每封信一个文件。网站最多接受 10 个。
rate
每个 AI 宿主每小时 200 封。

状态

CREATED
已预留,等待文件。
CONVERTING
正在排版。
CONVERTED AWAITING_PAYMENT
已就绪,等待用户在 reviewUrl 检查并付款。
PAID PAYING SENDING RETRYING MANUAL_CHECK
已付款。在工作日墨尔本时间 14:30 前付款的信件,当天寄出。
POSTED UNDELIVERED
已交寄 Australia Post。追踪号码已通过电子邮件发给用户。
DELIVERED
Australia Post 的追踪记录显示已送达。
FAILED
未寄出。原因见 error,下一步见 instructions。已付款的信件会全额退款。
PAYMENT_EXPIRED
未按时付款。文件已删除。
REFUNDED
已取消或无法寄出,款项已退回银行卡。

错误

工具失败时会返回一个错误结果,其文本是写给 AI 助手的,说明出了什么问题以及该怎么做。没有错误代码,我们也可能修改消息的措辞,因此请根据错误的类型行事,而不是依据确切的字句。

工具从不收费或寄信,所以错误绝不会让用户付出任何费用。但一旦错误中提到某个任务,那封信就已存在:请用 get_letter_status 查看它,而不要再准备第二封。

arguments
某个参数缺失或有误:需要用户确认的地址、不能同时使用的选项、不支持的文件类型、被拒绝的 preparedFor,或格式错误的电子邮件。消息会指明是哪一项。修正后再次调用;没有创建任何内容。
file
无法从宿主获取原始文件:链接已过期、被拒绝、响应太慢或重定向次数过多、指向私有地址,或者文件为空或超过 50 MB。没有寄出任何东西。请获取新的文件引用,或使用 create_letter_upload;切勿改为发送文本副本。
job …
如果信件已创建但后续步骤失败,消息会以 job …: 开头。请用该任务 ID 调用 get_letter_status,如果它仍在等待地址,再调用 finish_letter_upload。不要再准备另一封信。
rate limit
本小时内来自该 AI 宿主的信件过多,或已达到连接器的每日上限。不要循环重试:请告诉用户稍后再试,或在 Unopost 网站上寄出。
paused
我们暂时停止接收新信件;已在处理中的信件照常进行。请稍后再试。
not found
没有信件使用该 jobId,或其上传已在 24 小时后过期。只使用 Unopost 返回给该用户的任务 ID;如已过期,请重新开始。
server
我们这边出了问题:Unopost API returned HTTP 5xx。请等待几秒钟,再试一次。
FAILED
无法打印的信件不属于工具错误:get_letter_status 会返回 FAILED,并附上 error 和简明的 instructions,例如拆分超过 80 页的文件或移除密码。

付款与隐私

  • 它从不代为付款或寄信。连接器不返回付款链接。用户只在看过预览后,在网站上付款。
  • 原始文件,原样不变。文件绝不会在 MCP 消息中传递,也绝不会被替换成文本。
  • 私密链接。任务 ID 是访问信件的唯一凭证,因此 AI 助手只把它和 reviewUrl 交给用户。
  • 打印前可取消。已付款的信件在我们开始打印之前,可以在 reviewUrl 取消并全额退款。
  • 寄出后删除。信件寄出后文件即被删除;未付款信件的文件在 24 小时后删除。

需要 Webhook?请用收件箱

连接器没有 Webhook。请改为向 AI 助手提供一个由你的软件读取的收件箱作为 notifyEmail。有关信件的每封电子邮件都从 notifications@unopost.com.au 发出,并在邮件头中携带该信件的信息,因此能对收到的邮件运行代码的邮件服务(如 Amazon SES、Postmark、Mailgun 或 SendGrid)可以在每条更新到达时进行处理。

  1. 将 notifyEmail 指向你的邮件服务接收的地址,例如 letters@yourbusiness.com.au。
  2. 只接受来自 notifications@unopost.com.au 且通过 DMARC 验证的邮件,其余一律丢弃。
  3. 请读取邮件头,而不是正文措辞,因为措辞可能会变。已经收到过的 Unopost-Event-Id 请丢弃。

邮件头

Unopost-Letter-Id
信件的 jobId,与连接器返回的一致。
Unopost-Event
发生了什么:receipt、posted、tracking、retrying、delayed、awaiting-collection、delivered、cancelled、failed、refunded 或 refunded-printed。
Unopost-Event-Id
同一条消息无论发送多少次,该值都相同,因此可以丢弃重复邮件。
Unopost-Letter-Status
此后信件的状态:TO_POST、POSTED、DELAYED、AWAITING_AT_COLLECTION、DELIVERED、CANCELLED 或 REFUNDED。
Unopost-Tracking-Number
信件寄出后的 Australia Post 追踪号码。
Unopost-Copy
企业收到的抄送中为 business;客户本人的邮件中没有。
Headers
From: Unopost <notifications@unopost.com.au>
Unopost-Letter-Id: 019d7a7f-a183-752d-9b3b-11511179033b
Unopost-Event: tracking
Unopost-Event-Id: evt_3f9a1c0b7e2d4a6b8c1d0e2f
Unopost-Letter-Status: POSTED
Unopost-Tracking-Number: 33LQV507012301000935005
Unopost-Copy: business
Amazon SES · receipt rule Lambda
export const handler = async (event) => {
  const { mail, receipt } = event.Records[0].ses;
  const { from } = mail.commonHeaders;
  const fromUs = from.length === 1 && /(^|<)notifications@unopost\.com\.au>?$/i.test(from[0]);
  // DMARC, not DKIM alone: only a DMARC pass means unopost.com.au signed it.
  if (!fromUs || receipt.dmarcVerdict.status !== 'PASS') return;
  const header = name =>
    mail.headers.find(h => h.name.toLowerCase() === name.toLowerCase())?.value;
  await recordUpdate({
    letterId: header('Unopost-Letter-Id'),
    event: header('Unopost-Event'),
    eventId: header('Unopost-Event-Id'), // drop one you've seen
    status: header('Unopost-Letter-Status'),
    trackingNumber: header('Unopost-Tracking-Number'),
  });
};

抄送在客户付款后才开始,因此从未付款的信件不会收到任何邮件:在此之前请用 get_letter_status 查询。客户本人收到的邮件也带有相同的邮件头。我们可能会新增邮件头,但绝不会重命名或删除以上这些。

发现

AI 智能体无需告知即可找到该连接器。它列在我们的 AI 目录中,目录指向它的 MCP 服务器卡片。

价格

项目价格
普通邮件,折叠后可投入信箱:最多 12 页$10
挂号邮件,即投递时签收的普通邮件:最多 12 页$16
Express Post,平放装入 B4 信封:含 20 页,之后每加一页 $0.30$20
Express Post 加选签收:含 20 页,之后每加一页 $0.30$26
追踪、彩色、双面或黑白打印,以及装订免费

每封信都可追踪。最终价格取决于页数,页数在信件排版完成后确定。

通过连接器准备的信件与其他信件一样,适用我们的服务条款和隐私政策。