Aller au contenu

Aide

Markdown

Erreurs et limites de débit

Les erreurs arrivent en JSON avec un code error stable et un message écrit pour une personne :

{ "error": "auth_required", "message": "This tool needs a TerraLab account. Connect TerraLab in your assistant's settings; see https://terra-lab.ai/mcp." }

Appuyez-vous sur error, jamais sur message : la formulation peut changer.

Erreurs HTTP

StatuterrorSignificationQue faire
400invalid_inputLe corps n'est pas un objet JSON d'arguments d'outil.Corrigez le corps de la requête.
400bad_requestLa requête n'a pas pu être lue.Vérifiez le JSON et les en-têtes.
401auth_requiredAucune clé ni aucun token n'a été envoyé.Envoyez Authorization: Bearer <key>.
401invalid_tokenLa clé ou le token est invalide, révoqué ou expiré.Créez une nouvelle clé, ou laissez l'agent se reconnecter.
401access_revokedL'application a été déconnectée depuis le tableau de bord.Reconnectez l'agent.
402balance_requiredLes appels gratuits du mois sont épuisés, ou l'opération est payante, et le solde est vide.Ajoutez des fonds ; la réponse contient hint et account_url.
404not_foundCe chemin d'API n'existe pas.Vérifiez l'URL.
404unknown_toolAucun outil ne porte ce nom.Listez les outils avec GET /v1/tools.
405method_not_allowedLes outils s'appellent avec POST.Utilisez POST.
413too_largeLe corps de la requête est trop volumineux.Envoyez un fichier plus petit ou moins d'objets.
429rate_limitedTrop de requêtes dans la dernière minute.Attendez Retry-After secondes, puis réessayez.
429daily_limitLe compte a atteint son plafond de sécurité quotidien.Réessayez le lendemain (UTC) ou écrivez au support.
503unavailableLe service de compte n'a pas répondu.Réessayez après Retry-After secondes.

Erreurs d'outil

Un outil qui s'exécute mais ne peut pas répondre renvoie 200 avec isError: true. Son structuredContent contient alors code, message et, la plupart du temps, un hint qui dit quoi changer : un lieu introuvable, une zone trop grande, un pays qu'il ne couvre pas.

{
  "structuredContent": { "code": "...", "message": "...", "hint": "..." },
  "content": [{ "type": "text", "text": "..." }],
  "isError": true
}

Ce qui est compté

Un appel qui échoue ou ne trouve rien n'est pas compté : l'appel gratuit ou le montant prélevé sur le solde est restitué. Seules les réponses avec un résultat comptent.

Limites de débit

Chaque compte peut faire 60 appels par minute. Au-delà, l'API répond 429 avec Retry-After: 60. Étalez les traitements par lots dans le temps, et réessayez avec un délai croissant :

import time
import requests

def call(url, headers, body, attempts=5):
    for attempt in range(attempts):
        response = requests.post(url, headers=headers, json=body, timeout=120)
        if response.status_code not in (429, 503):
            return response
        time.sleep(int(response.headers.get("Retry-After", 2 ** attempt)))
    return response

Ne réessayez que les 429 et 503. Un 401 ou un 402 ne passera pas au second essai.

Mis à jour le 2026-10-27