Skip to main content
Glama

nirvana-mcp

MCP server that exposes NirvanaHQ — the GTD task manager — to Claude Code and other MCP-compatible clients.

Status: 17 read-only tools shipped (see docs/tools.html for the full reference). Writes are next. See PLAN.md for the roadmap.

Install into Claude Code

Prerequisites: Node.js 20 or newer (ships with npx) and the Claude Code CLI. Nothing needs to be cloned or globally installed — npx -y downloads the package on demand.

# 1. Get a Nirvana auth token. Prompts for username + password.
npx -y @sgoettschkes/nirvana-mcp login

# 2. Install the server. Paste the token from step 1.
claude mcp add nirvana \
  --env NIRVANA_AUTH_TOKEN=<paste-token-here> \
  -- npx -y @sgoettschkes/nirvana-mcp

# 3. Restart Claude Code, then ask: "What's in my Nirvana inbox?"

To remove: claude mcp remove nirvana.

Related MCP server: Todoist MCP Server

Tools

Tool

Description

list_inbox

Tasks in the Inbox (state=0) — unprocessed items not yet categorized.

list_next_actions

Tasks marked Next (state=1) — concrete, actionable next steps.

list_waiting_for

Tasks Waiting on someone else (state=2).

list_scheduled

Tasks deferred to a future start date (state=3).

list_someday

Tasks parked in Someday/Maybe (state=4).

list_later

Tasks in the Later list (state=5) — between Next and Someday.

list_trash

Soft-deleted tasks (state=6), still recoverable.

list_logbook

Completed tasks (state=7) — currently returns all-time history.

list_recurring

Recurring task templates (state=9) — the rules, not individual occurrences.

list_focus

Tasks flagged for Focus (seqt > 0), excluding completed/trashed items.

list_projects

Active projects (type=1, state=11).

get_project

One project plus its direct children (tasks and sub-projects). Identify by id or name.

list_areas

High-level life domains (e.g. "work", "personal").

list_tags

Plain tags + contacts (with a kind field). In current Nirvana, GTD contexts are stored as plain tags.

list_reference_lists

Reference Lists (type=3, state=10) — top-level containers for non-actionable notes / lookup material.

get_reference_list

One Reference List plus all its items. Identify by id or name.

search_tasks

Filter tasks by text (name+note substring), tag, area, and/or state. At least one filter required.

How it works

NirvanaHQ has an undocumented HTTP API at https://api.nirvanahq.com. This server:

  1. Calls auth.new with your username and the MD5 of your password to obtain a long-lived auth token.

  2. Calls the bulk everything endpoint and filters the result client-side to answer each tool.

