Skip to main content
Glama

notion-bank-mcp

Plan-bank MCP for AI agents — read and write Markdown implementation plans in Notion with line + section addressing, for Cursor, Claude, Codex, and other MCP hosts.

Auth: browser OAuth via mcp.notion.com. No CLIENT_ID / SECRET for end users. No integration token in mcp.json.

npx -y notion-bank-mcp@latest --version

Why use notion-bank-mcp?

Generic Notion MCPs are great for browsing a workspace. notion-bank-mcp is optimized for one job: keep implementation plans in Notion in a shape agents can reliably create, revise, and ship — without throwaway scripts.

Advantage

What you get

Plan-bank domain

First-class hierarchy: Plans root → service page → plan page. Agents follow one flow instead of inventing page structure every time.

Surgical edits

plan_update_range edits by section or line range, with expected_etag so concurrent overwrites fail safely.

Markdown in / Markdown out

Upsert from file or string; plan_get returns numbered lines + TOC so the model can point at exact slices.

No temp glue

Stop generating one-off Python/shell to patch Notion. The MCP is the stable API for plan migrate/sync.

Zero secrets for end users

Install with npx only. Browser OAuth via mcp.notion.com — no CLIENT_ID, no integration token in mcp.json.

Per-user workspace mapping

Each machine stores Plans root + service map under ~/.config/notion-bank/ — no shared workspace IDs in the repo.

Agent-ready first steps

plan_status → OAuth if needed → ask for Plans root once → ready. Predictable for Cursor / Claude / other MCP hosts.

Search with line hits

plan_search surfaces matches in context of the plan body, not only page titles.

Optional export

plan_sync pulls Notion → local markdown when you want a file in git or a PR.

When to prefer this over the official Notion MCP alone: you maintain a plan bank across services, you need section-level revisions with concurrency checks, and you want agents to do that in one tool surface instead of free-form page updates.


Related MCP server: tentra

Quick start

  1. Add this to your MCP config (Cursor example — same shape works for Claude Desktop / Codex):

{
  "mcpServers": {
    "notion-bank": {
      "command": "npx",
      "args": ["-y", "notion-bank-mcp@latest"]
    }
  }
}
  1. Restart the host. Tools like plan_status and plan_upsert should appear.

  2. On the first Notion action, a browser opens → sign in with Notion.

  3. Tell the agent your Plans root Notion page URL once → it runs plan_configure.

That is enough for most users.


Install options

Method

When to use

npx -y notion-bank-mcp@latest

Recommended — always latest, no global install

npm i -g notion-bank-mcp then notion-bank-mcp

Frequent local use

Clone + make build

Developing the server itself

Check / update the CLI:

notion-bank-mcp --version          # or: notion-bank-mcp version
notion-bank-mcp update             # checks npm only — does not auto-install
notion-bank-mcp --help

If update reports a newer version:

npm i -g notion-bank-mcp@latest
# or keep using npx -y notion-bank-mcp@latest

CLI

Command

Purpose

(default) / --stdio

MCP over stdio (hosts)

serve / --http

Streamable HTTP (optional hosted URL)

version / --version / -V

Print package version

update

Compare local version to npm latest

help / --help / -h

Short usage

Env (optional)

Env

Description

NOTION_BANK_CONFIG_PATH

Override path to config.json

NOTION_BANK_CREDENTIALS_PATH

Override path to OAuth credentials

NOTION_BANK_CACHE_TTL_MS

In-process cache TTL (default 60000)

NOTION_BANK_CACHE_MAX_ENTRIES

Cache LRU cap (default 256)

NOTION_BANK_MODE

Set http to force HTTP serve

NOTION_BANK_LOCAL_CALLBACK_PORT

OAuth callback port (default 8765)

HTTP-only (operators): NOTION_BANK_PUBLIC_URL, NOTION_BANK_HOST, NOTION_BANK_PORT, NOTION_BANK_HTTP_IDLE_MS. See docs/OPERATOR.md.

Local from source

make install && make check && make build
make stdio
# or: node dist/index.js

From a local clone before publishing:

{
  "mcpServers": {
    "notion-bank": {
      "command": "node",
      "args": ["/absolute/path/to/notion-bank-mcp/dist/index.js"]
    }
  }
}

Host compatibility

Primary transport is stdio. Same command + args pattern as other MCP servers. No env tokens required.

Host

Config

Notes

Cursor

.cursor/mcp.json or Settings → MCP

See mcp.json.example

Claude Desktop

claude_desktop_config.json

Same mcpServers JSON

Claude Code

MCP settings

Stdio; optional skill under .claude/skills/

Codex

MCP / tools config

Same pattern

Windsurf / OpenCode

MCP command/args

Prefer stdio

Agent flow

npx notion-bank-mcp@latest  (host starts stdio)
        │
        ▼
plan_status
        │
        ├─ no auth → browser OAuth (localhost callback :8765)
        │            tokens → ~/.config/notion-bank/credentials.json
        │
        └─ no root → ask Plans root URL → plan_configure
                     config → ~/.config/notion-bank/config.json
        │
        ▼
plan_upsert / plan_get / plan_update_range / …

Hierarchy:

Plans / Superpowers          ← root (plan_configure)
  └── <Service>              ← plan_ensure_service
        └── <Plan title>     ← plan_upsert / plan_migrate

Tools

Tool

Purpose

plan_status

Auth + workspace readiness

plan_oauth_login / plan_oauth_wait / plan_oauth_logout

Browser OAuth lifecycle

plan_configure

Persist Plans root (+ optional service map)

plan_ensure_service

Ensure service page under root

plan_create_child

Create a subpage under any parent page id/URL

plan_upsert / plan_migrate

Create/update plan from markdown or file

plan_get

Read with optional L00N| lines, TOC, etag

plan_update_range

Surgical edit by section / lines + expected_etag

plan_search

Search with line hits

plan_sync

Export Notion plan → local markdown

Resources

  • notion-bank://docs/workflow

  • notion-bank://docs/instructions

  • notion-bank://config

Config (per user / machine)

Stored outside the git repo:

Path

Contents

~/.config/notion-bank/config.json

Plans root + service map

~/.config/notion-bank/credentials.json

OAuth access / refresh tokens

~/.config/notion-bank/oauth-pending.json

Short-lived login state (auto-cleared)

Do not put Notion tokens or OAuth client secrets in the repo or in committed mcp.json. Access tokens expire (~8h); the server refreshes automatically when possible. If refresh fails, run plan_oauth_login again.


HTTP serve

Optional hosted URL mode for teams that want "url": "https://host/mcp" instead of stdio:

npm run serve
# or: notion-bank-mcp serve

Details: docs/OPERATOR.md. Not required for normal users.


Skills

MCP tools and skills are separate. The skill teaches the agent when/how to document in Notion; the server only registers tools.

Shipped skill: skills/notion-bank/SKILL.md
Slash name: /notion-bank

Copy into your host skills directory (with notion-bank MCP enabled):

Host

Typical path

Cursor

.cursor/skills/notion-bank/ or user skills

Claude Code

.claude/skills/notion-bank/

Codex / agents

.agents/skills/notion-bank/

The skill chains superpowers (brainstorming → writing-plans) and optimize-goal when applicable, uses an in-skill engineering checklist, and always returns the Notion URL.


Developers

make check          # typecheck + biome + tests (coverage fail <75%, warn <90%)
make test-coverage
make release VERSION=1.5.0   # bump package.json, commit, create annotated tag v1.5.0
git push && git push origin v1.5.0   # triggers GitHub Actions → npm publish

Coverage policy: CI fails below 75% (lines/statements/functions/branches). Below 90% emits a warning annotation only.

Release: git tag vX.Y.Z is the source of truth. The release workflow syncs package.json version from the tag, runs checks, then npm publish. Requires repo secret NPM_TOKEN.

Docs

License

MIT

Available Tools

12 tools
plan_configureA

Persist per-user workspace settings (NOT in repo .env). Pass the user's Plans root Notion URL or UUID. Optional services map slug→page_id. Merges services by default. Call after plan_status when root_page_id missing. Ask the user for their root page — never invent IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
servicesNoOptional map e.g. {"my-service":"<page_uuid>"}
export_dirNo
root_page_idNoNotion page UUID (with or without dashes)
root_page_urlNoFull Notion page URL containing the page id
merge_servicesNoMerge into existing services map (default true)

TDQS

A4.3/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 the full burden. It discloses key behavioral traits: it persists settings, merges services by default, and requires user-provided IDs. However, it does not describe side effects like overwriting vs merging existing settings beyond services, or error handling.

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: the first states the purpose, the second specifies what to pass, and the third gives behavioral and usage notes. No redundant information.

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?

The description covers the key context (when to call, what to pass, what it does) but is missing details about return values, error conditions, and idempotency. The export_dir parameter is unexplained. Given no output schema, more completeness would be beneficial.

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 coverage is high (80%) with descriptions for most parameters. The description adds context for root_page_id/url and services, and notes the default merging behavior for merge_services. However, export_dir has no schema description and is not mentioned in the description, leaving a gap.

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 persists per-user workspace settings and specifies it is NOT in the repo .env, distinguishing its scope. It directly links to sibling tool plan_status, providing context for when this tool is needed.

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?

Explicitly instructs to call after plan_status when root_page_id is missing and includes strong guidance to ask the user for their root page and never invent IDs, providing clear when-to-use and when-not-to-use rules.

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

plan_ensure_serviceA

Ensure a service page exists under the configured Plans root. Creates if missing. Requires plan_configure + NOTION_TOKEN.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNo
serviceYesService slug or name, e.g. "billing" or "Auth Service"

TDQS

A4.1/5.0
Behavior4/5

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

No annotations are present, so the description carries full responsibility. It discloses that the tool creates the page if missing, and mentions required access tokens. This covers the core behavior adequately, though it could detail idempotency or error handling.

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 key information is front-loaded, and each sentence serves a clear purpose.

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 (2 params, no output schema, no annotations), the description is mostly complete, covering purpose, behavior, and prerequisites. It could benefit from mentioning the return value or idempotency, but overall it's sufficient.

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

Parameters2/5

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

Schema description coverage is 50% (dry_run lacks a description). The description does not add any parameter-specific meaning beyond the schema, leaving the dry_run parameter unexplained.

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's purpose: 'Ensure a service page exists under the configured Plans root. Creates if missing.' It uses a specific verb ('ensure') and resource ('service page'), and the name 'plan_ensure_service' aligns with this purpose, distinguishing it from siblings like 'plan_get' or 'plan_upsert'.

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 explicit prerequisites: 'Requires plan_configure + NOTION_TOKEN.' While it does not explicitly state when to use this tool vs. alternatives or when not to use it, the clear purpose implies its appropriate context.

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

plan_getA

Fetch a plan as addressable markdown with L00N| line numbers, TOC, and etag. Always call before plan_update_range. Requires plan_configure + NOTION_TOKEN.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNo
page_idNo
serviceYes
sectionsNo
max_linesNo
with_linesNo

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, description discloses read operation, output features, and authentication requirement. Lacks details on rate limits or error behavior but sufficient for basic usage.

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, highly concise, purpose stated upfront, no filler. Every word adds value.

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?

Despite clear output description, the tool has 6 parameters with no schema descriptions and no output schema. The description fails to explain parameter roles or provide enough context for correct invocation.

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

Parameters1/5

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

Schema coverage is 0% and description provides no explanation for any of the 6 parameters (title, page_id, service, sections, max_lines, with_lines). Agent cannot infer how to populate inputs from description alone.

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?

Clear verb 'Fetch' and specific resource 'plan', with detailed output format (addressable markdown, line numbers, TOC, etag). Distinguishes from siblings by mentioning relation to plan_update_range.

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 states to call before plan_update_range and lists required prerequisites (plan_configure + NOTION_TOKEN). No explicit when-not-to-use or alternative sibling tools mentioned.

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

plan_migrateB

Migrate a local markdown file into Notion plan bank (upsert under service → title). Requires plan_configure + NOTION_TOKEN. Chunking handled inside MCP.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNo
pathYesAbsolute or relative path to a .md file
titleYesPlan title (Notion subpage name)
dry_runNo
serviceYesService slug, e.g. "billing"

TDQS

B3.3/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. It discloses upsert behavior and internal chunking, but omits critical details: what happens on failure (file not found, missing service), whether mode affects behavior differently, or if the tool is safe to re-run. Limited transparency for a write operation.

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-load the purpose and then state prerequisites and internal behavior. No unnecessary words; every part earns its place.

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 5 parameters, no output schema, and no annotations, the description fails to cover error states, return values, or detailed parameter semantics. Missing guidance on how mode or dry_run affect operation, leaving significant gaps for an agent to infer.

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

Parameters2/5

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

Schema coverage is 60% (3 of 5 parameters described). Description adds context about upsert and chunking but doesn't clarify the purpose of mode or dry_run parameters. Does not compensate adequately for the missing schema descriptions.

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 migrates a local markdown file into Notion plan bank, specifying verb 'Migrate' and resources (local file, Notion plan bank). It distinguishes from siblings like plan_upsert by emphasizing the file-based input and internal chunking.

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?

Mentions prerequisite (plan_configure + NOTION_TOKEN) and notes that chunking is handled internally, providing some guidance. However, lacks explicit when-to-use vs alternatives like plan_upsert or plan_sync, and no when-not-to scenarios.

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

plan_oauth_loginA

Open browser for Notion login (mcp.notion.com). Auto-runs on first Notion tool if not logged in. No CLIENT_ID/SECRET.

