Vai al contenuto
TerraLabTerraLabDocs

Aiuto

Markdown

Errori e limiti di frequenza

Gli errori arrivano in JSON con un codice error stabile e un message scritto per una persona:

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

Gestisci i casi in base a error, mai a message: la formulazione può cambiare.

Errori HTTP

StatoerrorSignificatoCosa fare
400invalid_inputIl body non è un oggetto JSON con gli argomenti del tool.Correggi il body della richiesta.
400bad_requestLa richiesta non ha potuto essere letta.Controlla il JSON e gli header.
401auth_requiredNon è stata inviata alcuna chiave né alcun token.Invia Authorization: Bearer <key>.
401invalid_tokenLa chiave o il token non sono validi, sono stati revocati o sono scaduti.Crea una nuova chiave, oppure lascia che l'agente acceda di nuovo.
401access_revokedL'app è stata scollegata dalla dashboard.Ricollega l'agente.
402balance_requiredLe chiamate gratuite del mese sono esaurite, oppure l'operazione è a pagamento, e il saldo è vuoto.Aggiungi fondi; la risposta contiene hint e account_url.
404not_foundNon esiste un percorso API di questo tipo.Controlla l'URL.
404unknown_toolNessun tool ha questo nome.Elenca i tool con GET /v1/tools.
405method_not_allowedI tool si chiamano con POST.Usa POST.
413too_largeIl body della richiesta è troppo grande.Invia un file più piccolo o meno elementi.
429rate_limitedTroppe richieste nell'ultimo minuto.Attendi i secondi indicati da Retry-After, poi riprova.
429daily_limitL'account ha raggiunto il suo limite di sicurezza giornaliero.Riprova il giorno dopo (UTC) o scrivi al supporto.
503unavailableIl servizio account non ha risposto.Riprova dopo i secondi indicati da Retry-After.

Errori dei tool

Un tool che viene eseguito ma non può rispondere restituisce 200 con isError: true. Il suo structuredContent contiene allora code, message e, nella maggior parte dei casi, un hint che dice cosa cambiare: un luogo che non ha trovato, un'area troppo grande, un paese che non copre.

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

Cosa viene conteggiato

Una chiamata che fallisce o non trova nulla non viene conteggiata: la chiamata gratuita o l'importo prelevato dal saldo viene restituito. Contano solo le risposte con un risultato.

Limiti di frequenza

Ogni account può fare 60 chiamate al minuto. Oltre, l'API risponde 429 con Retry-After: 60. Distribuisci nel tempo i job in batch e riprova con un ritardo crescente:

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

Riprova solo 429 e 503. Un 401 o un 402 non passeranno al secondo tentativo.

Aggiornato il 2026-10-27