给开发者和智能体运维者 · MCP + API

一台 MCP server。一组兼容 OpenAI 的 API。

把其中任意一个指向 Octo,你的智能体就有了电话号码、收件箱和一条 WhatsApp 线路 — 而且任何要花钱的动作,都会先等一个真人点头。

terminal
claude mcp add --transport http octo https://api.omniocto.com/mcp \
  --header "Authorization: Bearer $OMNIOCTO_API_KEY"

然后: “Octo,帮我接公司电话,每通都发条短信摘要给我。”

智能体用法 · 推荐

由 Octo 挑工具。

只有三个工具会进到你的智能体。你描述想要的结果,Octo 负责规划,任何要花钱的动作都会等你回 YES。把任意 MCP 客户端指向 /mcp 即可 —— /mcp/octo 是永久别名。

Codex MCP · /mcp
~/.codex/config.toml[mcp_servers.octo]url = "https://api.omniocto.com/mcp"bearer_token_env_var = "OMNIOCTO_API_KEY"● octo · 3 tools› “帮我接公司电话 —— 买一个号码,然后打给我的手机证明它能用。”octo ▸ send_message   searched · bought — 有风险,已挂起等确认 → YES 4821   created the agent · deployed it● 你的手机正在响

Codex 本来就会读的配置文件,加三行。

智能体用法 · 完整目录

由你的智能体挑工具。

200 多个工具定义会在动手之前全部进到你的智能体,计划由你的循环负责。MCP 是无状态的,没有地方能暂存待确认的动作 —— 所以会花钱的、有破坏性的、以及批量发消息的工具,会直接返回 confirmation_required,而不是执行。同一个客户端,改指向 /mcp/tools。

你或你的智能体来定 200+ 个工具 →

你的智能体看到什么

  • search_phone_numbers
  • buy_phone_number
  • create_agent
  • deploy_agent
  • send_sms
  • 还有 200 多个

跑起来是什么样

你的智能体 search_phone_numbers({ area_code: "206" })
Octo → 12 个可用
你的智能体 buy_phone_number({ id: "pn_…" })
Octo confirmation_required — 会花钱
你的智能体 … 接下来怎么做,由你的循环决定

每一个工具定义都会先进到你的智能体的上下文里,它才会有任何动作。计划由你负责。

Claude Code MCP · /mcp/tools
$ claude mcp add --transport http octo \    https://api.omniocto.com/mcp/tools✓ connected · 200+ tools› “帮我接公司电话 —— 买一个号码,然后打给我的手机证明它能用。”tool ▸ search_phone_numbers  area_code=206   → 12 availabletool ▸ buy_phone_number   confirmation_required — spends money

同一条命令,只有网址不同。差别就这么点。

Codex MCP · /mcp/tools
~/.codex/config.toml[mcp_servers.octo]url = "https://api.omniocto.com/mcp/tools"bearer_token_env_var = "OMNIOCTO_API_KEY"● octo · 200+ tools› “帮我接公司电话 —— 买一个号码,然后打给我的手机证明它能用。”tool ▸ search_phone_numbers  area_code=206   → 12 availabletool ▸ buy_phone_number   confirmation_required — spends money

同一个文件,只有 url 不同。别的都不用改。

API 用法

兼容 OpenAI 的 API。

把 base_url 和 api_key 换掉,你现有的代码就能跑。两种 OpenAI 接口都支持 —— 较新的 Responses API(/v1/responses)和 Chat Completions(/v1/chat/completions)—— 规划和确认机制都跟 MCP 一样。

Python HTTP · /v1/responses
from openai import OpenAIclient = OpenAI(    base_url="https://api.omniocto.com/v1",    api_key=os.environ["OMNIOCTO_API_KEY"],)r = client.responses.create(    input="帮我接公司电话 —— 买一个号码,然后打给我的手机证明它能用。")

在你早就写好的代码里,改两行。

TypeScript HTTP · /v1/responses
import OpenAI from "openai";const client = new OpenAI({  baseURL: "https://api.omniocto.com/v1",  apiKey: process.env.OMNIOCTO_API_KEY,});const r = await client.responses.create({  input: "帮我接公司电话 —— 买一个号码,然后打给我的手机证明它能用。",});

同样那两行,同样的 SDK 写法。

curl HTTP · /v1/responses
$ curl https://api.omniocto.com/v1/responses \  -H "Authorization: Bearer $OMNIOCTO_API_KEY" \  -H "Content-Type: application/json" \  -d '{"input":"帮我接公司电话 —— 买一个号码,然后打给我的手机证明它能用。"}'

完全不用 SDK,就只是 HTTP。

一把密钥全部通用。同一个工作区、同一份审计记录、同一套确认机制。

你的智能体会多出什么

这 200+ 个工具实际覆盖什么。

电话与消息

购买电话号码、拨打和接听真实通话、发送 WhatsApp 和短信、起草并发出邮件回复。

search_phone_numbers · buy_phone_number · start_voice_call · send_message_to_contact · send_whatsapp_template · reply_to_email_thread

联系人与知识

一套联系人 CRM、所有渠道的对话都收在同一个收件箱,还有一个你的智能体可以检索的知识库。

create_contact · find_contact_by_channel · get_conversations · kb_search

风险等级与开销上限

目录里每个工具都带风险等级。有风险的动作会停下来等 YES 验证码确认,开销上限则守住底线 —— 你的智能体不会不小心把钱花掉。

risk classes · "Reply YES 4821" two-phase commit · LLM + voice-minute spend caps

你是智能体在读这一页吗?从这里开始。

机器可读的接口,位于 api.omniocto.com

按 API 的标准做,不是做个 demo

那些无聊但必要的部分都做完了。

  • 速率限制按密钥和按工作区分别计算,返回 429 并附上 retry-after 文档 ↗
  • Idempotency-Key/v1/responses 上可安全重放。 文档 ↗
  • SSE 流式输出两个接口都发 OpenAI 形式的事件。 文档 ↗
  • Webhooksbackground:true 的任务提供完成回调。 文档 ↗

兼容

客户端验证方式最近一次一致性测试
OpenAI SDK (Python / TS) 对 /v1 替换 base_url 与 api_key 已验证 2026-08-06
Claude Code (MCP) claude mcp add → 实际调用一次工具 一致性测试尚未执行
curl 对 /v1 发原始 HTTP 请求 已验证 2026-08-06

兼容性是测出来的,不是假设出来的:这一页公开之前,每一行都会跑一次带日期、可重复执行的验证。

开始

生成一把密钥。把你的智能体指过去。

密钥是一份带着你角色权限的工作区凭证 —— 你能做的事,它都能做。把它当密码看待。