Skip to main content
Glama

Todoist Meeting MCP

CI Release MIT License

A production-ready Model Context Protocol (MCP) server that connects Claude with Todoist for intelligent meeting note processing. Parse meeting notes into actionable Todoist tasks with inferred due dates and priorities, create and complete tasks by name, and list projects and tasks—all through natural language in Claude.


What this does

This MCP server exposes Todoist as tools to Claude: you can paste meeting notes and have action items turned into tasks, create tasks with natural-language due dates (e.g. "by Friday"), add subtasks, list projects and tasks, update tasks, and complete them by name. Tasks are routed to projects/sections by keyword matching or an optional target project hint.


Related MCP server: Todoist MCP Server

Prerequisites

  • Node.js 18+

  • Claude Desktop (or another MCP client)

  • A Todoist account and API token


Quick setup

  1. Get your Todoist API token
    Todoist → Settings → Integrations → Developer → copy your API token.

  2. Configure Claude Desktop
    Edit (or create) the MCP config file. If it doesn't exist, create the Claude folder and the file:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

    • Windows: %APPDATA%\Claude\claude_desktop_config.json

    Add (or merge in) the following, replacing your_todoist_api_token_here with your token:

    {
      "mcpServers": {
        "todoist-meeting-mcp": {
          "command": "npx",
          "args": ["-y", "todoist-meeting-mcp"],
          "env": {
            "TODOIST_API_TOKEN": "your_todoist_api_token_here"
          }
        }
      }
    }
  3. Restart Claude Desktop
    The server will start when Claude needs it. Ensure TODOIST_API_TOKEN is set or the server will exit with a clear error.


Example prompts

  • Meeting notes → tasks:
    "Here are my standup notes: [paste notes]. Create Todoist tasks."

  • Single task:
    "Create a task called 'Review PR #42' in my Engineering project due Friday."

  • Subtasks:
    "Add subtasks to my 'Q2 Planning' task: research competitors, draft slides, schedule review."

  • List & complete:
    "List my tasks due today." / "Complete the task 'Review PR #42'."


Tool reference

Tool

Description

parse_meeting_notes

Parse raw meeting note text; extract action items, deadlines, priorities; create Todoist tasks (optional target project).

create_task

Create a single task with content, description, project/section by name, natural-language due date, priority, labels, optional parent (subtask).

create_subtasks

Add multiple subtasks to a parent task (parent found by name).

list_projects

List all projects with IDs, names, and section names (for routing context).

list_tasks

List tasks with optional filters: project_name, section_name, priority, due_today.

update_task

Update a task (found by name): content, description, due date, priority, project, section.

complete_task

Mark a task complete (found by name, fuzzy match).


GitHub release / self-hosted usage

Releases are built and published on GitHub when you push a tag v*.*.* (e.g. v1.0.0). The workflow uploads todoist-meeting-mcp.js as a release asset.

  • Run with npx (no download): use the config block above; npx will run the published package.

  • Run from a downloaded asset:

    1. Download todoist-meeting-mcp.js from the Releases page.

    2. Point Claude at it:

    "mcpServers": {
      "todoist-meeting-mcp": {
        "command": "node",
        "args": ["/absolute/path/to/todoist-meeting-mcp.js"],
        "env": {
          "TODOIST_API_TOKEN": "your_todoist_api_token_here"
        }
      }
    }

Build and test locally

From the project root:

# Install dependencies
npm ci

# Typecheck and lint (same as CI)
npm run typecheck
npm run lint

# Build (single file to dist/index.js)
npm run build

# Run the server (reads MCP over stdio; set token first)
export TODOIST_API_TOKEN=your_token_here
npm start

For development with auto-reload:

npm run dev

Code quality (CI)

On every push and pull request to main/master, the CI workflow runs:

  • Typechecktsc --noEmit

  • Lint — ESLint (TypeScript) on src/

  • Buildnpm run build

The badges at the top show the status of the CI and Release workflows once you set YOUR_ORG to your GitHub org or username.


License

MIT

Available Tools

7 tools
complete_taskC

Mark a task as complete. Task is found by name (fuzzy match).

ParametersJSON Schema
NameRequiredDescriptionDefault
task_nameYesName of the task to complete

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'fuzzy match' for finding tasks, which adds some context, but fails to address critical aspects like permissions needed, whether completion is reversible, error handling, or side effects, leaving significant gaps for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is highly concise and front-loaded, consisting of a single sentence that directly states the action and key constraint ('fuzzy match'). There is no wasted verbiage, making it efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's mutation nature, lack of annotations, and no output schema, the description is incomplete. It doesn't cover behavioral traits like error conditions, return values, or interaction with sibling tools, which are essential for safe and effective use in a task management context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, with the parameter 'task_name' well-documented in the schema. The description adds minimal value by noting 'fuzzy match', which clarifies how the task is identified, but doesn't provide additional syntax or format details beyond the schema's basics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Mark as complete') and resource ('task'), making the purpose evident. However, it doesn't explicitly differentiate from sibling tools like 'update_task', which might also handle task completion, leaving room for ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as 'update_task' or other task-related siblings. The description lacks context about prerequisites, exclusions, or specific scenarios for its application.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_subtasksC

