Plate
Gerenciamento mínimo de projetos para equipes e agentes de IA.
Documentação
Servidor MCP
Gerencie suas tarefas do Plate diretamente de assistentes de IA — Claude, Cursor, Windsurf e qualquer cliente compatível com MCP.
Endpoint https://plate.to/mcp
Configuração
O servidor MCP do Plate usa OAuth 2.0 — seu cliente de IA lida com a autenticação automaticamente na primeira conexão. Nenhuma chave de API é necessária.
Adicione isto ao seu arquivo de configuração MCP:
{
"mcpServers": {
"plate": {
"type": "http",
"url": "https://plate.to/mcp"
}
}
}
| Cliente | Local do arquivo de configuração |
|---|---|
| Claude Code | .mcp.json na raiz do projeto, ou ~/.claude/.mcp.json globalmente |
| Claude Desktop | macOS: ~/Library/Application Support/Claude/claude_desktop_config.json |
| Cursor | Settings → Cursor Settings → MCP |
| Windsurf | Windsurf Settings → MCP Servers |
Após adicionar o servidor, seu cliente solicitará autorização via navegador. Entre com sua conta do Plate e escolha um escopo. Para revogar o acesso, vá em Workspace Settings → Apps no Plate.
Autenticação
O Plate usa OAuth 2.0 com PKCE. Quando você usa uma ferramenta do Plate pela primeira vez, seu cliente abre uma janela do navegador onde você faz login na sua conta do Plate e aprova o acesso. Você recebe um token de acesso (válido por 1 hora) e um token de atualização (válido por 30 dias). A atualização é feita automaticamente — você não será solicitado a reautorizar a menos que o token de atualização expire.
Escopos
| Escopo | Permissões |
|---|---|
read | Visualizar workspaces, projetos, tarefas — nenhuma alteração permitida |
read write | Acesso total: visualizar e criar/atualizar tarefas, projetos e comentários |
Ferramentas
Ferramentas de leitura estão sempre disponíveis. Ferramentas de escrita exigem o escopo write.
Retorna todos os workspaces do Plate aos quais o usuário autenticado pertence.
[{
"id": "ws_abc",
"name": "Acme Corp",
"urlId": "acme",
"taskPrefix": "SCA"
}]
Retorna todos os projetos em um workspace.
| Parâmetro | Tipo | Descrição |
|---|---|---|
workspaceId * | string | ID do workspace de list_workspaces |
[{
"id": "proj_xyz",
"name": "Backend",
"description": null
}]
Retorna todas as seções em um projeto, ordenadas por posição. A seção padrão com a qual um projeto começa no aplicativo não tem nome armazenado e é retornada como "Things to do" — o rótulo mostrado na interface — para que possa ser referenciada pelo nome.
| Parâmetro | Tipo | Descrição |
|---|---|---|
projectId * | string | ID do projeto de list_projects |
[{
"id": "list_abc",
"name": "To Do",
"order": 0
}]
Retorna tarefas em um projeto. Exclui tarefas concluídas por padrão. Também suporta a busca de uma tarefa pelo seu número público (ex.: 42 de SCD-42) — passe workspaceId + number e omita projectId.
| Parâmetro | Tipo | Descrição |
|---|---|---|
projectId opcional | string | ID do projeto. Obrigatório a menos que number seja fornecido. |
workspaceId opcional | string | ID do workspace. Obrigatório ao usar number. |
number opcional | number | Número público da tarefa (somente dígitos — ex.: 42 de SCD-42). Quando fornecido, workspaceId é obrigatório e projectId é ignorado. |
statusId opcional | string | Filtrar por status |
listId opcional | string | Filtrar por seção |
includeCompleted opcional | boolean | Incluir tarefas concluídas (padrão: false) |
limit opcional | number | Máximo de tarefas a retornar (padrão: 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
Retorna detalhes completos de uma única tarefa, incluindo sua descrição em rich text e lista de rótulos. Aceita três formas de busca:
- ID interno — passe
taskId(o campoiddelist_tasks) - Referência prefixada — passe
taskId: "SCD-426"e o servidor resolve automaticamente em todos os seus workspaces - Número — passe
workspaceId+number: 426para uma busca direta em um workspace específico
A resposta inclui dois campos de descrição: descriptionText (string Markdown, pronta para exibição) e description (array de nós Plate.js bruto). Use descriptionText para ler e exibir conteúdo.
| Parâmetro | Tipo | Descrição |
|---|---|---|
taskId opcional | string | ID interno da tarefa ou referência prefixada como SCD-426. Omita ao usar number. |
workspaceId opcional | string | ID do workspace. Acelera a busca por número; se omitido, todos os workspaces são pesquisados. |
number opcional | number | Número público da tarefa (somente dígitos — ex.: 426 de SCD-426). Quando fornecido, taskId é ignorado. |
Retorna os comentários de uma tarefa, do mais antigo para o mais recente. Assim como a descrição de get_task, cada comentário tem contentText (string Markdown, pronta para exibição) e content (array de nós Plate.js bruto). Use contentText para leitura.
| Parâmetro | Tipo | Descrição |
|---|---|---|
taskId * | string | ID interno da tarefa (o id de list_tasks, não o 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"
}]
Retorna todos os membros de um workspace. Use userId como assigneeId ao criar ou atualizar tarefas.
| Parâmetro | Tipo | Descrição |
|---|---|---|
workspaceId * | string | ID do workspace de list_workspaces |
[{
"userId": "user_abc",
"name": "Jane Smith",
"email": "jane@acme.com",
"role": "member"
}]
Retorna os status do fluxo de trabalho para um workspace. Use o id retornado como statusId ao criar ou atualizar tarefas.
| Parâmetro | Tipo | Descrição |
|---|---|---|
workspaceId * | string | ID do workspace de list_workspaces |
[{
"id": "status_abc",
"name": "In Progress",
"color": "#4fa3e0",
"systemType": null,
"order": 1
}]
Retorna os rótulos de tarefas para um workspace. Use o id retornado — ou o name — em labels ao criar ou atualizar tarefas.
| Parâmetro | Tipo | Descrição |
|---|---|---|
workspaceId * | string | ID do workspace de list_workspaces |
[{
"id": "label_abc",
"name": "Bug",
"color": "#FFDCDB",
"order": 0
}]
Histórico de alterações de tarefas em um intervalo de tempo — mudanças de status, atribuições, movimentações, etc. Use-o para perguntas baseadas em tempo, como quais tarefas foram concluídas na semana passada, ou o que uma pessoa fez. Cada linha fornece a tarefa, a transição de status, quem fez a alteração e o proprietário e o responsável da tarefa.
| Parâmetro | Tipo | Descrição |
|---|---|---|
workspaceId * | string | ID do workspace de list_workspaces |
from | string | Início do intervalo, ISO 8601 (ex.: 2026-06-01) |
to | string | Fim do intervalo, ISO 8601 |
actorId | string | Somente alterações feitas por este userId (de list_members) |
type | string | task_status_changed, ou completed para transições para um status Concluído |
projectId | string | Limitar a um projeto |
limit | number | Máximo de linhas (padrão 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"
}]
Cria uma nova tarefa em uma seção do projeto. Retorna o ID da nova tarefa e seu número atribuído automaticamente.
| Parâmetro | Tipo | Descrição |
|---|---|---|
projectId * | string | ID do projeto |
listId * | string | ID da seção de list_sections |
name * | string | Nome da tarefa |
statusId opcional | string | ID do status inicial |
assigneeId opcional | string | ID do usuário responsável |
labels opcional | string[] | IDs ou nomes de rótulos (de list_labels); nomes correspondem sem diferenciar maiúsculas/minúsculas. Rótulos desconhecidos são um erro — eles nunca são criados automaticamente. |
{ "id": "task_456", "number": 43 }
Plano gratuito: máximo de 300 tarefas por workspace. Pro: ilimitado.
Atualiza um ou mais campos em uma tarefa. Somente os campos fornecidos são alterados.
| Parâmetro | Tipo | Descrição |
|---|---|---|
taskId * | string | ID da tarefa |
name opcional | string | Novo nome da tarefa |
statusId opcional | string | Novo ID de status. Também atualiza isCompleted. |
assigneeId opcional | string | null | Novo responsável. Passe null para desatribuir. |
listId opcional | string | Mover tarefa para uma seção diferente. Deve pertencer ao mesmo projeto. |
description opcional | string | Nova descrição. Markdown suportado. |
labels opcional | string[] | Substitui os rótulos da tarefa (não adiciona). IDs ou nomes de list_labels; [] os limpa. Rótulos desconhecidos são um erro — eles nunca são criados automaticamente. |
{ "id": "task_123" }
Marca uma tarefa como concluída ou a reabre. Define automaticamente o status para o status "done" ou "todo" do sistema.
| Parâmetro | Tipo | Descrição |
|---|---|---|
taskId * | string | ID da tarefa |
isCompleted opcional | boolean | true para concluir, false para reabrir (padrão: true) |
{ "id": "task_123", "isCompleted": true }
Exclui permanentemente uma tarefa. Comentários e anexos são removidos automaticamente.
| Parâmetro | Tipo | Descrição |
|---|---|---|
taskId * | string | ID da tarefa |
{ "id": "task_abc", "deleted": true }
Cria um novo projeto com uma seção padrão "To Do". Se um projeto com o mesmo nome já existir no workspace, retorna o projeto existente em vez de criar uma duplicata — verifique created na resposta para distinguir os dois casos. defaultListId é null se o projeto existente não tiver seções.
| Parâmetro | Tipo | Descrição |
|---|---|---|
workspaceId * | string | ID do workspace |
name * | string | Nome do projeto |
description opcional | string | Descrição do projeto (texto simples) |
{ "id": "proj_new", "defaultListId": "list_new", "created": true }
Plano gratuito: máximo de 3 projetos por workspace. Pro: ilimitado.
Renomeia um projeto ou atualiza sua descrição.
| Parâmetro | Tipo | Descrição |
|---|---|---|
projectId * | string | ID do projeto |
name opcional | string | Novo nome do projeto |
description opcional | string | null | Nova descrição, ou null para limpar |
{ "id": "proj_abc" }
Cria uma nova seção em um projeto. Se uma seção com o mesmo nome já existir no projeto, retorna a seção existente em vez de criar uma duplicata — verifique created na resposta para distinguir os dois casos.
| Parâmetro | Tipo | Descrição |
|---|---|---|
projectId * | string | ID do projeto |
name * | string | Nome da seção |
{ "id": "section_abc", "created": true }
Renomeia uma seção.
| Parâmetro | Tipo | Descrição |
|---|---|---|
sectionId * | string | ID da seção |
name * | string | Novo nome da seção |
{ "id": "section_abc" }
Adiciona um comentário a uma tarefa. O comentário é postado como o usuário autenticado.
| Parâmetro | Tipo | Descrição |
|---|---|---|
taskId * | string | ID da tarefa |
text * | string | Texto do comentário. Markdown suportado. |
{ "id": "comment_abc" }
Exclui um comentário de uma tarefa.
| Parâmetro | Tipo | Descrição |
|---|---|---|
commentId * | string | ID do comentário |
{ "id": "comment_abc", "deleted": true }
Ferramentas em Lote
Ferramentas em lote permitem criar, atualizar ou excluir vários itens em uma única chamada — reduzindo o número de solicitações de confirmação em clientes de IA que pedem confirmação por chamada de ferramenta.
Cria várias tarefas em um projeto atomicamente. Se qualquer validação falhar, nada é criado. Máximo de 50 tarefas por chamada.
| Parâmetro | Tipo | Descrição |
|---|---|---|
projectId * | string | ID do projeto |
listId | string | ID da seção padrão (usado quando uma tarefa omite seu próprio listId) |
tasks * | array (1–50) | Tarefas a criar. Cada item: name (obrigatório), 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" }] }
Atualiza várias tarefas atomicamente. Máximo de 50 tarefas por chamada.
| Parâmetro | Tipo | Descrição |
|---|---|---|
tasks * | array (1–50) | Tarefas a atualizar. Cada item: taskId (obrigatório), depois qualquer um de: name, listId, assigneeId, statusId, description (markdown), dueDate, labels (substitui a lista) |
{ "items": [{ "id": "task_abc" }] }
Marca várias tarefas como concluídas (ou as reabre). Tarefas já concluídas são deixadas como estão. Máximo de 100 tarefas por chamada.
| Parâmetro | Tipo | Descrição |
|---|---|---|
taskIds * | array (1–100) | IDs internos de tarefas a concluir |
isCompleted | boolean | true para concluir, false para reabrir (padrão: true) |
{ "items": [{ "id": "task_abc", "isCompleted": true }] }
Exclui permanentemente várias tarefas. Todas as tarefas são validadas antes de qualquer exclusão. Máximo de 50 tarefas por chamada.
| Parâmetro | Tipo | Descrição |
|---|---|---|
taskIds * | array (1–50) | IDs internos de tarefas a excluir |
{ "items": [{ "id": "task_abc", "deleted": true }] }
Cria várias seções em um projeto. Seções com nomes duplicados são retornadas como estão (created: false). Máximo de 30 seções por chamada.
| Parâmetro | Tipo | Descrição |
|---|---|---|
projectId * | string | ID do projeto |
sections * | array (1–30) | Seções a criar. Cada item: name (obrigatório) |
{ "items": [{ "id": "list_abc", "name": "Backlog", "created": true }] }
Renomeia várias seções atomicamente. Máximo de 30 seções por chamada.
| Parâmetro | Tipo | Descrição |
|---|---|---|
sections * | array (1–30) | Seções a atualizar. Cada item: sectionId (obrigatório), name (obrigatório) |
{ "items": [{ "id": "list_abc" }] }
Adiciona vários comentários a tarefas. Máximo de 50 comentários por chamada.
| Parâmetro | Tipo | Descrição |
|---|---|---|
comments * | array (1–50) | Comentários a criar. Cada item: taskId (obrigatório), text (obrigatório, markdown) |
{ "items": [{ "id": "comment_abc", "taskId": "task_xyz" }] }
Exclui permanentemente vários comentários. Todos os comentários são validados antes de qualquer exclusão. Máximo de 50 comentários por chamada.
| Parâmetro | Tipo | Descrição |
|---|---|---|
commentIds * | array (1–50) | IDs de comentários a excluir |
{ "items": [{ "id": "comment_abc", "deleted": true }] }
Formatação de Texto
O campo description em update_task e o campo text em create_comment aceitam markdown. Ele é convertido em texto rico e renderizado no editor Plate.
| Sintaxe | Resultado |
|---|---|
# Heading | Título 1 |
## Heading | Título 2 |
### Heading | Título 3 |
- item ou * item | Item de lista com marcadores |
1. item | Item de lista numerada |
> text | Citação em bloco |
**text** | Negrito |
*text* | Itálico |
***text*** | Negrito + itálico |
~~text~~ | Tachado |
`text` | Código inline |
Linhas em branco separam blocos. Linhas simples consecutivas sem uma linha em branco entre elas são mescladas em um único parágrafo.
# 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
Erros
Todas as ferramentas lançam uma string de erro descritiva em caso de falha. Causas comuns:
| Mensagem de erro | Causa |
|---|---|
Access denied or workspace not found | O usuário autenticado não é membro do workspace solicitado |
Task not found | ID de tarefa inválido, ou a tarefa pertence a um workspace diferente |
Project not found | ID de projeto inválido |
Section not found | ID de seção inválido, ou a seção pertence a um projeto diferente |
Free plan limit reached: 300 tasks maximum | O workspace está no plano gratuito e atingiu o limite de tarefas |
Free plan limit reached: 3 projects maximum | O workspace está no plano gratuito e atingiu o limite de projetos |
Perguntas? Escreva para nós em hello@plate.to