给开发者和智能体运维者 · MCP + API
一台 MCP server。一组兼容 OpenAI 的 API。
把其中任意一个指向 Octo,你的智能体就有了电话号码、收件箱和一条 WhatsApp 线路 — 而且任何要花钱的动作,都会先等一个真人点头。
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 是永久别名。
你的智能体看到什么
- send_message
- list_conversations
- get_conversation
跑起来是什么样
你的智能体的上下文只围着你的问题转。计划和确认由 Octo 负责。
$ claude mcp add --transport http octo \ https://api.omniocto.com/mcp✓ connected · 3 tools› “帮我接公司电话 —— 买一个号码,然后打给我的手机证明它能用。”octo ▸ send_message searched · bought — 有风险,已挂起等确认 → YES 4821 created the agent · deployed it● 你的手机正在响 一条命令。重启之后,直接开口问就行。
~/.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。
你的智能体看到什么
- search_phone_numbers
- buy_phone_number
- create_agent
- deploy_agent
- send_sms
- 还有 200 多个
跑起来是什么样
search_phone_numbers({ area_code: "206" }) buy_phone_number({ id: "pn_…" }) confirmation_required — 会花钱 每一个工具定义都会先进到你的智能体的上下文里,它才会有任何动作。计划由你负责。
$ 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/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 一样。
from openai import OpenAIclient = OpenAI( base_url="https://api.omniocto.com/v1", api_key=os.environ["OMNIOCTO_API_KEY"],)r = client.responses.create( input="帮我接公司电话 —— 买一个号码,然后打给我的手机证明它能用。") 在你早就写好的代码里,改两行。
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 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:
/llms.txt/.well-known/skills/index.json/v1/openapi.json/mcp-docs— 这是 MCP 端点,把它加到客户端里
按 API 的标准做,不是做个 demo
那些无聊但必要的部分都做完了。
- 速率限制 — 按密钥和按工作区分别计算,返回
429并附上retry-after。 文档 ↗ - Idempotency-Key — 在
/v1/responses上可安全重放。 文档 ↗ - SSE 流式输出 — 两个接口都发 OpenAI 形式的事件。 文档 ↗
- Webhooks — 为
background: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 |
兼容性是测出来的,不是假设出来的:这一页公开之前,每一行都会跑一次带日期、可重复执行的验证。