Skip to main content
Una integración de herramientas es un endpoint HTTP reutilizable que un agente puede invocar durante una llamada. Le proporcionas a ThunderPhone una descripción mediante esquema JSON de la herramienta junto con una URL de endpoint; el agente decide cuándo llamarla según la conversación, y ThunderPhone realiza la solicitud HTTP saliente desde sus servidores y devuelve la respuesta al agente.
El dashboard cubre la mayoría de las necesidades de herramientas sin esta API: Conexiones → Aplicaciones conecta Slack, HubSpot, Salesforce, Google Calendar, Google Sheets y Cal.com con unos pocos clics de OAuth; Conexiones → APIs convierte cualquier API HTTP en una acción de agente (pega un comando cURL y un asistente de IA crea un borrador de la herramienta, con una Prueba de solicitud integrada); y Conexiones → MCP agrega servidores MCP. Consulta Conexiones. Esta guía trata sobre la API sin procesar detrás de la interfaz de APIs.
Esta guía te acompaña en la creación integral de una herramienta de consulta del clima.

Anatomía de una herramienta

Dos partes:
  1. El esquema — una definición de función al estilo de OpenAI ({type: "function", function: {name, description, parameters}}) que le indica al LLM qué hace la herramienta y qué argumentos acepta.
  2. El endpoint — la URL a la que llaman los servidores de ThunderPhone cuando el LLM decide usar la herramienta. La solicitud es un POST JSON con los argumentos elegidos por el LLM como cuerpo.

1. Elige una estrategia de almacenamiento

En línea en el agente

Adjunta una herramienta de uso único al arreglo tools del agente. Es simple, pero no reutilizable.

Integración guardada

Almacena la herramienta como una integración reutilizable y vincúlala desde varios agentes. Se recomienda para cualquier herramienta que se use más de una vez.
Esta guía usa el enfoque de integración guardada.

2. Crea la integración

Guarda el id devuelto (un UUID).
Dedica un esfuerzo real a la description de la herramienta y de cada parámetro. El LLM usa estas cadenas en tiempo de ejecución para decidir si debe llamar a la herramienta y cómo hacerlo. Descripciones vagas → llamadas a herramientas vagas.

3. Prueba el endpoint en el entorno de pruebas

Antes de vincular la integración a un agente, envía una solicitud firmada desde los servidores de ThunderPhone para confirmar la conectividad:
Response
Esta prueba también refuerza las protecciones SSRF de ThunderPhone: las solicitudes a localhost o a rangos de IP privados devuelven 400 code=url_not_allowed.

4. Vincula la integración a un agente

Asóciala mediante integration_ids cuando crees o actualices un agente:
Puedes vincular varias integraciones a un agente. El prompt del agente puede hacer referencia a ellas por nombre — “usa get_weather cuando quien llama pregunte sobre las condiciones meteorológicas” — o puede descubrirlas de forma implícita a partir de las descripciones del esquema.

5. Implementa el endpoint

Cuando el agente invoca la herramienta, ThunderPhone envía un POST firmado a tu endpoint_url:
Tu servidor responde con JSON que se devuelve al LLM:
El LLM procesa esa respuesta y le comunica a quien llama un resumen natural.
La firma se calcula sobre el cuerpo sin procesar de la solicitud usando el mismo secret que tu endpoint de webhook. Verifícala — los endpoints de herramientas están expuestos a internet y sujetos a los mismos riesgos de suplantación que los webhooks. Consulta Verificar firmas de webhooks.

6. Prueba el ciclo

Inicia una sesión de micrófono con el agente y haz la pregunta que gestiona tu herramienta (“¿Cuál es el clima en 94110?”). La transcripción de la llamada muestra el ciclo completo:
Puedes obtenerla mediante GET /v1/calls/{call_id}/transcript; el flujo de eventos sin procesar (con tiempos por entrada y desplazamientos de audio) está en GET /v1/calls/{call_id}/history.

Problemas comunes

El LLM decide según la descripción de la herramienta. Si la pregunta de quien llama no coincide con la descripción, el modelo no invocará la herramienta. Ajusta la descripción (agrega sinónimos y formulaciones comunes) o menciónala explícitamente en el prompt del agente (“Cuando quien llama pregunte sobre el clima, usa get_weather.”).
Las respuestas de más de 6 kB se truncan en la vista previa de la transcripción. Devuelve solo los campos que necesita el LLM, no todo tu registro.
Los endpoints de herramientas tienen un tiempo de espera predeterminado de 10 segundos. Si necesitas más tiempo, manéjalo de forma asíncrona: devuelve {"status": "pending", "request_id": "..."} y muestra el resultado mediante una llamada a una herramienta independiente.
Cada PATCH de integración crea una nueva revisión. Consulta GET /v1/integrations/{id}/versions para ver quién cambió qué. Si rompes el esquema de una herramienta, puedes revertirlo manualmente aplicando PATCH a una instantánea anterior.

Próximos pasos

Referencia de integraciones

CRUD, transferencia, historial de versiones.

Especificación de herramientas de función

Gramática completa del esquema JSON y el contrato de endpoint firmado.

Verificar firmas

Aplica el patrón de firma de webhook a los endpoints de herramientas.

API de transcripciones e historial

Inspecciona el recorrido completo de ida y vuelta de una llamada a una herramienta.