API
Tool personalizzati
Lascia che l'IA chiami la tua API nel mezzo di una conversazione
# Tool personalizzati > Lascia che l'IA chiami la tua API nel mezzo di una conversazione - Pagina: https://tbit.app/it/docs/api/custom-tools - URL base: `https://rest-api.tbit.app/v1` - Autenticazione: header `X-API-Key` con la tua chiave in ogni richiesta (gli esempi la leggono dalla variabile d'ambiente `TBIT_API_KEY`) ## Panoramica Un tool personalizzato è un tuo endpoint che l'agente può chiamare mentre parla con un cliente: consultare un credito per numero di documento, controllare lo stock, aprire un ticket. Tu descrivi quando si applica e quali parametri servono; l'IA decide quando chiamarlo, compila i parametri con quello che ha detto il cliente e risponde con quello che ha restituito la tua API. Fino a 15 tool per agente. ## Definizione Ogni tool è una voce con questi campi: | | | | | `name` | Nome tecnico con cui l'IA lo chiama: lettere, numeri e trattino basso (consultar_credito). | | `description` | Quando usarlo e cosa restituisce. È quello che l'IA legge per decidere; scrivilo come un'istruzione («Consulta un credito per numero di documento; restituisce saldo e rate»). | | `parameters` | Lista di {name, type (string \| number \| boolean \| enum), description, required, enum_values}. L'IA li compila con quello che ha detto il cliente. | | `method + endpoint` | GET, POST, PUT o DELETE e l'URL completo. | | `auth` | NONE, BEARER (Authorization: Bearer <token>), API_KEY (nome e valore dell'header che scegli tu) o BASIC (utente e password). | | `headers` | Header extra che vanno in ogni chiamata. | | `body_template` | Template JSON facoltativo con {{param}}. Senza, POST/PUT inviano i parametri come oggetto JSON. | | `response_path` | Percorso facoltativo con punti (data.results) verso la parte della risposta che l'IA deve leggere. | ## Come viene fatta la chiamata GET e DELETE aggiungono i parametri all'URL come query string. POST e PUT li inviano come body JSON, oppure il body_template già compilato. Gli header di auth e quelli extra vanno in ogni chiamata. Rispondi 2xx con JSON: l'IA riceve il body (o la parte indicata da response_path) come testo e lo usa per rispondere. Un codice diverso da 2xx arriva all'IA come «API returned <status>» e lei dice al cliente che non è riuscita a consultare; non ci sono nuovi tentativi automatici. ## Come crearne uno - Canvas (newui.tbit.app): chiedi «quali tool personalizzati ho?» → l'elenco ha «Nuovo tool…»; ogni riga apre il tool con Modifica. Un modulo chiede tutto quanto sopra; i segreti che lasci vuoti quando modifichi vengono conservati. - MCP (Claude, ChatGPT…): list_custom_tools per leggerli, manage_custom_tool con action=create | update | delete. La modifica viene proposta e tu la confermi. - App della piattaforma: Integrazioni → API personalizzata. ## Esempio: creare dall'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" } ``` ## Cosa riceve il tuo endpoint Con l'esempio sopra, quando un cliente chiede del suo credito l'IA chiama: ```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" } } ``` ## Buone pratiche - Scrivi la descrizione per l'IA, non per uno sviluppatore: quando usarlo e cosa restituisce. - Segna come obbligatorio solo quello che l'IA deve chiedere al cliente; per il resto, metti un valore predefinito dalla tua parte. - Mantieni i GET idempotenti: l'IA può chiamare lo stesso tool due volte in una conversazione se il primo tentativo è fallito. - Restituisci un JSON piccolo e piatto. Usa response_path se la tua API incapsula i risultati.Un tool personalizzato è un tuo endpoint che l'agente può chiamare mentre parla con un cliente: consultare un credito per numero di documento, controllare lo stock, aprire un ticket. Tu descrivi quando si applica e quali parametri servono; l'IA decide quando chiamarlo, compila i parametri con quello che ha detto il cliente e risponde con quello che ha restituito la tua API. Fino a 15 tool per agente.
Ogni tool è una voce con questi campi:
name | Nome tecnico con cui l'IA lo chiama: lettere, numeri e trattino basso (consultar_credito). |
description | Quando usarlo e cosa restituisce. È quello che l'IA legge per decidere; scrivilo come un'istruzione («Consulta un credito per numero di documento; restituisce saldo e rate»). |
parameters | Lista di {name, type (string | number | boolean | enum), description, required, enum_values}. L'IA li compila con quello che ha detto il cliente. |
method + endpoint | GET, POST, PUT o DELETE e l'URL completo. |
auth | NONE, BEARER (Authorization: Bearer <token>), API_KEY (nome e valore dell'header che scegli tu) o BASIC (utente e password). |
headers | Header extra che vanno in ogni chiamata. |
body_template | Template JSON facoltativo con {{param}}. Senza, POST/PUT inviano i parametri come oggetto JSON. |
response_path | Percorso facoltativo con punti (data.results) verso la parte della risposta che l'IA deve leggere. |
GET e DELETE aggiungono i parametri all'URL come query string. POST e PUT li inviano come body JSON, oppure il body_template già compilato. Gli header di auth e quelli extra vanno in ogni chiamata. Rispondi 2xx con JSON: l'IA riceve il body (o la parte indicata da response_path) come testo e lo usa per rispondere. Un codice diverso da 2xx arriva all'IA come «API returned <status>» e lei dice al cliente che non è riuscita a consultare; non ci sono nuovi tentativi automatici.
- Canvas (newui.tbit.app): chiedi «quali tool personalizzati ho?» → l'elenco ha «Nuovo tool…»; ogni riga apre il tool con Modifica. Un modulo chiede tutto quanto sopra; i segreti che lasci vuoti quando modifichi vengono conservati.
- MCP (Claude, ChatGPT…): list_custom_tools per leggerli, manage_custom_tool con action=create | update | delete. La modifica viene proposta e tu la confermi.
- App della piattaforma: Integrazioni → API personalizzata.
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 l'esempio sopra, quando un cliente chiede del suo credito l'IA chiama:
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" } }- Scrivi la descrizione per l'IA, non per uno sviluppatore: quando usarlo e cosa restituisce.
- Segna come obbligatorio solo quello che l'IA deve chiedere al cliente; per il resto, metti un valore predefinito dalla tua parte.
- Mantieni i GET idempotenti: l'IA può chiamare lo stesso tool due volte in una conversazione se il primo tentativo è fallito.
- Restituisci un JSON piccolo e piatto. Usa response_path se la tua API incapsula i risultati.