新人 免费注册,送 10 次调用,最高 $1,免绑卡。

MCP 服务器

让任何支持 MCP 的 agent —— Claude Code、Cursor、VS Code、Codex、OpenAI Agents SDK 等 —— 只需 一个 URL 加你的 API 密钥 即可接入 Synthorai。所有模型与模态、API 密钥管理和账单数据都成为 agent 可以直接调用的工具;每次调用的鉴权、限流与计费都与对应的 REST 请求完全一致。

端点https://synthorai.io/v1/mcp
传输Streamable HTTP,无状态(无会话),JSON 响应
鉴权Authorization: Bearer <API key>
ℹ

连接时用的密钥决定你能拿到哪些工具:推理 API 密钥(sk-syn-…)调用模型,provisioning key(sk-syn-prov-…)管理 API 密钥,账单密钥(sk-syn-bill-…)读取余额与用量。一个 agent 需要多种能力时,按密钥类型各连接一次即可。

快速开始

  1. 在控制台的 API 密钥 页面创建一个密钥。给 agent 用的密钥建议设置额度上限和模型白名单。
  2. 用下面任一配置片段把服务器加到你的客户端里,密钥从环境变量读取,不要直接写进文件。
  3. 然后直接问你的 agent,例如:“列出三个支持工具调用、最便宜的模型,用最快的那个总结这个文件,并告诉我花了多少钱。”

连接你的客户端

所有客户端用的都是同一个端点和同一个请求头。先在环境变量里设置 SYNTHORAI_API_KEY。

Claude Code

在 Claude Code 里运行 /mcp 检查连接状态。加上 --scope user 可在所有项目中使用;也可以把 .mcp.json 形式提交到仓库与团队共享(密钥仍留在每位开发者自己的环境变量里)。

claude mcp add --transport http synthorai https://synthorai.io/v1/mcp \
  --header "Authorization: Bearer $SYNTHORAI_API_KEY"
{
  "mcpServers": {
    "synthorai": {
      "type": "http",
      "url": "https://synthorai.io/v1/mcp",
      "headers": { "Authorization": "Bearer ${SYNTHORAI_API_KEY}" }
    }
  }
}

Cursor

写入 ~/.cursor/mcp.json(所有项目)或 .cursor/mcp.json(单个项目)。

{
  "mcpServers": {
    "synthorai": {
      "url": "https://synthorai.io/v1/mcp",
      "headers": { "Authorization": "Bearer ${env:SYNTHORAI_API_KEY}" }
    }
  }
}

VS Code (GitHub Copilot)

写入 .vscode/mcp.json。VS Code 会提示输入一次密钥并安全保存。

{
  "inputs": [
    { "type": "promptString", "id": "synthorai-key", "description": "Synthorai API key", "password": true }
  ],
  "servers": {
    "synthorai": {
      "type": "http",
      "url": "https://synthorai.io/v1/mcp",
      "headers": { "Authorization": "Bearer ${input:synthorai-key}" }
    }
  }
}

Codex CLI

写入 ~/.codex/config.toml,或者运行 codex mcp add synthorai --url https://synthorai.io/v1/mcp --bearer-token-env-var SYNTHORAI_API_KEY。

[mcp_servers.synthorai]
url = "https://synthorai.io/v1/mcp"
bearer_token_env_var = "SYNTHORAI_API_KEY"

OpenAI Responses API

由 OpenAI 的服务器代你调用端点,所以这把密钥的 IP 白名单要留空(或放行 OpenAI 的出口网段)。用 allowed_tools 只暴露模型需要的工具。

import os
from openai import OpenAI

client = OpenAI()
resp = client.responses.create(
    model="gpt-4.1",
    tools=[{
        "type": "mcp",
        "server_label": "synthorai",
        "server_url": "https://synthorai.io/v1/mcp",
        "headers": {"Authorization": f"Bearer {os.environ['SYNTHORAI_API_KEY']}"},
        "allowed_tools": ["list_models", "chat_completion"],
        "require_approval": "never",
    }],
    input="Find the cheapest Synthorai chat model with tool support and ask it for a haiku about gateways.",
)
print(resp.output_text)