ParametersJSON Schema
NameRequiredDescriptionDefault
waitNoBlock until browser login finishes (default true)
timeout_msNo
open_browserNo

TDQS

A3.9/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 discloses that a browser opens and login auto-runs, but lacks details on blocking behavior (wait parameter), timeout, potential side effects, or what happens if already logged in. The description is adequate but not comprehensive.

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 three short sentences, each adding value. It front-loads the purpose, includes key behavioral hints, and avoids any waste.

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 OAuth login tool with no output schema and three parameters, the description covers the main behavior and automation feature. It misses parameter details but is otherwise complete enough for an agent to understand the core functionality.

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

Parameters2/5

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

Schema description coverage is only 33% (only 'wait' has a description). The description does not explain any parameter beyond the schema, such as timeout_ms or open_browser, so it adds minimal value. Given low coverage, it should compensate but fails to do so.

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 opens a browser for Notion login, specifies the domain (mcp.notion.com), and distinguishes itself by noting auto-run behavior and absence of client credentials. This differentiates it from siblings like plan_oauth_logout and plan_oauth_wait.

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 indicates the tool auto-runs on first use if not logged in, implying when it's triggered. It also mentions no CLIENT_ID/SECRET needed, setting expectations. However, it does not explicitly state when not to use it or provide alternatives among siblings.

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

plan_oauth_logoutA

Clear saved OAuth credentials for this user (credentials.json). Does not revoke at Notion end.

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 provided, so description carries full burden. Discloses the critical behavioral trait that it does not revoke at Notion end, which is essential for agent decision-making.

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 with zero waste. Front-loaded with action and key limitation.

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 tool with no parameters or output schema, the description fully covers the behavior and limitation.

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, baseline 4. No need for parameter descriptions.

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 it clears saved OAuth credentials locally. Distinguishes from sibling tools like plan_oauth_login and plan_oauth_wait by specifying the action.

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?

States the tool clears credentials locally and does not revoke at Notion end, providing context. Lacks explicit when-not or alternatives, but clear enough.

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

plan_oauth_waitB

Finish a pending plan_oauth_login(wait=false) after the user approves in the browser.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeout_msNo

TDQS

B3.4/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. It mentions finishing a pending login after user approval but doesn't disclose mutation behavior, error conditions, or return values. More detail needed for a tool involving network calls and user interaction.

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?

Single sentence is concise and to the point, but lack of parameter details reduces effectiveness. Could be slightly longer to cover essentials.

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 moderate complexity (OAuth flow, user interaction) and no annotations or output schema, the description is insufficient. Missing parameter explanation, success/failure behavior, and prerequisites.

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

Parameters2/5

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

Schema coverage is 0%, and description does not mention the timeout_ms parameter. No additional meaning beyond schema constraints. Parameter purpose and usage entirely unexplained.

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 completes a pending OAuth login after user approval, using specific verb 'Finish' and resource 'pending plan_oauth_login'. It distinguishes from sibling tools like plan_oauth_login and plan_oauth_logout.

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 context (after plan_oauth_login with wait=false and user approval) but lacks explicit when-not-to-use or alternative guidance. The sibling tool list provides context.

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

plan_statusA

Show auth + workspace status. Call first. End users need no CLIENT_ID — browser OAuth opens automatically.

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?

With no annotations provided, the description must fully disclose behavior. It states that the tool shows status and that browser OAuth opens automatically, which is a key side effect. However, it does not clarify whether the tool is read-only, what the exact output or status fields are, or if authentication state changes occur.

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 long, presenting the purpose and a key guideline in a clear, front-loaded manner. Every word contributes meaningful information with no redundancy.

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 output schema and no parameters, the description covers the basic purpose and the critical OAuth opening behavior. However, it lacks details on what exactly 'auth + workspace status' encompasses, such as specific status fields or return formats, making it less complete for an agent without further context.

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%, so the description does not need to compensate. The baseline of 4 is appropriate; the description adds value by explaining the OAuth behavior, though it does not directly address 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 uses a specific verb 'Show' and resource 'auth + workspace status', clearly distinguishing it from sibling tools like plan_oauth_login and plan_get. The addition 'Call first' further clarifies its role as an initial status check.

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 explicitly states 'Call first', indicating when to use this tool. It also explains that end users need no CLIENT_ID because browser OAuth opens automatically, which helps differentiate from OAuth tools. However, it does not provide explicit when-not-to-use or alternatives.

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

plan_syncB

Export a Notion plan (canonical) to a local markdown file. Requires plan_configure + NOTION_TOKEN.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNo
titleNo
dry_runNo
page_idNo
serviceYes

TDQS

B3.3/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 states the tool creates a local markdown file (an output file), which implies a side effect. However, it does not disclose whether it overwrites existing files, handles errors, or if the operation is idempotent. The description adds some behavioral context beyond the name 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?

Two sentences are perfectly concise, with the first sentence stating the core purpose and the second adding a prerequisite. No unnecessary words or redundancy.

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 complexity (5 parameters, no schema descriptions, no annotations, no output schema) and the set of sibling tools (e.g., plan_configure, plan_get), the description is inadequate. It only covers basic purpose and a prerequisite, leaving parameter semantics and behavioral details completely unaddressed.

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

Parameters1/5

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

The description provides no explanation of the five parameters (path, title, dry_run, page_id, service). With 0% schema description coverage, the agent has no guidance on what each parameter does or how to use them. This is a critical gap for correct tool invocation.

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 exports a Notion plan to a local markdown file, specifying the verb 'export' and resource 'Notion plan (canonical)'. This distinguishes it from siblings like plan_get (retrieves plan data) and plan_migrate (moves plan).

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 mentions a prerequisite: 'Requires plan_configure + NOTION_TOKEN.' However, it does not provide guidance on when to use this tool versus alternatives, nor does it specify when not to use it. The prerequisite is useful but incomplete.

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

plan_update_rangeB

Surgical update by section (preferred) or start_line/end_line. Pass expected_etag from plan_get. Errors if neither section nor lines given (no silent full replace). Requires plan_configure + NOTION_TOKEN.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNo
dry_runNo
page_idNo
sectionNo
serviceYes
end_lineNo
occurrenceNo
start_lineNo
new_markdownYes
expected_etagNo

TDQS

B3.3/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. Discloses mutation, concurrency via etag, and error on missing spec. However, it does not explain how the update merges or replaces content, nor any side effects or rate limits.

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?

Two sentences efficiently convey core purpose and key usage tips. Could be slightly improved with bullet points or clearer separation of requirements, but overall no wasted words.

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?

Despite moderate complexity (10 params, no output schema), description omits many parameter semantics, return value, and error patterns beyond the missing spec case. Incomplete for an agent to fully understand usage.

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

Parameters2/5

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

Schema coverage is 0%, but description only explains about half of the 10 parameters (section, start_line, end_line, expected_etag). Missing details on service, new_markdown, title, dry_run, page_id, and occurrence.

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 it performs a 'surgical update' by section or line range, distinguishing it from full-replace operations. However, it could be more explicit in differentiating from sibling tools like plan_upsert.

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 specific guidance: prefer section over lines, pass expected_etag from plan_get, errors if no spec given. Prerequisites (plan_configure, NOTION_TOKEN) are listed. Lacks explicit comparison to alternatives.

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

plan_upsertB

Create or update a plan from a markdown string. Upserts by exact title under the service page. Requires plan_configure + NOTION_TOKEN.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNo
titleYes
dry_runNo
serviceYes
markdownYes

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It does not detail side effects, error cases, idempotency, or what happens if the plan exists or not. The mention of 'upsert' is helpful but 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 two sentences with no redundant information. It front-loads the purpose and then adds requirements and matching detail. Efficient but could be slightly more structured.

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 5 parameters, no annotations, and no output schema, the description is insufficient. It does not explain the mode parameter, dry_run behavior, or any return value. A more complete description is needed for correct usage.

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

Parameters2/5

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

Schema description coverage is 0%. The description adds minimal meaning beyond the schema: 'markdown string' and 'exact title'. Parameters like mode (enum with upsert/create_only) and dry_run are not explained, leaving significant gaps.

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's purpose: 'Create or update a plan from a markdown string.' It specifies the method (upsert by exact title under service page) and distinguishes from siblings like plan_get and plan_search.

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 mentions requirements ('Requires plan_configure + NOTION_TOKEN') and the matching condition ('by exact title'), but does not provide explicit guidance on when to use versus alternatives or 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.

TDQS

A3.9/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: configure, ensure_service, get, migrate, OAuth login/logout/wait, search, status, sync, update_range, upsert. No overlap.

Naming Consistency5/5

All tools follow consistent 'plan_' prefix with verb_noun pattern in snake_case (e.g., plan_ensure_service, plan_update_range). No mixing of conventions.

Tool Count5/5

12 tools is well within the ideal 3-15 range, covering auth, CRUD, search, sync, and migration without unnecessary bloat.

Completeness4/5

Covers configuration, service management, plan retrieval, updates, upserts, search, sync, and OAuth flow. Minor gap: no explicit deletion tool, but upsert can override and sync handles export. Still quite complete.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/hinha/notion-bank-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server