POSTFACT — Resolve Ambiguous Side Effects Before Retry について
POSTFACTは、副作用を伴う処理が不明な結果になった際に完了の有無を判定し、自律型ソフトウェアの再試行前の判断を支援します。得られた根拠に基づきDONE、NOT_DONE、UNKNOWNを返し、元の処理自体は実行しません。
主な機能
- 01結果をDONE、NOT_DONE、UNKNOWNに分類
- 02再試行の安全性、信頼度、根拠を提示
- 03失敗状況と肯定的な根拠を受け付け
- 04次の対応を提案
活用シーン
- 01タイムアウト後にAPI処理の完了を確認
- 02失敗したツール呼び出しを再試行できるか判断
- 03根拠が不十分な場合に確認まで保留
MCP 対応
リモートMCPエンドポイントで `resolve_outcome` ツールを公開します。ツールの説明では、副作用を伴う処理が不明な失敗に終わった後、再試行前にPOSTFACTを呼び出すようAgentに案内します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://postfact-api-production.up.railway.app/mcpclaude mcp add --transport http gsterlingpress-postfact https://postfact-api-production.up.railway.app/mcp{"mcpServers":{"gsterlingpress-postfact":{"type":"http","url":"https://postfact-api-production.up.railway.app/mcp"}}}Cursor で開く{"servers":{"gsterlingpress-postfact":{"type":"http","url":"https://postfact-api-production.up.railway.app/mcp"}}}VS Code で開く{"mcpServers":{"gsterlingpress-postfact":{"type":"http","url":"https://postfact-api-production.up.railway.app/mcp"}}}{"mcpServers":{"gsterlingpress-postfact":{"serverUrl":"https://postfact-api-production.up.railway.app/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
1| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| method | string | いいえ | |
| status | integer | いいえ | |
| failure | string | いいえ | |
| evidence | object | いいえ | |
| evidence.providerStatus | string | いいえ | |
| evidence.resourceExists | boolean | いいえ | |
| evidence.receiptVerified | boolean | いいえ | |
| evidence.transactionStatus | string | いいえ | |
| evidence.preExecutionRejection | boolean | いいえ | |
| requestId | string | いいえ | |
| sideEffect | boolean | いいえ | |
| resourceRef | string | いいえ | |
| idempotencyKey | string | いいえ | |
| transactionRef | string | いいえ |
詳細
POSTFACT
その呼び出しは実際に行われましたか?
POSTFACT は、自律型ソフトウェア向けのシンプルな曖昧な結果の判定ツールです。副作用を伴う API/ツールのアクションが曖昧な結果で失敗した後、再試行する前に使用してください。
本番環境:https://postfact-api-production.up.railway.app
意図的に厳格な設計です。
- 完了を裏付ける肯定的な証拠がある場合に限り、
DONEになります。 - 未実行を裏付ける肯定的な証拠がある場合に限り、
NOT_DONEになります。 - 証拠が不十分な場合は、
UNKNOWNになります。UNKNOWNが安全なデフォルトです。
POSTFACT は、基盤となるアクションを実行したり、資金を移動したり、タイムアウトが失敗を意味するとみなしたりすることはありません。
REST
本番エンドポイント:POST https://postfact-api-production.up.railway.app/v1/resolve
入力では、メソッド/ステータス/失敗、副作用と冪等性のコンテキスト、永続的な参照情報、および任意の肯定的な証拠を受け付けます。出力は state、retry_safe、confidence、evidence、next です。
MCP
リモートエンドポイント:POST https://postfact-api-production.up.railway.app/mcp
ツール:resolve_outcome
ツールの説明では、エージェントに対し、副作用を伴うアクションが曖昧な結果で失敗した後、再試行する前に POSTFACT を呼び出すよう明示的に指示しています。
ミドルウェア形式の契約
const outcome = await postfact.resolve(failureContext)
if (outcome.state === 'DONE') return completed
if (outcome.state === 'NOT_DONE' && outcome.retry_safe) return retry()
return verifyOrHold()
今後の SDK では、通信契約を変更せずに再試行ミドルウェアをラップできます。
POSTFACT + RECOVER
POSTFACT は**何が起きたと確認できるか?に答えます。RECOVER は次に取るべき最も安全なアクションは何か?**に答えます。今後の再試行スタックでは、最初に POSTFACT を呼び出し、結果が不確かなままの場合に RECOVER を呼び出せます。
安全な情報取得とデモ
- ヘルス:
GET https://postfact-api-production.up.railway.app/health - デモ:
GET https://postfact-api-production.up.railway.app/demo - アクティビティ:
GET https://postfact-api-production.up.railway.app/activity - 機械可読なアクティビティ:
GET https://postfact-api-production.up.railway.app/activity.json
GET /demo は、実利用の分析対象から意図的に除外されています。
実利用のスコアボード
GET /activity では、恒久的な FIRST 10 TRUE STRANGERS スコアボードを確認できます。GET /activity.json では、機械可読な概要を取得できます。デモ/内部トラフィックは除外されます。本番環境の永続ストレージは /data にマウントされています。
実行
npm test
npm start
デフォルトのポート:8080。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。