Skip to main content
Glama

List Notes

list_notes
Read-only

Lists notes from Apple Notes app. Optionally filter by folder.

Paginated: limit is capped at 500 per call, so page with offset (offset=500 returns notes 501-1000) instead of asking for a bigger limit. The response carries total (how many notes match in all) and has_more (whether anything is left past this page), so you never have to guess whether you got everything — page until has_more is false, which is exact even when total_is_estimated says the count is only a lower bound. To read a WHOLE library, pass order="id" — see the order parameter.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNoNotes per page (default 50, capped at 500). To get more, page with offset.50
orderNoorder: "modified" (default) sorts newest-modified first — what you want to SHOW someone, but NOT safe for paging: modification date changes, so a note edited between two calls jumps to the front and another note is pushed past your cursor and never returned. "id" sorts by the note's immutable store id — stable, never renumbered, new notes append at the end — so use order="id" to walk an entire library page by page: edits and insertions mid-crawl are safe with it. One case it cannot cover, because pages are addressed by offset: if a note is DELETED mid-crawl, every note after the hole shifts one slot back and the note that was on the page boundary is skipped, silently. If completeness matters, re-run the crawl and reconcile against total, or crawl while nothing is deleting notes.modified
folderNoExact name of the Notes folder to list. Leave it out to list every folder, which excludes trashed notes; naming a folder scopes to it, and naming the trash folder lists what is in the trash.
offsetNoHow many notes to skip (default 0). offset=500 with limit=500 returns notes 501-1000. An offset past the end returns an empty page with has_more=false, not an error.0

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
countNoNotes in THIS page
notesNo
orderNoThe ordering actually applied (modified | id)
totalNoNotes matching in total, ignoring limit/offset. A LOWER BOUND, not the exact figure, when total_is_estimated is true
offsetNoWhere this page started
has_moreNoTrue when notes remain past this page — call again with offset = offset + count
next_actionsNo
total_is_estimatedNoTrue when the exact count could not be taken (the unbounded COUNT failed, or the JXA fallback answered) — total is then only a lower bound. has_more stays exact either way: page until it is false, never until count reaches total

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / folder / description
      Added value: +"Exact name of the Notes folder to list. Leave it out to list every folder, which excludes trashed notes; naming a folder scopes to it, and naming the trash folder lists what is in the trash."
  2. Changed1 schema field changed
    • removedInput schema / properties / folder / description
      Removed value: -"Exact name of the Notes folder to list. Leave it out to list every folder, which excludes trashed notes; naming a folder scopes to it, and naming the trash folder lists what is in the trash."
  3. Changed1 schema field changed
    • addedInput schema / properties / folder / description
      Added value: +"Exact name of the Notes folder to list. Leave it out to list every folder, which excludes trashed notes; naming a folder scopes to it, and naming the trash folder lists what is in the trash."
  4. Changed9 schema fields changed
    • addedInput schema / properties / limit / description
      Added value: +"Notes per page (default 50, capped at 500). To get more, page with offset."
    • addedInput schema / properties / offset
      Added value: +{
      +  "default": "0",
      +  "description": "How many notes to skip (default 0). offset=500 with limit=500 returns notes 501-1000. An offset past the end returns an empty page with has_more=false, not an error.",
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • addedInput schema / properties / order
      Added value: +{
      +  "default": "modified",
      +  "description": "order: \"modified\" (default) sorts newest-modified first — what you want to SHOW someone, but NOT safe for paging: modification date changes, so a note edited between two calls jumps to the front and another note is pushed past your cursor and never returned. \"id\" sorts by the note's immutable store id — stable, never renumbered, new notes append at the end — so use order=\"id\" to walk an entire library page by page: edits and insertions mid-crawl are safe with it. One case it cannot cover, because pages are addressed by offset: if a note is DELETED mid-crawl, every note after the hole shifts one slot back and the note that was on the page boundary is skipped, silently. If completeness matters, re-run the crawl and reconcile against total, or crawl while nothing is deleting notes.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / count / description
      Added value: +"Notes in THIS page"
    • addedOutput schema / properties / has_more
      Added value: +{
      +  "description": "True when notes remain past this page — call again with offset = offset + count",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / offset
      Added value: +{
      +  "description": "Where this page started",
      +  "type": "integer"
      +}
    • addedOutput schema / properties / order
      Added value: +{
      +  "description": "The ordering actually applied (modified | id)",
      +  "type": "string"
      +}
    • addedOutput schema / properties / total / description
      Added value: +"Notes matching in total, ignoring limit/offset. A LOWER BOUND, not the exact figure, when total_is_estimated is true"
    • addedOutput schema / properties / total_is_estimated
      Added value: +{
      +  "description": "True when the exact count could not be taken (the unbounded COUNT failed, or the JXA fallback answered) — total is then only a lower bound. has_more stays exact either way: page until it is false, never until count reaches total",
      +  "type": "boolean"
      +}
  5. First observed

TDQS

A4.8/5.0
Behavior4/5

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

Annotations already indicate read-only and non-destructive, so the description focuses on behavioral nuances like pagination termination, offset behavior past end, and the deletion caveat. It does not contradict annotations; it adds valuable context on what the tool returns and its limitations.

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 detailed but well-organized, starting with the core purpose, then pagination, then order parameter. Every sentence serves a purpose, and the critical guidance is front-loaded. No redundancy.

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

Completeness5/5

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

Given the tool's complexity (pagination, ordering, folder scoping) and the presence of an output schema, the description covers all essential aspects for correct usage, including edge cases. Nothing an agent needs to use it correctly is missing.

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 already documents parameters well (100% coverage), but the description enriches each parameter with concrete examples (offset=500, limit=500) and critical caveats (order stability, deletion shift). This goes beyond schema basics and is highly actionable.

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 notes from Apple Notes with optional folder filtering, which is a distinct operation from searching notes (search_notes) or reading a single note (read_note). It also covers pagination details, making it unambiguous.

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

Usage Guidelines5/5

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

The description explicitly explains when to use pagination with offset instead of increasing limit, and when to use order='id' vs 'modified' for safe paging, including the edge case of deletions. This provides clear guidance on alternative behaviors and conditions.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources