Saltar al contenido principal
Listo tiene un servidor MCP. Cuando conectas tu asistente de IA a él, puedes pedirle con palabras normales que cotice un envío, lo reserve, le dé seguimiento, revise tu saldo o lea tu libro mayor, y lo hace con tu propia llave de API. Es una segunda puerta a la misma API: cada herramienta ejecuta el endpoint /v1/ que le corresponde, con las mismas reglas, los mismos errores y los mismos límites que ya conoces del resto de esta documentación. El servidor está en:
Habla MCP sobre HTTP con streaming (Streamable HTTP) y se autentica igual que la API: Authorization: Bearer <tu llave de API>. Iniciar sesión con el navegador (OAuth) todavía no está disponible.
Practica con una llave de pruebaUsa una llave de prueba la primera vez. Una llave de prueba solo ve y cambia cosas de prueba: el repartidor es simulado, el dinero es ficticio y no se reserva nada real (ve el modo de prueba). Cambia a una llave real cuando el asistente haga lo que esperas. La primera herramienta que conviene llamar es whoami, que dice para qué cuenta actúa la conexión y si la llave es de prueba o real.

Conecta tu cliente

Primero guarda tu llave en una variable de entorno, para que nunca quede en un archivo de configuración que podrías subir a un repositorio:

Claude Code

Usa las comillas simples tal como se muestran. Claude Code expande ${LISTO_API_KEY} cada vez que se conecta, así que la llave nunca se escribe en su archivo de configuración.

Cursor

Agrega esto a mcp.json (el .cursor/mcp.json del proyecto, o el global en tu carpeta de usuario):
Cursor lee ${env:LISTO_API_KEY} de su propio entorno, así que una llave exportada en una terminal no la ve un Cursor abierto desde el dock. Define la variable en el perfil de tu shell o en el entorno del sistema, y reinicia Cursor.

Codex

ChatGPT

El inicio de sesión para ChatGPT viene en camino. Necesita el inicio de sesión con navegador que este servidor todavía no ofrece, así que por ahora usa alguno de los clientes de arriba.

Qué puede hacer el asistente

Las herramientas, agrupadas por para qué sirven. Una herramienta marcada pide confirmación mueve o cobra dinero, o termina un servicio de pago, y funciona en dos pasos (siguiente sección).

Cuenta y saldo

Tiendas

Envíos

Retiros

Planes

Las tres herramientas de plan funcionan solo con llaves reales. Qué es un plan y cuándo se cobra está en plan y cobro.

Registros, eventos y webhooks

Las dos que envían actúan en el momento en que se llaman, con los mismos límites de los endpoints de la API que tienen detrás. El intento que provocan se lee con list_webhook_deliveries. Cómo usar todas estas para averiguar por qué no funciona una integración está en depurar tu integración.

Comentarios

Las listas son de 50 por página, igual que en la API: cuando una respuesta dice que hay más, el asistente regresa el cursor next para leer la página siguiente.

Nada mueve dinero hasta que lo digas

Cada herramienta marcada pide confirmación funciona en dos pasos, y al asistente se le indica que se detenga entre ellos y te muestre lo que está por pasar:
  1. La vista previa. El asistente llama la herramienta con los detalles. No pasa nada. Recibe lo que pasaría (en una reserva: el precio, la tienda, el destino) y un confirmation_token, y te lo muestra.
  2. La confirmación. Solo cuando tú apruebas, llama la herramienta otra vez con exactamente los mismos argumentos más confirm: true y el token. Ese es el momento en que se mueve el dinero.
Qué lo hace seguro:
  • Reservar siempre usa una cotización. create_delivery exige el quote_id de quote_delivery, así que el precio que te mostraron es el precio que se reserva. Si la cotización venció o ya se usó, la reserva se rechaza y el asistente cotiza de nuevo.
  • Un token sirve una vez y por diez minutos. Pertenece a tu llave, a esa herramienta y a esos argumentos exactos: si cambias el monto o el envío, el token se rechaza, y el error no lo gasta. Un token que nadie usó se rechaza como confirmation_expired cuando pasan los diez minutos: pide una vista previa nueva.
  • Confirmar de nuevo nunca actúa dos veces. Si se confirma el mismo token otra vez, por ejemplo porque el asistente reintentó tras una conexión caída, devuelve el primer resultado y no reserva, cancela ni retira nada por segunda vez. Esa repetición se mantiene 24 horas después de que el token venció. Pasado ese tiempo el registro ya no existe y confirmar responde confirmation_not_found: que el asistente lea primero el recurso (por ejemplo con get_delivery) antes de pedir una vista previa nueva.
  • Una llave de solo lectura no recibe vista previa. Con una llave de solo lectura, una herramienta que pide confirmación se rechaza desde el primer paso con read_only_key y no se emite ningún token, porque la confirmación solo podría fallar. Enviar comentarios con submit_feedback sí sigue funcionando.
Deja activa la aprobación de tu propio clienteLos dos pasos son la protección de Listo. Tu cliente tiene la suya: Claude Code, Cursor y Codex pueden preguntarte antes de ejecutar una herramienta. Déjala activa, al menos para las herramientas que piden confirmación, para que una persona vea cada llamada que puede mover dinero y no solo la vista previa.

Límites y registros

  • Una llamada a una herramienta es una petición a la API contra los límites de tu llave, los mismos de siempre (ve sal a producción). Al pasarte de un límite, el asistente recibe rate_limited. Cualquier error que le pida esperar (rate_limited, resend_limit_reached y test_webhook_limit_reached) trae retry_after_seconds, los segundos que debe esperar antes de reintentar la misma llamada.
  • Cada llamada a una herramienta aparece en tus registros de la API como cualquier petición /v1/, excepto submit_feedback, que no llama a ninguna ruta /v1/, y una vista previa que se le rechazó a una llave de solo lectura, que nunca llega a una.
  • Los errores son los de la API: el asistente ve el mismo code y el mismo retryable que verías tú, y decide con ellos de la misma manera. Cada error trae además un doc_url y un request_id, que es el X-Request-Id de esa respuesta de /mcp.

Cuando las herramientas no alcanzan

Si el asistente necesita algo que ninguna herramienta ofrece, puede decirlo con submit_feedback. Así sabemos qué agregar después.