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

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

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
imap_notesNoPresent when this Mac has notes in an IMAP mail account, which this answer does not include: error_key imap_notes_not_listed, their count, and how to read one
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
    • addedOutput schema / properties / imap_notes
      Added value: +{
      +  "description": "Present when this Mac has notes in an IMAP mail account, which this answer does not include: error_key imap_notes_not_listed, their count, and how to read one",
      +  "type": "object"
      +}
  2. Changed1 schema field changed
    • addedOutput schema / properties / next_actions / items
      Added value: +{
      +  "type": "object"
      +}
  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. 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."
  5. 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."
  6. 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"
      +}
  7. First observed

TDQS

A4.3/5.0
Behavior5/5

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

Goes well beyond annotations by explaining pagination behavior, total/has_more semantics, why order="modified" is unsafe for paging, how order="id" behaves, and the deletion-mid-crawl caveat. Annotations already establish read-only safety, and the description adds substantial 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.

Conciseness4/5

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

Front-loads what the tool does and then explains pagination in a structured way. It is somewhat verbose and repeats some schema details, but the length is justified by the complexity of paging and order safety.

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 an output schema and read-only annotations, the description supplies the remaining operational context needed to call the tool correctly: folder scoping, trash behavior, paging mechanics, and order selection. Nothing material is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the schema already documents all four parameters thoroughly. The description adds cross-parameter workflow guidance, especially paging with limit/offset until has_more is false and using order="id" for complete library traversal.

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?

States a specific verb and resource: 'Lists notes from Apple Notes app,' and notes optional folder filtering. It does not explicitly distinguish itself from the sibling search_notes tool or say when browsing is preferred over searching.

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

Usage Guidelines4/5

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

Provides clear operational usage for paging, offset, limit caps, and using order="id" to walk a whole library. It does not, however, compare the tool against alternatives such as search_notes or read_note.

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