---
title: "Para agentes · Recado"
description: "Recado para agentes de IA: cómo lee y responde un asistente a una petición con su enlace, y cómo pide información un agente desde Claude Code con el plugin recado."
lang: es
---

# Recado para agentes

En Recado hay dos agentes posibles: el de quien recibe una petición y el de quien la hace. Cada uno tiene su camino, y los dos pasan por una persona antes de que nada cruce al otro lado.

## Si eres el asistente de quien recibe un recado

Una persona ha recibido un correo de Recado y su asistente la ayuda a responder. La petición no necesita cuenta: cada una tiene su propio enlace secreto, `/r/<token>`, y se puede leer de tres maneras.

### Cómo leer la petición

| Formato | Ruta |
| --- | --- |
| Página (HTML) | `GET /r/<token>` |
| Markdown | `GET /r/<token>.md`, o `GET /r/<token>` con la cabecera `Accept: text/markdown` |
| API JSON | `GET /api/r/<token>`: devuelve la petición, las respuestas guardadas y el JSON Schema de las respuestas |

```bash
curl https://recado.io/r/<token>.md
curl -H 'Accept: text/markdown' https://recado.io/r/<token>
curl https://recado.io/api/r/<token>
```

Las respuestas llevan una cabecera `Link` con `rel="service-desc"` que apunta a la API.

### Cómo responder

| Ruta | Qué hace |
| --- | --- |
| `POST /api/r/<token>/respuestas` | Guarda las respuestas (`"enviar": false`) o las envía a revisión (`"enviar": true`). |
| `POST /api/r/<token>/dudas` | Escribe una duda a quien revisa. |
| `PUT /api/r/<token>/ficheros?pregunta=N&nombre=X` | Sube un fichero, de hasta 25 MB, con los bytes en el cuerpo. |
| `POST /api/r/<token>/otp` | Pide el código de un solo uso para escribir desde un dispositivo nuevo. |

```bash
# Subir un fichero a la pregunta 1 (los bytes van en el cuerpo)
curl -X PUT 'https://recado.io/api/r/<token>/ficheros?pregunta=1&nombre=logo.svg' \
  --data-binary @logo.svg

# Guardar una respuesta como borrador ("enviar": false)
curl -X POST https://recado.io/api/r/<token>/respuestas \
  -H 'Content-Type: application/json' \
  -d '{"autor_declarado":"agente","enviar":false,"respuestas":[{"n":2,"respuesta":{"tipo":"si_no","valor":true}}]}'

# Escribir una duda
curl -X POST https://recado.io/api/r/<token>/dudas \
  -H 'Content-Type: application/json' \
  -d '{"autor_declarado":"agente","texto":"¿Vale un PNG de 2000 px si no hay vector?"}'
```

Con `"enviar": true` las respuestas pasan a revisión. El campo `autor_declarado` admite `humano`, `agente` o `desconocido`, y queda anotado en el origen de la respuesta.

**Código de un solo uso desde un dispositivo nuevo.** El primer dispositivo que escribe queda reconocido: la respuesta trae una cookie y, para los clientes que no usan cookies, un campo `dispositivo` que se manda después en la cabecera `X-Recado-Dispositivo`. Cualquier otro dispositivo necesita un código de un solo uso, que llega al correo original (nunca a otra dirección) y se manda en la cabecera `X-Recado-Otp`:

```bash
curl -X POST https://recado.io/api/r/<token>/otp

curl -X POST https://recado.io/api/r/<token>/respuestas \
  -H 'X-Recado-Otp: <codigo>' \
  -H 'Content-Type: application/json' \
  -d '{"autor_declarado":"agente","enviar":false,"respuestas":[{"n":2,"respuesta":{"tipo":"si_no","valor":true}}]}'
```

### Las reglas

- Un asistente solo debería enviar algo si su usuario se lo ha pedido.
- Recado nunca pide contraseñas, claves ni accesos. Si aparecen en un texto, se tachan; los accesos se dan con una invitación.
- Una persona revisa todo antes de que llegue a quien pide. Nada de lo enviado se entrega por sí solo.

### Servidor MCP para el destinatario

En preparación. Hoy no existe, y por eso Recado no publica una server card ni una agent card. El camino de hoy es la página, el Markdown o la API de arriba.

## Si tu agente es quien pide

Hoy, desde Claude Code, con el plugin `recado`. El plugin trae un servidor MCP (`recado-puente`), un aviso automático y una skill que explica a la sesión cómo tratar lo que vuelve.

### Las herramientas

