Le tableau de bord couvre la plupart des besoins en outils sans cette API : Connexions
→ Apps connecte Slack, HubSpot, Salesforce, Google Calendar,
Google Sheets et Cal.com en quelques clics OAuth ; Connexions →
APIs transforme n’importe quelle API HTTP en action d’agent (collez une commande cURL
et un assistant IA crée l’outil, avec une fonctionnalité intégrée Tester la requête) ; et
Connexions → MCP ajoute des serveurs MCP. Consultez
Connexions. Ce guide présente l’API
sous-jacente à l’interface APIs.
Anatomie d’un outil
Deux éléments :- Le schéma — une définition de fonction au format OpenAI
(
{type: "function", function: {name, description, parameters}}) qui indique au LLM ce que fait l’outil et quels arguments il accepte. - L’endpoint — l’URL appelée par les serveurs de ThunderPhone lorsque le LLM décide d’utiliser l’outil. La requête est un POST JSON contenant dans son corps les arguments choisis par le LLM.
1. Choisir une stratégie de stockage
Intégré à l’agent
Attachez un outil ponctuel au tableau
tools de l’agent. Simple, mais
non réutilisable.Intégration enregistrée
Stockez l’outil comme intégration
réutilisable et associez-le à plusieurs agents. Recommandé pour tout outil utilisé
plus d’une fois.
2. Créer l’intégration
id renvoyé (un UUID).
3. Tester l’endpoint dans le sandbox
Avant d’associer l’intégration à un agent, envoyez une requête signée depuis les serveurs de ThunderPhone afin de confirmer la connectivité :Response
400 code=url_not_allowed.
4. Liez l’intégration à un agent
Associez-la viaintegration_ids lorsque vous créez ou mettez à jour un agent :
get_weather lorsque l’appelant pose une question
sur les conditions météo » — ou les découvrir implicitement à partir des
descriptions du schéma.
5. Implémentez le point de terminaison
Lorsque l’agent appelle l’outil, ThunderPhone envoie une requête POST signée à votreendpoint_url :
6. Testez la boucle
Lancez une session micro avec l’agent et posez la question traitée par votre outil (« Quel temps fait-il à 94110 ? »). La transcription de l’appel affiche le cycle complet :GET /v1/calls/{call_id}/transcript ;
le flux d’événements brut (avec le minutage de chaque entrée et les décalages audio) est disponible dans
GET /v1/calls/{call_id}/history.
Pièges courants
L’agent n’appelle jamais l’outil
L’agent n’appelle jamais l’outil
Le LLM décide en fonction de la description de l’outil. Si la question de l’appelant
ne correspond pas à la description, le modèle n’appellera pas
l’outil. Précisez la description (ajoutez des synonymes et des formulations
fréquentes) ou mentionnez-le explicitement dans le prompt de l’agent (« Lorsque l’
appelant pose une question sur la météo, utilisez
get_weather. »).L’outil renvoie trop de données
L’outil renvoie trop de données
Les réponses de plus de 6 kB sont tronquées dans l’aperçu de la transcription. Renvoyez
uniquement les champs dont le LLM a besoin — pas l’intégralité de votre enregistrement.
Délais d’expiration
Délais d’expiration
Les points de terminaison d’outils ont un délai d’expiration par défaut de 10 secondes. Si vous avez besoin de plus de temps,
gérez cela de manière asynchrone : renvoyez
{"status": "pending", "request_id": "..."}
et exposez le résultat via un appel d’outil distinct.Gestion des versions
Gestion des versions
Chaque
PATCH d’intégration crée une nouvelle révision. Consultez
GET /v1/integrations/{id}/versions
pour voir qui a modifié quoi. Si vous cassez le schéma d’un outil, vous pouvez
revenir manuellement en arrière en appliquant par PATCH un ancien instantané.Prochaines étapes
Référence des intégrations
CRUD, transfert, historique des versions.
Spécification des Function Tools
Grammaire complète du schéma JSON et contrat des endpoints signés.
Vérifier les signatures
Appliquez le modèle de signature des webhooks aux endpoints d’outils.
API de transcription + historique
Examinez l’aller-retour complet d’un appel d’outil.