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.3/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 carry full behavioral disclosure. It only mentions creation from a template, omitting important details like whether existing notes are overwritten, required authentication, 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.

Conciseness5/5

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

The description is a single sentence that conveys the core purpose and template options without unnecessary words.

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 5 parameters, no output schema, and absence of annotations, the description is sufficient for basic usage but lacks details on return format, error behavior, and edge cases.

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 parameter descriptions. The description adds little beyond the schema, so baseline 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?

The description clearly states the verb 'create' and resource 'developer-formatted note', and distinguishes from generic note creation via templates. However, it doesn't fully articulate what 'developer-formatted' entails.

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

Usage Guidelines3/5

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

The description implies usage when a structured note from one of the listed templates is needed, but provides no explicit when-to-use, when-not-to-use, or alternative tools. Sibling tools are available but not referenced.

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/5.0
Behavior2/5

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

The description only states the basic action without disclosing behavioral traits such as what happens if the folder name already exists, whether the operation is reversible, or any required permissions. No annotations are provided to compensate.

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

Conciseness3/5

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

The description is concise (one sentence) with no extraneous information. However, it lacks detail that could be included without significantly increasing length.

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

Completeness2/5

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

Given the tool has 2 parameters, no output schema, and no annotations, the description is insufficient to fully understand the tool's behavior (e.g., error handling, default account behavior). More context is needed for safe and effective use.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description does not add additional semantic meaning beyond what the schema already provides for the 'name' and 'account' 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') and the resource ('a new folder') within the specific application ('Apple Notes'). It effectively distinguishes from sibling tools like 'create_note' and '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 versus alternatives (e.g., 'list_folders' or 'create_note'). No prerequisites, preconditions, or exclusions are mentioned.

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.4/5.0
Behavior3/5

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

The description indicates the primary mutating action (create), but does not disclose side effects such as automatic folder creation (per schema). With no annotations, the description carries the full burden and provides minimal behavioral context.

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

Conciseness5/5

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

The description is a single, focused sentence with no unnecessary words, front-loading the core action.

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 should cover return values or error states, but it does not. It is incomplete for a tool with multiple optional parameters.

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

Parameters3/5

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

Schema description coverage is 100%, so the description can rely on it. It adds no additional meaning beyond the schema's 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?

The description clearly states 'Create a new note in Apple Notes', using a specific verb and resource, and distinguishes from sibling tools like create_dev_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 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 (e.g., create_snippet_note) or prerequisites (e.g., account/folder existence). The description lacks usage context.

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.3/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 states the basic write operation ('save'), omitting details about side effects, idempotency, authentication needs, or return behavior. 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.

Conciseness4/5

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

The description is a single sentence with 10 words, making it concise and front-loaded. However, the extreme brevity sacrifices some clarity and completeness, which slightly reduces the score from 5.

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 6 parameters, no annotations, and no output schema, the description fails to cover critical context such as return behavior, prerequisites, or error conditions. It is too minimal to enable correct invocation without further exploration.

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 baseline is 3. The description adds no additional meaning to parameters beyond the schema; it merely summarizes them ('language tag', 'context'). It does not provide constraints, formats, or usage examples.

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' uses a specific verb ('save') and clearly identifies the resource (code snippet as a note). It distinguishes from siblings like create_note (general) and create_dev_note (developer-focused) by explicitly targeting 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 Guidelines3/5

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

The description implies usage for saving code snippets but provides no explicit when-to-use or when-not-to-use guidance. It does not mention alternatives (e.g., create_note for non-code notes) or context for selecting this tool.

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

delete_folderA

Delete a folder and all its notes from Apple Notes

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesFolder name to delete
accountNoAccount name

TDQS

A3.5/5.0
Behavior3/5

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

Discloses the critical cascading deletion (folder + notes), which is essential for a destructive operation. However, lacks details on error handling, permissions required, or behavior with non-existent folders, especially given no 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?

Single sentence, front-loaded with the action and resource. No superfluous words. Efficient and to the point.

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?

Covers the essential cascading behavior but omits return value, error cases, and default account behavior. For a destructive tool with no output schema or annotations, more guidance would improve completeness.

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 descriptions already cover both parameters (name: 'Folder name to delete', account: 'Account name'). The description adds no new parameter-level information. With 100% schema coverage, 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 'Delete' and the resource 'a folder and all its notes from Apple Notes', making the tool's purpose unambiguous. It effectively distinguishes from siblings like delete_note (single note) and create_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 explicit guidance on when to use this tool vs alternatives like delete_note or create_folder. No mention of prerequisites, reversibility, or scenarios where deletion should be avoided.

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

