An MCP server that integrates with Notion to manage tasks. Allows creating tasks, marking tasks as complete, and listing pending tasks in a Notion database.
The server defines 2 tools with reasonable schemas and descriptions, but has gaps in parameter validation, error handling guidance, and output documentation. Both tools use Pydantic models with proper type definitions and descriptions, which is a baseline. However, error messages lack recovery guidance (critical for pattern:recovery-guide), parameter constraints are underspecified, and output schemas are not formally documented. The resource tool (listar_tarefas_pendentes) is well-implemented but is not a tool, so it doesn't factor into the tool scoring.
Marca uma tarefa existente no Notion como concluída, atualizando o status da página. Requer o ID da página que será modificada.
Cria uma nova página (tarefa) no Banco de Dados do Notion. Aceita um título, uma descrição detalhada e um prazo opcional. Retorna o URL da nova tarefa criada em caso de sucesso.
Error messages lack recovery guidance. Both tools return raw exception strings (e.g., 'Erro ao criar tarefa no Notion: {str(e)}') without telling the agent what to do next or how to self-correct.
Parameter 'prazo' in criar_tarefa accepts a date string in format 'AAAA-MM-DD' but the schema declares format as 'date' and the code converts it to .isoformat(). No enum constraints or explicit validation guidance for end-users.
Parameter 'status' in concluir_tarefa has a default value 'Concluído' and lacks validation. No enum of valid status values (e.g., 'A Fazer', 'Em Progresso', 'Concluído') is enforced, leaving the tool vulnerable to hallucinated status values.
Output schemas are not formally documented in the tool descriptions. criar_tarefa returns a string with URL and ID; concluir_tarefa returns a confirmation string. LLMs cannot reliably parse these responses without a declared output schema.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 58 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 46 | - | v1 |
No idempotency hints or confirmation pattern. criar_tarefa and concluir_tarefa are destructive/irreversible operations (write to Notion). No toolAnnotation destructiveHint is declared, and no dry-run or confirmation step exists.
Notion database schema is hardcoded (property names 'Name', 'Status', 'Prazo'). If a user's Notion database has different column names, the tools silently fail with opaque API errors. No discovery tool or configuration option exists.
Parameter 'page_id' in concluir_tarefa accepts any string. No validation that it matches Notion's UUID format, and error messages don't guide the LLM to use the ID returned from criar_tarefa or listar_tarefas_pendentes.