Your password is hashed locally and never stored. Only the auth token is persisted (in your MCP client's config). Revoke it any time by changing your Nirvana password.

Troubleshooting

  • Nirvana API error 98: Invalid Login Details — wrong username/password.

  • Missing required env var: NIRVANA_AUTH_TOKEN — run nirvana-mcp login first and put the token in your claude mcp add command.

  • Nirvana API error from a tool call — your token was probably revoked (changing your Nirvana password does this). Re-run nirvana-mcp login, then claude mcp remove nirvana && claude mcp add ... with the new token.

Development

git clone https://github.com/Sgoettschkes/nirvana_mcp
cd nirvana_mcp
asdf install                # installs the pinned Node version
npm install
cp .env.example .env        # creates .env with an empty NIRVANA_AUTH_TOKEN

npm run login               # prompts for username + password,
                            # prints an auth token. Paste it as
                            # NIRVANA_AUTH_TOKEN in .env.

npm run dev                 # runs the server against your account
npm run inspect             # builds, then opens MCP Inspector

When verifying the published install from inside this repo, the package.json name collides with the npm package, and npx -y @sgoettschkes/nirvana-mcp … will fail with command not found. Run from a different directory (cd ~ && npx …) or use the explicit form: npx -y --package=@sgoettschkes/nirvana-mcp nirvana-mcp ….

License

MIT

Available Tools

15 tools
get_focusGet Nirvana FocusA

Returns tasks the user has flagged for Focus in Nirvana (seqt > 0), excluding completed or trashed items. These are what the user is actively prioritizing right now.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

No annotations exist, so description carries full burden. It transparently discloses the filtering criteria (seqt > 0, excludes completed/trashed), which is adequate for a read-only tool with no side effects.

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?

Two concise sentences, front-loaded with purpose, zero wasted words. Perfectly efficient.

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

Completeness5/5

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

For a simple filtered list read tool with no parameters and no output schema, the description fully covers what the tool does and its data source.

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?

Tool has zero parameters, so schema coverage is 100%. Baseline for no parameters is 4. Description adds no parameter info but none needed.

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 it returns tasks flagged for Focus in Nirvana, using specific technical filter (seqt > 0) and exclusions. It distinguishes from siblings like get_inbox or get_later that return different views.

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 implies use when wanting to see actively prioritized tasks, but does not explicitly state alternatives or when not to use. The context 'actively prioritizing right now' provides clear guidance.

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

get_inboxGet Nirvana InboxA

Returns tasks in the Nirvana Inbox (state=0) — unprocessed items the user hasn't categorized yet.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior2/5

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

With no annotations, the description only says it returns tasks; it does not disclose whether the operation is read-only, has side effects, or any other behavioral aspects beyond the basic retrieval.

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 key information without any wasted words.

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

Completeness4/5

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

For a simple tool with no parameters and no output schema, the description adequately explains the purpose and content of the return, though additional context like ordering or format could improve completeness.

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 tool has zero parameters and schema coverage is 100%, meeting the baseline of 4. The description adds value by clarifying what the Inbox represents (unprocessed items).

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 tool returns tasks in the Nirvana Inbox (state=0) and explains it means unprocessed items, distinguishing it from siblings like get_focus or get_next_actions.

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 when the user wants unprocessed inbox items, but lacks explicit guidance on when to use this tool versus alternatives like get_focus or search_tasks.

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

get_laterGet Nirvana LaterA

Returns tasks in Nirvana's Later list (state=5) — things the user will definitely do, but not in the immediate Next queue. Sits between Next and Someday.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It states it returns tasks from the Later list, which implies a read operation, but does not disclose any specific behavioral traits like authentication, rate limits, or output format. For a simple get function, this is adequate but minimal.

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?

Two sentences, front-loaded with the main action. Every sentence provides value without redundancy.

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

Completeness4/5

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

Given the tool has no parameters and no output schema, the description provides sufficient context about the Later list and its place in the workflow. It could mention the return type (list of tasks), but it's implied.

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?

There are zero parameters, so baseline is 4. The description adds meaning by explaining what the Later list represents, which is helpful context beyond the empty schema.

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 tool returns tasks from the Later list, explains its position between Next and Someday, and includes the technical state=5. It distinguishes from sibling tools like get_next_actions and get_someday.

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 implicitly guides usage by positioning the Later list between Next and Someday, indicating it's for tasks definitely to do but not immediate. However, no explicit when-to-use or when-not-to-use compared to siblings.

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

get_logbookGet Nirvana LogbookA

Returns completed tasks logged in Nirvana (state=7). Use this to review what the user finished.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description itself should disclose behavioral traits. It implies a read-only operation by stating it returns data, but does not mention any side effects, authentication needs, or rate limits. For a simple read tool, this is adequate but not highly transparent.

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 sentences with no wasted words. It is front-loaded with the main purpose, then adds usage guidance. Every sentence earns its place.

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 low complexity (no parameters, no output schema), the description is mostly complete. However, it does not describe the output format or fields, which would help the agent interpret results. A slightly more detailed description of what 'completed tasks' includes would improve completeness.

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 zero parameters, so the description does not need to explain them. Baseline for 0 parameters is 4, and the description adds value by explaining what is returned.

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 it 'Returns completed tasks logged in Nirvana (state=7).' The verb 'returns' and resource 'completed tasks' are specific, and it distinguishes from sibling tools like 'get_inbox' or 'get_later' by focusing on completed tasks.

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 says 'Use this to review what the user finished,' providing clear context for when to use. While it does not explicitly state when not to use or name alternatives, the sibling tool list helps differentiate usage.

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

get_next_actionsGet Nirvana Next ActionsA

Returns tasks marked as Next Actions in Nirvana (state=1) — concrete, actionable next steps the user has committed to.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

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

No annotations; description only states it returns tasks. For a read-only, parameterless tool this is acceptable but lacks any extra behavioral detail like ordering or pagination.

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?

Single, well-structured sentence that is front-loaded and concise. Every word adds value.

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

Completeness5/5

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

Given zero parameters and no output schema, the description sufficiently explains what the tool returns and the filter applied. No gaps.

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?

No parameters exist, so schema coverage is 100%. Description adds meaning beyond schema by clarifying the filter condition (state=1) and the concept of 'Next Actions'.

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?

Clearly states the tool returns tasks with state=1 (Next Actions) and explains what that means. Distinguishes from siblings by specifying a concrete state filter.

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?

Implies use when needing actionable next steps, but no explicit when-not or comparison to siblings like get_focus or get_inbox. Adequate for a simple tool but could be improved.

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

get_projectGet Nirvana ProjectA

Returns a single project and all of its direct child items (tasks and sub-projects). Identify the project by its exact id (UUID) or its exact name. Provide exactly one. Use list_projects first to discover names.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNo
nameNo

TDQS

A4.6/5.0
Behavior4/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 discloses the key behavior: returns a project with direct children. It could mention if there are any side effects or limitations, but for a read tool it is adequately transparent.

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?

Two sentences with no wasted words. The first sentence states the purpose, the second gives usage guidance. Well front-loaded and efficient.

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

Completeness4/5

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

Given the tool's simplicity, no output schema, and sibling tools, the description is fairly complete. It covers what, how to identify, and a prerequisite. A description of the response structure would be beneficial but is not critical.

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?

Schema coverage is 0%, so the description must compensate. It explains that id is a UUID and name is a string, and that exactly one must be provided, adding valuable semantics beyond the bare schema.

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 tool returns a single project and its direct child items, which distinguishes it from sibling get_ tools that return filtered views, and from list_projects which lists all projects.

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

Usage Guidelines5/5

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

It explicitly instructs to identify by exact id or name, provide exactly one, and suggests using list_projects first to discover names, providing clear usage context and an alternative.

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

get_recurringGet Nirvana RecurringA

Returns the user's recurring task templates in Nirvana (state=9). These are the rules that spawn task instances on a schedule, not individual occurrences.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

No annotations exist, so description must cover behavior. It explains the tool returns templates (state=9) and clarifies it is not individual instances, but lacks details on error behavior, auth needs, or result format.

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?

Two sentences, front-loaded with main purpose, and each sentence adds value. No wasted words.

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

Completeness4/5

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

For a parameterless tool with no output schema, description adequately explains what it returns (templates, not instances). Minor lack of count or sorting info, but sufficient given simplicity.

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?

No parameters exist, so baseline is 4 per rubric. Description adds no parameter info, which is acceptable given zero parameters.

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 it returns recurring task templates (state=9) and distinguishes them from individual occurrences. This differentiates it from siblings like get_inbox or get_focus.

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 for viewing templates vs. occurrences but does not explicitly state when to use this tool over alternatives. No exclusions or context provided.

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

get_scheduledGet Nirvana ScheduledA

Returns Scheduled tasks in Nirvana (state=3) — tasks deferred to a specific future start date.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/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 full burden. It states the tool 'Returns' tasks, implying a read-only operation, but does not explicitly disclose any other behavioral traits like potential side effects, authorization requirements, or performance characteristics. The description is acceptable but lacks depth.

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, well-structured sentence. It is concise, front-loads the core purpose, and contains no extraneous information. Every word contributes to understanding the tool's function.

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

Completeness4/5

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

Given the tool has no parameters, no output schema, and a simple retrieval purpose, the description adequately covers what the tool does and what it returns. It could potentially mention filtering scope (e.g., user-specific), but for a straightforward list tool, it is sufficiently 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 no parameters (0 params, 100% coverage). The description adds value by explaining the meaning of 'Scheduled' (state=3, deferred future start date), which complements the schema. Since no parameters exist, the description effectively clarifies what the tool returns.

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 tool returns 'Scheduled tasks' with state=3 and explains they are 'deferred to a specific future start date'. This specification distinguishes it from sibling tools like get_inbox, get_next_actions, etc., which handle different task states.

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 implies usage by focusing on a specific task state (state=3) and provides a clear definition. While it doesn't explicitly state when not to use it or compare with siblings, the naming convention and state explanation offer sufficient guidance for an AI agent to choose this tool when needing deferred tasks.

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

get_somedayGet Nirvana Someday/MaybeA

Returns tasks parked in Nirvana's Someday list (state=4) — things to revisit later but not actionable now.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

No annotations exist, so the description carries full burden. It clearly indicates a read operation (returns tasks) and specifies the filter (state=4). It does not mention side effects or pitfalls, but for a simple read tool with no parameters, this is adequate.

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?

One sentence of 17 words, front-loaded with the main action and concise. No wasted words.

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

Completeness5/5

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

For a zero-parameter tool with no output schema or annotations, the description provides sufficient context: what is returned, the specific list, and the meaning of that list.

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?

There are no parameters; baseline is 4. Schema coverage is 100% (empty). The description does not need to add parameter info.

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 tool returns tasks from Nirvana's Someday list, specifies the state=4, and adds context that these are 'things to revisit later but not actionable now,' which distinguishes it from sibling tools like get_next_actions or get_inbox.

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 implies usage for non-actionable tasks to revisit later, but it does not explicitly state when not to use or directly compare with siblings. However, the context is clear enough for an AI agent to infer.

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

get_trashGet Nirvana TrashA

Returns tasks the user has thrown into Trash (state=6). These are soft-deleted but recoverable — useful for finding something the user trashed but might want back.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses that tasks are 'soft-deleted but recoverable', a key behavioral trait. No additional side effects mentioned, but for a read-only retrieval tool, this is sufficient.

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?

Two sentences with no wasted words. The purpose and usage are front-loaded. Every sentence adds value.

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

Completeness5/5

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

Given no parameters, no output schema, and a simple task, the description fully covers what the tool does and when to use it. No gaps.

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 tool has zero parameters, achieving 100% schema coverage. The description adds meaning by explaining the return content (trash tasks), which is beyond the schema's implicit understanding.

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 tool returns tasks in Trash (state=6), using specific verb 'returns' and resource 'tasks the user has thrown into Trash'. It distinguishes from sibling tools like get_inbox and get_focus by targeting a specific state.

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 a clear use case: 'useful for finding something the user trashed but might want back.' It does not explicitly state when not to use or mention alternatives, but the sibling context implies purpose.

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

get_waiting_forGet Nirvana Waiting ForA

Returns tasks the user is Waiting on someone else for in Nirvana (state=2). Often blocked on a contact's response or delivery.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. Only discloses state=2 filter; lacks details on authorization, side effects, or performance. Minimal behavioral context.

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?

Two sentences, front-loaded with action, no redundancy. Every word earns its place.

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?

Adequate for simple list with no parameters and no output schema, but could clarify return fields or scope. With 14 siblings, more differentiation would improve completeness.

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?

No parameters; schema coverage 100% via empty schema. Baseline 4 for zero-parameter tools, adds no param info needed.

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?

Description clearly states verb 'Returns', resource 'tasks', and context 'Waiting on someone else' with state=2. Distinguishes from siblings like get_inbox or get_next_actions.

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?

Implies usage for tasks blocked on others, but no explicit when-to-use or when-not-to-use guidance. Sibling tools listed but no comparison.

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

list_areasList Nirvana AreasA

Returns the user's Areas in Nirvana — high-level life domains (e.g. 'work', 'personal') that group projects and tasks. Areas are the top-level organizing dimension.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It transparently states a read operation with no side effects. It does not mention potential edge cases like empty results, but for a simple list tool, this is adequate.

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?

Two sentences with no wasted words. Front-loaded with the core purpose, followed by a clarifying definition. Ideal conciseness.

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

Completeness5/5

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

Given no parameters, no output schema, and a simple retrieval task, the description is fully complete. It explains what is returned and why it matters.

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?

There are zero parameters, and schema coverage is 100%. The description does not need to add parameter info. Baseline 4 is appropriate for no-param tools.

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 tool returns the user's Areas, which are high-level life domains. It distinguishes from sibling tools like get_focus or list_projects by specifying that areas are the top-level organizing dimension.

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 implies usage for retrieving the list of areas, but does not explicitly state when to use this tool versus alternatives or provide when-not scenarios. However, the sibling context makes it clear this is the only tool for listing areas.

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

list_projectsList Nirvana ProjectsA

Returns the user's active projects in Nirvana (state=11). Projects are containers that group related tasks under a shared outcome.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior2/5

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

No annotations provided, so description must carry behavioral disclosure. It only says 'active projects (state=11)' but does not mention authorization, rate limits, pagination, or side effects. Minimal transparency.

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?

Two efficient sentences: first states action and scope, second provides domain context. No fluff, front-loaded.

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

Completeness4/5

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

For a simple list tool with no parameters and no annotations, description covers the main function and entity meaning. Lacks details on sorting, completeness, or user scope, but adequate given tool simplicity.

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?

Input schema has zero parameters, so baseline is 4. Description adds value by specifying 'active projects (state=11)' beyond schema, which is helpful for understanding the filter.

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?

Description states verb 'Returns', resource 'active projects', and explains what projects are. It clearly distinguishes from siblings like get_project (single) and list_areas by specifying 'projects' as containers for tasks.

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 explicit guidance on when to use this tool vs alternatives (e.g., search_tasks, list_areas). Missing exclusions or context about when to prefer this over other listing tools.

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

list_tagsList Nirvana TagsA

Returns the user's labels in Nirvana — plain tags, GTD contexts (e.g. @phone, @home), and contacts (people the user waits on). Each entry has a kind field distinguishing them. For high-level life domains, use list_areas instead.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, description carries full burden. States it returns labels (read operation) and mentions the 'kind' field. Does not disclose details like pagination or ordering, but sufficiently conveys behavior.

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?

Two sentences, no wasted words. First sentence covers core purpose and output detail; second provides usage distinction. Efficient and front-loaded.

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

Completeness4/5

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

Given no output schema, description explains the 'kind' field distinguishing entries and lists the types. Lacks full output structure details, but sufficient for a simple list tool.

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?

No parameters exist, so schema coverage is 100%. Description cannot add value beyond schema, baseline 4 is appropriate.

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?

Description clearly states the tool returns user's labels in Nirvana, specifying three types (plain tags, GTD contexts, contacts). It also distinguishes from sibling tool list_areas by referencing its purpose for high-level life domains.

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?

Provides explicit alternative guidance: 'For high-level life domains, use list_areas instead.' Implicitly suggests use for tags/contexts/contacts. Could further clarify when to choose this over other sibling tools.

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

search_tasksSearch Nirvana TasksA

Search the user's Nirvana tasks with any combination of filters. At least one filter is required. Trashed and deleted tasks are always excluded. Completed (logged) tasks are excluded unless state: "logged" is passed — pair text search with state="logged" to mine the user's history.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNoCase-insensitive substring matched against the task name and note.
tagNoExact tag name to filter by (case-insensitive). Use list_tags to discover names.
areaNoExact area name to filter by (case-insensitive). Use list_areas to discover names.
stateNoRestrict to tasks in this Nirvana state.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description fully covers key behaviors: filter requirement, automatic exclusions, and how to include logged tasks. It lacks details on pagination or result limits, but these are common for search tools.

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?

Three concise sentences, front-loaded with the main purpose, followed by essential usage constraints. No unnecessary detail.

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

Completeness4/5

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

Given the simple schema and no output schema, the description provides necessary context for a search tool: purpose, constraints, exclusions, and a special use case. It is complete for its complexity level, though it could mention that it is the only multi-filter tool among siblings.

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?

Schema descriptions cover all parameters (100% coverage). The description adds value by stating the 'at least one filter' requirement and the synergy between text and state='logged' for history mining, enhancing understanding beyond the schema.

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 'Search the user's Nirvana tasks with any combination of filters', specifying the verb and resource, and distinguishes from sibling tools that are single-state getters.

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?

Explicitly requires at least one filter and explains exclusions (trashed, deleted, logged by default). It also advises when to use state='logged' with text search. However, it doesn't directly compare to sibling tools or state when not to use.

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. 15 tool updatesv0.0.10
    • First observedget_focus
    • First observedget_inbox
    • First observedget_later
    • First observedget_logbook
    • First observedget_next_actions
    • First observedget_project
    • First observedget_recurring
    • First observedget_scheduled
    • First observedget_someday
    • First observedget_trash
    • First observedget_waiting_for
    • First observedlist_areas
    • First observedlist_projects
    • First observedlist_tags
    • First observedsearch_tasks

TDQS

A4/5.0

Scored across 15 tools

Disambiguation5/5

Each tool targets a specific Nirvana task state or entity (focus, inbox, later, logbook, next actions, project, recurring, scheduled, someday, trash, waiting for, areas, projects, tags, search). The descriptions clearly differentiate overlapping concepts like focus vs. next actions, making selection unambiguous.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using snake_case: get_*, list_*, search_*. No mixing of conventions or vague verbs. The naming is predictable and discoverable.

Tool Count4/5

With 15 tools, the count is at the upper boundary of the ideal range. It covers many task states and organizational entities, which is reasonable for a full-featured GTD app. Slightly high but still well-scoped.

Completeness2/5

The tool set covers all retrieval needs for task states, projects, areas, and tags, but completely lacks mutation tools (create, update, delete for tasks or projects). This is a significant gap, as agents cannot modify the user's task system, limiting practical usage.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers