API
Tools personalizadas
Deja que la IA llame a tu API en medio de una conversación
# Tools personalizadas > Deja que la IA llame a tu API en medio de una conversación - Página: https://tbit.app/es/docs/api/custom-tools - URL base: `https://rest-api.tbit.app/v1` - Autenticación: encabezado `X-API-Key` con tu clave en cada solicitud (los ejemplos la leen de la variable de entorno `TBIT_API_KEY`) ## Descripción general Una tool personalizada es un endpoint tuyo que el agente puede llamar mientras habla con un cliente: consultar un crédito por cédula, revisar stock, abrir un ticket. Tú describes cuándo aplica y qué parámetros necesita; la IA decide cuándo llamarla, llena los parámetros con lo que dijo el cliente y responde con lo que devolvió tu API. Hasta 15 tools por agente. ## Definición Cada tool es una entrada con estos campos: | | | | | `name` | Nombre técnico con el que la IA la llama: letras, números y guión bajo (consultar_credito). | | `description` | Cuándo usarla y qué devuelve. Es lo que la IA lee para decidir; escríbela como instrucción («Consulta un crédito por cédula; devuelve saldo y cuotas»). | | `parameters` | Lista de {name, type (string \| number \| boolean \| enum), description, required, enum_values}. La IA los llena con lo que dijo el cliente. | | `method + endpoint` | GET, POST, PUT o DELETE y la URL completa. | | `auth` | NONE, BEARER (Authorization: Bearer <token>), API_KEY (nombre y valor de header que tú eliges) o BASIC (usuario y contraseña). | | `headers` | Headers extra que van en cada llamada. | | `body_template` | Plantilla JSON opcional con {{param}}. Sin ella, POST/PUT mandan los parámetros como objeto JSON. | | `response_path` | Ruta con puntos opcional (data.results) a la parte de la respuesta que la IA debe leer. | ## Cómo se hace la llamada GET y DELETE agregan los parámetros a la URL como query string. POST y PUT los mandan como body JSON: o el body_template ya rellenado. Los headers de auth y los extra van en cada llamada. Responde 2xx con JSON: la IA recibe el body (o la parte de response_path) como texto y lo usa para contestar. Un código distinto de 2xx le llega a la IA como «API returned <status>» y le dice al cliente que no pudo consultar; no hay reintentos automáticos. ## Cómo crear una - Canvas (newui.tbit.app): pregunta «¿qué tools personalizadas tengo?» → la lista tiene «Nueva tool…»; cada fila abre la tool con Editar. Un formulario pide todo lo de arriba; los secretos que dejes vacíos al editar se conservan. - MCP (Claude, ChatGPT…): list_custom_tools para leerlas, manage_custom_tool con action=create | update | delete. El cambio se propone y tú lo confirmas. - App de la plataforma: Integraciones → API personalizada. ## Ejemplo: crear desde el MCP ```json manage_custom_tool { "action": "create", "name": "consultar_credito", "description": "Consulta el estado de un crédito por número de cédula; devuelve saldo, cuotas pendientes y próxima fecha de pago.", "method": "GET", "endpoint": "https://api.tunegocio.com/v1/creditos", "parameters": [ { "name": "cedula", "type": "string", "description": "Cédula del cliente, solo dígitos", "required": true } ], "auth_type": "BEARER", "auth_token": "<tu token>", "response_path": "data" } ``` ## Qué recibe tu endpoint Con el ejemplo de arriba, cuando un cliente pregunta por su crédito la IA llama: ```http GET https://api.tunegocio.com/v1/creditos?cedula=1032456789 Authorization: Bearer <tu token> Accept: application/json → 200 { "data": { "saldo": 1250000, "cuotas_pendientes": 3, "proximo_pago": "2026-10-05" } } ``` ## Buenas prácticas - Escribe la descripción para la IA, no para un desarrollador: cuándo usarla y qué vuelve. - Marca como obligatorio solo lo que la IA debe pedirle al cliente; lo demás dale un valor por defecto de tu lado. - Mantén los GET idempotentes: la IA puede llamar la misma tool dos veces en una conversación si el primer intento falló. - Devuelve JSON pequeño y plano. Usa response_path si tu API envuelve los resultados.Una tool personalizada es un endpoint tuyo que el agente puede llamar mientras habla con un cliente: consultar un crédito por cédula, revisar stock, abrir un ticket. Tú describes cuándo aplica y qué parámetros necesita; la IA decide cuándo llamarla, llena los parámetros con lo que dijo el cliente y responde con lo que devolvió tu API. Hasta 15 tools por agente.
Cada tool es una entrada con estos campos:
name | Nombre técnico con el que la IA la llama: letras, números y guión bajo (consultar_credito). |
description | Cuándo usarla y qué devuelve. Es lo que la IA lee para decidir; escríbela como instrucción («Consulta un crédito por cédula; devuelve saldo y cuotas»). |
parameters | Lista de {name, type (string | number | boolean | enum), description, required, enum_values}. La IA los llena con lo que dijo el cliente. |
method + endpoint | GET, POST, PUT o DELETE y la URL completa. |
auth | NONE, BEARER (Authorization: Bearer <token>), API_KEY (nombre y valor de header que tú eliges) o BASIC (usuario y contraseña). |
headers | Headers extra que van en cada llamada. |
body_template | Plantilla JSON opcional con {{param}}. Sin ella, POST/PUT mandan los parámetros como objeto JSON. |
response_path | Ruta con puntos opcional (data.results) a la parte de la respuesta que la IA debe leer. |
GET y DELETE agregan los parámetros a la URL como query string. POST y PUT los mandan como body JSON: o el body_template ya rellenado. Los headers de auth y los extra van en cada llamada. Responde 2xx con JSON: la IA recibe el body (o la parte de response_path) como texto y lo usa para contestar. Un código distinto de 2xx le llega a la IA como «API returned <status>» y le dice al cliente que no pudo consultar; no hay reintentos automáticos.
- Canvas (newui.tbit.app): pregunta «¿qué tools personalizadas tengo?» → la lista tiene «Nueva tool…»; cada fila abre la tool con Editar. Un formulario pide todo lo de arriba; los secretos que dejes vacíos al editar se conservan.
- MCP (Claude, ChatGPT…): list_custom_tools para leerlas, manage_custom_tool con action=create | update | delete. El cambio se propone y tú lo confirmas.
- App de la plataforma: Integraciones → API personalizada.
manage_custom_tool
{
"action": "create",
"name": "consultar_credito",
"description": "Consulta el estado de un crédito por número de cédula; devuelve saldo, cuotas pendientes y próxima fecha de pago.",
"method": "GET",
"endpoint": "https://api.tunegocio.com/v1/creditos",
"parameters": [
{ "name": "cedula", "type": "string", "description": "Cédula del cliente, solo dígitos", "required": true }
],
"auth_type": "BEARER",
"auth_token": "<tu token>",
"response_path": "data"
}Con el ejemplo de arriba, cuando un cliente pregunta por su crédito la IA llama:
GET https://api.tunegocio.com/v1/creditos?cedula=1032456789
Authorization: Bearer <tu token>
Accept: application/json
→ 200 { "data": { "saldo": 1250000, "cuotas_pendientes": 3, "proximo_pago": "2026-10-05" } }- Escribe la descripción para la IA, no para un desarrollador: cuándo usarla y qué vuelve.
- Marca como obligatorio solo lo que la IA debe pedirle al cliente; lo demás dale un valor por defecto de tu lado.
- Mantén los GET idempotentes: la IA puede llamar la misma tool dos veces en una conversación si el primer intento falló.
- Devuelve JSON pequeño y plano. Usa response_path si tu API envuelve los resultados.