delete_noteB

Delete a note by title or ID

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoNote ID
titleNoNote title
accountNoAccount

TDQS

B3.1/5.0
Behavior2/5

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

The description only states the action 'delete' without disclosing behavior when both id and title are provided, impact on related data, or error handling. No annotations are present to compensate.

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, but it could benefit from additional details about behavior or constraints.

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 lack of output schema and that this is a destructive tool with three optional parameters, the description is incomplete. It omits return values, error conditions, and conflict resolution between id and title.

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

Parameters3/5

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

Schema description coverage is 100%, so the description adds minimal value. It clarifies that deletion can be by title or ID, but this is already inferable from the parameter schema.

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

Purpose5/5

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

The description clearly states the action (delete) and the resource (note), and specifies two identification methods (title or ID), distinguishing it from sibling tools like 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 update_note or get_note, nor on prerequisites or when not to use it.

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

doctorA

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

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

No annotations provided. The description does not disclose side effects (likely none) or what the output looks like. It only says 'check', which is vague for an agent.

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 that is to the point. No wasted words.

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 simplicity (0 params, no output schema), the description is minimally adequate but lacks detail on return values (e.g., health status format). Could be more complete.

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

Parameters4/5

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

No parameters exist, so baseline is 4. The description does not need to add param info, and it correctly states the tool's purpose without requiring 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's purpose: 'Check Notes.app health: installation, permissions, and access'. It uses a specific verb and resource, and is easily distinguished 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 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. With many sibling tools, an explicit usage context (e.g., 'Use this before other operations to verify setup') would be helpful.

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
Behavior2/5

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

No annotations provided, so description must bear full burden. It discloses the basic function but omits behavior details like authentication, handling of ambiguous queries, or return format. The schema covers parameter descriptions fully.

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 waste. Directly communicates the tool's function and key parameters.

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 retrieval tool but lacks guidance on parameter interaction (e.g., when both id and title are provided) and return value format. Could be more complete given 3 parameters and no output schema.

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 baseline is 3. Description adds 'exact match' for title but does not elaborate beyond schema. No additional parameter context provided.

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 action ('Get') and resource ('note's content'), with specific methods ('by title or ID'). Distinguishes from sibling tools like list_notes and search_notes.

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 over alternatives. Usage is implied by the description but no when-not-to-use or alternative tool references.

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

get_recent_notesC

Get notes modified in the last N hours

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

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states 'get notes' which implies a read operation, but does not disclose any side effects, rate limits, maximum results, or whether it returns full note content or just metadata.

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?

A single, concise sentence. No extraneous information, but could be slightly more informative without sacrificing brevity.

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, and the description does not hint at return format. For a simple tool with no required parameters, it is mostly adequate but lacks detail on what the returned notes contain.

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?

Input schema has 100% coverage of parameters. The description adds no extra meaning beyond the schema; it repeats the hours concept but does not elaborate on format or constraints. Baseline 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?

The description clearly states it retrieves notes modified in the last N hours, using a specific verb and resource. It is distinct from siblings like 'get_note' (single note) or 'search_notes' (by criteria), but could clarify the output format (e.g., list of note titles).

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 implies use for recent notes but offers no explicit guidance on when to prefer this tool over alternatives like 'search_notes' or 'list_notes'. No mentions of when not to use or prerequisites.

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.1/5.0
Behavior3/5

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

The description indicates a read-only operation ("List") with no destructive actions. However, no annotations exist to supplement, and the description does not disclose potential error conditions, authorization requirements, or rate limits. For a simple parameterless tool, this is adequate but not enhanced.

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, clear sentence that directly states the tool's function with examples. No extraneous content.

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 list tool with no parameters and no output schema, the description fully covers the functionality. It explains what accounts are listed and provides illustrative examples.

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

Parameters4/5

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

The input schema has zero parameters, so the description adds no parameter-specific information. With schema coverage at 100% (trivially), a baseline of 4 is appropriate per the guidelines.

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 lists available Apple Notes accounts, with examples (iCloud, On My Mac). It distinguishes itself from sibling list tools like list_folders and list_notes by specifying the resource type (accounts).

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 retrieving account names but does not explicitly state when to use this tool over alternatives like list_folders or list_notes. No exclusions or prerequisites are provided.

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.3/5.0
Behavior2/5

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

No annotations provided; description does not disclose that this is a read-only operation or any performance details; too minimal for a tool without 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?

Single sentence with no superfluous words; highly 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?

For a simple list tool with one optional parameter and no output schema, description is adequate but could mention return structure or ordering.

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% and the parameter description is already clear; description adds no further meaning beyond schema.

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

Purpose5/5

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

Description clearly states the verb 'List' and the resource 'all folders in Apple Notes', distinguishing it from sibling tools like list_accounts and list_notes.

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 list_notes or when not to use it; only states the action.

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

list_notesC

List notes in a folder or account

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

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided, so the description carries full burden. It only says 'List notes' implying read-only, but lacks details on pagination, sorting, return format, 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.

Conciseness4/5

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

Extremely concise (1 sentence, 8 words). Structure is simple and front-loaded, but could benefit from more details without losing conciseness.

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 fails to clarify behavior when both folder and account are provided, or what fields are returned.

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 100% of parameters with descriptions. The tool's description reinforces that folder and account scope the listing, adding context to the schema.

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

Purpose4/5

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

The description clearly states the action (list) and resource (notes). However, it does not differentiate itself from siblings like search_notes or get_recent_notes, leaving ambiguity about when to use this tool.

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 search_notes or get_note. No when-not or prerequisites mentioned.

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 are provided, so the description bears full responsibility for behavioral disclosure. It only states 'Move' without detailing side effects, required permissions, or whether the operation is reversible. The description is too minimal to inform the agent about the behavior beyond the action.

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, clear sentence with no wasted words. It is appropriately sized for a simple tool, though it could be slightly more informative without losing conciseness.

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 lack of output schema and annotations, the description should provide more context about return values, error conditions, or typical usage. Currently, it only covers the basic action, leaving significant gaps for an agent to safely use the 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?

The input schema has 100% coverage, with each parameter already described. The description adds no additional meaning to the parameters, meeting the baseline expectation.

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 'Move a note to a different folder', using a specific verb and resource. However, it does not explicitly distinguish this tool from siblings like 'update_note' which might also change folder locations.

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 (e.g., when to use update_note instead). There is no mention of prerequisites or context, leaving the agent without decision support.

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

search_notesA

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

A3.7/5.0
Behavior3/5

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

No annotations exist, so the description must disclose behaviors. It notes that search is restricted to titles, which is a key constraint. However, it does not address case sensitivity, pagination, sorting, or behavior on empty results.

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 sentence with no unnecessary words. It is front-loaded and efficient.

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 lacks details about the return format (e.g., list of note IDs or note objects) and pagination. Given no output schema, these omissions reduce completeness for a search 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 coverage is 100% (all parameters have descriptions). The description adds the context 'by keyword in title' for the query parameter, but this is already implied by the schema description. Thus, the description adds minimal value beyond the schema.

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

Purpose5/5

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

The description 'Search notes by keyword in title' clearly states the action (search), resource (notes), and scope (by keyword in title). This distinguishes it from sibling tools like list_notes (which lists all notes) and get_note (which retrieves a specific 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 that the tool should be used when searching by keyword, but it does not explicitly specify when to use this tool versus alternatives like list_notes or get_note. No exclusions or alternative recommendations are provided.

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?

With no annotations provided, the description must fully disclose behavior, but it only states the action. It does not mention whether the note ID is required (though id is not in required array), what happens if the note doesn't exist, whether changes are irreversible, or any rate limits. Lacks critical safety and side-effect information.

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 with no wasted words, making it efficient. It could be slightly improved by adding a second sentence about optional parameters or usage, but it remains concise and front-loaded.

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

Completeness2/5

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

Given 5 parameters, no output schema, and no annotations, the description is incomplete. It does not explain return values, error conditions, or how to use the mode parameter effectively. For a mutation tool, this lacks the context an agent needs to safely and correctly invoke it.

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 baseline is 3. The description adds value by clarifying the 'mode' enum (replace, append, prepend) beyond the schema's 'Update mode' label. However, it does not elaborate on the 'id', 'title', 'account', or 'content' parameters beyond their schema descriptions, so the added semantic value is moderate.

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 tool updates a note's content and specifies three modes (replace, append, prepend), distinguishing it from creation, deletion, or retrieval tools. However, it omits that the tool can also update title and account fields, which are present in the input schema, making the purpose slightly narrower than the actual capability.

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 like create_note or delete_note. It does not mention prerequisites (e.g., note must exist) or contexts where append/prepend are preferred over replace. The description assumes the agent already knows when to invoke it.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  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
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

ActivitySlowing
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

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.
    6
    2
    MIT

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/jayprajapati/apple-notes-agent-mcp'

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