API MCP
Referencia de las tools disponibles en el servidor MCP de Todos. Accede a través de
/mcp.
Autenticación
El servidor admite dos métodos de autenticación:
Envía un token OAuth en la cabecera
Authorization: Bearer <token>.
El token se valida contra la tabla oauth_tokens.
Pasa ?uid=<uid>&key=<key> en la URL.
La key se valida comparando su SHA-1 con el
keyhash almacenado.
Si la autenticación falla, el servidor devuelve
401 Unauthorized
con una cabecera WWW-Authenticate.
Tipo Todo
Objeto devuelto por todas las tools que crean o modifican tareas.
| Campo | Tipo | Descripción |
|---|---|---|
| id | string | Identificador único de la tarea. |
| uid | string | ID del usuario propietario. |
| name | string | Título de la tarea. |
| description | string | Descripción en formato Markdown. |
| priority | "low" | "medium" | "high" | Prioridad de la tarea. |
| createdAt | string (ISO 8601) | Fecha y hora de creación. |
| updatedAt | string (ISO 8601) | Fecha y hora de última actualización. |
| completedAt | string | null | Fecha de completado, o null si está pendiente. |
| deletedAt | string | null | Fecha de eliminación, o null si está activa. |
| deadlineAt | string | null | Fecha límite opcional. |
| links | string[] | IDs de tareas relacionadas (para agrupar sub-tareas). |
Tools
get_list_usage
Devuelve el uso actual de la lista: número de tareas creadas, límite del plan y porcentaje de ocupación.
Parámetros de entrada
Sin parámetros.
Respuesta
count Número total de tareas en la lista (activas, completadas y eliminadas). maxTasks Límite de tareas del plan (plan free: 1 200). percentage Porcentaje de ocupación redondeado al entero más cercano. {
"content": [
{
"type": "text",
"text": "{\"count\":42,\"maxTasks\":1200,\"percentage\":4}"
}
]
} get_list_url
Devuelve la URL de la página web donde el usuario puede ver sus tareas en el navegador.
Parámetros de entrada
Sin parámetros.
Respuesta
content[0].type = "text" content[0].text URL completa con uid y key. {
"content": [
{ "type": "text", "text": "https://todos.jon.soy/list?uid=...&key=..." }
]
} put_todo
Crea o reemplaza una tarea del usuario actual. Si ya existe una tarea con el mismo
id, se sobreescribe por completo.
Parámetros de entrada
id requerido string Identificador único de la tarea (ej: kebab-case).
name requerido string Título de la tarea.
description requerido string Descripción en Markdown.
priority opcional "low" | "medium" | "high" Por defecto: "medium".
completedAt opcional string | null Fecha ISO 8601 de completado. Por defecto: null.
deadlineAt opcional string | null Fecha límite ISO 8601. Por defecto: null.
links opcional string[] IDs de tareas relacionadas. Por defecto: [].
Respuesta
Devuelve el objeto Todo creado o actualizado serializado como JSON.
{
"content": [
{
"type": "text",
"text": "{ ...Todo }"
}
]
} list_todos
Lista las tareas del usuario actual. Por defecto solo muestra las tareas pendientes (no completadas ni eliminadas). Usa los parámetros opcionales para ampliar los resultados.
Parámetros de entrada
includeCompleted opcional boolean Si es true, incluye las tareas completadas. Por defecto: false.
includeDeleted opcional boolean Si es true, incluye las tareas eliminadas. Por defecto: false.
Respuesta
Array de objetos Todo serializado como JSON.
{
"content": [
{
"type": "text",
"text": "[{ ...Todo },...]"
}
]
} search_todos
Busca tareas del usuario usando búsqueda difusa (fuzzy search) sobre el título y la descripción. Los resultados se devuelven ordenados por relevancia. Utiliza Fuse.js como motor de búsqueda.
Parámetros de entrada
query requerido string Texto a buscar en el título y la descripción de las tareas.
includeCompleted opcional boolean Si es true, incluye tareas completadas en la búsqueda. Por defecto: false.
Respuesta
Array de objetos Todo que coinciden con la búsqueda,
ordenados de mayor a menor relevancia. Devuelve un array vacío si no hay coincidencias.
Las tareas eliminadas nunca se incluyen.
{
"content": [
{
"type": "text",
"text": "[{ ...Todo },...]"
}
]
} complete_todo
Marca una tarea del usuario actual como completada. Establece
completedAt con la fecha y hora actual.
Parámetros de entrada
id requerido string Identificador de la tarea a completar.
Respuesta
Devuelve el objeto Todo actualizado.
Si el id no existe, devuelve un error.
// Éxito
{
"content": [{ "type": "text", "text": "...Todo" }]
}
// Error
{
"isError": true,
"content": [{ "type": "text", "text": "Todo not found" }]
} Prompts
start_workspace
Inicia un área de trabajo a partir de una premisa. El asistente crea una tarea raíz y
guía al usuario para agregar sub-tareas vinculadas mediante el campo
links.
Argumentos
premise requerido string
La meta o premisa del área de trabajo. Ej:
"vamos a trabajar en la remodelación del sótano".
Comportamiento
- El agente crea una tarea raíz con
put_todousando un ID descriptivo en kebab-case. - Muestra el ID de la tarea raíz al usuario.
- Pide sub-tareas y las crea con
links: [id-raiz]para vincularlas.