Plate

Gestión mínima de proyectos para equipos y agentes de IA.

Documentación

Servidor MCP

Gestiona tus tareas de Plate directamente desde asistentes de IA — Claude, Cursor, Windsurf y cualquier cliente compatible con MCP.

Endpoint https://plate.to/mcp

Configuración

El servidor MCP de Plate utiliza OAuth 2.0 — tu cliente de IA maneja la autenticación automáticamente cuando te conectas por primera vez. No se necesitan claves API.

Añade esto a tu archivo de configuración MCP:

{
  "mcpServers": {
    "plate": {
      "type": "http",
      "url": "https://plate.to/mcp"
    }
  }
}
ClienteUbicación del archivo de configuración
Claude Code.mcp.json en la raíz del proyecto, o ~/.claude/.mcp.json globalmente
Claude DesktopmacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
CursorSettings → Cursor Settings → MCP
WindsurfWindsurf Settings → MCP Servers

Después de añadir el servidor, tu cliente te pedirá que autorices mediante el navegador. Inicia sesión con tu cuenta de Plate y elige un alcance. Para revocar el acceso, ve a Configuración del espacio de trabajo → Aplicaciones en Plate.

Autenticación

Plate utiliza OAuth 2.0 con PKCE. Cuando usas por primera vez una herramienta de Plate, tu cliente abre una ventana del navegador donde inicias sesión en tu cuenta de Plate y apruebas el acceso. Recibes un token de acceso (válido por 1 hora) y un token de actualización (válido por 30 días). La actualización se maneja automáticamente — no se te pedirá reautorizar a menos que el token de actualización expire.

Alcances

AlcancePermisos
readVer espacios de trabajo, proyectos, tareas — no se permiten cambios
read writeAcceso completo: ver y crear/actualizar tareas, proyectos y comentarios

Herramientas

Las herramientas de lectura están siempre disponibles. Las herramientas de escritura requieren el alcance write.

Devuelve todos los espacios de trabajo de Plate a los que pertenece el usuario autenticado.

[{
  "id": "ws_abc",
  "name": "Acme Corp",
  "urlId": "acme",
  "taskPrefix": "SCA"
}]

Devuelve todos los proyectos en un espacio de trabajo.

ParámetroTipoDescripción
workspaceId *stringID del espacio de trabajo de list_workspaces
[{
  "id": "proj_xyz",
  "name": "Backend",
  "description": null
}]

Devuelve todas las secciones de un proyecto, ordenadas por posición. La sección predeterminada con la que un proyecto comienza en la aplicación no tiene nombre almacenado y se devuelve como "Things to do" — la etiqueta mostrada en la interfaz — para que pueda ser referenciada por nombre.

ParámetroTipoDescripción
projectId *stringID del proyecto de list_projects
[{
  "id": "list_abc",
  "name": "To Do",
  "order": 0
}]

Devuelve tareas en un proyecto. Excluye las tareas completadas por defecto. También admite la búsqueda de una tarea por su número público (por ejemplo, 42 de SCD-42) — pasa workspaceId + number y omite projectId.

ParámetroTipoDescripción
projectId opcionalstringID del proyecto. Requerido a menos que se proporcione number.
workspaceId opcionalstringID del espacio de trabajo. Requerido al usar number.
number opcionalnumberNúmero público de tarea (solo dígitos — por ejemplo, 42 de SCD-42). Cuando se proporciona, workspaceId es requerido y projectId se ignora.
statusId opcionalstringFiltrar por estado
listId opcionalstringFiltrar por sección
includeCompleted opcionalbooleanIncluir tareas completadas (por defecto: false)
limit opcionalnumberMáximo de tareas a devolver (por defecto: 100, máximo: 500)
[{
  "id": "task_123",
  "number": 42,
  "name": "Fix login bug",
  "isCompleted": false,
  "statusId": "status_abc",
  "assigneeId": "user_xyz",
  "listId": "list_abc",
  "projectId": "proj_xyz",
  "workspaceId": "ws_abc",
  "createdAt": "2025-01-15T10:00:00.000Z"
}]

get_task read

Devuelve los detalles completos de una sola tarea, incluyendo su descripción de texto enriquecido y lista de etiquetas. Acepta tres formas de búsqueda:

  • ID interno — pasa taskId (el campo id de list_tasks)
  • Referencia con prefijo — pasa taskId: "SCD-426" y el servidor lo resuelve automáticamente en todos tus espacios de trabajo
  • Número — pasa workspaceId + number: 426 para una búsqueda directa en un espacio de trabajo específico

La respuesta incluye dos campos de descripción: descriptionText (cadena Markdown, lista para mostrar) y description (matriz de nodos Plate.js sin procesar). Usa descriptionText para leer y mostrar contenido.

ParámetroTipoDescripción
taskId opcionalstringID de tarea interno o referencia con prefijo como SCD-426. Omítelo al usar number.
workspaceId opcionalstringID del espacio de trabajo. Acelera la búsqueda por número; si se omite, se buscan todos los espacios de trabajo.
number opcionalnumberNúmero público de tarea (solo dígitos — por ejemplo, 426 de SCD-426). Cuando se proporciona, taskId se ignora.

Devuelve los comentarios de una tarea, del más antiguo al más reciente. Al igual que la descripción de get_task, cada comentario tiene contentText (cadena Markdown, lista para mostrar) y content (matriz de nodos Plate.js sin procesar). Usa contentText para leer.

ParámetroTipoDescripción
taskId *stringID de tarea interno (el id de list_tasks, no el número público SCD-XXX)
[{
  "id": "comment_xyz",
  "authorId": "user_pasha",
  "contentText": "Fixed in projectsSaga.ts:287",
  "content": [ /* Plate nodes */ ],
  "createdAt": "2026-06-25T12:43:31.401Z"
}]

Devuelve todos los miembros de un espacio de trabajo. Usa userId como assigneeId al crear o actualizar tareas.

ParámetroTipoDescripción
workspaceId *stringID del espacio de trabajo de list_workspaces
[{
  "userId": "user_abc",
  "name": "Jane Smith",
  "email": "jane@acme.com",
  "role": "member"
}]

Devuelve los estados de flujo de trabajo para un espacio de trabajo. Usa el id devuelto como statusId al crear o actualizar tareas.

ParámetroTipoDescripción
workspaceId *stringID del espacio de trabajo de list_workspaces
[{
  "id": "status_abc",
  "name": "In Progress",
  "color": "#4fa3e0",
  "systemType": null,
  "order": 1
}]

Devuelve las etiquetas de tareas para un espacio de trabajo. Usa el id devuelto — o el name — en labels al crear o actualizar tareas.

ParámetroTipoDescripción
workspaceId *stringID del espacio de trabajo de list_workspaces
[{
  "id": "label_abc",
  "name": "Bug",
  "color": "#FFDCDB",
  "order": 0
}]

Historial de cambios de tareas en un rango de tiempo — cambios de estado, asignaciones, movimientos, etc. Úsalo para preguntas basadas en tiempo como qué tareas se completaron la semana pasada, o qué hizo una persona. Cada fila da la tarea, la transición de estado, quién hizo el cambio, y el propietario y asignado de la tarea.

ParámetroTipoDescripción
workspaceId *stringID del espacio de trabajo de list_workspaces
fromstringInicio del rango, ISO 8601 (por ejemplo, 2026-06-01)
tostringFin del rango, ISO 8601
actorIdstringSolo cambios hechos por este userId (de list_members)
typestringtask_status_changed, o completed para transiciones a un estado Done
projectIdstringLimitar a un proyecto
limitnumberMáximo de filas (por defecto 100, máximo 500)
[{
  "at": "2026-06-05T14:12:00.000Z",
  "type": "task_status_changed",
  "task": "SCD-42",
  "taskName": "Review API docs",
  "change": "In Progress → Done",
  "completed": true,
  "actor": "Pasha",
  "owner": "Karl",
  "assignee": "Pasha"
}]

Crea una nueva tarea en una sección de proyecto. Devuelve el ID de la nueva tarea y su número asignado automáticamente.

ParámetroTipoDescripción
projectId *stringID del proyecto
listId *stringID de sección de list_sections
name *stringNombre de la tarea
statusId opcionalstringID de estado inicial
assigneeId opcionalstringID de usuario asignado
labels opcionalstring[]IDs de etiqueta o nombres (de list_labels); los nombres coinciden sin distinguir mayúsculas. Las etiquetas desconocidas son un error — nunca se crean automáticamente.
{ "id": "task_456", "number": 43 }

