Apple Notes on Steroids
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| APPLE_NOTES_MD_DIR | No | The folder of .md files for syncing. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_foldersA | List every Apple Notes folder with its path and note count. |
| list_notesA | List notes, newest first. Optionally scoped to one folder. Trash is excluded. |
| search_notesA | Search notes by title, or by title and body with search_body=true (slower, capped scope). |
| get_noteA | Read one note by id (preferred) or by title. The body comes back as Markdown and never repeats the title, which is already the note's name. The default reads the note's own store, so checked boxes, block quotes, link targets and highlights come back intact; rich:false means the store was out of reach and the body degraded to the exported HTML, which carries none of those. format=html returns the raw HTML. Attachments appear as placeholder marks, never bytes: to copy a note to disk or a vault, use export_note, which writes the images as files too. |
| list_attachmentsA | What a note carries besides text: images, scans, drawings, files. One entry per mark in the note's Markdown, in the same order, so mark n and attachment n are the same thing. A table is not listed: its mark became the pipe rows in the body. Use get_attachment to look at one. |
| get_attachmentA | Fetch one attachment of a note by its index in list_attachments. Bytes as Notes holds them, under their own name and type. A drawing has no original, so it comes back as the picture Notes renders of it, which is the only form it exists in. |
| create_noteA | Create a new note. Title becomes the first line. The body is Markdown: inline styles, links, lists, tables, code fences, quotes, ==highlights==, and '- [ ]' checklists are converted. |
| append_noteA | Append to the end of an existing note. The text is Markdown, like create_note's body. The rest of the note is untouched: the fragment is pasted at the caret, so the note's own styles and attachments stay as they are. |
| update_noteA | Replace a note's body. Destructive for that note: the old body is overwritten. Title is kept unless a new one is given. The body is Markdown, like create_note. |
| sync_nowA | One pass over a folder of .md files, one direction per file. A file opts in with frontmatter |
| sync_statusA | Dry-run of sync_now: reports what would be pushed, pulled or created, without writing anything. |
| export_noteA | Write an existing note to a new Markdown file, with its images, scans and drawings written beside it and linked. The one way attachment bytes reach disk. Rewrites a file it wrote before, refuses any other existing file rather than overwriting it. The file is stamped for |
| import_noteA | Create a new note from a Markdown file. Its image links become real attachments. Creates only: a name that already exists in Notes is refused, so nothing is overwritten. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 13 tools
Most tools are cleanly separated by resource and action, and list/search/read/write distinctions are clear. The only real ambiguity is among export_note, import_note, and sync_now, which all move markdown/attachments between Notes and disk, so agents must carefully compare one-off conversion vs batch sync.
The dominant verb_noun pattern (list_notes, get_attachment, create_note, update_note, export_note) is consistent and readable. sync_now and sync_status are the only slight deviations, but they still read as a paired sync family rather than arbitrary names.
At 13 tools, the server is well within the ideal scope and has no redundant entries. Each tool addresses a distinct operation: reading, writing, searching, attachments, import/export, or sync.
The content lifecycle is mostly covered with list/search/get/create/append/update and strong attachment/sync support. However, there is no delete/trash tool and no folder creation/move or ability to create a note in a chosen folder, which are notable gaps. These omissions create dead ends for cleanup and organizational workflows.