Saltar al contenido
TerraLabTerraLabDocs

Ayuda

Markdown

Errores y límites de uso

Los errores llegan en JSON con un código error estable y un message escrito para 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." }

Ramifica según error, nunca según message: el texto puede cambiar.

Errores HTTP

EstadoerrorSignificadoQué hacer
400invalid_inputEl cuerpo no es un objeto JSON con los argumentos de la herramienta.Corrige el cuerpo de la solicitud.
400bad_requestNo se pudo leer la solicitud.Revisa el JSON y las cabeceras.
401auth_requiredNo se envió ninguna clave ni token.Envía Authorization: Bearer <key>.
401invalid_tokenLa clave o el token no es válido, ha sido revocado o ha caducado.Crea una clave nueva, o deja que el agente vuelva a iniciar sesión.
401access_revokedLa aplicación se desconectó desde el panel.Vuelve a conectar el agente.
402balance_requiredLas llamadas gratuitas del mes se han agotado, o la operación es de pago, y el saldo está vacío.Añade fondos; la respuesta incluye hint y account_url.
404not_foundEsa ruta de la API no existe.Revisa la URL.
404unknown_toolNinguna herramienta tiene ese nombre.Lista las herramientas con GET /v1/tools.
405method_not_allowedLas herramientas se llaman con POST.Usa POST.
413too_largeEl cuerpo de la solicitud es demasiado grande.Envía un archivo más pequeño o menos elementos.
429rate_limitedDemasiadas solicitudes en el último minuto.Espera los segundos indicados en Retry-After y reintenta.
429daily_limitLa cuenta alcanzó su tope diario de seguridad.Reintenta al día siguiente (UTC) o escribe a soporte.
503unavailableEl servicio de cuentas no respondió.Reintenta pasados los segundos indicados en Retry-After.

Errores de herramienta

Una herramienta que se ejecuta pero no puede responder devuelve 200 con isError: true. Su structuredContent incluye entonces code, message y, casi siempre, un hint que indica qué cambiar: un lugar que no encontró, un área demasiado grande, un país que no cubre.

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

Qué se cuenta

Una llamada que falla o no encuentra nada no se cuenta: la llamada gratuita o el importe descontado del saldo se devuelve. Solo cuentan las respuestas con resultado.

Límites de uso

Cada cuenta puede hacer 60 llamadas por minuto. Superado el límite, la API responde 429 con Retry-After: 60. Reparte los trabajos por lotes en el tiempo y reintenta con una espera creciente:

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

Reintenta solo 429 y 503. Un 401 o un 402 no se resolverá con un segundo intento.

Actualizado el 2026-10-27