Para desarrolladores y operadores de agentes · MCP + API
Un servidor MCP. Una API compatible con OpenAI.
Apunta cualquiera de los dos a Octo y tu agente consigue un número de teléfono, una bandeja de entrada y una línea de WhatsApp — con una confirmación humana antes de cualquier gasto.
claude mcp add --transport http octo https://api.omniocto.com/mcp \
--header "Authorization: Bearer $OMNIOCTO_API_KEY" Y entonces: “Octo, contesta el teléfono de mi negocio y mándame por SMS un resumen de cada llamada.”
La vía con agente · recomendada
Octo elige las herramientas.
A tu agente le llegan tres herramientas. Tú describes el resultado, Octo lo planifica y todo lo que cuesta dinero espera tu YES. Apunta cualquier cliente MCP a /mcp; /mcp/octo queda como alias permanente.
lo que ve tu agente
- send_message
- list_conversations
- get_conversation
cómo se ve una ejecución
El contexto de tu agente sigue tratando de tu problema. Octo se encarga del plan y de las confirmaciones.
$ claude mcp add --transport http octo \ https://api.omniocto.com/mcp✓ connected · 3 tools› “Contesta el teléfono de mi negocio: compra un número y llama a mi móvil para demostrarlo.”octo ▸ send_message searched · bought — arriesgado, retenido a la espera de confirmación → YES 4821 created the agent · deployed it● tu teléfono está sonando Un comando. Reinicia y ya puedes pedírselo.
~/.codex/config.toml[mcp_servers.octo]url = "https://api.omniocto.com/mcp"bearer_token_env_var = "OMNIOCTO_API_KEY"● octo · 3 tools› “Contesta el teléfono de mi negocio: compra un número y llama a mi móvil para demostrarlo.”octo ▸ send_message searched · bought — arriesgado, retenido a la espera de confirmación → YES 4821 created the agent · deployed it● tu teléfono está sonando Tres líneas en el archivo de configuración que Codex ya lee.
La vía con agente · catálogo completo
Tu agente elige las herramientas.
Las más de 200 definiciones de herramientas llegan a tu agente antes de que haga nada, y el plan lo lleva tu bucle. MCP no tiene estado y no hay dónde dejar aparcada una acción pendiente, así que las herramientas que gastan dinero, destruyen datos o envían mensajes masivos responden confirmation_required en lugar de ejecutarse. El mismo cliente, apuntado a /mcp/tools.
lo que ve tu agente
- search_phone_numbers
- buy_phone_number
- create_agent
- deploy_agent
- send_sms
- +200 más
cómo se ve una ejecución
search_phone_numbers({ area_code: "206" }) buy_phone_number({ id: "pn_…" }) confirmation_required — cuesta dinero Cada definición de herramienta entra en el contexto de tu agente antes de que haga nada. El plan es cosa tuya.
$ claude mcp add --transport http octo \ https://api.omniocto.com/mcp/tools✓ connected · 200+ tools› “Contesta el teléfono de mi negocio: compra un número y llama a mi móvil para demostrarlo.”tool ▸ search_phone_numbers area_code=206 → 12 availabletool ▸ buy_phone_number confirmation_required — spends money El mismo comando, otra URL. Esa es toda la diferencia.
~/.codex/config.toml[mcp_servers.octo]url = "https://api.omniocto.com/mcp/tools"bearer_token_env_var = "OMNIOCTO_API_KEY"● octo · 200+ tools› “Contesta el teléfono de mi negocio: compra un número y llama a mi móvil para demostrarlo.”tool ▸ search_phone_numbers area_code=206 → 12 availabletool ▸ buy_phone_number confirmation_required — spends money El mismo archivo, otra url. No cambia nada más.
La vía de la API
APIs compatibles con OpenAI.
Cambia base_url y api_key y tu código actual funciona. Están soportadas las dos interfaces de OpenAI — la más reciente, Responses API en /v1/responses, y Chat Completions en /v1/chat/completions — con la misma planificación y las mismas confirmaciones que en 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="Contesta el teléfono de mi negocio: compra un número y llama a mi móvil para demostrarlo.") Dos líneas cambian en código que ya has escrito.
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: "Contesta el teléfono de mi negocio: compra un número y llama a mi móvil para demostrarlo.",}); Las mismas dos líneas, la misma forma del SDK.
$ curl https://api.omniocto.com/v1/responses \ -H "Authorization: Bearer $OMNIOCTO_API_KEY" \ -H "Content-Type: application/json" \ -d '{"input":"Contesta el teléfono de mi negocio: compra un número y llama a mi móvil para demostrarlo."}' Sin SDK siquiera. Es solo HTTP.
Una sola llave sirve para todo. El mismo espacio de trabajo, el mismo registro de auditoría, las mismas confirmaciones.
Lo que gana tu agente
Qué cubren realmente las más de 200 herramientas.
Telefonía y mensajería
Comprar números de teléfono, hacer y atender llamadas reales, enviar WhatsApp y SMS, redactar y enviar respuestas de correo.
search_phone_numbers · buy_phone_number · start_voice_call · send_message_to_contact · send_whatsapp_template · reply_to_email_threadContactos y conocimiento
Un CRM de contactos, todas las conversaciones de todos los canales en una sola bandeja de entrada y una base de conocimiento que tu agente puede consultar.
create_contact · find_contact_by_channel · get_conversations · kb_searchClases de riesgo y límites de gasto
Cada herramienta del catálogo lleva una clase de riesgo. Las acciones arriesgadas se detienen a esperar una confirmación con código YES, y los límites de gasto marcan la raya: tu agente no puede gastar por accidente.
risk classes · "Reply YES 4821" two-phase commit · LLM + voice-minute spend caps¿Estás leyendo esto como agente? Empieza por aquí.
Superficies legibles por máquina en api.omniocto.com:
/llms.txt/.well-known/skills/index.json/v1/openapi.json/mcp-docs— endpoint MCP, añádelo a un cliente
Construido como una API, no como una demo
Las partes aburridas ya están hechas.
- Límites de tasa — por clave y por espacio de trabajo,
429conretry-after. documentación ↗ - Idempotency-Key — reintentos seguros en
/v1/responses. documentación ↗ - Streaming SSE — eventos con forma de OpenAI en ambas fachadas. documentación ↗
- Webhooks — callbacks de finalización para trabajos
background:true. documentación ↗
Funciona con
| Cliente | Verificado mediante | Última prueba de conformidad |
|---|---|---|
| OpenAI SDK (Python / TS) | cambio de base_url + api_key contra /v1 | verificado el 2026-08-06 |
| Claude Code (MCP) | claude mcp add → llamada real a una herramienta | prueba de conformidad pendiente |
| curl | HTTP en crudo contra /v1 | verificado el 2026-08-06 |
La compatibilidad se prueba, no se da por supuesta: antes de que esta página se haga pública, cada fila pasa una verificación fechada y repetible.
Empezar
Genera una clave. Apunta tu agente a ella.
Una clave es una credencial del espacio de trabajo que lleva tu rol: puede hacer todo lo que puedes hacer tú. Trátala como una contraseña.