新用戶 免費註冊,送 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>
ℹ

你用哪種金鑰連線,就決定能拿到哪些工具:推論金鑰(sk-syn-…)用來呼叫模型,provisioning key(sk-syn-prov-…)用來管理 API 金鑰,帳單金鑰(sk-syn-bill-…)用來讀取餘額與用量。如果一個 agent 需要多種金鑰,請為每種金鑰各連線一次伺服器。

快速開始

  1. 在控制台的 API 金鑰 頁面建立一把 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 的出口 IP 範圍)。用 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 登入,而本伺服器尚未提供 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 呼叫完全相同;其他工具一律免費。

推論金鑰

工具功能REST 端點備註
list_models 該金鑰可呼叫的模型,由便宜到貴排列,附上下文長度、模態、能力與標價。可依類別、能力、輸入模態篩選,或以關鍵字搜尋。 GET /v1/models + /api/models 唯讀
get_model 單一模型的完整資訊,包括套用折扣後的實際價格,以及該金鑰能否呼叫它。 GET /v1/models/{id} 唯讀
get_pricing 價目表(折扣後的 USD):按 token、按次、按分鐘、按秒及階梯計價。 GET /api/pricing 唯讀
chat_completion 對任意模型發起一次聊天補全:可傳入單一 prompt 或完整的 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 以 prompt 或首幀建立影片任務;最多可等待 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 該金鑰的消費上限、已用與剩餘額度、重設週期,以及今日/本週/本月的消費(USD)。 GET /v1/key 唯讀
get_generation 依 request_id 查詢單一請求的帳單記錄:費用、token 明細、延遲與狀態。 GET /v1/generation 唯讀

Provisioning key

工具功能REST 端點備註
create_api_key 建立推論金鑰,可設定消費上限、重設週期、模型與 IP 允許清單、到期時間及 metadata。金鑰明文只會出現在這次的結果中。 POST /api/provisioning/keys 會修改資料
list_api_keys 工作區中的推論金鑰及其限制、消費與狀態;可依 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 目前可用餘額(USD),含代金券與分期到帳額度。 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 對所有類型的金鑰都開放;使用推論金鑰時,list_models 只會列出該金鑰能呼叫的模型。

結果長什麼樣子

每個結果都帶有一段易讀的文字,並在 structuredContent 中以 JSON 附上同一份資料,聊天用戶端與程式都能直接使用。圖像與音訊以圖像、音訊內容回傳,影片則以連結回傳。會執行模型的工具在結尾附一行收據——模型、token、費用與 request_id——之後可用 get_generation 查詢。

權限與安全

  • 與 REST API 規則相同。每次工具呼叫都由其對應的 REST 端點以你的金鑰執行:驗證、金鑰類型、IP 允許清單、模型允許清單、消費上限、速率限制與計費全部照常套用。MCP 不會新增任何權限,也不會略過任何檢查。
  • 依金鑰類型實行最小權限。推論金鑰無法管理金鑰或讀取工作區帳單;provisioning key 無法呼叫模型;帳單金鑰為唯讀。
  • 核准提示。每個工具都帶有 MCP annotations。唯讀工具標記為 readOnlyHint;會花錢的工具不屬於唯讀;update_api_key、delete_api_key 與 cancel_video 標記為 destructiveHint。用戶端會據此決定執行前要先向你確認哪些操作。
  • 建議的 agent 金鑰:一把專用的推論金鑰,設定每日重設的消費上限與 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