Very Simple Notes

Notas Markdown limpias en carpetas, con archivos, que tú y tu agente de IA mantienen juntos. MCP remoto con OAuth; aplicaciones para iPhone, iPad y Mac.

Servidor MCP alojado

npx add-mcp 'https://verysimplenotes.com/mcp'

Se instala en Claude Code, Codex, Cursor y más

Documentación

Very Simple Notes es una aplicación sencilla de notas. Una persona escribe en la aplicación. Su agente se conecta y lee y escribe las mismas notas: listas de la compra, recetas, planes de entrenamiento, lo que surja. Hay dos formas de acceder, y ambas usan el mismo inicio de sesión y el mismo token personal.

  • Servidor MCP: https://verysimplenotes.com/mcp. Para Claude y cualquier otro cliente MCP. Nada que instalar.
  • API REST: https://verysimplenotes.com/api/v1. Para tu propio código.

Una copia breve de esta página está en /llms.txt.

Primeros pasos en Claude

Añade Very Simple Notes a Claude una vez, y Claude podrá leer y escribir tus notas en cualquier chat.

  1. En Claude, abre Personalizar y luego Conectores.
  2. Pulsa + y elige Añadir conector personalizado.
  3. Nómbralo Very Simple Notes y pega https://verysimplenotes.com/mcp. Pulsa Añadir.
  4. Pulsa Conectar e inicia sesión con Apple o Google, la misma cuenta que en la aplicación.
  5. Pide a Claude algo como "pon leche y pan en mi lista de la compra".

Funciona igual en Claude en la web, en el escritorio y en el móvil. Los planes de Claude pueden añadir conectores personalizados, y el plan gratuito permite uno. Puedes ver y revocar la conexión en la aplicación, en Cuenta.

En Claude Code, añádelo desde la terminal y luego ejecuta /mcp para iniciar sesión:

claude mcp add --transport http very-simple-notes https://verysimplenotes.com/mcp

Servidor MCP y herramientas

URL del servidor: https://verysimplenotes.com/mcp (HTTP Streamable). Cualquier cliente MCP que admita OAuth se conecta por sí solo: una llamada sin token responde 401 y apunta a /.well-known/oauth-protected-resource, el cliente se registra y envía a la persona a iniciar sesión. Un token de la sección Cuenta de la aplicación también funciona, como Authorization: Bearer TOKEN.

  • list_folders: las carpetas de la persona, con cuántas notas contiene cada una.
  • create_folder: una carpeta nueva, cuando la persona lo pide o nada encaja.
  • list_notes: lista las notas en una carpeta o en todas, activas, archivadas o todas.
  • read_note: una nota con su cuerpo en Markdown, su carpeta y sus archivos.
  • create_note: una nota nueva en una carpeta, con título y cuerpo en Markdown.
  • edit_note: cambia el título, todo el cuerpo, la estrella, o muévela a otra carpeta.
  • archive_note: archiva o desarchiva una nota.
  • read_file: uno de los archivos de la nota por número; un archivo de texto vuelve como texto, una imagen como imagen.
  • attach_file: añade un archivo a la nota, como texto o base64; recibe el siguiente número.
  • delete_note: elimina una nota. Se mueve a Eliminados recientemente en la aplicación de la persona, con sus archivos, y se puede restaurar allí durante 30 días.

Las herramientas siguen las mismas reglas que la API REST de abajo: leer siempre funciona, y escribir requiere la suscripción activa de la persona.

Inicio rápido con la API REST

Si eres un agente que actúa por una persona: dile que quieres conectarte a Very Simple Notes y luego haz esto.

  1. Si puedes hablar MCP, usa el servidor MCP en su lugar; gestiona el inicio de sesión por ti.
  2. Si tienes un client_id de OAuth, abre la URL de autorización (abajo). Ellos inician sesión con Apple o Google. Tú intercambias el código por un token.
  3. Si no lo tienes, pídeles que abran Very Simple Notes, vayan a Cuenta, creen un token y te lo peguen.
  4. Llama a GET /api/v1/me con ese token. Si devuelve a la persona, estás conectado.
  5. Lista las carpetas y luego lista, lee, crea y edita las notas que contienen. Ellos escriben en el móvil. Tú también escribes.
curl https://verysimplenotes.com/api/v1/me \
  -H "Authorization: Bearer TOKEN"

Autenticación