Create multiple subtasks under a parent task. Parent is found by name (fuzzy match).

ParametersJSON Schema
NameRequiredDescriptionDefault
parent_task_nameYesName of the parent task
subtask_stringsYesArray of subtask content strings

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. While it mentions the 'fuzzy match' behavior for parent lookup, it doesn't address critical aspects like: what happens if multiple parents match, whether this requires specific permissions, if subtasks inherit parent properties, error handling, or mutation implications. For a creation tool with zero annotation coverage, this leaves significant gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with just two sentences that directly address the tool's purpose and a key behavioral aspect (fuzzy matching). Every word earns its place with zero wasted text, and the most important information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a creation/mutation tool with no annotations and no output schema, the description is inadequate. It doesn't explain what gets returned, error conditions, permission requirements, or how the fuzzy matching works in practice. Given the complexity of creating multiple subtasks with parent lookup, more contextual information is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters completely. The description adds minimal value beyond the schema - it clarifies that parent lookup uses 'fuzzy match' (helpful context) but doesn't provide additional syntax, format details, or constraints beyond what's in the parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Create multiple subtasks') and target resource ('under a parent task'), providing specific verb+resource pairing. However, it doesn't explicitly distinguish this from sibling tools like 'create_task' or 'update_task', which could also involve task creation/modification.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides minimal guidance about when to use this tool - it mentions parent task lookup via 'fuzzy match' but offers no explicit when/when-not instructions or alternatives. No comparison to sibling tools like 'create_task' or guidance about prerequisites is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_taskA

Create a single Todoist task. Supports project/section by name, natural language due date, priority 1-4, labels, and optional parent task (subtask).

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYesTask title/content
descriptionNo
project_nameNoProject name (resolved to ID)
section_nameNoSection name within the project
due_stringNoNatural language due date, e.g. 'by Friday', 'tomorrow'
priorityNo
labelsNo
parent_task_nameNoCreate as subtask of this task (matched by name)

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions that the tool 'supports' various features (project/section by name, natural language due date, etc.), which implies flexibility but doesn't detail error handling, authentication requirements, rate limits, or what happens on success/failure. It adds some context about parameter resolution (e.g., 'resolved to ID' implied for project_name), but lacks comprehensive behavioral traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded, starting with the core purpose ('Create a single Todoist task') followed by a concise list of supported features. Every sentence adds value without redundancy, making it efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (8 parameters, no annotations, no output schema), the description is adequate but has gaps. It covers the tool's purpose and key parameters well, but lacks details on behavioral aspects like error conditions, response format, or prerequisites. For a creation tool with moderate parameter count and no structured safety hints, more completeness would be beneficial.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds meaningful context beyond the input schema by listing key parameters (project/section by name, natural language due date, priority 1-4, labels, optional parent task) and clarifying semantics like 'natural language' for due dates and 'subtask' for parent tasks. With schema description coverage at 63%, this compensates well for gaps, though it doesn't cover all 8 parameters explicitly (e.g., 'description' field is omitted in the description).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Create a single Todoist task') and resource ('Todoist task'), distinguishing it from siblings like 'update_task' or 'complete_task' which modify existing tasks rather than creating new ones. The verb 'Create' is precise and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool (creating a single task with various optional features), but doesn't explicitly mention when not to use it or name alternatives. For example, it doesn't contrast with 'create_subtasks' for batch creation or 'update_task' for modifications, though the purpose implies this distinction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_projectsB

List all Todoist projects with their IDs, names, and section names. Use for routing context.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It mentions the tool lists projects with specific fields, but does not disclose behavioral traits such as whether it's read-only, requires authentication, has rate limits, or how data is returned (e.g., pagination). This is a significant gap for a tool with no annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences that are front-loaded with the main purpose and followed by a usage hint. Every sentence adds value without waste, making it efficient and well-structured for quick understanding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (0 parameters, no output schema, no annotations), the description is adequate but has gaps. It explains what the tool does but lacks details on behavioral aspects like safety or return format. For a read operation with no structured data, it should provide more context to be fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately does not discuss parameters, maintaining focus on the tool's purpose. Baseline is 4 for zero parameters, as it avoids unnecessary details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('List all Todoist projects') and the resource ('Todoist projects'), specifying the returned fields (IDs, names, section names). It distinguishes the tool's purpose from siblings like list_tasks by focusing on projects, but could be more explicit about the distinction. It avoids tautology by not just restating the name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides implied usage with 'Use for routing context,' suggesting it's for obtaining project metadata to route tasks. However, it lacks explicit guidance on when to use this versus alternatives like list_tasks, and does not mention prerequisites or exclusions, leaving some ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_tasksB

