Ir a la documentación
DocumentaciónSolución de problemas

Solución de problemas

Encuentra dónde se detuvo una llamada, lee su código de respuesta y aplica la solución.

En esta página

Cada rechazo lleva un código y una frase que dice qué hacer. Cuando tiene que actuar una persona, lleva además un enlace a la página que lo resuelve.

El resultado de una herramienta MCP pone el código en code, junto a instruction. En /p/ un error llega como error.code y error.instruction, y la consulta de una llamada terminada que falló trae error_code. La API de la consola responde con error.code y error.request_id.

Encuentra la llamada

  • Cada llamada tiene un call_id que empieza por sp_c_. Abre https://my.sallyport.cloud/activity?call=<call_id> para verla.
  • La llamada muestra Agente, Conexión, Versión de la clave, Regla, Registro y una Cronología de lo ocurrido.
  • Escribe a Configuración, Soporte con el call_id y, para un error de la API de la consola, con su request_id.

Mira exactamente qué envió el agente y qué volvió

Abre Actividad, elige la llamada y pulsa Abrir la solicitud y la respuesta completas. La llamada aparece tal como fue, sin nada oculto.

  • La solicitud: método, dirección completa, cada cabecera y el cuerpo. Para SSH el comando, para archivos la ruta y el contenido, para una base de datos la sentencia y sus valores, para el correo el mensaje entero.
  • Una cabecera que el agente envió en el lugar de la clave, como su propio PRIVATE-TOKEN, sigue en la lista con su valor, tachada y marcada Sustituida por la clave de la conexión, no enviada. La clave que añadió Sallyport nunca aparece.
  • La respuesta: estado, cada cabecera y el cuerpo. Una respuesta larga se carga entera hasta 1 MiB, y Descargar la respuesta completa la guarda toda.
  • Las solicitudes se guardan lo mismo que el historial de llamadas, 180 días por defecto. Las respuestas y los cuerpos de solicitud de más de 1 MiB se guardan 30 días, y después la llamada lo indica.

Falta un servicio en las herramientas del agente

  • Pide al agente que llame a list_access. Muestra cada servicio que el agente puede usar y qué espera a una persona.
  • Una clave nueva llega a cada agente activo de su espacio de trabajo y su entorno. Un agente de Pruebas nunca ve una clave de Producción.
  • Una conexión quitada de la lista Acceso de un agente sigue quitada. Devuélvela con Añadir conexión.
  • Con más de 40 herramientas, las herramientas de los servidores MCP remotos salen de la lista. El agente las encuentra con search_tools y las ejecuta con call.
  • Un host fuera de la lista funciona con http_request. La primera llamada devuelve un enlace donde añades su clave.

Códigos de respuesta

