MCP 連接器
用 AI 助理寄信
只要在 Claude、ChatGPT 或任何 MCP 用戶端加入一個 URL。AI 助理會準備好您的原始文件,以 A4 列印並透過 Australia Post 寄出,全程可追蹤。您在我們的網站上確認預覽並付款,未經您確認,不會寄出任何信件。
$10 普通郵件$20 Express Post
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 mcp add --transport http unopost https://unopost.com.au/api/mcp{
"mcpServers": {
"unopost": {
"type": "http",
"url": "https://unopost.com.au/api/mcp"
}
}
}寄信流程
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 · 選填- 僅適用於中國境內的收件人:其中國手機號碼,中國郵政需要此號碼。
{
"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"
}
}
}{
"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。
curl -X PUT "$UPLOAD_URL" \
-H "Content-Type: application/octet-stream" \
--data-binary @letter.pdfget_letter_status
TOOLget_letter_status
回報信件的進度,排版完成後附上最終的 pageCount 與 costCents。一封信通常只需幾秒鐘。最多每 5 秒查詢一次。
{
"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."
}{
"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 助理在準備任何信件之前,用它來回答問題。
{
"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- 正在排版。
CONVERTEDAWAITING_PAYMENT- 已就緒,等待使用者在
reviewUrl確認並付款。 PAIDPAYINGSENDINGRETRYINGMANUAL_CHECK- 已付款。在工作天墨爾本時間下午 2:30 前付款的信件,當天寄出。
POSTEDUNDELIVERED- 已交寄 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)可在每則更新送達時進行處理。
- 將
notifyEmail指向您的郵件服務接收的地址,例如letters@yourbusiness.com.au。 - 只接受來自
notifications@unopost.com.au且通過 DMARC 驗證的郵件,其餘一律捨棄。 - 請讀取標頭,而非內文措辭,因為措辭可能會變。已收過的
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;客戶本人的郵件中沒有。
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: businessexport 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 |
| 追蹤、彩色、雙面或黑白列印,以及裝訂 | 免費 |
每封信都可追蹤。最終價格取決於頁數,頁數在信件排版完成後確定。