3LT Letter Mail について
3LT Letter Mailは、AIエージェントが実物の郵便物やFAXを準備するためのMCPサーバーです。作成と送信を分け、承認手順を設けており、条件を満たす郵便依頼は制限内で自動送信できます。
主な機能
- 01郵便物の下書き作成と見積もり
- 02宛先住所の確認
- 03郵便物の承認または送信依頼
- 04FAX下書きの作成と承認
- 05郵便物とFAXの状態確認
- 06送信前のコンテンツ審査
活用シーン
- 01チャットの依頼からUSPS郵便物を準備
- 02郵便物を人の承認に回す
- 03設定済みの支出上限内で対象の郵便物を送信
- 04承認済みPDFのFAXを準備して状態を確認
MCP 対応
ホスト型Streamable HTTPのMCPエンドポイントで7個のツールを公開し、各ツール呼び出しでAPIキーを要求します。郵便依頼には人の承認またはConnectの継続承認が必要で、FAX送信には常に明示的な承認が必要です。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://3lgrouptechnology.com/mcpclaude mcp add --transport http com-3lgrouptechnology-3lt-letter-mail https://3lgrouptechnology.com/mcp{"mcpServers":{"com-3lgrouptechnology-3lt-letter-mail":{"type":"http","url":"https://3lgrouptechnology.com/mcp"}}}Cursor で開く{"servers":{"com-3lgrouptechnology-3lt-letter-mail":{"type":"http","url":"https://3lgrouptechnology.com/mcp"}}}VS Code で開く{"mcpServers":{"com-3lgrouptechnology-3lt-letter-mail":{"type":"http","url":"https://3lgrouptechnology.com/mcp"}}}{"mcpServers":{"com-3lgrouptechnology-3lt-letter-mail":{"serverUrl":"https://3lgrouptechnology.com/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
3| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| to | object | はい | name、address_line1、address_city、 address_state、address_zip(米国)を含む宛先住所の辞書。 |
| html | any | いいえ | レター本文を HTML 文字列で指定します(pdf_path とのいずれか一方を使用)。 |
| color | boolean | いいえ | カラー印刷の場合は True、白黒印刷の場合は False。 |
| api_key | string | はい | 3L-Group Technology の API キー(lms_...)。 |
| pdf_path | any | いいえ | HTML の代わりに郵送する PDF のサーバー上のローカルパス。 |
| quantity | integer | いいえ | 同一内容の手紙の通数(10 通以上は一括料金が適用されます)。 |
| certified | boolean | いいえ | オプトインのみ — USPS Certified Mail と電子 受領証(追跡可能、配達時に署名)を利用する場合は True にします。デフォルトは False で、 通常の First Class 郵便を送ります。顧客が Certified Mail を明示的に 希望した場合に限り True にしてください。料金が大幅に高くなります (PostGrid の認証郵便料金 + 一律 1.00 ドルのサービス料、1 通あたり約 11 ドル)。デフォルトで True にしてはいけません。 |
| description | any | いいえ | 自分の記録用の任意のラベル。 |
| from_address | object | はい | 送信者アドレスの辞書。形式は `to` と同じです。 |
詳細
3LT レターメール — MCP サーバー
AI アシスタントに手足を与えましょう。3L-Group Technology は、印刷・郵送の仕組みです。 AI エージェントが MCP ツールを呼び出すと、米国郵便公社を通じて実際の手紙が郵送され、 実際のファクス機にファクスが届きます。チャットで下書きを作成して承認すれば送信されます。印刷も封筒も郵便局への持ち込みも、自分のファクス機も不要です。
🌐 https://3lgrouptechnology.com
📇 公式 MCP レジストリ:com.3lgrouptechnology/3lt-letter-mail(server.json を参照)
ホステッドサービスを利用する(セットアップ不要)
公開 MCP エンドポイントは稼働中です:
https://3lgrouptechnology.com/mcp
トランスポート:ストリーミング可能な HTTP。認証:すべてのツール呼び出しで、API キーを api_key 引数として渡します。3lgrouptechnology.com で API キーを取得。
Claude から接続する
Claude(claude.ai)はカスタム MCP コネクターに対応しています。上記のサーバー URL を指定して、新しいコネクターを追加します。アシスタントがツールを呼び出す際、lms_... API キーを api_key パラメーターとして渡します。(このサービスが Claude アカウントを参照することはありません。認証情報はこのキーのみです。)
Cursor から接続する
Settings → MCP → Add custom MCP server:
{
"mcpServers": {
"3lt-letter-mail": {
"url": "https://3lgrouptechnology.com/mcp"
}
}
}
任意の MCP クライアントから接続する
ストリーミング可能な HTTP に対応するクライアントであれば利用できます。https://3lgrouptechnology.com/mcp を指定し、ツール呼び出しごとに API キーを渡してください。
API キーを取得する
キー(lms_...)はサービスが発行します。キーが表示されるのは一度だけなので、表示されたら保存してください。取得方法は 2 つあります。
- セルフサービス(Connect) — https://3lgrouptechnology.com/connect を開くか、アシスタントから
POST /v1/connectを実行します。Stripe がホストする要素(/billingページの仕組み)で支払い方法を保存し、月間上限を確認して確定すると、サービスがその上限に紐づいたon_commandキーを発行します。この一度の承認が継続的な承認となり、上限内の送信ごとにプロンプトで確認する必要はありません。 - 管理者による発行 — 運営者が
POST /v1/keys(X-Admin-Token)でキーを作成します。これらのキーはapprovalティアで開始し、運営者がティアを変更するまで、送信のたびに人間が「許可」をタップする必要があります。
どちらの場合も、キーはリスクレベル L0(月額上限 $50)で開始します。問題のない利用履歴が続くと上限は自動的に引き上げられ、月額上限に達すると厳格に停止します。超過分が通知なしに請求されることはありません。
ツール
| ツール | 機能 |
|---|---|
draft_letter | 手紙の下書きを作成します。宛先住所を検証し、内容を審査して、料金見積もりを返します。郵送は一切行いません。 html(手紙の本文)または pdf_path(サーバー上のローカル PDF)を受け付けます。オプション:color、quantity(一括送信)、certified(USPS 書留郵便+電子配達証明を任意で指定。標準は通常の First-Class です)。 |
request_send | 下書きの郵送をリクエストします。approval ティアのキーでは、保留中(PENDING)のリクエストと、ワンタップで許可/拒否できるリンクが発行されます。人間が「許可」をタップするまで郵送されません。信頼済みの on_command キーは、ガードレール(利用上限、内容審査、異常検出)の範囲内であれば自動送信できます。 |
send_status | 送信リクエストの状態(PENDING/SENT/REJECTED/FAILED)、承認状態、信頼ティアの判定、請求状態を確認します。 |
create_fax_draft | サーバー上のローカル PDF からファクスの下書きを作成します。宛先のファクス番号を検証し、ページ数を数え、内容を審査して、料金見積もりを返します。送信は一切行いません。 |
approve_fax | ファクスの下書きを承認し、送信できるようにします。承認時に内容を再審査します。この操作自体では送信されません。 |
send_fax | 承認済みのファクスを Phaxio 経由で送信します。未承認の下書きと、すでに送信済みのファクスは拒否されます。ファクスは必ず 1 回だけ送信されます。 |
get_fax_status | ファクスのライフサイクル状態(DRAFT/APPROVED/SENT/FAILED)、ページ数、見積もり、請求状態、送信後の Phaxio 配信状況をリアルタイムで確認します。 |
手紙を郵送したりファクスを直接送信したりするツールはありません。送信はすべて、承認記録(人間によるタップ、または Connect による継続的な承認)を経由します。
ファクスはさらに厳格です。approve_fax は必ず必要で、on_command キーでも、プロンプトなしでファクスを送信する方法はありません。
料金
1通あたり一律1.00ドルのサービス料に、郵送料が加算されます(印刷・郵送プロバイダー経由のUSPS First-Class)。料金は1種類のみで、段階制や大量利用による変動はありません。配達証明付き郵便(電子返送受領証付き)は任意で、追加料金がかかります。標準では選択されません。
**FAX:**同じく一律の料金体系です。Phaxioのページごとの料金(約0.07ドル/ページ)にページ数を掛けた金額に、FAX 1件あたり0.50ドルのサービス料が加算されます(ページごとではなく、FAX 1件につき1回)。1ページのFAXは、処理手数料の上乗せ前で0.57ドルと見積もられます。送信時に顧客のカードに請求されるのは、手数料を上乗せした合計金額です。レターと同様です。
例:「2026年の1099をこの40人に送って」 → アシスタントが受取人ごとに
draft_letter → request_send → send_statusを実行します。一括処理は月間上限内で自動送信されます。フラグが付いたものは、ワンタップで許可/拒否できるリンクに切り替わります。送信ごとに明細付きの領収書が1通発行されます。
セルフホスト
独自の仕組みで運用したい場合は、フルスタックがこのリポジトリにあります。
クイックスタート
./quickstart.sh
.venvを作成し、依存関係をインストールして、テストスイートを実行した後、http://127.0.0.1:8000でREST APIを起動します(ダッシュボードは/)。
POSTGRID_API_KEYを設定しない場合、住所確認の時点でドラフトは正常に失敗し、郵送されることはありません。シミュレーション送信で一連のフローを試すには、テスト用キーを設定します。
POSTGRID_API_KEY=test_... LMS_ADMIN_TOKEN=pick-a-secret ./quickstart.sh
MCP サーバー(別のターミナル):
POSTGRID_API_KEY=test_... .venv/bin/python mcp_server.py
# MCP endpoint: http://127.0.0.1:8001/mcp
リポジトリの内容
- MCP サーバー(
mcp_server.py) — 上記の7つのツールをストリーミング可能な HTTP 経由で提供します。 - REST API(
api.py、FastAPI) — 下書き、送信リクエスト、ファックスのライフサイクル(POST /v1/faxes→/{id}/approve→/{id}/send、GET /v1/faxes/{id})用のエージェントエンドポイント (X-API-Key)を提供します。キーの発行、送信の承認/却下、信頼ティアと 支出上限の管理を行う管理者エンドポイント(X-Admin-Token)もあります。 顧客ダッシュボード(/customer)、承認ダッシュボード(/)、 監査履歴、Stripe ウェブフックも利用できます。静的なディスカバリー文書は/.well-known/oauth-authorization-server、/.well-known/oauth-protected-resource(実態に即した API キーのメタデータ — OAuth のデプロイはありません)、および/.well-known/mcp/server-card.json(Smithery の静的サーバーカード)で提供されます。 - ファックスの決済経路(
phaxio_client.py、Phaxio API v2.1) — ファックスの下書きは、レターと同様に検証され、 ページ数がカウントされ、スクリーニングされ、見積もられます。送信にはレターと同じ課金エンジン (tlt_billing.settle_fax)が使われます。リスク上限は、レターとファックスを 合算した支出に対してチェックされ、カードの与信枠が確保された後、ファックスが送信され、 料金が確定します(送信に失敗した場合は与信が取り消されます)。明細付きの領収書も発行されます。 - 信頼ティア(API キーごと) —
approval(管理者が発行したキーのデフォルト: 送信ごとに人間の承認が必要)またはon_command(信頼済み:ガードレールの範囲内で自動送信。 送信ごとのコンテンツスクリーニング、送信ごとおよび日次の支出上限、 厳格な月次上限、7日間の支出が3倍を超えた場合の異常ルール、needs_reviewへのフォールバック)を設定できます。 すべての判断が監査記録に残ります。 - 一度限りの決済経路の承認(「Connect」) —
POST /v1/connectは Stripe 顧客を作成し、/connect/<token>ページを返します(月次上限を確認したうえで、Payment Element を介して カード/Apple Pay/Google Pay を利用できます)。確定すると、送信ごとの承認がオフになったon_commandAPI キーが発行されます。1回の Connect 承認が継続的な承認となるため、 上限の範囲内なら確認なしで送信できます。月次上限に達すると、402「上限を引き上げてください」 が返され、超過分が通知なしに請求されることはありません。 - 課金(Stripe) — 支払い方法の保存には SetupIntents を使い、承認ごとにオフセッションで
与信枠の確保 → 履行 → 決済確定を行います(送信に失敗した場合は与信が取り消されます)。
送信ごとに冪等性キーを使用します。レターとファックスは、共通の
tlt_billingモジュールにあるsettle/settle_faxという1つのエンジンを共有します。⚠️ このビルドの課金モジュールは テスト用以外の Stripe キーを拒否します。実際の顧客への請求には、まずテストモードの制限を 解除する必要があります(DEPLOY.mdの未解決事項を参照)。 - リスクエンジン — 支出上限は固定値ではなく、リスクに応じて決まります。新しいキーは L0(月額50ドル)から始まり、
問題のない利用履歴が続くと上限は自動的に引き上げられます。フラグ、支払い失敗、
チャージバックが発生すると、キーの制限が強化されるか凍結されます。すべての判断は
人間が読める理由とともに監査記録に残ります。
risk.pyを参照してください。 - 不正利用スクリーニング — コンテンツのブロックリストは、下書きの作成時と、承認/履行時に再度適用されます。
- ストレージ — SQLite(
db.py):api_keys、drafts、send_requests、faxes、 billing_receipts、approval_tokens、connect_sessions、audit_log。
環境変数
| 変数 | 必須 | デフォルト | 用途 |
|---|---|---|---|
POSTGRID_API_KEY | メール送信時に必須 | — | PostGrid Print & Mail API キー。test_... = テスト送信(実際には郵送されません)。ライブキー = 実際に郵送(ALLOW_LIVE_MAIL=1 を設定しない限り拒否されます)。絶対にコミットしないでください。 |
LMS_ADMIN_TOKEN | 推奨 | ランダムな値(起動時に一度だけ表示) | 承認およびキー発行用の管理者トークン(X-Admin-Token)。 |
LMS_DB_PATH | いいえ | ./lms.db | SQLite ファイルの保存場所。 |
POSTGRID_BASE_COST_USD | いいえ | 0.97 | 見積もりで使用する、PostGrid の封書あたりの基本料金の推定値。 |
POSTGRID_AV_API_KEY | いいえ | — | PostGrid Address Verification キー。未設定の場合は POSTGRID_API_KEY にフォールバックします。 |
MAIL_PROVIDER | いいえ | postgrid | postgrid または lob(レガシーのフォールバック)。 |
PHAXIO_API_KEY / PHAXIO_API_SECRET | FAX 送信時に必須 | — | Phaxio API 認証情報。test_... = テスト送信。ALLOW_LIVE_FAX=1 を設定しない限り、ライブ認証情報は拒否されます。手紙の郵送のみを行う場合は空欄にしてください。絶対にコミットしないでください。 |
ALLOW_LIVE_FAX | いいえ | 未設定 | 1 に設定すると、ライブの Phaxio 認証情報を使用できます(実際の FAX 送信とページごとの料金が発生します)。 |
PHAXIO_PER_PAGE_USD | いいえ | 0.07 | FAX の見積もりで使用する、Phaxio のページあたり料金の推定値。 |
LMS_MCP_HOST / LMS_MCP_PORT | いいえ | 127.0.0.1 / 8001 | MCP サーバーのバインド設定。 |
STRIPE_SECRET_KEY | 請求処理時に必須 | — | テスト用シークレットキー(sk_test_...)。テスト用以外のキーは拒否されます。 |
STRIPE_PUBLISHABLE_KEY | /billing 用 | — | Payment Element ページ用の公開可能キー。 |
STRIPE_WEBHOOK_SECRET | Webhook 用 | — | POST /v1/webhooks/stripe の署名シークレット。 |
APPROVAL_TOKEN_SECRET | 推奨 | 一時的(再起動すると無効) | ワンタップの許可/拒否リンク用の HMAC シークレット。 |
PUBLIC_BASE_URL | 承認リンク用 | リクエスト URL | 承認リンクに埋め込まれる公開ベース URL。 |
TLT_MAILER_BACKEND | いいえ | log | log は領収書を TLT_RECEIPTS_DIR に書き込みます(メールは送信されません)。 |
TLT_RECEIPTS_DIR | いいえ | ./receipts | 明細付き領収書ファイルの保存先。 |
LMS_UPLOADS_DIR | いいえ | ./uploads | アップロードされた PDF の保存先(下書きごとのディレクトリ)。 |
LMS_MAX_PDF_BYTES | いいえ | 10485760 | PDF の最大アップロードサイズ(バイト)。 |
.env.example を .env にコピーし、実際の値を設定してください。.env は絶対にコミットしないでください。
テストを実行する
.venv/bin/python test_pricing.py
.venv/bin/python test_api_flow.py # PostGrid calls stubbed, no network
.venv/bin/python test_billing_tiers.py # Stripe mocked, no network
.venv/bin/python test_pdf.py # PDF upload + flow, no network
.venv/bin/python test_risk.py
.venv/bin/python test_customer_dashboard.py
.venv/bin/python test_certified.py # certified-mail pricing + flow
.venv/bin/python test_grossup.py # billing gross-up math
.venv/bin/python test_rail.py # Connect rail authorization flow
.venv/bin/python test_fax.py # Phaxio stubbed, no network
.venv/bin/python test_fax_billing.py # fax settle/caps/pooling, Stripe mocked
.venv/bin/python test_server_card.py # /.well-known/mcp/server-card.json
デプロイに関する注意事項
DEPLOY.md を参照してください。Docker Compose(./deploy.sh 経由)、環境変数のチェックリスト、共有ライブラリの配布手順、デプロイ後の検証プローブを含む、デプロイ当日の手順を順を追って説明しています。
安全に関する注意事項
mail_provider.create_letterを呼び出すコードパスは、core.approve_send以外にありません。この処理には、リクエストがPENDINGであることと、管理者による操作が必要です。MCP ツールから送信することはできません。- FAX を送信する経路は
core.send_faxのみです。FAX がAPPROVED状態であること(先にapprove_faxを明示的に実行すること)が必要で、送信前に請求処理が行われます。カード決済が拒否された場合、FAX は送信されません。 postgrid_clientではtrust_env=Falseが設定されているため、環境変数で設定されたプロキシを介して API キーが送信されることはありません。- API キーは SHA-256 ハッシュとして保存されます。生のキーは発行時に一度だけ表示されます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。