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.

terminal
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.

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› “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.

Decides tú o tu agente más de 200 herramientas →

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

Tu agente search_phone_numbers({ area_code: "206" })
Octo → 12 disponibles
Tu agente buy_phone_number({ id: "pn_…" })
Octo confirmation_required — cuesta dinero
Tu agente … tu bucle decide qué pasa después

Cada definición de herramienta entra en el contexto de tu agente antes de que haga nada. El plan es cosa tuya.

Claude Code MCP · /mcp/tools
$ 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 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› “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.

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="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.

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: "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 HTTP · /v1/responses
$ 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_thread

Contactos 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_search

Clases 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:

Construido como una API, no como una demo

Las partes aburridas ya están hechas.

Funciona con

ClienteVerificado 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.