unopost

MCPコネクタ

AIアシスタントから手紙を郵送

Claude、ChatGPT、その他のMCPクライアントにURLを1つ追加するだけです。アシスタントが元の書類を、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. ユーザーがウェブサイトで支払う

アシスタントはユーザーに住所を確認し、手紙を準備して、非公開の確認用リンクをユーザーに渡します。ユーザーはそこでプレビューを確認し、メールアドレスを入力してカードで支払います。支払いが済むと、手紙が郵送されます。

ユーザーの発言
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.

ツール

これらはアシスタントが自ら呼び出します。prepare_letter, finish_letter_upload、get_letter_statusのすべての結果には、ユーザーがプレビューを確認して支払う非公開ページのreviewUrlと、次にユーザーに伝える内容を示すinstructionsが含まれます。

prepare_letter

TOOLprepare_letter

ChatGPTの添付ファイルなど、ホストからのファイル参照を受け取り、元のファイルをダウンロードして手紙の作成を始めます。ファイルが打ち直されたり、作り直されたり、テキストとして送られたりすることはありません。呼び出すたびに新しい手紙が作成されるため、アシスタントは1回だけ呼び出します。

引数

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 · 任意
ページの左上を1か所ホチキス留めします。12ページまでの書類のみ対象で、それより長い書類は料金計算時に拒否されます。既定値はfalseです。
foldboolean · 任意
12ページまでのExpress Postまたは国際郵便の手紙を折りたたみ、小さい封筒に入れます。
preparedForstring · 任意
事業者のために、その顧客に宛てて書く場合のみ:事業者の名称(60文字まで)。支払いページでは、確認済みとしてではなく、アシスタントから伝えられた内容として表示されます。Unopost、Australia Post、銀行、政府機関などの名称は拒否されます。
notifyEmailstring · 任意
preparedForと併せて:事業者のメールアドレス。支払いから配達まで、手紙に関するすべてのメールの写しがこのアドレスに届きます。お客様は支払いの前にこのアドレスを確認できます。
customerEmailstring · 任意
わかる場合は、支払いをするお客様のメールアドレス。支払いページには最初から入力された状態で表示され、追跡メールはこのアドレスに届きます。

住所

name、line1、suburbは必須で、名前と各行は40文字までです。オーストラリア国内では、郵便番号から州が決まります。海外の場合はcountryを追加し、中国宛ての手紙ではphoneに中国の携帯電話番号を入れます。

namestring · 必須
個人の氏名。
companystring · 任意
会社名または団体名。
line1string · 必須
番地と通りの名前、または"PO Box 123"のようなPO Box。
line2string · 任意
住所の2行目。
suburbstring · 必須
サバーブ(地区)または町の名前。
statestring · 任意
オーストラリアの住所では省略してください。郵便番号から決まります。指定する場合は、ACT、NSW、NT、QLD、SA、TAS、VIC、WAのいずれかで、郵便番号と一致している必要があります。海外の住所では、その国で使われていれば地域名を指定します。
postcodestring · 任意
4桁の数字。オーストラリアの住所では必須です。海外の住所では、その国で使われていれば郵便番号を指定します。
countrystring · 任意
オーストラリアの場合は省略してください。それ以外は国名を英語で指定します。受取人を海外にできるのは、serviceがinternationalの場合だけです。
phonestring · 任意
受取人が中国にいる場合のみ:China Postが必要とする、中国の携帯電話番号。
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はファイル名を受け取り、5分で失効するuploadUrlを返します。そこに元のバイト列を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秒に1回までにしてください。

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セント単位の現在の料金、各料金に含まれるページ数、ページとファイルの制限、そして発送時刻、配達、追跡、キャンセルについてのわかりやすい回答。アシスタントは、何かを準備する前に質問に答えるためにこれを使います。

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

制限

pages
1通あたり80ページまで。長い書類は別々の手紙に分けてください。
regular
普通郵便と、折りたたむ手紙はすべて12ページまでです。それより長い手紙は、Express Postで折らずに送ります。
size
1ファイルあたり50 MBまで。
files
PDF、Word(.doc、.docx)、JPEG、PNG。Word文書はA4にレイアウトされます。
letter
コネクタ経由では手紙1通につき1ファイル。ウェブサイトでは10ファイルまで受け付けます。
rate
AIホストごとに1時間200通まで。

ステータス

