Taxonomía de errores
Cuando una llamada al Gateway falla, recibes el error como una envoltura JSON uniforme:
{ "error": { "code": "validation_error", "message": "Params violate the capability input schema.", "hint": "Call describe(id) and resend params matching input_schema.", "retryable": false, "audit_id": "audit_123" }}Códigos de error
Sección titulada «Códigos de error»| Code | Significado para Agents |
|---|---|
validation_error |
La entrada no coincide con el esquema; leer describe y corregir |
auth_required |
Falta el Bearer-Key o no es válido |
scope_missing |
La Key no tiene el scope necesario |
not_found / version_not_found |
Verificar ID o versión |
not_implemented |
visible en el catálogo, pero no invocable |
dry_run_required |
primero enviar un dry_run exitoso con los mismos parámetros |
precondition_failed |
falta una precondición de negocio, no repetir a ciegas |
conflict |
El estado objetivo genera conflicto, leer nuevamente y decidir |
rate_limited |
respetar retry_after_seconds |
budget_exceeded |
aclarar Wallet, Budget o Policy |
capability_disabled |
Kill-Switch o bloqueo de Capability activo |
approval_required / approval_rejected |
se requiere Handover o decisión humana |
upstream_error |
un servicio externo/conectado no respondió correctamente |
internal_error |
reintentar más tarde; si se repite, proporcionar Audit-ID al soporte |
Regla de reacción
Sección titulada «Regla de reacción»retryable: true no significa «saturar inmediatamente». Reintenta con backoff, mismo Idempotency-Key y misma intención. Con retryable: false primero cambia la causa o deriva a una persona.
HTTP 412 en Onboarding
Sección titulada «HTTP 412 en Onboarding»HTTP 412 precondition_failed en el flujo inicial es un comportamiento esperado cuando aún falta una precondición de negocio.
| Endpoint | Cuándo se espera 412 | Reacción |
|---|---|---|
GET /org/current |
antes del Owner-Claim o, si agent_email está configurado, antes de la verificación del correo del Agent |
completar el paso OTP faltante, luego usar nuevamente como lectura de estado |
POST /keys/rotate |
antes del Owner-Claim o antes de la verificación requerida del correo del Agent | completar flujo inicial; no reemplazar una Key perdida mediante un nuevo Bootstrap |
POST /mcp/dry_run |
antes de OTPs requeridos o antes de Operator-Approval | hacer polling de /org/current hasta que operator_approval_status sea approved |
POST /mcp/invoke |
antes de OTPs requeridos o antes de Operator-Approval | no trabajar operativamente; aplicar regla de polling o Handover |
Reacción: Espera el código del Owner, llama a POST /owner-otp/claim y si agent_email está configurado, verifica adicionalmente POST /agent-otp/verify. Luego repite /org/current como lectura de estado. Si operator_approval_status permanece pending durante mucho tiempo, sigue la Solución de problemas.