Outbound OS について
Outbound OSは、CLIまたはMCPクライアントで使うMITライセンスのアウトバウンド業務ワークフローシステムです。送信前に証拠確認とフェイルクローズの承認ゲートを適用し、状態の永続化と合成データによるドライランに対応します。
主な機能
- 01証拠に基づく顧客候補の選定
- 02フェイルクローズの送信承認ゲート
- 03メールボックス検証と重複排除
- 04メッセージ完全一致の承認ハッシュ
- 05ライフサイクルと案件状態の永続化
- 06合成データによるドライラン
活用シーン
- 01アウトリーチの妥当性評価
- 02未検証メールボックスへの送信防止
- 03セッションをまたぐ案件コンテキストの再開
- 04メールを送らずにゲート動作をテスト
MCP 対応
オプションのChatGPTパッケージは、start、check、sendの各インテントをMCPツールとして提供します。ローカルMCPサーバーは既定で127.0.0.1にバインドし、CLIと同じ送信ゲートを適用します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
docker run -i --rm ghcr.io/recepiohq/outbound-os-mcp:0.2.1ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ghcr.io/recepiohq/outbound-os-mcp:0.2.1Streamable HTTPツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Outbound OS
対話型ポリシーデモを試す — インストールもサインアップも不要です
公式 MCP レジストリ: Outbound OS — 公開中のリスティング(v0.2.1)。公開 OCI パッケージ:ghcr.io/recepiohq/outbound-os-mcp:0.2.1。この MCP サーバーはローカルでの運用を想定しており、組み込みの認証機能はありません。HTTP ポートをパブリックインターネットに公開しないでください。
AI コーディングクライアントで使用する: Docker + Claude Code / Cursor MCP クイックスタート — ローカル限定で、メールボックスの認証情報は不要です。実際の MCP ツールを 3 つ確認できます。
ブラウザーで、架空の購入者、メールボックス、証拠、重複、承認の条件を変更できます。インターフェースは CLI と同じ決定論的なゲートおよび下書きの事前確認モジュールを実行します。外部 API は呼び出さず、メールも送信しません。このデモでの PASS は、実際のメッセージを送信する許可を意味するものではありません。シナリオリンクをコピーを使うと、架空の入力と判定結果をそのまま別の開発者と共有できます。このリンクに実際のアドレスやメッセージのデータが含まれることはありません。
実際のブラウザーデモのスクリーンショット。架空のフィクスチャのみを使用しています。
多くの AI アウトバウンドツールは、より多く送信することを最適化します。Outbound OS は、送信しないタイミングを見極められるように設計されています。
Start.
Check.
Send.
これらはオペレーターの意図であり、バイパスコマンドではありません。
アウトバウンドのアクションはすべて、Buyer Selection、証拠の確認、メールボックスの検証、重複排除、事実関係の事前確認、商業面の審査、配信可能性と送信レートの制御、明示的な承認、そして承認ハッシュとの完全一致を通過する必要があります。
Outbound OS は、意思決定ゲートを備えたアウトバウンドワークフローの無償の MIT ライセンス参照実装です。 プライベートな Zoho MCP 運用で使用されているワークフローに着想を得ていますが、このリポジトリには、そのプロジェクトの非公開キャンペーンデータ、取引状況、認証情報、Git 履歴は含まれていません。
これが作られた理由
一般的なアウトバウンドスタックが問うのは、**どうすればもっと送信できるか?**です。
Outbound OS は、もっと前の段階から始めます。
- この組織は連絡する価値がありますか?
- アウトリーチを正当化できるだけの強い証拠がありますか?
- 連絡経路とメールボックスは確認済みですか?
- すでにその組織に連絡していますか?
- パーソナライズされた主張のすべてに、裏付けがありますか?
- 審査・承認されたものと、まったく同じメッセージですか?
- 今送信できるだけの配信可能性が確保されていますか?
- 人間から返信があり、コールドリードではなく取引になりましたか?
ハードゲートを一つでも通過できなければ、停止です。
ワンコマンドの CLI デモ — グローバルインストール不要
Node.js 22 以降と npm が必要です。MIT ライセンスのリリースアーカイブを npm の一時キャッシュ(グローバルパッケージディレクトリではありません)にインストールし、許可された送信とブロックされた送信を架空のシナリオで比較します。
npm exec --yes --package=https://github.com/RecepioHQ/outbound-os/releases/download/v0.2.1/outbound-os-0.2.1.tgz -- outbound-os demo --compare
このコマンドは、Node.js 22/npm 10 を使用した Windows 環境でテスト済みです。許可されたシナリオでは PASS、未確認のメールボックスでは BLOCK を返し、blocked.transport_calls=0、live_sent=false となりました。HTTPS 経由でパッケージをダウンロードしますが、実際のメールボックスには接続せず、メールも送信しません。
Node.js がインストールされていない場合は、ブラウザーでのライブデモをお試しください。
インストール可能な CLI として実行する
検証済みの v0.2.1 リリースからの任意のグローバルインストール
必要条件:Node.js 22+ と npm。この操作では、公式 v0.2.1 GitHub リリースに添付された MIT ライセンスのアーカイブをダウンロードします。npm レジストリのパッケージではありません。
npm install --global https://github.com/RecepioHQ/outbound-os/releases/download/v0.2.1/outbound-os-0.2.1.tgz
outbound-os demo --json
検証: 公開済みの v0.2.1 GitHub リリースと添付アーカイブは Windows でテスト済みで、インストールされた CLI は合成比較に合格しました。整合性を重視する用途では、インストール前にリリースノートと照合してアーカイブのチェックサムを確認してください。
デモではメールは送信されません。 実際の送信はデフォルトで無効になっており、送信を行うには、承認済みのコンテキストとハードゲートのチェックが必須です。
Node.js 22+ と Git が必要です。ソースコードは MIT ライセンスです。オフラインデモでは、メールボックスの認証情報、ChatGPT アカウント、API キーは必要ありません。
ソースから試す(初回実行におすすめ)
git clone https://github.com/RecepioHQ/outbound-os.git
cd outbound-os
npm ci
node bin/outbound-os.js --help
node bin/outbound-os.js demo --json
ローカルのパッケージアーカイブから任意のグローバルコマンドをインストール
npm pack
npm install --global ./outbound-os-0.2.1.tgz
outbound-os demo --json
.tgz はチェックアウトしたソースからローカルでビルドされるため、インストール前に内容を確認してください。Windows では、同じコマンドを PowerShell で使用するか、./ を .\\ に置き換えてください。アーカイブからのインストール手順は、分離された npm プレフィックスを使って Windows で検証済みです。このプロジェクトは npm レジストリへの公開を主張していません。
推奨手順として npm install -g github:RecepioHQ/outbound-os を使用しないでください。 検証済みの Windows/npm 10 環境の一つで実行したところ、npm の一時 Git クローン内を指すリンク切れのジャンクションが作成されました。パッケージ化したアーカイブを使えば、この確認済みの問題を回避できます。
デモでは予約済みのサンプルドメイン、モックメールボックス、ドライラン用トランスポートを使用します。実際のメールは送信されません。 実際の運用については、プロバイダーの設定とセキュリティ要件に従ってください。start、check、send コマンドは、既存の状態管理、検証、ハードゲートのコードを引き続き呼び出します。CLI をインストールしても、これらを回避する権限は付与されません。
60 秒デモ
許可されたドライランとブロックされた試行を比較する
この比較では、合成フィクスチャとモックトランスポートに対して実際にゲートを評価します。一方のメッセージはチェックを満たしますが、もう一方のメッセージはメールボックス検証の結果が unknown であるため、トランスポートが呼び出される前にブロックされます。
# In a checkout of the latest source:
npm ci
node bin/outbound-os.js demo --compare
出力には、allowed.send_decision=PASS、blocked.send_decision=BLOCK、mailbox_verification ゲートによる理由、blocked.transport_calls=0 が含まれます。これらは合成チェックであり、実際のメールボックスを検証した、または実際のメールを送信したという主張ではありません。
必要条件:Node.js 22+。
npm install
npm test
npm run demo
デモは完全に合成されたもので、ネットワークへの呼び出しは行いません。以下の流れを確認できます。
Synthetic buyer
↓
Buyer Selection → READY
↓
Verified evidence + mailbox + dedupe + review gates
↓
Dry-run send → SIMULATED (not a live send)
↓
Synthetic human reply
↓
Cold eligibility stops
↓
Deal Mode → engaged
出力例:
{
"buyer_state": "READY",
"send_decision": "PASS",
"transport_status": "simulated",
"live_sent": false,
"cold_eligible_after_reply": false,
"deal_stage": "engaged"
}
アーキテクチャ
flowchart TD
A[Operator: CLI or ChatGPT/MCP] --> B{Intent}
B -->|Start| C[Task / Skill Router]
B -->|Check| D[Mailbox Reconciliation]
B -->|Send| E[Hard Gate Engine]
C --> F[Buyer Research]
F --> G[Buyer Selection]
G --> H[(Persistent State + Event Ledger)]
D --> I[Reply / Delivery Classifier]
I --> H
I -->|Verified human reply| J[Deal Mode]
J --> H
E --> K[Evidence + Contact Route]
K --> L[Mailbox Verification]
L --> M[Dedupe]
M --> N[Factual Preflight]
N --> O[Commercial Review]
O --> P[Deliverability / Rate / Cap]
P --> Q[Authorization + Approval Hash]
Q -->|PASS| R[Transport]
R -->|default| S[Dry Run]
R -->|explicit live opt-in| T[Zoho Adapter]
モデルは作業を提案できますが、その下で動作する機械的なゲートエンジンを上書きすることはできません。
買い手の選定
公開エンジンは、証拠に基づく以下の 4 つの観点を評価します。
- 戦略的適合性 — 組織が関心を持つべき信頼できる理由があるか。
- 商業的能力の証拠 — アウトリーチが商業的に妥当であることを示す、帰属先が明確な証拠があるか。
- 意思決定者へのアクセス — 適切な意思決定者または公式チャネルにつながる、信頼できる手段があるか。
- きっかけ/タイミングの証拠 — アウトリーチを今行うべき理由があるか。
証拠は VERIFIED、INFERRED、UNKNOWN に明示的に分類されます。
システムがより多くの件数を必要としているというだけで、UNKNOWN が肯定的なスコアになることはありません。
結果は READY、HOLD、SKIP のいずれかで、理由を確認できます。
docs/buyer-selection.md を参照してください。
厳格なゲート
デフォルトの送信チェーンは、フェイルクローズ方式です。
| ゲート | 失敗時の動作 |
|---|---|
| 購入者の選定 | 保留/ブロック |
| エビデンスの品質 | ブロック |
| 連絡先ルート | ブロック |
| メールボックスの検証 | ブロック |
| 組織/連絡先の重複排除 | ブロック |
| 事実に基づくパーソナライズ | ブロック |
| 事前チェック | ブロック |
| 商取引レビュー | ブロック |
| 配信健全性 | ブロック |
| レート/ボリューム上限 | ブロック |
| 明示的な承認 | 保留 |
| 承認ハッシュの完全一致 | ブロック |
厳格なメールボックス検証で許可されるのは valid のみです。デフォルトでは invalid、catch_all、unknown、error はブロックされます。
承認後に受信者、件名、プレーンテキスト本文、または HTML を変更すると、承認ハッシュは無効になります。
docs/hard-gates.md を参照してください。
永続状態 — チャットの記憶ではありません
運用状態は会話の外部に保存されます。
- 追記専用の JSONL ライフサイクル台帳
- 派生 JSON 状態の投影をアトミックに書き込み
- 組織レベルおよび連絡先レベルの重複排除
- 人間からの返信後も維持される Deal Mode の状態
デフォルトでは、ランタイム状態は Git の対象外である state/ に保存されます。OUTBOUND_OS_DATA_DIR で保存先を変更できます。
新しい ChatGPT/MCP セッションでは、会話上の記憶から取引を再構成する代わりに、同じ状態を再読み込みできます。
docs/state-and-ledger.md を参照してください。
Deal Mode
人間からの返信が確認されると、その組織はコールド連絡の対象から除外され、次のようなフィールドを含む取引レコードが作成または更新されます。
- 最新の人間からの返信
- ステージ
- 確認済みの事実
- 推定される背景
- 不明点
- 反論
- 価格に関する背景
- 約束事項
- 次に正当化されるアクション
時間の経過だけで取引ステージが進むことはありません。
docs/deal-mode.md を参照してください。
スキル
このリポジトリでは、すべてを網羅する単一のプロンプトに依存せず、タスクごとに手順を分けています。
buyer-research— 出典を示せるエビデンス。権限/予算/意図を捏造しません。cold-outreach— 確認済みの事実と、すべてのアウトバウンドゲート。delivery-recovery— 恒久的な配信失敗と一時的な配信遅延への対処。engaged-deal— 人間からの返信に関するワークフローと取引の背景情報。
スキルは動作をガイドしますが、コードに定められた機械的なルールを回避することはできません。
Zoho Mail アダプター
Outbound OS には、文書化された Zoho API に基づく、公開利用に安全な Zoho Mail アダプターが含まれています。
次の機能をサポートします。
- OAuth リフレッシュトークンの交換
- 明らかに一時的な読み取り失敗時に、回数を制限して再試行するメールボックスの読み取り
- 既知の連絡先からの人間の返信、一般的な自動返信、恒久的な配信失敗、一時的な遅延の慎重な正規化
- 承認済みメッセージの完全一致送信
- 送信処理の結果が不明確な場合に、無条件で再試行しないこと
- 返されたメッセージ ID による送信後の照合
一致しない受信メールは、取引として扱われず、無視されます。
必要なプロバイダー設定がすべて揃っており、さらに次の条件を満たさない限り、ライブ送信は無効です。
OUTBOUND_OS_LIVE_SEND=1
.env.example と docs/provider-adapters.md を参照してください。
ChatGPT/MCP
オプションの chatgpt/ パッケージでは、同じ3つのインテントを MCP ツールとして公開します。
startchecksend
MCP サーバーはデフォルトで 127.0.0.1 にバインドされます。これは意図的な設定です。メールボックスの読み取りではプライベートデータが公開され、メールの送信は取り消せない外部操作を発生させるためです。
cd chatgpt
npm install
npm start
開発時は、MCP Inspector またはサポート対象のプライベート/セキュア MCP トンネルのワークフローを使用してください。公開リモート MCP をデプロイしてこれらのツールを公開する場合は、適切な認証/認可の境界を追加する必要があります。
chatgpt/plugin-template/ には、意図的に動作しない .example MCP URL を使った、移植可能な Agent Plugins のパッケージ化例が含まれています。
ChatGPT の機能は、プラン、ワークスペース、地域、管理者設定、アクションの種類によって異なります。ChatGPT Plus だけで、カスタムのライブ書き込み/送信アクションが必ず利用できるとは限りません。 ローカル CLI は、引き続きあらゆる環境で利用できるフォールバックです。
chatgpt/README.md を参照してください。
CLI
node src/cli.js start --json
node src/cli.js check --json
node src/cli.js send --json
node src/cli.js send --json --input path/to/prepared-send-context.json
--input は、あらゆるインテントに対応する準備済みの JSON コンテキストを受け付けます。send は「無条件に送信する」という意味ではありません。準備済みで承認されたコンテキストがない場合は安全側に停止し、呼び出し元が CLI でも MCP でも同じ厳格なゲートが適用されます。完全に成功するパイプラインを確認するには、合成デモが最も簡単です。
フリーソフトウェアと外部コスト
Outbound OS は MIT ライセンスで提供されており、このプロジェクトでは SaaS サブスクリプション、リードごとのクレジット、シーケンスごとの料金を請求しません。
ただし、運用環境全体が無料であるという意味ではありません。設定によっては、以下の費用が発生する場合があります。
- ChatGPT またはその他の互換性のあるオペレーター環境
- Zoho Mail またはその他のメールボックスプロバイダー
- メールボックス検証サービス
- ホスティング、OAuth、または接続するその他の API
ChatGPT の利用が無制限であることや、返信率/収益の向上を保証するものではありません。
リリースセキュリティ
公開前に、プロジェクトでは以下をスキャンします。
- プライベートプロジェクトのファイル名/ディレクトリ
- 合成データではないメールアドレス
- 認証情報/トークン/秘密鍵のパターン
- シークレットを含む環境ファイル
- プライベート/内部 URL
- 長いプロバイダー/メッセージ識別子
- ローカルの絶対ユーザーパス
- ローカルの拒否リストで指定されたプライベートなキャンペーン名
- 公開前の Git 履歴が誤って含まれていないか
コントリビューター向けスキャンは、次のコマンドで実行します。
npm run scan:release
SECURITY.md を参照してください。
現在の範囲
これはリファレンス実装であり、ホスト型のマルチテナント SaaS でも、大量メール送信製品でもありません。
v0.2.1 では、意図的に以下の機能を提供していません。
- 自律的なバックグラウンド送信/スケジュール送信
- MCP への公開マルチユーザーアクセス向けのホスト型 OAuth サービス
- サードパーティのメールボックス検証プロバイダーの組み込みアカウント
- あらゆる DSN/自動返信形式が分類されることの保証
- 返信、パイプライン、収益、または到達率の成果の保証
厳格なゲートは安全策として使用し、適用される法律、プロバイダーの規約、責任あるアウトリーチの実践に代わるものとして扱わないでください。
開発
npm test
npm run demo
npm run scan:release
npm run manifest:release
CONTRIBUTING.md を参照してください。
ライセンス
MIT。LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。