OpenAI Agents SDK

任何基于 MCP 客户端 SDK 的框架(LangChain、LlamaIndex、Pydantic AI、Vercel AI SDK、Mastra……)用法相同:把它的 Streamable HTTP 传输指向这个端点并带上请求头即可。

import asyncio, os
from agents import Agent, Runner
from agents.mcp import MCPServerStreamableHttp

async def main():
    async with MCPServerStreamableHttp(
        name="synthorai",
        params={
            "url": "https://synthorai.io/v1/mcp",
            "headers": {"Authorization": f"Bearer {os.environ['SYNTHORAI_API_KEY']}"},
            "timeout": 120,
        },
        cache_tools_list=True,
    ) as synthorai:
        agent = Agent(name="assistant", instructions="Use the Synthorai tools.", mcp_servers=[synthorai])
        result = await Runner.run(agent, "List three chat models under $1 per million input tokens.")
        print(result.final_output)

asyncio.run(main())

MCP Python SDK

import asyncio, os, httpx2
from mcp import Client
from mcp.client.streamable_http import streamable_http_client

async def main():
    http = httpx2.AsyncClient(
        headers={"Authorization": f"Bearer {os.environ['SYNTHORAI_API_KEY']}"}, timeout=120)
    async with Client(streamable_http_client("https://synthorai.io/v1/mcp", http_client=http)) as mcp:
        tools = await mcp.list_tools()
        print([t.name for t in tools.tools])
        result = await mcp.call_tool("chat_completion",
                                     {"model": "deepseek-v4-flash", "prompt": "Say hi in five words"})
        print(result.content[0].text)

asyncio.run(main())

Claude Desktop

Claude Desktop 和 claude.ai 的自定义连接器通过 OAuth 登录,本服务器暂未提供(见下方路线图)。在此之前,Claude Desktop 可以通过 mcp-remote 桥接连接,由它帮你带上请求头:

{
  "mcpServers": {
    "synthorai": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://synthorai.io/v1/mcp", "--header", "Authorization:${AUTH_HEADER}"],
      "env": { "AUTH_HEADER": "Bearer sk-syn-..." }
    }
  }
}

curl

服务器就是基于 HTTP 的普通 JSON-RPC,不需要任何 SDK,也不需要握手:每个请求都是独立的。

curl https://synthorai.io/v1/mcp \
  -H "Authorization: Bearer $SYNTHORAI_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
       "params":{"name":"chat_completion",
                 "arguments":{"model":"deepseek-v4-flash","prompt":"Say hi in five words"}}}'

响应示例

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      { "type": "text", "text": "Hi there, great to meet!" },
      { "type": "text", "text": "[deepseek-v4-flash · finish_reason stop · 12 in / 7 out tokens · cost $0.0000031 · request_id 0199a7c2-…]" }
    ],
    "structuredContent": {
      "model": "deepseek-v4-flash",
      "content": "Hi there, great to meet!",
      "finish_reason": "stop",
      "usage": { "prompt_tokens": 12, "completion_tokens": 7, "total_tokens": 19 },
      "cost_usd": 0.0000031,
      "request_id": "0199a7c2-…"
    }
  }
}

工具

tools/list 只返回你的密钥能用的工具:按密钥类型和你工作区开通的功能过滤(图像与视频生成目前为受限预览)。运行模型的工具费用与对应 REST 调用完全相同;其余工具全部免费。

推理 API 密钥

