TuringCorp について
TuringCorp は、モデルのパネルで 2 つの案を比較し、選択結果、確信度、理由を返す意思決定 MCP サーバーです。客観的な正解のない選択向けで、事実検索や複数案の順位付けには使いません。
主な機能
- 01具体的な 2 案を比較
- 02選択結果と理由を返却
- 03判断の確信度を提示
- 04ジョブ ID で結果を取得
活用シーン
- 01送信するメール案を選択
- 02実行可能な 2 つの事業案を比較
- 03客観的な基準のない日常の選択を検討
MCP 対応
Streamable HTTP 経由で `decide` と `get_result` ツールを提供します。意思決定ツールの利用には Agent Pass が必要ですが、ツール一覧の取得には不要です。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://mcp.turingcorp.net/mcpclaude mcp add --transport http net-turingcorp-mcp-decider https://mcp.turingcorp.net/mcp{"mcpServers":{"net-turingcorp-mcp-decider":{"type":"http","url":"https://mcp.turingcorp.net/mcp"}}}Cursor で開く{"servers":{"net-turingcorp-mcp-decider":{"type":"http","url":"https://mcp.turingcorp.net/mcp"}}}VS Code で開く{"mcpServers":{"net-turingcorp-mcp-decider":{"type":"http","url":"https://mcp.turingcorp.net/mcp"}}}{"mcpServers":{"net-turingcorp-mcp-decider":{"serverUrl":"https://mcp.turingcorp.net/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
https://mcp.turingcorp.net/mcp認証が必要ツール
2| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| task | string | はい | 決める内容を、望ましい答えを示さず中立的に記述してください。 |
| optionA | string | はい | 1 つ目の候補と、その根拠。 |
| optionB | string | はい | 2 つ目の候補と、その根拠。 |
詳細
TuringCorp — MCP サーバー
正解が一つではない判断のための意思決定モデルです。エージェントが、どちらにも十分な根拠がある2つの選択肢から一つを選ぶ必要がある場合、両方を送信してください。モデルのパネルが2つをまとめて評価し、より良い方、どれほど差があると判断したか(調整済みの信頼度)、その理由を返します。
- エンドポイント(正規):
https://mcp.turingcorp.net/mcp - エイリアス:
https://mcp.turingcorp.net/およびhttps://mcp.turingcorp.net/mcp/ - ヘルスチェック:
https://mcp.turingcorp.net/healthz - トランスポート: ステートフルな接続を使わない Streamable HTTP(セッションなし、Durable Object なし)。
GET /mcp→ 405 は正常です。 - プロトコル: MCP
2026-07-28(モダン)および2025-06-18(レガシー)—どちらも同じルートで提供されます。 - 検出方法(
server/discover、tools/list)では認証情報は不要です。設計上、ディレクトリスキャナーは認証なしでツールの全リストを参照できます。
意思決定:decide
| 入力 | task(文字列)、optionA(文字列)、optionB(文字列)—すべて必須 |
| 出力 | job_id(文字列)、betterOption("option_A" | "option_B")、confidence(割合の文字列。例:"76.7%")、reason(文字列) |
| アノテーション | readOnlyHint: true · openWorldHint: false · idempotentHint: false |
| タイムアウト | 180~300秒を確保してください。意思決定には時間のかかる呼び出しが必要です。タイムアウトはクライアント/ホストの設定であり、ツールのパラメーターではありません。呼び出し時に渡す値はありません。デフォルトの60秒では回答が届く前にタイムアウトするため、そうなった場合は再度呼び出さず、job_id で取得してください。 |
| 長時間の呼び出し | io.modelcontextprotocol/tasks 拡張機能を宣言するクライアントは、接続を数分間開いたままにする代わりにタスクハンドルを受け取り、tasks/get をポーリングします。結果の取得を参照してください。宣言しないクライアントには、何も変化はありません。 |
呼び出しが成功すると、意思決定の結果はインラインで返されます。 job_id、betterOption、confidence、reason はすべて
同じツール結果に含まれます。ポーリングも、あとから取得する必要もありません。job_id が必要なのは、呼び出しの結果が
返ってこなかった場合(タイムアウト、接続切断、クライアントが待機を断念した場合)だけです。
confidence は、このサービスが2つの選択肢の差をどれほど大きいと判断したかを示す値です。意思決定の参考情報であり、指示でも、結果でも、選択の成り行きを予測する値でもありません。大まかな目安は、90%以上:明確な差がある · 80~90%:差はあるが、より不明瞭 · 70~80%:差は小さめ · 70%未満:ほぼ互角です。これらの範囲は説明のためのものです。ご自身の用途に応じて独自の閾値を設定してください。重大な決定や取り消せない決定には、ご自身のレビューポリシーを適用してください。 各範囲の観測精度と測定方法は https://api.turingcorp.net で公開されています。このページが、各範囲と測定精度に関する正式な情報源です。
⚠️ idempotentHint: false は、再試行した呼び出しが新しい呼び出しになることを正直に示しています。結果で返された job_id を記録してください。すでに料金を支払った意思決定は、同じ認証情報を使って7日間取得できます(GET https://api.turingcorp.net/v1/jobs?job_id=<id>。ID を指定せずに GET https://api.turingcorp.net/v1/jobs を呼び出すと、その認証情報に紐づくジョブ ID の一覧が表示されます)。再試行するのではなく、取得してください。
使用しない方がよいケース
- 選択肢が2つを超える場合。 AとBを厳密に比較します。3つ目の枠はなく、リストの順位付けもしません。
- 計算または検証できる場合。 仕様、テスト、価格、文書など、客観的な判断基準がある場合は、それを使ってください。これは客観的な基準で決められない選択のためのものです。
- 事実を問う質問。 2つの候補から選ぶものであり、情報を調べることはしません。
- 速度が重要な処理。 意思決定は時間がかかり、料金も発生します。数秒以内に回答する必要があるリクエストの後ろに置かないでください。
- レビューなしで行う、重大で取り消せない決定。 信頼度に応じて振り分け、独自のレビューポリシーを維持してください。
3 つの引数の指定方法
task— どちらかに偏らず、判断したい内容を中立的に記述します。「どのメールを送ればよいですか?」のようにします。「正直なほうを送るべきですか?」のようにはしません。optionA/optionB— それぞれ具体的な選択肢を 1 つと、その理由を記述します。プレーンテキストでも Markdown でも、長さは問いません。公平に比較できるよう、両者の内容はおおむね同程度にします。- 1 つの選択肢には 1 つの計画を記述します。 複数の代替案を 1 つの選択肢にまとめないでください(「屋内に行く か 延期する」など)。このツールは 2 つの選択肢を比較するものであり、どちらかを分割するものではありません。
{
"task": "Which version of the delivery-slip email do I send to a client we want to keep?",
"optionA": "Short and direct: the integration took longer than planned, delivery moves to the 24th, everything else is unchanged.",
"optionB": "Warmer and longer: thank them for the kickoff, explain that dependencies took more time, offer to walk through the details."
}
送信するバージョンの選び方、信頼度によるしきい値の設定、公平に比較できる 2 つの選択肢の書き方など、さらに詳しいパターンについては、docs/COOKBOOK.md をご覧ください。
結果の取得
すべての呼び出しで job_id が返されます。呼び出しが完了するまで待てた場合、判断結果は応答に直接含まれます。job_id が必要になるのは、結果が返ってこなかった場合だけです。
⚠️ 取得には get_result を使います。 結果の取得には Agent Pass が必要ですが、MCP ホスト内ではエージェントがこれを持っていないのが通常です。そのため、取得には REST 呼び出しではなく、ツール呼び出しを使います。get_result はホストによって認証され、Agent Pass はホストが付与します。エージェントが Agent Pass を扱うことはありません。また、認証情報をあえてツールの引数に含めないようにしています(引数に含めると、プロンプトやトランスクリプトに残ってしまうためです)。
job_idを指定したget_result— 該当ジョブのステータスを返します。ジョブが成功している場合は、元の呼び出しで返されたものと同じ判断結果の本文を返します。- 引数なしの
get_result— この認証情報で過去 7 日間に作成されたジョブ ID を返します。最も重要なのはこのケースです。呼び出しが途中で終了した場合、ID を受け取れていないからです。 - 読み取り専用で無料 — 新たな処理は開始されず、費用もかからないため、安全に再試行できます(
readOnlyHint: true、idempotentHint: true)。 io.modelcontextprotocol/tasks拡張機能を宣言しているホストでは、代わりにtasks/getをポーリングできます。ただし、まだほとんどのクライアントはこの機能を宣言していないため、get_resultが用意されています。
オペレーター/ホストが Agent Pass を使用する場合(REST で同じデータを取得):
- ID を指定する場合 — 同じ Agent Pass を使用して
GET https://api.turingcorp.net/v1/jobs?job_id=<id>を実行します。 - ID を指定しない場合 —
GET https://api.turingcorp.net/v1/jobsを実行すると、この認証情報で過去 7 日間に作成されたジョブ ID が一覧表示されます。その後、上記の方法で 1 つ取得します。一覧に含まれるのは、ジョブ ID、製品名、タイムスタンプのみです。 - まだ何もない場合 — 空の一覧はエラーではありません。また、
job_id=0という代替値もありません。{"object":"list","window_seconds":604800,"data":[]}が返されます。0を指定すると404 No such job.が返されます。
結果の取得では、ジョブのステータスが返されます。ジョブが成功している場合は、呼び出し自体が返すはずだったものと同じ本文が返されます。自分のジョブではない場合、または7 日より前のジョブは、利用できないものとして報告されます。GET https://api.turingcorp.net/v1/account を実行すると、{"account_id":"…"} が返されます。
実際的な解決策は、結果の取得が必要な状況を避けることです。呼び出しが完了できるよう、180~300 秒を確保してください。
判断をまず見てみる
無料プランはないため、代わりに根拠となるデータを公開しています。実際の判断を 27 件、質問、両方の選択肢、どちらが選ばれたか、報告された信頼度、理由とともに、一字一句そのまま記録しています。9 つの分野から各 3 件です。ライティング · テクノロジー · ビジネス · リサーチ · キャリア · お金 · 人間関係 · 旅行 · 日常。
→ https://github.com/TuringCorp-net/poe-demo-public — データセット:examples.json
まずは信頼度の列をご覧ください。一般的で、両者が僅差の質問では、信頼度は70~90%であり、99%ではありません。装飾ではなく、調整された数値を示すことには意味があります。高い数値は比較が明確で、その選択を実行に移せることを意味します。低い数値は 2 つの選択肢が実際に僅差であり、最終的な選択はユーザーに委ねられることを意味します。このデータセットの範囲は27.3%~88.3%、中央値は 74.0%、90%を超えるものはありません。簡単に決められる質問ではなく、日常的な僅差の判断を集めているためです。信頼度の各範囲が明確な結論を出す場合に何を示すかは、https://api.turingcorp.net で公開しています。
認証
Agent Passを送信します:Authorization: Bearer <pass>。
発行先は https://agent-pass.turingcorp.net です。セルフサービスで登録(メール認証)→ チャージ → パスを取得します。パスの有効期間は 7 days で、再発行できます。認証情報が無効として呼び出しを拒否された場合は、もう一度サインインしてパスを再発行してください。
エラーは2 種類に分かれ、それぞれ異なる場所で返されます。
認証情報の問題は呼び出し前に拒否されます(HTTP 401 +
WWW-Authenticate)。ビジネス上のエラーは、isError: trueと JSON ブロック{error, http_status, action_url, message}を含むツール結果として返されます。http_statusは上流のステータスで、ツール呼び出し自体は HTTP 200 です。
| クラス | 返される内容 | 例 |
|---|---|---|
| 認証情報 | HTTP 401 + WWW-Authenticate — ツール結果は生成されません | 認証情報がない・パスの期限切れまたは無効(invalid_credential。メッセージに再ログイン用 URL が含まれます) |
| ビジネス上のエラー | HTTP 200、ツール結果は isError: true、さらに JSON ブロック | 残高不足(http_status は 402、action_url はチャージ先を示します)・クォータ超過(http_status は 429) |
まずHTTP ステータスを確認してください。401 は新しい認証情報なしでは再試行しても成功しません。一方、ビジネス上のエラーは呼び出しが実行されたものの拒否された状態です。ブロックを確認して理由と次の手順を把握してください。詳細な仕様は、以下の「エラーは機械可読」セクションをご覧ください。
入口のレート制限は 120 requests / 60 s / client IP です。これは大量リクエストを抑制するもので、クォータではありません。実際のキーごとのクォータは別途適用されます。カウンターは概算です。エッジロケーションごとに管理され、最終的に整合するため、一時的に上限を超える場合があります。
接続方法は2つありますが、同じではありません
- MCP クライアントまたはホスト経由(Claude Code、Cursor、VS Code、Codex、TRAE、Coze など)。ホストが認証情報を保持し、自動で付加します。自分で
Authorizationヘッダーを設定する必要はなく、ほとんどのホストでは設定できません。タイムアウトはホストの設定であり、呼び出し時に渡すものではありません。 - REST API に直接接続(https://api.turingcorp.net)。ここでは、自分で
Authorization: Bearer <Agent Pass>を送信し、ID でジョブを取得できます。
⚠️ 見落としやすい点:ホスト経由でツールを呼び出せても、REST
API にアクセスできるとは限りません。 ホストが Agent Pass をユーザーに渡さない場合があり、その場合、自分で行ったジョブ取得の呼び出しは
401 になることがあります。ホストが Tasks 拡張機能を宣言している場合は、ツール経由で取得してください(結果の取得を参照)。宣言していない場合は、現在の環境から取得できないことがあります。
クイックスタート
ツールを呼び出すには Agent Pass が必要です。検出(tools/list)には不要ですが、decide の呼び出しには必要です。
🔑 パスの保存場所は重要です。 クライアントがパスをファイルに保存せずに保持できる場合は、そうしてください。VS Code の
${input:…} や Codex の bearer_token_env_var が該当します。mcp.json やその他のクライアント設定内にパスを平文で記述すると、そのファイルを読み取れるすべてのエージェントとプロセスが読み取れます。また、アシスタントは自分の設定を読み取るため、パスをそのまま出力する可能性があります。クライアント設定は、マシン内では公開されているものとして扱ってください。
1. Agent Pass を取得する
https://agent-pass.turingcorp.net でセルフサービス登録できます。メールアドレスで登録して認証し、クレジットを追加してください。パスは一度だけ表示されます。有効期間は 7 days で、いつでも再発行できます。エージェントも API 経由で同じ手順を実行できます。サイトの /llms.txt を参照してください。
2. エンドポイントをクライアントに指定する
JSON 設定を読み込むクライアント(Cursor、Windsurf、Claude Desktop):
{
"mcpServers": {
"TuringCorp": {
"type": "http",
"url": "https://mcp.turingcorp.net/mcp",
"headers": { "Authorization": "Bearer <your Agent Pass>" }
}
}
}
"type": "http" の行は残してください。type のない url エントリーを読み込むクライアントは、それをローカルの stdio
サーバーとして扱い、スキップします。
Cline では別の type("streamableHttp"(キャメルケース、ハイフンなし))が必要です。 それ以外を指定するか、省略すると、
Cline は SSE にフォールバックします。このサーバーは SSE に対応していないため、接続は 405 で失敗します。設定ファイルは cline_mcp_settings.json です(MCP Servers アイコン → Configure タブ → Configure MCP Servers):
{
"mcpServers": {
"TuringCorp": {
"type": "streamableHttp",
"url": "https://mcp.turingcorp.net/mcp",
"headers": { "Authorization": "Bearer <your Agent Pass>" },
"disabled": false,
"autoApprove": [],
"timeout": 300
}
}
}
timeout の単位は秒です。300 以上に設定してください。Cline には、その設定に関係なく、約1分後にリクエストが終了するバグがありました
(#2296、2025-06-23 にクローズ)。呼び出しが約60秒で打ち切られる場合は、サーバーではなくこの問題を疑い、再試行するのではなく job_id で取得してください(再試行すると、2回目の有料呼び出しになります)。
stdio のみを話すクライアントにはブリッジが必要です。また、認証情報は --header 経由で渡す必要があります。
mcp-remote は AUTHORIZATION 環境変数を読み込まないため、それだけを設定した構成では接続してツールを一覧表示した後、最初の呼び出しで 401 エラーになります。Authorization: の後にスペースがないのは意図的です。
クライアントによっては、args 内のスペースが壊されることがあるためです。
{
"mcpServers": {
"TuringCorp": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://mcp.turingcorp.net/mcp",
"--header", "Authorization:${AGENT_PASS}"],
"env": { "AGENT_PASS": "Bearer <your Agent Pass>" }
}
}
}
⚠️ 認証情報なしで
npx -y mcp-remote@latest https://mcp.turingcorp.net/mcpをそのまま実行すると、接続してツールを一覧表示した後、最初の呼び出しで 401 エラーになります。これは想定どおりです。検出は公開されていますが、実行は公開されていません。
Claude Code:
claude mcp add --transport http TuringCorp https://mcp.turingcorp.net/mcp \
--header "Authorization: Bearer <your Agent Pass>"
3. 動作を自分で確認する
検出 — 認証情報は不要です:
curl -s -X POST https://mcp.turingcorp.net/mcp \
-H 'content-type: application/json' \
-H 'accept: application/json, text/event-stream' \
-H 'mcp-protocol-version: 2026-07-28' \
-H 'mcp-method: tools/list' \
--data '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{"_meta":{"io.modelcontextprotocol/protocolVersion":"2026-07-28","io.modelcontextprotocol/clientCapabilities":{}}}}'
ツールの呼び出しには、mcp-name: decide と認証情報も必要です:
curl -s -X POST https://mcp.turingcorp.net/mcp \
-H 'content-type: application/json' \
-H 'accept: application/json, text/event-stream' \
-H 'mcp-protocol-version: 2026-07-28' \
-H 'mcp-method: tools/call' \
-H 'mcp-name: decide' \
-H "authorization: Bearer $AGENT_PASS" \
--data '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"decide","arguments":{"task":"Pick a launch date","optionA":"Ship now","optionB":"Wait two weeks"},"_meta":{"io.modelcontextprotocol/protocolVersion":"2026-07-28","io.modelcontextprotocol/clientCapabilities":{}}}}'
バージョン
2つのバージョン番号が存在し、一致させることを意図していません:
| 意味 | |
|---|---|
レジストリの version(server.json) | 掲載情報のバージョンです。メタデータレコード(エンドポイント、認証宣言、アイコン、リンク)のバージョンです。掲載情報が変更されると更新されます。 |
serverInfo.version(稼働中のエンドポイントから取得) | デプロイされたサーバーの実行時バージョンです。動作が変更されると更新されます。 |
掲載情報のみの変更(たとえば、リンクの修正)があると、実行環境に手を加えずにレジストリのバージョンが更新されるため、 2つのバージョンが異なっていても問題ありません。
知っておくべきプロトコルの詳細
Acceptにはapplication/jsonとtext/event-streamの両方が必要です。含まれていない場合、406 が返されます。- プロトコルバージョン: 1 つのルートで両方の世代に対応しています。
- 新しい
2026-07-28—initializeハンドシェイクは不要です。server/discoverと_metaを使用してください。 - レガシー — 標準の
initializeハンドシェイクを使用します。実測されたネゴシエーションでは、2025-11-25、2025-06-18、または2025-03-26を要求するクライアントには、要求したバージョンとまったく同じバージョンが返されます。この世代には含まれない新しい2026-07-28のinitializeには、2025-11-25が返されます。 tools/listとserver/discoverによるサーバー機能の検出に、認証情報は不要です。
- 新しい
- エラーは機械可読です。 エラーには異なる種類が 2 つあり、それぞれ異なる形で返されるため、適切なものを条件分岐に使ってください。
| 失敗した内容 | 確認方法 | 条件分岐に使うもの |
|---|---|---|
| 認証情報がない、または無効 | WWW-Authenticate チャレンジ(error="invalid_token" と resource_metadata を含む)付きの**HTTP 401**が返されます。本文は標準の JSON-RPC エラーで、error.code = -32001 です。ツールの結果は生成されません。 | HTTP ステータスコード |
| ビジネス上の失敗 — 残高不足、クォータ超過、上流エラー | 通常のツール結果(isError: true)が返され、その 2 つ目の content ブロックは、JSON.parse で解析できる単一の JSON オブジェクトです。例:{"error":"insufficient_balance","http_status":"402","action_url":"…","message":"…"} | そのブロック内の error フィールド |
つまり、認証情報の問題はツールの実行前に拒否されるため、ツールの結果として現れることはありません。それ以外の実行後に発生するエラーはすべて、機械可読なブロックを伴って返されます。
- 認可情報の検出:
401応答には、/.well-known/oauth-protected-resourceを指すresource_metadataが含まれます。このサーバーは OAuth ではなく静的なベアラー認証情報を使用しているため、このドキュメントにはその旨が明記されており、存在しない OAuth フローに誘導されることはありません。
ブラウザクライアント向けではありません
このエンドポイントは、ブラウザベースの(クロスオリジン)MCP クライアントには意図的に対応していません。localhost 以外のブラウザ Origin ヘッダーを含むリクエストは 403 で拒否され、CORS ヘッダーは返されません。MCP Inspector などのブラウザツールは、ローカルプロセスを経由してプロキシする仕組みで、そこからは Origin が送信されないため、その方法なら通常どおり動作します。ブラウザのページからこのサーバーにアクセスする必要がある場合は、クロスオリジンで直接呼び出すのではなく、自分で管理するプロキシを実行してください。
これは何ではないか
- 他のティアはありません。 TuringCorp の他の機能には、このエンドポイントからアクセスできません。
- SLA はありません。 可用性の保証は提供されておらず、保証があるものと解釈すべきではありません。
- 自動操縦ではありません。 Decider は呼び出して使用するコンポーネントです。しきい値、人によるレビュー、再試行など、どのように判定結果を利用するかはお客様のポリシーであり、お客様自身が決定します。
decideに冪等性キーはありません。代わりにジョブ ID を記録してください。 判定を再試行すると、新たな有料呼び出しになります。元の結果はget_resultで取得してください。
コーディングエージェントで使う:Agent Skill
コーディングエージェント(Claude Code、Codex、および同じスキル規約に対応するもの)向けの Agent Skill があります。2 つの選択肢の判定が適切な場面、公平に比較できるよう 2 つの選択肢を記述する方法、信頼度を過大解釈せずに読み取る方法をエージェントに教えます。
エージェントにこのリポジトリを指定してインストールするか、skills/decider/ をスキルディレクトリにコピーし、MCP サーバーをクライアントに追加してください(クイックスタートを参照)。
このリポジトリについて
このリポジトリには、上記サーバーの検出メタデータが含まれています。これは、ディレクトリサービスやクライアントがサーバーを見つけ、その情報を確認するために読み取るものです。
server.json— MCP Registry の公式マニフェストdocs/DIRECTORIES.md— このサーバーが掲載されている場所と、各ディレクトリで必要な情報docs/COOKBOOK.md—decideに適切な種類の呼び出しを渡すための実例パターンskills/decider/— Agent Skill
このサーバーは Smithery にも掲載されています:https://smithery.ai/servers/turingcorp/mcp
サーバー自体はホスト型のリモートエンドポイントなので、ここにあるものをインストールしたり実行したりする必要はありません。
ライセンス
LICENSE をご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。