CREATED
確保済みで、ファイルを待っています。
CONVERTING
レイアウト中です。
CONVERTED AWAITING_PAYMENT
ユーザーがreviewUrlで確認して支払える状態です。
PAID PAYING SENDING RETRYING MANUAL_CHECK
支払い済みです。営業日の午後2時30分(メルボルン時間)までに支払われた手紙は、当日に発送します。
POSTED UNDELIVERED
Australia Postに差し出しました。追跡番号はユーザーにメールで送信済みです。
DELIVERED
Australia Postの追跡情報で配達済みと表示されています。
FAILED
発送されませんでした。理由はerrorに、次にすべきことはinstructionsに示されます。支払い済みの手紙は全額返金します。
PAYMENT_EXPIRED
期限内に支払われませんでした。書類は削除済みです。
REFUNDED
キャンセルされたか発送できなかったため、カードに返金しました。

エラー

失敗したツールは、何が起きたか、どうすればよいかをアシスタント向けに書いたテキスト付きのエラー結果を返します。エラーコードはなく、メッセージの文言は変わることがあるため、正確な文言ではなくエラーの種類に応じて対応してください。

ツールが支払いや郵送を行うことはないため、エラーでユーザーに費用が発生することはありません。ただし、エラーにジョブが示されている場合、その手紙は作成済みです。2通目を準備せず、get_letter_statusで状態を確認してください。

arguments
引数が不足しているか誤っています。ユーザーに確認すべき住所、両立しないオプション、未対応のファイル形式、拒否されたpreparedFor、不正な形式のメールアドレスなどです。メッセージに該当箇所が示されます。修正して再度呼び出してください。何も作成されていません。
file
ホストから元のファイルを取得できませんでした。リンクの期限切れ、拒否、応答が遅すぎる、リダイレクトが多すぎる、非公開のアドレスを指している、またはファイルが空か50 MBを超えている場合です。何も郵送されていません。新しいファイル参照を取得するか、create_letter_uploadを使ってください。代わりにテキストのコピーを送ることは絶対にしないでください。
job …
手紙は作成されたものの後の手順で失敗した場合、メッセージはjob …:で始まります。そのジョブIDでget_letter_statusを呼び出し、まだ住所を待っている場合はfinish_letter_uploadを呼び出してください。別の手紙を準備しないでください。
rate limit
このAIホストからの1時間あたりの手紙が多すぎるか、コネクタの1日の上限に達しました。ループで再試行せず、後で試すか、Unopostのウェブサイトから送るようユーザーに伝えてください。
paused
新しい手紙の受け付けを一時停止しています。すでに処理中の手紙はそのまま進みます。後でもう一度お試しください。
not found
そのjobIdの手紙はないか、アップロードが24時間で期限切れになりました。Unopostがこのユーザーに返したジョブIDだけを使い、期限切れの場合は最初からやり直してください。
server
当社側で問題が発生しました:Unopost API returned HTTP 5xx。数秒待ってから、もう一度だけお試しください。
FAILED
印刷できない手紙はツールのエラーではありません。get_letter_statusはFAILEDを、errorとわかりやすいinstructionsとともに返します。たとえば、80ページを超える書類を分割する、パスワードを解除する、などです。

支払いとプライバシー

  • 支払いも郵送も勝手に行いません。コネクタは支払いリンクを返しません。ユーザーはプレビューを見た後、ウェブサイトでのみ支払います。
  • 元のファイルをそのまま。ファイルがMCPメッセージに含まれてやり取りされることはなく、テキストに置き換えられることもありません。
  • 非公開のリンク。ジョブIDが手紙にアクセスする唯一の鍵なので、アシスタントはジョブIDとreviewUrlをユーザー以外には伝えません。
  • 印刷前ならキャンセル可能。支払い済みの手紙は、当社が印刷を始めるまでreviewUrlからキャンセルでき、全額返金されます。
  • 発送後に削除。書類は手紙の発送後に削除し、未払いの手紙の書類は24時間後に削除します。

Webhookの代わりに受信箱を

コネクタにはWebhookがありません。代わりに、お使いのソフトウェアが読み取る受信箱の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カタログに掲載されており、そこからMCPサーバーカードを参照しています。

料金

項目料金
普通郵便、郵便受けに入るよう折りたたみ:12ページまで$10
書留郵便(配達時の署名付きの普通郵便):12ページまで$16
Express Post、B4封筒で折らずに:20ページまで込み、以降1ページごとに$0.30$20
Express Post、配達時の署名付き:20ページまで込み、以降1ページごとに$0.30$26
追跡、カラー印刷、両面印刷、白黒印刷、ホチキス留め無料

すべての手紙は追跡付きです。最終的な料金はページ数によって決まり、ページ数は手紙のレイアウト後に確定します。

コネクタを通じて準備された手紙にも、他の手紙と同様に当社の利用規約とプライバシーポリシーが適用されます。