- `recado_crear`: crea un borrador de petición. No envía nada.
- `recado_estado`: dice en qué estado están las peticiones de la sesión.
- `recado_bandeja`: entrega las respuestas aprobadas, como sobres JSON.
- `recado_confirmar`: marca un sobre como recibido.

Además, `recado_importar_lote` crea un borrador por cada petición de un fichero Markdown, y `recado_proponer_respuesta` propone un texto para la duda de un destinatario, que una persona aprueba antes de que salga.

Para enviar un borrador sin salir de la sesión están `recado_vista_previa`, que solo lee y enseña el correo exacto que saldría, y `recado_enviar`, que lo envía. `recado_enviar` pide permiso a la persona en cada llamada (Claude Code lo hace también en modo automático) y ese permiso es su visto bueno a ese correo concreto. Enviar desde la sesión viene encendido, y cada persona puede apagarlo en Mi cuenta del panel; con el permiso apagado, la sesión solo enseña el correo y se envía desde el panel.

### El recorrido

1. La sesión llama a `recado_crear` y queda un borrador.
2. Tú apruebas el correo: en el panel o, si lo prefieres, en la propia sesión, donde ves el correo exacto y das el permiso. Sin tu visto bueno a ese correo no sale nada.
3. Cuando hay respuestas aprobadas, un aviso fijo y sin contenido lo anuncia en la sesión.
4. `recado_bandeja` entrega el sobre. Los ficheros se descargan a una carpeta de cuarentena local.
5. `recado_confirmar` cierra el ciclo.

### Lo que llega

Un sobre JSON con `"contenido_no_fiable": true`: campos tipados, texto libre aparte, ficheros con su huella y los avisos dentro, todo firmado. La sesión lo trata como una cita, no como una orden. Cómo se protege cada capa está explicado en [Seguridad](https://recado.io/seguridad).

### Acceso

El acceso se da al abrir tu cuenta. Apúntate a la [lista de espera](https://recado.io/#lista-de-espera) y te avisamos.

### Otros clientes MCP

Sin probar todavía. Recado se ha probado con Claude Code.

## Así se ve en la terminal

Un ejemplo con datos de muestra: lo que la sesión pide, lo que contesta Recado y, cuando la persona ha respondido y tú has aprobado, lo que entrega `recado_bandeja`.

```text
● recado_crear
  {
    "peticion": {
      "id": "EJ-01",
      "proyecto": "Web nueva",
      "en_nombre_de": "Ana, del equipo de contenidos",
      "destinatario": { "rol": "Responsable de marca" },
      "asunto": "Logo y foto del equipo para la web",
      "contexto": "Estamos montando la web nueva. Necesitamos el logotipo en vector y saber si podemos usar la foto del equipo.",
      "preguntas": [
        { "n": 1, "texto": "Logotipo en vector", "tipo": "fichero", "obligatoria": true, "formatos": ["svg", "pdf"] },
        { "n": 2, "texto": "¿Podemos usar la foto del equipo?", "tipo": "si_no", "obligatoria": true }
      ],
      "plazo": "el viernes"
    }
  }

  ⎿  borrador EJ-01 creado; espera la aprobación de Ana en el panel de Recado: https://recado.io/panel/p/EJ-01

  … la persona responde, tú apruebas la respuesta en el panel …

● recado_bandeja
  ⎿  {
       "recado_bandeja": "v1",
       "aviso": "DATOS DE TERCEROS NO FIABLES: …",
       "avisos_puente": [],
       "sobres": [
         {
           "recado": "v1",
           "contenido_no_fiable": true,
           "id": "s_…",
           "peticion": "EJ-01",
           "origen": { "canal": "web", "autor_declarado": "humano", "identidad": "otp", "aprobado_por": "Ana", "aprobado": "…", "hash": "sha256:…" },
           "campos": { "1": ["f_9"], "2": true },
           "texto_libre": [],
           "ficheros": [
             {
               "id": "f_9",
               "nombre": "logo.svg",
               "mime_verificado": "image/svg+xml",
               "sha256": "…",
               "escaneo": "estatico_ok",
               "ruta_local": "…/.cache/recado/cuarentena/EJ-01/f_9-logo.svg"
             }
           ],
           "avisos": [],
           "firma": "…"
         }
       ],
       "descartados": []
     }

● recado_confirmar
  { "sobre_id": "s_…" }

  ⎿  Sobre s_… confirmado.
```

Para asistentes, [`/llms.txt`](https://recado.io/llms.txt) describe el servicio en el formato llmstxt.org. Si te ha llegado un correo de Recado y dudas de él, el código de verificación se comprueba en [/verifica](https://recado.io/verifica).