CódigoHTTPQué pasóQué hacer
AUTH_FAILED401El token es incorrecto o está revocado, o no es un token de agente.Crea uno con Nuevo token en Tokens, en la página del agente.
SUSPENDED423El agente, su espacio de trabajo o la organización está en pausa.Pulsa Reanudar agente en su página, o Reanudar llamadas en Configuración, Zona de peligro.
SOURCE_IP_NOT_ALLOWED403La llamada llegó desde una dirección fuera de la lista del agente.Edita Direcciones IP permitidas (opcional) en Límites, en la página del agente.
ACCESS_REQUEST_CREATED404El agente no tiene clave para este host.Abre approve_url y añade la clave. El agente repite la llamada.
SERVICE_NOT_CONNECTED424Nadie ha iniciado sesión en una conexión OAuth. No se envió nada.Abre connect_url e inicia sesión. El agente repite la llamada.
APPROVAL_PENDING202Una persona aún no ha respondido.Responde en approve_url. El agente continúa con call_id.
APPROVAL_DENIED403Una persona rechazó. No se ejecutó nada.El agente actúa según el motivo y no repite.
APPROVAL_EXPIRED410Nadie respondió a tiempo. No se ejecutó nada.Repite sin call_id para preguntar de nuevo.
APPROVAL_SUPERSEDED409La regla o la clave cambió después de abrirse la tarjeta.Repite sin call_id.
CALL_CONFLICT409Otra llamada ya usó esta aprobación.Haz una llamada nueva.
CALL_NOT_FOUND404El call_id es de otro agente o no existe.Haz una llamada nueva.
POLICY_DENY403La regla del agente para esta clase es Denegado.approve_url abre la página del agente. Cambia la clase en su lista Acceso.
PATH_OUT_OF_PREFIX400La ruta queda fuera de lo que cubre la conexión.Escribe la ruta completa de la documentación del servicio.
BAD_REQUEST400La llamada está mal formada, y reason dice cómo.El texto nombra la solución. La lista de abajo cubre los motivos que corrige una persona.
IDEMPOTENCY_CONFLICT409Una misma idempotency_key llegó con argumentos distintos.Usa una clave nueva.
IN_FLIGHT409La misma llamada ya se está ejecutando.Espera retry_after_ms y repite para obtener su resultado.
ALREADY_EXECUTED200Una repetición recibió el resultado de la primera llamada. No se volvió a llamar al servicio.Para ejecutarla de nuevo ahora, repite con una idempotency_key nueva.
RATE_LIMITED429Demasiadas llamadas en poco tiempo.Espera retry_after_ms y repite.
PLAN_LIMIT200Se agotaron las llamadas mensuales del plan. Las llamadas siguen funcionando, y los resultados MCP llevan este aviso.Abre Configuración, Plan y facturación.
UPSTREAM_ERROREl estado del servicio, o 424El servicio respondió con un error o no respondió.Lee status y el cuerpo. La tabla siguiente cubre la falta de respuesta.
UPSTREAM_TOO_LARGE424La respuesta superó el límite de tamaño.Acota la petición o sube Respuesta más grande del servicio en Límites, en la página de la conexión, hasta 512 MiB.
EGRESS_DENIED424La dirección es privada (private_range), es el propio Sallyport (self_host) la red de Sallyport no la alcanza (pin_mismatch) o la clave de la conexión no se guardó para ella (key_elsewhere). No se envió nada.Con private_range o self_host, usa una dirección pública. Con pin_mismatch, envía a soporte el call_id. Con key_elsewhere, pide a quien es dueño de la clave que la añada de nuevo para esta dirección.
OUTCOME_UNKNOWN424Sallyport no sabe si el servicio actuó.Comprueba el servicio antes de cualquier repetición.
UPGRADE_NOT_SUPPORTED426Un upgrade a un protocolo que no es WebSocket.Envía la petición sin Upgrade, o abre un WebSocket.
WEBSOCKET_REQUIRED426Una consulta de una sesión WebSocket aprobada, que solo corre sobre un WebSocket.Abre de nuevo el WebSocket con X-Sallyport-Call-Id.
UNAVAILABLE503Sallyport no está disponible por un momento.Repite tras retry_after_ms.
INTERNAL500Un fallo de Sallyport. Ya está registrado.Envía el call_id a soporte.

Cuando el servicio no respondió

UPSTREAM_ERROR con un reason significa que no llegó respuesta. side_effect es none cuando nada llegó al servicio y unknown cuando pudo llegar.

Motivoside_effectQué hacer
dnsnoneRepite en unos segundos. Si sigue fallando, revisa el nombre del host.
connectnoneRevisa la dirección y repite.
tlsnoneRevisa la dirección. Repetir falla igual hasta que cambie el certificado.
authenticationnoneSolo en llamadas SSH. El servidor rechazó la clave o el usuario. Revisa ambos en la conexión.
host_keynoneSolo en llamadas SSH. La clave del servidor ya no coincide con la fijada. Confírmala con el dueño del servidor y consulta Comandos SSH.
ttfbunknownEl servicio no empezó a responder a tiempo. Compruébalo antes de cualquier repetición.
timeoutunknownEl servicio no terminó a tiempo. Compruébalo antes de cualquier repetición.
readunknownLa conexión se cortó mientras llegaba la respuesta. Comprueba el servicio antes de cualquier repetición.

Errores de petición que corrige una persona

La mayoría de los motivos de BAD_REQUEST los corrige el agente, y el texto le dice cómo. Estos necesitan a una persona:

  • not_https con console_url: la dirección de la conexión empieza por http://. Cámbiala a https:// en la página de la conexión.
  • mcp_binding, database_binding o email_binding: una llamada por /p/ apunta a un servidor MCP, a una base de datos o a un buzón. Llama a sus herramientas en el endpoint MCP. sftp_operation: una llamada de archivos no nombra una sola operación con claridad; detail dice qué cambiar.
  • missing_host: la conexión cubre todos los hosts de un servicio, así que la llamada debe nombrar uno. En /p/, pon el host justo después del ID de la conexión.

Errores de la API de la consola

  • FORBIDDEN nombra el rol que necesita en details.required_role. Exportar el registro requiere un propietario, o un administrador o auditor de toda la organización sin un rol más limitado en ningún espacio de trabajo.
  • Una clave API no puede responder una tarjeta: una decisión necesita a una persona.
  • VALIDATION_FAILED nombra cada campo incorrecto en details.fields.
  • AUTH_FAILED significa que la sesión terminó o que la clave API fue revocada.

Cambia una clave de servicio sin cortes

  • Crea una clave nueva en el proveedor mientras la actual sigue funcionando.
  • Abre la clave en Claves, pulsa Rotar clave, pega el valor nuevo y pulsa Guardar la clave nueva.
  • Haz una llamada a través de Sallyport. Cuando funcione, revoca la clave antigua en el proveedor.