Plan gratuito: máximo 300 tareas por espacio de trabajo. Pro: ilimitado.

Actualiza uno o más campos de una tarea. Solo se cambian los campos que proporcionas.

ParámetroTipoDescripción
taskId *stringID de tarea
name opcionalstringNuevo nombre de tarea
statusId opcionalstringNuevo ID de estado. También actualiza isCompleted.
assigneeId opcionalstring | nullNuevo asignado. Pasa null para desasignar.
listId opcionalstringMover tarea a una sección diferente. Debe pertenecer al mismo proyecto.
description opcionalstringNueva descripción. Markdown compatible.
labels opcionalstring[]Reemplaza las etiquetas de la tarea (no las añade). IDs o nombres de list_labels; [] las elimina. Las etiquetas desconocidas son un error — nunca se crean automáticamente.
{ "id": "task_123" }

Marca una tarea como completada o la reabre. Establece automáticamente el estado al estado "done" o "todo" del sistema.

ParámetroTipoDescripción
taskId *stringID de tarea
isCompleted opcionalbooleantrue para completar, false para reabrir (por defecto: true)
{ "id": "task_123", "isCompleted": true }

Elimina permanentemente una tarea. Los comentarios y archivos adjuntos se eliminan automáticamente.

ParámetroTipoDescripción
taskId *stringID de tarea
{ "id": "task_abc", "deleted": true }

Crea un nuevo proyecto con una sección "To Do" predeterminada. Si ya existe un proyecto con el mismo nombre en el espacio de trabajo, devuelve el proyecto existente en lugar de crear un duplicado — verifica created en la respuesta para distinguir los dos casos. defaultListId es null si el proyecto existente no tiene secciones.

ParámetroTipoDescripción
workspaceId *stringID del espacio de trabajo
name *stringNombre del proyecto
description opcionalstringDescripción del proyecto (texto plano)
{ "id": "proj_new", "defaultListId": "list_new", "created": true }

Plan gratuito: máximo 3 proyectos por espacio de trabajo. Pro: ilimitado.

Renombra un proyecto o actualiza su descripción.

ParámetroTipoDescripción
projectId *stringID del proyecto
name opcionalstringNuevo nombre del proyecto
description opcionalstring | nullNueva descripción, o null para limpiar
{ "id": "proj_abc" }

Crea una nueva sección en un proyecto. Si ya existe una sección con el mismo nombre en el proyecto, devuelve la sección existente en lugar de crear un duplicado — verifica created en la respuesta para distinguir los dos casos.

ParámetroTipoDescripción
projectId *stringID del proyecto
name *stringNombre de la sección
{ "id": "section_abc", "created": true }

Renombra una sección.

ParámetroTipoDescripción
sectionId *stringID de sección
name *stringNuevo nombre de sección
{ "id": "section_abc" }

Añade un comentario a una tarea. El comentario se publica como el usuario autenticado.

ParámetroTipoDescripción
taskId *stringID de tarea
text *stringTexto del comentario. Markdown compatible.
{ "id": "comment_abc" }

Elimina un comentario de una tarea.

ParámetroTipoDescripción
commentId *stringID de comentario
{ "id": "comment_abc", "deleted": true }

Herramientas por lotes

Las herramientas por lotes te permiten crear, actualizar o eliminar múltiples elementos en una sola llamada — reduciendo el número de avisos de confirmación en clientes de IA que preguntan por cada llamada de herramienta.

Crea múltiples tareas en un proyecto de forma atómica. Si falla alguna validación, no se crea nada. Máximo 50 tareas por llamada.

ParámetroTipoDescripción
projectId *stringID del proyecto
listIdstringID de sección predeterminado (usado cuando una tarea omite su propio listId)
tasks *array (1–50)Tareas a crear. Cada elemento: name (requerido), listId, assigneeId, statusId, description (markdown), dueDate, labels
{ "items": [{ "id": "task_abc", "number": 42, "name": "Task A", "listId": "list_xyz", "projectId": "proj_1", "workspaceId": "ws_1" }] }

Actualiza múltiples tareas de forma atómica. Máximo 50 tareas por llamada.

ParámetroTipoDescripción
tasks *array (1–50)Tareas a actualizar. Cada elemento: taskId (requerido), luego cualquiera de: name, listId, assigneeId, statusId, description (markdown), dueDate, labels (reemplaza la lista)
{ "items": [{ "id": "task_abc" }] }

Marca múltiples tareas como completadas (o las reabre). Las tareas ya completadas se dejan como están. Máximo 100 tareas por llamada.

ParámetroTipoDescripción
taskIds *array (1–100)IDs internos de tareas a completar
isCompletedbooleantrue para completar, false para reabrir (predeterminado: true)
{ "items": [{ "id": "task_abc", "isCompleted": true }] }

Elimina permanentemente múltiples tareas. Todas las tareas se validan antes de eliminar cualquiera. Máximo 50 tareas por llamada.

ParámetroTipoDescripción
taskIds *array (1–50)IDs internos de tareas a eliminar
{ "items": [{ "id": "task_abc", "deleted": true }] }

Crea múltiples secciones en un proyecto. Las secciones con nombres duplicados se devuelven tal cual (created: false). Máximo 30 secciones por llamada.

ParámetroTipoDescripción
projectId *stringID del proyecto
sections *array (1–30)Secciones a crear. Cada elemento: name (obligatorio)
{ "items": [{ "id": "list_abc", "name": "Backlog", "created": true }] }

Renombra múltiples secciones de forma atómica. Máximo 30 secciones por llamada.

ParámetroTipoDescripción
sections *array (1–30)Secciones a actualizar. Cada elemento: sectionId (obligatorio), name (obligatorio)
{ "items": [{ "id": "list_abc" }] }

Añade múltiples comentarios a tareas. Máximo 50 comentarios por llamada.

ParámetroTipoDescripción
comments *array (1–50)Comentarios a crear. Cada elemento: taskId (obligatorio), text (obligatorio, markdown)
{ "items": [{ "id": "comment_abc", "taskId": "task_xyz" }] }

Elimina permanentemente múltiples comentarios. Todos los comentarios se validan antes de eliminar cualquiera. Máximo 50 comentarios por llamada.

ParámetroTipoDescripción
commentIds *array (1–50)IDs de comentarios a eliminar
{ "items": [{ "id": "comment_abc", "deleted": true }] }

Formato de texto

El campo description en update_task y el campo text en create_comment aceptan markdown. Se convierte a texto enriquecido y se renderiza en el editor de Plate.

SintaxisResultado
# HeadingEncabezado 1
## HeadingEncabezado 2
### HeadingEncabezado 3
- item o * itemElemento de lista con viñetas
1. itemElemento de lista numerada
> textCita en bloque
**text**Negrita
*text*Cursiva
***text***Negrita + cursiva
~~text~~Tachado
`texto`Código en línea

Las líneas en blanco separan bloques. Las líneas simples consecutivas sin una línea en blanco entre ellas se fusionan en un solo párrafo.

# Example description
"## Steps to reproduce\n\n- Open settings\n- Click Profile\n\n**Expected:** profile page opens\n**Actual:** 404 error"

# Renders as:
#   Heading 2: "Steps to reproduce"
#   Bullet: "Open settings"
#   Bullet: "Click Profile"
#   Paragraph with bold "Expected:" and "Actual:" inline

Errores

Todas las herramientas lanzan una cadena de error descriptiva en caso de fallo. Causas comunes:

Mensaje de errorCausa
Access denied or workspace not foundEl usuario autenticado no es miembro del espacio de trabajo solicitado
Task not foundID de tarea no válido, o la tarea pertenece a un espacio de trabajo diferente
Project not foundID de proyecto no válido
Section not foundID de sección no válido, o la sección pertenece a un proyecto diferente
Free plan limit reached: 300 tasks maximumEl espacio de trabajo está en el plan gratuito y ha alcanzado el límite de tareas
Free plan limit reached: 3 projects maximumEl espacio de trabajo está en el plan gratuito y ha alcanzado el límite de proyectos

¿Preguntas? Escríbenos a hello@plate.to