关于 TuringCorp
TuringCorp 是一个通过模型面板比较两个备选方案的决策 MCP 服务,返回更合适的选项、置信度和理由。它面向需要处理没有客观判定标准的选择;不用于事实查询或多选项排序。
主要功能
- 01比较两个具体方案
- 02返回较优选项与理由
- 03提供判断置信度
- 04支持按任务 ID 取回结果
适用场景
- 01选择要发送的邮件版本
- 02比较两种可行的业务方案
- 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 | 是 | 第一个候选项及其理由。 |
| optionB | string | 是 | 第二个候选项及其理由。 |
详细介绍
TuringCorp — MCP 服务
为那些没有标准答案的决策提供决策模型。你的 Agent 有两个都有充分理由支持的选项,必须选出一个。将两个选项都发送过来:由模型评审团共同评判并返回更好的选项、对两者差距的判断(经过校准的置信度),以及原因。
- 端点(规范):
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 是本服务对两个选项差距的自身判断——可供你做决策时参考,但不是指令、结果,也不是对选择结果的预测。粗略解读:≥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 会列出该凭据对应的所有 job id)。应获取结果,而不是重试。
何时不应使用
- 超过两个选项。 它只比较 A 和 B——没有第三个选项位,也不会为列表排序。
- 任何可以计算或验证的事项。 规范、测试、价格、文档:如果可以依据客观标准做出判断,就应使用该标准。这项服务适用于没有客观规则可循的选择。
- 事实性问题。 它会在两个候选项中做出选择,但不会查找任何信息。
- 对速度要求极高的流程。 决策调用时间较长,且需要付费。不要将其放在必须在数秒内响应的请求后面。
- 未经审核的高风险不可逆决策。 根据置信度进行路由,并保留自己的审核策略。
如何填写这三个参数
task— 中立地陈述需要作出的决定,不偏向任何一方:“我该发送哪封邮件?”,而不是*“我该发送诚实的那封吗?”*optionA/optionB— 每个选项都要是一个具体方案,并说明支持它的理由。纯文本或 Markdown 均可,长度不限;两方内容应大致相当,确保比较公平。- **一个选项 = 一个计划。**不要把多个备选方案塞进同一方(“去室内或改期”):它比较的是两个选项,而不是替你拆分其中一个。
{
"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."
}
更多模式——选择要发送的版本、根据置信度设定阈值,以及编写两个选项以确保比较公平:docs/COOKBOOK.md。
获取结果
每次调用都会返回一个 job_id。允许调用完成时,决策会直接随调用返回——job_id 仅用于调用未能返回结果的情况。
⚠️ 如何获取结果——使用 get_result。获取结果需要 Agent Pass,而在 MCP 主机内,Agent 通常无法获得它——因此获取结果要通过工具调用,而不是 REST 调用:get_result 由主机进行身份验证,主机会为你附上通行凭证。Agent 永远不会处理通行凭证,而且该凭证刻意不设为工具参数(否则会出现在提示词和对话记录中)。
- 使用
job_id调用get_result——获取该任务的状态;任务成功后,还会返回与原始调用相同的决策内容。 - 不带参数调用
get_result——列出此凭证在过去 7 天内创建的任务 ID。这是最重要的情况:如果调用被中断,你就不会收到 ID。 - 只读且免费——它不会启动新任务,也不会产生任何费用,因此可以安全重试(
readOnlyHint: true、idempotentHint: true)。 - 声明了
io.modelcontextprotocol/tasks扩展的主机也可以轮询tasks/get。大多数客户端尚未声明该扩展,因此才需要get_result。
操作人员/主机使用通行凭证(通过 REST 获取相同数据):
- 提供 ID——使用相同的 Agent Pass 调用
GET https://api.turingcorp.net/v1/jobs?job_id=<id>。 - 不提供 ID——调用
GET https://api.turingcorp.net/v1/jobs,列出该凭证在过去 7 天内创建的任务 ID;然后像上面那样获取其中一个任务。列表仅包含任务 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 个真实决策,逐字记录——问题、两个选项、偏好的选项、报告的置信度,以及理由。涵盖九个领域,每个领域三个案例:写作 · 技术 · 商业 · 研究 · 职业 · 金钱 · 人际关系 · 旅行 · 日常生活。
→ https://github.com/TuringCorp-net/poe-demo-public — 数据集:examples.json
先看置信度这一列。对于普通且匹配度较高的问题,置信度为 70–90%,而非 99%——这正是经过校准的数值与装饰性数值的区别:数值较高,意味着比较结果明确,可以据此采取行动;数值较低,意味着两个选项确实难分伯仲,选择权仍在你手中。在这组数据中,置信度范围为 27.3%–88.3%,中位数为 74.0%,没有超过 90%,因为这些都是日常生活中难以抉择的情况,而非简单问题。当置信度区间确实给出明确结果时,它们能带来什么效果,已发布在 https://api.turingcorp.net。
身份验证
发送 Agent Pass:Authorization: Bearer <pass>。
在 https://agent-pass.turingcorp.net 签发——自助注册(邮箱验证)→ 充值 → 获取 pass。pass 有效期为 7 天,且可重新生成。如果调用因凭据无效而被拒绝,请重新登录该网站并重新生成 pass。
错误分为 两类,它们出现的位置也不同:
凭据问题会在调用前被拒绝(HTTP 401 +
WWW-Authenticate)。业务失败则会作为工具结果返回,其中isError: true,并附带 JSON 块{error, http_status, action_url, message}——http_status是上游状态码;工具调用本身的 HTTP 状态码为 200。
| 类别 | 返回内容 | 示例 |
|---|---|---|
| 凭据 | HTTP 401 + WWW-Authenticate——不会生成工具结果 | 没有凭据 · pass 已过期或无效(invalid_credential,消息中附有重新登录 URL) |
| 业务 | HTTP 200,工具结果 isError: true,并附带 JSON 块 | 余额不足(http_status 为 402,action_url 指向充值页面)· 超出配额(http_status 为 429) |
先根据 HTTP 状态码 判断:没有新凭据时,401 重试也不会成功;而业务失败表示调用已执行但遭到拒绝——请查看该块,了解原因和后续步骤。详细约定见下文的 错误可供机器读取。
入口速率限制:每个客户端 IP 每 60 秒 120 个请求。这是用于抑制洪泛的限制,不是配额——真正的每个密钥配额会单独执行。计数器为近似值:它按边缘位置维护,并采用最终一致性,因此可能短暂超限。
两种接入方式——但两者并不相同
- 通过 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)无需 pass——但调用 decide 需要。
🔑 pass 的存放位置很重要。 如果客户端能让 pass 不写入文件,就应这样做——例如 VS Code 的
${input:…}、Codex 的 bearer_token_env_var。以纯文本形式写入 mcp.json 或任何客户端配置中的 pass,
所有能读取该文件的 Agent 和进程都能看到;助手也会读取自己的配置——它们可能会将你的 pass 直接打印到输出中。请将客户端配置视为你设备上的公开内容。
1. 获取 Agent Pass
在 https://agent-pass.turingcorp.net 自助办理:使用邮箱地址注册、完成验证并充值。pass 只会显示一次;有效期为 7 天,且可随时重新生成。Agent 也可以通过 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" 这一行:读取 url 条目但没有 type 的客户端会将其视为本地 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 曾存在一个 Bug
(#2296,于 2025-06-23 关闭),导致请求无论设置为何,都会在约一分钟后中断;如果调用在约 60 秒时被截断,应怀疑是这个 Bug,而不是服务,并且使用 job_id 获取结果,而不是重试(重试会产生第二次付费调用)。
只支持 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":{}}}}'
版本
存在两个版本号,且它们不应相同:
| 含义 | |
|---|---|
Registry version(server.json) | 列表版本——元数据记录(端点、身份验证声明、图标、链接)。列表变更时递增。 |
serverInfo.version(来自在线端点) | 已部署服务的运行时版本。行为变更时递增。 |
仅修改列表的变更(例如更正链接)会递增 Registry 版本,但不会影响运行时,因此这两个版本可以合理地不同。
值得了解的协议细节
Accept必须同时包含application/json和text/event-stream,否则会收到 406。- **协议版本:**一个路由同时服务两个世代。
- 现代版
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发现服务端能力无需凭据。
- 现代版
- **错误可供机器读取。**错误分为两种,返回方式也不同——因此请根据正确的内容进行分支处理:
| 失败类型 | 如何识别 | 根据什么进行分支处理 |
|---|---|---|
| 凭据缺失或无效 | HTTP 401,附带 WWW-Authenticate challenge(包含 error="invalid_token" 和 resource_metadata);响应正文是标准 JSON-RPC 错误,其中 error.code = -32001。不会生成工具结果。 | HTTP 状态码 |
| 业务失败——余额不足、配额耗尽、上游错误 | 正常的工具结果(isError: true),其中第二个 content 块是一个可用 JSON.parse 解析的单一 JSON 对象,例如 {"error":"insufficient_balance","http_status":"402","action_url":"…","message":"…"} | 该块中的 error 字段 |
简而言之:凭据问题会在工具运行前被拒绝,因此不会显示为工具结果;其他运行后出现的失败都会显示为工具结果,并附带可供机器读取的块。
- 授权发现:
401响应包含一个指向/.well-known/oauth-protected-resource的resource_metadata。请注意,此服务使用的是静态 bearer 凭据,而非 OAuth——该文档会明确说明这一点,不会将你引入不存在的 OAuth 流程。
不适用于浏览器客户端
此端点有意不为基于浏览器的(跨源)MCP 客户端提供服务:携带非 localhost 浏览器 Origin 标头的请求会被拒绝并返回 403,且不会返回 CORS 标头。MCP Inspector 等浏览器工具通过本地进程代理请求,该进程不会发送 Origin——这种方式可以正常工作。如果需要让浏览器页面访问此服务,请运行你控制的代理,而不是进行跨源调用。
不包含的内容
- **没有其他层级。**无法通过此端点访问 TuringCorp 的其他能力。
- **没有 SLA。**不提供可用性承诺,也不应对此作任何推断。
- **不是自动驾驶。**Decider 是一个由你调用的组件。如何设置使用条件——阈值、人工审核、重试——由你自行决定并负责。
- **
decide没有幂等键——请改为记录任务 ID。**重试决策会产生一次新的付费调用;请使用get_result获取原始结果。
在编码 Agent 中使用:Agent Skill
这里提供了一个面向编码 Agent 的 Agent Skill(适用于 Claude Code、Codex,以及任何采用相同 skill 约定的工具)。它会教 Agent 何时适合使用双选项判断、如何编写公平对比的两个选项,以及如何解读置信度而不过度推断。
安装时,可让你的 Agent 使用此仓库;也可以将 skills/decider/ 复制到 skills 目录,并将 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 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。