List tasks with optional filters: project_name, section_name, priority (1-4), due_today.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_nameNo
section_nameNo
priorityNo
due_todayNo

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It states this is a list operation with filtering, which implies read-only behavior, but doesn't disclose important traits like pagination, sorting, rate limits, authentication needs, or what happens when no filters are applied. The description provides basic behavioral context but misses critical operational details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose ('List tasks') followed by filter details. Every word earns its place with no redundancy or unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description provides adequate basics for a list operation but lacks completeness. It covers parameters well but doesn't address return format, error conditions, or system constraints. For a tool with 4 parameters and no structured metadata, more context would be helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description compensates well by explaining all 4 parameters and their semantics: project_name, section_name, priority (with range 1-4), and due_today. This adds significant value beyond the bare schema, though it doesn't provide format examples or deeper constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List' and resource 'tasks', and specifies optional filtering capabilities. It distinguishes from siblings like create_task or update_task by focusing on retrieval rather than mutation. However, it doesn't explicitly differentiate from list_projects which lists a different resource type.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage through the mention of 'optional filters' but doesn't provide explicit guidance on when to use this tool versus alternatives like list_projects or complete_task. No exclusions or prerequisites are mentioned, leaving the agent to infer appropriate contexts.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

parse_meeting_notesA

Parse raw meeting note text to extract action items, decisions, follow-ups, and deadlines; create Todoist tasks with inferred due dates and priorities. Optionally route to a target project by name.

ParametersJSON Schema
NameRequiredDescriptionDefault
raw_notesYesRaw meeting note text to parse
target_project_nameNoOptional project name to route all tasks to

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses key behavioral traits: it parses text to extract specific elements, creates Todoist tasks automatically, infers due dates and priorities, and optionally routes tasks to a project. However, it lacks details on error handling, rate limits, authentication needs, or what happens if parsing fails, which are important for a tool with no annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded, with a single sentence that efficiently conveys the core functionality and an optional feature. Every word earns its place, avoiding redundancy and focusing on key actions and outcomes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (parsing and task creation), no annotations, and no output schema, the description is moderately complete. It covers the purpose and basic behavior but lacks details on output format, error cases, or integration specifics. For a tool with no structured safety or output information, it should do more to compensate, but it provides a clear starting point.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters ('raw_notes' and 'target_project_name'). The description adds marginal value by mentioning that parsing extracts action items, decisions, etc., from 'raw_notes' and that routing is optional to a 'target project by name', but it does not provide additional syntax or format details beyond what the schema provides. Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific verb ('parse') and resource ('raw meeting note text'), and it details the extraction targets (action items, decisions, follow-ups, deadlines) and the creation of Todoist tasks with inferred due dates and priorities. It distinguishes from sibling tools like 'create_task' by focusing on parsing and automated task creation from notes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool: when you have raw meeting notes to parse into structured tasks. It implies an alternative by mentioning the optional routing to a target project, but it does not explicitly state when not to use it or name specific alternatives among siblings (e.g., 'create_task' for manual task creation).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_taskC

Update a task found by name. Can change content, description, due date, priority, project, or section.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_nameYesTask to update (matched by name)
contentNo
descriptionNo
due_stringNoNatural language date, or null to clear
priorityNo
project_nameNo
section_nameNo

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It states this is an update operation but doesn't mention permissions needed, whether changes are reversible, error handling for duplicate task names, or what the response looks like. For a mutation tool with zero annotation coverage, this is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently structured in two sentences, front-loading the core purpose and then listing modifiable fields. Every sentence adds value, though it could be slightly more detailed given the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with 7 parameters, low schema coverage (29%), no annotations, and no output schema, the description is inadequate. It doesn't explain return values, error conditions, or important behavioral aspects like how task matching works when names aren't unique.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is low at 29%, with only 'task_name' and 'due_string' having descriptions. The description lists the updatable fields (content, description, due date, priority, project, section), which adds some meaning beyond the bare schema, but doesn't fully compensate for the coverage gap or explain parameter interactions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Update') and resource ('a task found by name'), and lists the specific fields that can be modified. However, it doesn't explicitly distinguish this tool from siblings like 'complete_task' or 'create_task', which would require a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'complete_task' or 'create_task'. It mentions that tasks are found by name, but doesn't specify prerequisites, error conditions, or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 7 tool updatesv1.0.0
    • First observedcomplete_task
    • First observedcreate_subtasks
    • First observedcreate_task
    • First observedlist_projects
    • First observedlist_tasks
    • First observedparse_meeting_notes
    • First observedupdate_task

TDQS

A3.7/5.0

Scored across 7 tools

Disambiguation5/5

Each tool has a clearly distinct purpose with no overlap: list_projects and list_tasks are for retrieval, create_task and create_subtasks for creation, update_task and complete_task for modification, and parse_meeting_notes for a specialized parsing function. The descriptions clearly differentiate their roles, preventing agent misselection.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (e.g., list_projects, create_task, update_task). This predictability makes the set easy to navigate and understand, with no deviations in naming conventions.

Tool Count5/5

With 7 tools, this server is well-scoped for managing Todoist tasks and projects, covering core operations like listing, creating, updating, and completing tasks, plus a specialized parsing tool. Each tool earns its place without bloat or thinness.

Completeness5/5

The tool set provides complete CRUD/lifecycle coverage for the Todoist domain: list_projects and list_tasks for retrieval, create_task and create_subtasks for creation, update_task for updates, and complete_task for deletion/completion. The parse_meeting_notes tool adds a valuable specialized workflow, leaving no obvious gaps.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers