Skip to main content
Glama

NoteAgent

npm version license

Your AI coding agent's secondary brain.

NoteAgent is an MCP (Model Context Protocol) server that connects AI coding agents — Claude Code, Cursor, OpenCode — with Apple Notes. Use it to capture debug sessions, log commit context, save code snippets, and manage notes without leaving your terminal.

Built for developers who think in code and organize in notes.

Quick Start

# Run directly (no install needed)
npx apple-notes-agent-mcp

# Or install globally
npm install -g apple-notes-agent-mcp
apple-notes-agent-mcp

Related MCP server: Bruin

Why NoteAgent?

Existing Apple Notes MCP servers are generic note managers. NoteAgent is built for developers:

  • Developer workflows — Pre-built templates for standups, debug sessions, commit logs

  • Code snippet capture — Save language-aware snippets with file path context

  • Zero confignpx apple-notes-agent-mcp just works on macOS

  • Health checksdoctor tool verifies Notes.app permissions and connectivity

  • Error recovery — Automatic retries with exponential backoff and clear error messages

Installation

Requirements

  • macOS with Apple Notes.app

  • Node.js >= 18

  • Terminal/IDE with automation permissions (System Settings → Privacy & Security → Automation)

npx apple-notes-agent-mcp

Local development

git clone https://github.com/jayprajapati/apple-notes-agent-mcp.git
cd apple-notes-agent-mcp
npm install
npm run build
node dist/index.js

MCP Client Configuration

Claude Code

Add to ~/.claude/settings.json:

{
  "mcpServers": {
    "noteagent": {
      "command": "npx",
      "args": ["apple-notes-agent-mcp"]
    }
  }
}

Cursor

Add to .cursor/mcp.json in your project:

{
  "mcpServers": {
    "noteagent": {
      "command": "npx",
      "args": ["apple-notes-agent-mcp"]
    }
  }
}

OpenCode

Add to your MCP configuration file:

{
  "mcpServers": {
    "noteagent": {
      "command": "npx",
      "args": ["apple-notes-agent-mcp"]
    }
  }
}

Tools (15 total)

Note Operations

Tool

Description

create_note

Create a new note with title and content

get_note

Get a note's content by title or ID

update_note

Update a note (replace, append, or prepend)

delete_note

Delete a note by title or ID

list_notes

List notes in a folder or account

move_note

Move a note to a different folder

Folder Operations

Tool

Description

create_folder

Create a new folder

delete_folder

Delete a folder

list_folders

List all folders with note counts

Search & Account

Tool

Description

search_notes

Search notes by keyword

list_accounts

List available Notes accounts

get_recent_notes

Get notes modified in last N hours/days

Developer Workflows

Tool

Description

create_dev_note

Create a developer-formatted note (standup, debug, commit)

create_snippet_note

Save a code snippet with language and context

doctor

Run diagnostics on Notes.app connectivity and permissions

Usage Examples

Create a note

Create a note titled "Meeting Notes" in the "Work" folder with today's action items.

The agent will use create_note with your content. Folders are created automatically if they don't exist.

Debug session logging

Log this debugging session as a dev note. The issue was a race condition in the auth middleware.
Steps to reproduce: send two concurrent login requests.
Root cause: shared mutable state in session store.
Fix: use atomic operations.

The agent will use create_dev_note with the debug template.

Save a code snippet

Save this code snippet to my notes — it's a TypeScript utility function from src/utils.ts

The agent will use create_snippet_note with the file path and language context.

Search notes

Search my notes for anything about "deployment pipeline"

Health check

Check if Notes.app is working properly with NoteAgent

The agent will run doctor to verify permissions and connectivity.

Daily standup

Create a standup note for today. I finished the auth module and started on the API layer.

The agent will use create_dev_note with the standup template.

Developer Templates

Daily Standup (standup)

Pre-formatted with:

  • What I did yesterday

  • What I'll do today

  • Blockers

Debug Session (debug)

Pre-formatted with:

  • Issue description

  • Steps to reproduce

  • Root cause analysis

  • Fix applied

Commit Log (commit)

Pre-formatted with:

  • Commit message

  • Files changed

  • Context notes

Code Snippet (snippet)

Includes:

  • Language tag

  • File path context

  • Formatted code block

Troubleshooting

"Apple Notes access denied"

Grant automation permissions:

  1. Open System Settings

  2. Go to Privacy & Security → Automation

  3. Enable access for your terminal app (Terminal, iTerm2, VS Code, etc.)

"Apple Notes is not running"

Open Notes.app before using NoteAgent. The MCP server communicates with Notes via AppleScript.

Notes not found

NoteAgent searches by exact title match. Use list_notes or search_notes to find the correct title.

Connection issues

Run the diagnostic tool:

Run the doctor tool to check NoteAgent status

This verifies Notes.app is installed, running, and accessible.

Architecture

src/
├── index.ts                 # MCP server entry point
├── types.ts                 # TypeScript interfaces
├── services/
│   ├── applescript.ts       # AppleScript executor with retry logic
│   └── notes-manager.ts     # High-level Notes operations
├── tools/
│   ├── note-tools.ts        # 6 note CRUD tools
│   ├── folder-tools.ts      # 3 folder management tools
│   ├── search-tools.ts      # 3 search/account tools
│   └── developer-tools.ts   # 3 developer workflow tools
└── utils/
    ├── helpers.ts           # Shared utilities
    └── parsing.ts           # AppleScript output parsing

Development

# Install dependencies
npm install

# Build
npm run build

# Run tests
npm test

# Run integration tests (requires Notes.app)
npm run test:integration

# Type check
npm run lint

License

MIT

Available Tools

15 tools
create_dev_noteB

Create a developer-formatted note from a template (standup, debug, commit)

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoCustom title (defaults to template name + date)
folderNoTarget folder
accountNoAccount
contentNoInitial content for the primary section
templateYesNote template

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, and the description fails to disclose behavioral traits such as whether the tool overwrites existing notes, required authentication, or side effects. The description alone is insufficient for an agent to understand the tool's 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?

The description is a single concise sentence front-loading the core purpose and key differentiator (templates). 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?

With 5 parameters, no output schema, and no annotations, the description is too minimal. It lacks details on what 'developer-formatted' entails, the interaction between content and template, and expected output, making the tool under-specified.

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 100%, so the description adds minimal extra meaning beyond the schema. The description mentions templates matching the enum, but does not elaborate on other 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 the action 'Create' the resource 'developer-formatted note' and specifies the templates (standup, debug, commit), distinguishing it from siblings like create_note and create_snippet_note.

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 templated dev notes but does not explicitly state when to use this tool versus alternatives like create_note, nor provides exclusion criteria.

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

create_folderB

Create a new folder in Apple Notes

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesFolder name
accountNoAccount name

TDQS

B3.3/5.0
Behavior2/5

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

No annotations provided; description fails to disclose behavioral traits like handling duplicate names, default account behavior, or required permissions.

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 sentence with no wasted words, efficient and front-loaded.

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 a simple creation tool, but lacks context on error conditions or prerequisites; adequate but not comprehensive.

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 covers both parameters with descriptions ('Folder name', 'Account name'), so baseline is 3; description adds no extra semantics.

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 verb 'create' and resource 'folder' in Apple Notes, distinguishing it from sibling tools like create_note or delete_folder.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives, such as checking existing folders with list_folders or prerequisites like account existence.

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

create_noteB

Create a new note in Apple Notes

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesNote title
folderNoTarget folder name (created if missing)
accountNoTarget account name
contentYesNote content (HTML or plain text)

TDQS

B3.3/5.0
Behavior2/5

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

No annotations provided, so the description should fully disclose behavior. It only states the basic action with no mention of side effects, permissions, or constraints (e.g., content format, app interaction). This is insufficient for a mutation tool.

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

Conciseness5/5

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

Single sentence with 7 words, no fluff. Perfectly concise and front-loaded.

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

Completeness3/5

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

Given no annotations, no output schema, and presence of sibling tools, the description is too minimal. It lacks usage context, behavioral details, and return value information. However, for a simple creation tool, it meets minimum viability.

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

Parameters3/5

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

Schema description coverage is 100%, so parameters are already documented. The description adds no additional meaning beyond what the schema provides. Baseline 3 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?

The description clearly specifies the verb 'Create', the resource 'note', and the domain 'Apple Notes'. It distinguishes from sibling tools like 'create_dev_note' and 'create_snippet_note' which are more specialized.

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., create_dev_note, create_snippet_note). No prerequisites mentioned, though the schema implies folder can be created if missing. The description lacks context for choosing this tool.

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

create_snippet_noteB

Save a code snippet as a note with language tag and context

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesCode snippet to save
titleNoCustom title
folderNoTarget folder
accountNoAccount
contextNoWhere this snippet came from (file path, error message, etc.)
languageYesProgramming language (e.g., typescript, python, rust)

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavior. It states 'Save a code snippet as a note,' but fails to clarify side effects (e.g., overwriting, duplication), required permissions, idempotency, or postconditions. For a creation tool, this lacks sufficient 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?

The description is a single, well-structured sentence of 10 words with no redundant information. It front-loads the core purpose and omits filler, making it quick to parse.

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

Completeness2/5

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

Despite a simple purpose, the tool has six parameters and no output schema or annotations. The description does not explain parameter usage, expected input formats (e.g., code snippet length), or return behavior. It is insufficient for an agent to use the tool reliably without additional context.

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

Parameters3/5

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

The schema has 100% coverage of parameters, achieving the baseline of 3. The description merely echoes 'language tag and context' without adding syntactic constraints, valid formats, or relationships beyond what the schema already documents.

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 'Save a code snippet as a note with language tag and context' clearly specifies the action (save), resource (code snippet as a note), and key attributes (language tag and context). It effectively distinguishes this tool from siblings like create_note and create_dev_note by focusing on code snippets.

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

Usage Guidelines2/5

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

The description provides no explicit guidance on when to use this tool versus alternatives. It does not mention when not to use it or suggest other tools for different scenarios. With multiple note creation tools, this omission hinders correct selection.

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

delete_folderB

Delete a folder and all its notes from Apple Notes

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesFolder name to delete
accountNoAccount name

TDQS

B3.1/5.0
Behavior2/5

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

No annotations provided, so the description must fully describe behavior. It implies destructiveness but does not state irreversibility, what happens to nested notes, or error conditions. This is insufficient.

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

Conciseness4/5

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

The description is a single concise sentence, front-loading the primary action. However, it omits critical details that could be added without verbosity.

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?

The tool has a simple input schema and no output schema, but the description lacks context on side effects, prerequisites (e.g., account required), and post-conditions, making it incomplete.

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 100%, with descriptions already explaining parameters. The tool description adds no extra meaning beyond the schema, meeting the baseline for covered 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 the verb 'Delete' and the resource 'folder and all its notes', specifying the scope. It distinguishes from siblings like create_folder and delete_note, which have different actions.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., deleting a note individually). No mention of prerequisites like folder existence or confirmation requirements.

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

delete_noteC

Delete a note by title or ID

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoNote ID
titleNoNote title
accountNoAccount

TDQS

C2.9/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 fully. It only says 'delete', implying destruction but not detailing permanence, authorization needs, or 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?

The description is extremely concise—one sentence with no filler. Front-loaded with the action and resource, it earns its place.

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

Completeness1/5

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

Given no annotations, no output schema, and three parameters, the description is far from complete. It omits critical details like whether deletion is permanent, if confirmation is needed, or if account context is required.

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?

All parameters are described in the schema (100% coverage), so the description adds minimal extra meaning. It clarifies that either title or ID can be used, but does not address the 'account' parameter's role.

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

Purpose4/5

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

The description clearly states the action 'delete' and the resource 'note', with specific identification methods 'by title or ID'. It is concise and unambiguous, but does not explicitly distinguish from sibling tool 'delete_folder'.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like 'delete_folder' or 'update_note'. There is no mention of prerequisites or conditions.

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

doctorA

Check Notes.app health: installation, permissions, and access

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 are provided, so the description carries full burden. It discloses the tool checks health but lacks details on what actions are performed (e.g., reads, writes), side effects, or required permissions. The description is minimal and does not fully compensate for missing annotations.

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?

A single sentence that is concise and front-loaded with no wasted words. Every word adds value.

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 simple nature and no output schema, the description tells what is checked but not the return format or behavior. Could briefly describe typical output (e.g., status object) for 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 and 100% coverage, so schema already fully documents parameters. The description confirms no arguments needed, adding no conflict. Baseline 4 for no 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 the tool checks Notes.app health, covering installation, permissions, and access. It uses a specific verb (check) and resource, and is distinct from sibling CRUD tools.

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 health verification but does not provide explicit context on when to use versus alternatives or when not to use. No exclusions or prerequisites are mentioned.

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

get_noteA

Get a note's content by title or ID

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoNote ID (x-coredata://...)
titleNoNote title (exact match)
accountNoAccount to search in

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are present, so the description is the sole source. It implies a read-only operation by saying 'Get', but does not explicitly state safety, error behavior (e.g., if note not found), or permission requirements. Adequate 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?

Single, front-loaded sentence. No redundant phrases. Every word contributes value.

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?

No output schema exists, so the description should clarify return format (e.g., plain text, JSON). It only says 'content', leaving ambiguity. Also missing precedence when both id and title are provided. Adequate for a simple retrieval but incomplete.

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 100%, providing descriptions for all three parameters. The tool description adds the 'by title or ID' context but does not significantly enhance schema information (e.g., disambiguation when both are provided). Baseline 3 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?

The description clearly states the verb 'Get', the resource 'note's content', and the search criteria 'by title or ID'. This distinguishes it from siblings like search_notes (list) and get_recent_notes (recent).

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like search_notes or get_recent_notes. No mention of prerequisites, required parameters, or context for choosing between id and title.

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

get_recent_notesA

Get notes modified in the last N hours

ParametersJSON Schema
NameRequiredDescriptionDefault
hoursNoNumber of hours to look back (default: 24)
accountNoAccount name

TDQS

A3.5/5.0
Behavior2/5

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

No annotations exist, so description carries full burden. It indicates a read operation but lacks disclosure of pagination, limits, sorting, or whether full content vs. metadata is returned. No mention of side effects or performance traits.

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

Conciseness5/5

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

Single sentence is highly concise and front-loaded with core purpose. No redundant words or 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?

For a simple 2-parameter tool with no output schema, the description covers core functionality but omits details about output format, sorting, or whether account is optional. Adequate but with notable gaps.

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 100% with descriptions for both 'hours' (with default) and 'account'. The description aligns with the hours parameter but adds no extra meaning beyond schema; both are clear.

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 'Get notes modified in the last N hours' clearly specifies the action (get) and resource (notes), with a precise time-based scope. It distinguishes from sibling tools like list_notes (likely all notes) and search_notes (likely query-based).

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 time-filtered retrieval but does not explicitly state when to use this tool versus alternatives like search_notes or list_notes. With 15 siblings, explicit guidance would be beneficial.

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

list_accountsA

List available Apple Notes accounts (iCloud, On My Mac, etc.)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

The description implies a read-only, non-destructive operation, which is appropriate. However, it does not explicitly state that it is safe to call or describe error scenarios. Without annotations, this is adequate but could be improved.

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, concise sentence with no unnecessary words. It delivers the essential information efficiently.

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 operation with no parameters and no output schema, the description is mostly complete. It lacks details about the output format (e.g., list of account names and IDs) but is sufficient for basic use.

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

Parameters5/5

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

The input schema has zero parameters and 100% coverage, so the description cannot add parameter details. It adds value by providing examples of account types, which helps the agent understand the output context.

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 verb 'List' and the resource 'Apple Notes accounts' with specific examples (iCloud, On My Mac). It distinguishes from sibling tools like list_notes and list_folders which operate on different entities.

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?

No explicit guidance on when to use this tool versus alternatives or any prerequisites. Usage is implied by the operation itself, but no context is given about when to call it (e.g., before creating a note).

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

list_foldersB

List all folders in Apple Notes

ParametersJSON Schema
NameRequiredDescriptionDefault
accountNoAccount name (omit for all accounts)

TDQS

B3.4/5.0
Behavior2/5

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

No annotations provided, so the description must bear full burden. It does not disclose that this is a safe, read-only operation, nor does it mention authentication, rate limits, or response structure. The name implies read-only, but more explicit behavioral context is needed.

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?

Description is a single, concise sentence with no wasted words. It efficiently communicates the core function. Ideal for a simple tool.

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 no output schema, the description should describe the return format (e.g., list of folder names or IDs). It does not, leaving the agent without crucial context. For a simple tool with one parameter, this is a notable gap.

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 100% with one optional parameter 'account' clearly described. The tool description adds no additional meaning beyond what the schema already provides, so baseline of 3 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 'List all folders in Apple Notes' uses a specific verb ('List') and resource ('folders'), clearly distinguishing from sibling tools like 'list_notes' and 'list_accounts'. The purpose is immediately obvious.

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?

No explicit guidance on when to use this tool vs alternatives (e.g., creating or deleting folders). However, the description implies the primary use case: retrieving folder list. Minimal but adequate for a straightforward listing tool.

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

list_notesB

List notes in a folder or account

ParametersJSON Schema
NameRequiredDescriptionDefault
folderNoFolder name (omit for all notes)
accountNoAccount name

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It only says 'list notes' without mentioning pagination, sorting, side effects (though likely none), or any constraints. This leaves important behavior unclear.

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 a single sentence, very concise. It could be slightly more informative without being wordy, but it is not overly brief.

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 no output schema and no annotations, the description is too minimal. It does not explain the return format, default behavior when no parameters are provided, or how it differs from similar tools like search_notes.

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

Parameters3/5

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

Schema description coverage is 100% with clear parameter descriptions. The description adds minimal extra meaning beyond the schema, just contextualizing the parameters. Baseline 3 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?

The description clearly states the action 'list notes' and the parameters 'in a folder or account'. It distinguishes from siblings like search_notes, get_note, and get_recent_notes by specifying the scope.

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

Usage Guidelines2/5

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

The description says when to use (list notes in folder/account) but does not provide guidance on when not to use, alternatives, or prerequisites. For instance, it doesn't distinguish from search_notes or mention that omitting folder lists all notes.

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

move_noteC

Move a note to a different folder

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoNote ID
titleNoNote title
folderYesTarget folder name
accountNoAccount

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided, so description must disclose behavioral traits. 'Move' implies mutation but no details on side effects, permissions, or return values. Lacks transparency on what happens to the original note.

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 with 7 words, very concise and front-loaded. However, it may be too brief given the tool's complexity and lack of other context.

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 4 parameters, no output schema, and no annotations, the description is inadequate. It does not explain return values, error conditions, or behavior after moving. Sibling tools like update_note hint at possible overlaps but not addressed.

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 100% with descriptions for all 4 parameters. Description adds no additional meaning beyond the schema, so baseline score of 3 is appropriate.

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?

Description clearly states the action (move) and resource (note) and destination (different folder). It distinguishes from sibling tools like create_note, delete_note, and update_note, but could specify that the note is moved from its current folder.

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

Usage Guidelines2/5

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

No guidance on when to use move_note vs update_note or other alternatives. No prerequisites (e.g., note must exist) or when-not conditions are provided.

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

search_notesB

Search notes by keyword in title

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query (matches against note titles)
folderNoRestrict search to this folder
accountNoRestrict search to this account

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only mentions basic functionality. It does not disclose behaviors like case sensitivity, partial matching, pagination, return format, or lack of results 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?

Single sentence, no wasted words, front-loaded with the action. Perfectly concise for the information provided.

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 simple structure and high schema coverage, the description lacks details on return value, sorting, or error states. For a search tool with no output schema, this information would be valuable for proper invocation.

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 100% with clear descriptions for all three parameters. The tool description adds no extra meaning beyond the schema, so baseline of 3 applies.

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 verb 'search' and the resource 'notes' along with the scope 'by keyword in title', making it distinct from sibling tools like list_notes or get_note.

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 versus alternatives (e.g., list_notes) or when not to use it. The description only implies usage for title keyword searches but lacks exclusionary or comparative context.

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

update_noteC

Update a note's content (replace, append, or prepend)

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoNote ID
modeNoUpdate modereplace
titleNoNote title
accountNoAccount
contentYesNew content

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided, and the description does not disclose behavioral traits such as auth requirements, partial vs full update behavior, or what happens to unspecified fields like title or account.

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?

Extremely concise single sentence that is front-loaded with the key action and modes, 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?

No output schema, and the description fails to explain return values, error cases, or even that the id parameter is essential for updates (though not required in schema). Significant gaps remain for a mutation tool.

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 has 100% parameter description coverage; the description adds value by explaining the mode enum (replace, append, prepend), but adds no semantics for other parameters.

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 updates a note's content with three modes (replace, append, prepend), but it doesn't distinguish from sibling tools like move_note or delete_note and fails to mention that title and account fields are also updatable per the schema.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives, no prerequisites mentioned, and no context on when to choose each mode.

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.1.0
    • First observedcreate_dev_note
    • First observedcreate_folder
    • First observedcreate_note
    • First observedcreate_snippet_note
    • First observeddelete_folder
    • First observeddelete_note
    • First observeddoctor
    • First observedget_note
    • First observedget_recent_notes
    • First observedlist_accounts
    • First observedlist_folders
    • First observedlist_notes
    • First observedmove_note
    • First observedsearch_notes
    • First observedupdate_note

TDQS

A3.5/5.0

Scored across 15 tools

Disambiguation5/5

Each tool targets a distinct action: general note creation, developer note creation, snippet creation, folder operations, note CRUD, search, move, and a health check. No overlapping purposes.

Naming Consistency4/5

Most tools follow verb_noun snake_case pattern (e.g., create_note, delete_folder). The 'doctor' tool is the only outlier, but it's a health check command and still clear.

Tool Count5/5

15 tools is appropriate for an Apple Notes assistant, covering note creation, management, organization, search, and system health. Not excessive or insufficient.

Completeness4/5

Covers CRUD for notes and folders, plus listing, search, move, and recent notes. Minor gaps: no folder rename or undo/trash support, but core workflows are present.

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that enables AI assistants like Claude to access and manipulate Apple Notes on macOS, allowing for retrieving, creating, and managing notes through natural language interactions.
    82
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server for AI agents to read, write, and organize notes in a local-first, human-in-the-loop note-taking app.
    4 npm
    2
    MIT