工具作用REST 端点说明
list_models 这把密钥能调用的模型,按价格从低到高,含上下文长度、模态、能力和刊例价。可按类别、能力、输入模态和关键词筛选。 GET /v1/models + /api/models 只读
get_model 单个模型的完整信息,包括折扣后的实际价格,以及这把密钥能否调用它。 GET /v1/models/{id} 只读
get_pricing 价格表(美元,已计折扣):按 token、按次、按分钟、按秒及阶梯价格。 GET /api/pricing 只读
chat_completion 对任意模型发起一次对话补全:单条提示词或完整的 messages 数组(可含图片、工具结果),可选结构化输出、函数工具、推理强度和备用模型。返回文本、工具调用、用量、费用和 request_id。 POST /v1/chat/completions 计费
generate_image 生成或编辑图片;默认以图片内容返回,设置 response_format=url 则返回链接。 POST /v1/images/generations 计费
list_image_models 图像模型及其价格和支持的输入。 GET /v1/images/models 只读
create_video 用提示词或首帧图片创建视频任务;最多可等待 60 秒看是否完成。任务完成时计费。 POST /v1/videos 计费
get_video 任务状态;完成后返回视频链接(约 24 小时有效)。 GET /v1/videos/{id} 只读
cancel_video 取消仍在排队中的任务(已开始的任务无法中止)。已取消和失败的任务不计费。 DELETE /v1/videos/{id} 破坏性
list_video_models 视频模型及其分辨率、时长和价格。 GET /v1/videos/models 只读
text_to_speech 文本转语音,以音频内容返回。 POST /v1/audio/speech 计费
transcribe_audio 语音转文本,音频以 URL 或 base64 数据提供(最大 25 MB)。 POST /v1/audio/transcriptions 计费
create_embeddings 单条文本或最多 2048 条批量文本的向量。 POST /v1/embeddings 计费
get_key_info 这把密钥的额度上限、已用与剩余金额、重置周期,以及今日/本周/本月消费(美元)。 GET /v1/key 只读
get_generation 按 request_id 查询单个请求的账单记录:费用、token 明细、延迟和状态。 GET /v1/generation 只读

Provisioning key

工具作用REST 端点说明
create_api_key 创建推理 API 密钥,可设置额度上限、重置周期、模型与 IP 白名单、过期时间和 metadata。密钥明文只在返回结果中出现一次。 POST /api/provisioning/keys 会修改数据
list_api_keys 工作区的推理 API 密钥及其额度、消费和状态;可按 metadata 筛选。 GET /api/provisioning/keys 只读
get_api_key 单把密钥的设置、消费和状态。 GET /api/provisioning/keys/{id} 只读
update_api_key 修改密钥设置,或停用/重新启用它。只修改传入的字段。 PATCH /api/provisioning/keys/{id} 破坏性
delete_api_key 永久删除密钥。 DELETE /api/provisioning/keys/{id} 破坏性

账单密钥

工具作用REST 端点说明
get_balance 当前可用余额(美元),含代金券和计划中的到账额度。 GET /api/v1/billing/balance 只读
get_usage 按小时或按天的消费与请求数,可按密钥和/或模型拆分。 GET /api/v1/billing/usage 只读
list_usage_records 逐请求记录,含 token、费用和状态,按游标分页。 GET /api/v1/billing/records 只读
get_billing_summary 时间段内的汇总,以及消费最高的密钥和模型。 GET /api/v1/billing/summary 只读
get_data_freshness 账单数据的新鲜度。 GET /api/v1/billing/freshness 只读

list_models、get_model 和 get_pricing 对所有密钥类型开放;使用推理 API 密钥时,list_models 只显示这把密钥能调用的模型。

返回结果的形态

每个结果都带一段可读文本,同时在 structuredContent 里给出同样数据的 JSON,对话客户端和程序都能直接使用。图片和音频以图片、音频内容返回,视频以链接返回。运行模型的工具结尾附一行回执 —— 模型、token 数、费用和 request_id —— 之后可用 get_generation 查询。

权限与安全

  • 规则与 REST API 完全一致。每次工具调用都由它对应的 REST 端点、用你的密钥执行:鉴权、密钥类型、IP 白名单、模型白名单、额度上限、限流和计费全部照常生效。MCP 不增加任何权限,也不绕过任何检查。
  • 按密钥类型最小授权。推理 API 密钥不能管理密钥,也不能读取工作区账单;provisioning key 不能调用模型;账单密钥只读。
  • 审批提示。每个工具都带 MCP 注解:只读工具标记 readOnlyHint;会花钱的工具不标为只读;update_api_key、delete_api_key 和 cancel_video 标记 destructiveHint。客户端据此决定执行前要不要先征求你的确认。
  • 推荐给 agent 的密钥:一把专用的推理 API 密钥,设置按天重置的额度上限、allowed_models 模型白名单;agent 跑在固定主机上时再加 IP 白名单。需要时可单独吊销,不影响生产密钥。
  • 密钥明文与不可信内容。create_api_key 只返回一次新密钥 —— 请告诉 agent 把它存到哪里。在让 agent 据此行动之前,请把模型输出和工具结果当作不可信输入(提示词注入)。

协议细节

项目说明
协议版本2026-07-28(无状态,每个请求携带 _meta 和 Mcp-Method / Mcp-Name 请求头,使用 server/discover),以及 2025-11-25、2025-06-18、2025-03-26、2024-11-05(initialize 握手)。两代协议共用同一个 URL,每个请求按它所用的协议代际处理。
会话无。不签发 Mcp-Session-Id,任何请求都可以落到任意服务器副本上,断线重连后也无需重新初始化。
方法initialize、ping、tools/list、tools/call;2026-07-28 下用 server/discover 代替握手。GET 和 DELETE 返回 405;不接受 JSON-RPC 批量请求。
错误未知工具返回 JSON-RPC 错误(-32602)。其余情况 —— 参数不合法、API 拒绝、生成失败 —— 都以 isError: true 的工具结果返回,并附上模型能据此调整的说明。2026-07-28 下,信封层面的问题返回 HTTP 400,错误码为 -32020(请求头与请求体不一致)或 -32022(版本不支持,并列出支持的版本)。
缓存tools/list 按固定顺序返回(利于提示词缓存命中),ttlMs 为 10 分钟,cacheScope: "private",因为列表取决于你的密钥。
限流每把密钥每分钟 600 条 MCP 消息(超出返回 HTTP 429 并带 Retry-After)。每次工具调用还会计入它所调用的 REST 端点自身的限流。
长耗时调用单次调用最长可运行 30 分钟(长推理)。视频生成是异步的:create_video 返回任务,get_video 轮询结果。

故障排查

现象原因与处理
401,或客户端提示需要鉴权密钥缺失、无效、已过期或已停用。请以 Authorization: Bearer <key> 发送,并确认客户端运行的环境里设置了该环境变量。
看不到预期的工具工具取决于密钥类型(见上方表格)和预览功能:图像与视频工具只对已开通相应预览的工作区显示。
工具结果显示 HTTP 402工作区余额已用完。请在控制台充值;get_key_info 可查看这把密钥自身的额度。
工具结果对某个模型显示 HTTP 403该模型不在密钥的 allowed_models 中,或不在你工作区可用的模型范围内。list_models 会准确列出这把密钥能调用的模型。
chat_completion 没有返回文本,finish_reason 为 length推理模型把整个 max_tokens 预算都用在了思考上。请调大 max_tokens 或调低 reasoning_effort。
HTTP 429单把密钥每分钟超过 600 条消息,或触发了 REST 端点自身的限流。请按 Retry-After 等待后重试。

即将推出

  • OAuth 登录:claude.ai、Claude Desktop 和 ChatGPT 的连接器无需粘贴密钥即可接入,使用短期、带额度上限的凭证。
  • MCP 网关:同一个端点还能聚合第三方 MCP 服务器(GitHub、Slack 以及你自己的服务器),统一使用你的密钥,支持按工具授权、凭证保存在服务端、一份审计日志。
  • 长耗时调用的进度:工具运行期间实时推送进度。

相关文档:API 密钥 · Provisioning Keys · 账单 API · Chat Completions