Cada llamada a /api/v1 necesita un token de API personal como token Bearer. El token está limitado a una persona. Pueden revocarlo en la aplicación, en Cuenta. Un token pegado, y un token de una aplicación que no se actualiza, no caduca por sí solo; una aplicación que se registró para tokens de actualización recibe uno que dura una hora y lo renueva.

Authorization: Bearer TOKEN

Escribir (crear y editar) requiere una suscripción activa. Leer no. Una suscripción caducada responde 402 en las escrituras, con subscription_required.

GET /me

Comprobación de conexión. A quién pertenece este token.

GET https://verysimplenotes.com/api/v1/me
Authorization: Bearer TOKEN
{
  "id": "…",
  "email": "…",
  "name": "…"
}

DELETE /me

Revoca este token. Llámalo antes de guardar uno nuevo al reconectar, para que Cuenta no se llene de filas muertas. Un token que ya no existe responde 401, que es el mismo estado final.

DELETE https://verysimplenotes.com/api/v1/me
Authorization: Bearer TOKEN
{ "ok": true }

GET /folders

Las carpetas de la persona, con la actividad más reciente primero. Cada nota vive exactamente en una. noteCount cuenta las notas activas; colors es la paleta que puede usar una carpeta nueva.

GET https://verysimplenotes.com/api/v1/folders
Authorization: Bearer TOKEN
{
  "folders": [
    {
      "id": "…",
      "name": "Recipes",
      "color": "#4F8FD6",
      "noteCount": 12,
      "createdAt": "2026-09-01T09:00:00.000Z",
      "updatedAt": "2026-09-11T12:00:00.000Z"
    }
  ],
  "colors": ["#F2724B", "#E0B252", "…"]
}

POST /folders

Crea una carpeta. Cuerpo { name, color? }. Crea una solo cuando la persona lo pida o ninguna carpeta encaje. Requiere una suscripción activa. Devuelve la carpeta, 201.

POST https://verysimplenotes.com/api/v1/folders
Authorization: Bearer TOKEN
Content-Type: application/json

{ "name": "Training" }

GET /notes

Lista las notas. Consulta folder (un id o el nombre exacto) para una carpeta, todas las carpetas sin él, y filter=active|archived|all (por defecto active). Primero las destacadas, luego la edición más reciente. preview es un fragmento corto en texto plano del cuerpo, no el Markdown completo.

GET https://verysimplenotes.com/api/v1/notes?folder=Recipes&filter=active
Authorization: Bearer TOKEN
{
  "notes": [
    {
      "id": "…",
      "folderId": "…",
      "title": "Shopping",
      "preview": "Milk",
      "archived": false,
      "important": false,
      "fileCount": 0,
      "updatedAt": "2026-09-11T12:00:00.000Z"
    }
  ]
}

GET /notes/:id

Una nota, incluido el body en Markdown, su carpeta y sus archivos.

GET https://verysimplenotes.com/api/v1/notes/NOTE_ID
Authorization: Bearer TOKEN
{
  "id": "…",
  "folderId": "…",
  "title": "Shopping",
  "body": "- [ ] Milk\n- [ ] Eggs",
  "archived": false,
  "important": false,
  "fileCount": 1,
  "files": [
    {
      "id": "…",
      "number": 1,
      "name": "receipt.jpg",
      "contentType": "image/jpeg",
      "size": 182400,
      "url": "/api/v1/notes/NOTE_ID/files/1",
      "author": { "kind": "user", "name": "Maja" },
      "createdAt": "2026-09-11T12:00:00.000Z"
    }
  ],
  "createdAt": "2026-09-01T09:00:00.000Z",
  "updatedAt": "2026-09-11T12:00:00.000Z"
}

POST /notes

Crea una nota. Cuerpo { title?, body?, folder? }, donde folder es un id o el nombre exacto; sin él, la nota va a la carpeta más antigua. Los campos que faltan se convierten en cadenas vacías. Requiere una suscripción activa.

POST https://verysimplenotes.com/api/v1/notes
Authorization: Bearer TOKEN
Content-Type: application/json

{ "title": "Dinner", "body": "- [ ] Roast a chicken", "folder": "Recipes" }

Devuelve la nota completa, 201.

PATCH /notes/:id

Actualiza una nota. Envía solo los campos que quieras cambiar: title, body, archived, important, folder (mueve la nota). Requiere una suscripción activa.

PATCH https://verysimplenotes.com/api/v1/notes/NOTE_ID
Authorization: Bearer TOKEN
Content-Type: application/json

{ "body": "- [x] Roast a chicken" }

Devuelve la nota completa.

POST /notes/:id/archive

Oculta una nota de la lista activa. Igual que PATCH con archived: true.

POST https://verysimplenotes.com/api/v1/notes/NOTE_ID/archive
Authorization: Bearer TOKEN

POST /notes/:id/unarchive

Devuelve una nota archivada a la lista activa.

POST https://verysimplenotes.com/api/v1/notes/NOTE_ID/unarchive
Authorization: Bearer TOKEN

DELETE /notes/:id

Elimina una nota. Se mueve, con sus archivos, a Eliminados recientemente en la aplicación de la persona y desaparece de cualquier llamada aquí. La persona puede restaurarla allí durante 30 días, o eliminarla definitivamente; después se purga. Ninguna llamada aquí vacía Eliminados recientemente.

DELETE https://verysimplenotes.com/api/v1/notes/NOTE_ID
Authorization: Bearer TOKEN
{ "ok": true, "recentlyDeleted": true, "deletedAt": "2026-10-02T09:00:00.000Z", "purgesAt": "2026-11-01T09:00:00.000Z" }

Archivos

Una nota puede llevar archivos: una foto, un recibo, un PDF, un archivo Markdown o JSON. Cada uno recibe un número en la nota, que nunca se reutiliza, para que una persona pueda decir "archivo 1". Máximo 10 MB por archivo. Adjuntar requiere una suscripción activa; leer no. Solo la persona elimina un archivo, en la aplicación.

GET  https://verysimplenotes.com/api/v1/notes/NOTE_ID/files
POST https://verysimplenotes.com/api/v1/notes/NOTE_ID/files
GET  https://verysimplenotes.com/api/v1/notes/NOTE_ID/files/1

Adjunta como multipart con un campo file, o como bytes sin procesar:

curl https://verysimplenotes.com/api/v1/notes/NOTE_ID/files \
  -H "Authorization: Bearer TOKEN" \
  -F "file=@receipt.jpg"

curl https://verysimplenotes.com/api/v1/notes/NOTE_ID/files \
  -H "Authorization: Bearer TOKEN" \
  -H "Content-Type: text/markdown" \
  -H "X-File-Name: plan.md" \
  --data-binary @plan.md

Devuelve el archivo, 201. Los bytes vuelven con su propio tipo y nombre.

Markdown

body es Markdown. La persona nunca ve la sintaxis; la aplicación la renderiza. Cuando escribas, usa:

  • **bold** y *italic*
  • - bullets y 1. numbered
  • - [ ] sin marcar y - [x] marcados en listas de verificación

Errores

  • 401 token faltante o incorrecto ({"error":"Unauthorized"})
  • 402 escritura sin suscripción ({"error":"subscription_required"})
  • 400 cuerpo JSON no válido en PATCH
  • 404 no existe tal nota

OAuth 2.0

Una aplicación puede obtener un token sin pegar nada. La persona inicia sesión en verysimplenotes.com; tu servidor intercambia el código por el mismo tipo de token de API personal. Descubrimiento: /.well-known/oauth-authorization-server.

GET https://verysimplenotes.com/oauth/authorize
  ?client_id=…
  &redirect_uri=…
  &response_type=code
  &state=…
  &code_challenge=…
  &code_challenge_method=S256

POST https://verysimplenotes.com/oauth/token
  grant_type=authorization_code
  code=…
  redirect_uri=…
  client_id=…
  client_secret=…
  code_verifier=…

→ { "access_token": "…", "token_type": "Bearer", "scope": "notes" }

Se admite PKCE S256. label opcional en authorize nombra el token en Cuenta (por ejemplo Agent Heim · Freja).

Un cliente que se registró con "grant_types": ["authorization_code", "refresh_token"] también recibe expires_in (una hora) y un refresh_token. grant_type=refresh_token lo intercambia por un par nuevo; cada token de actualización funciona una vez. Revocar la conexión en Cuenta termina con ambos.

Los clientes MCP y otras aplicaciones públicas se registran en POST /oauth/register (registro dinámico de clientes) y deben usar PKCE S256; no reciben secreto. ¿Construyendo una aplicación con tu propio servidor y un secreto de cliente? Envía un correo a verysimple@portfoliobox.net para obtener un client_id. Agent Heim ya está registrado.