apple-notes-mcp 2.9.24 → 2.9.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +29 -19
  2. package/build/index.js +797 -592
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -261,8 +261,10 @@ Two optional booleans describe a write's outcome when it is known.
261
261
  id before any retry, and never retry blindly. `committed: true` means the write
262
262
  took effect even though its verification failed; `committed: false` means
263
263
  nothing was written (for example a `revision_conflict`). An absent flag means
264
- unknown. Errors the MCP SDK raises itself before a tool runs, such as an
265
- argument that fails the input schema, carry no `structuredContent`.
264
+ unknown. An argument that fails the input schema is rejected before the tool
265
+ runs, with `code: "validation_error"` and `committed: false`. The exception is
266
+ a Notes UUID or numeric key that could not be resolved to an id: it carries
267
+ `not_found`, or `full_disk_access_missing` when the database is unreadable.
266
268
 
267
269
  ### Note Operations
268
270
 
@@ -2060,7 +2062,7 @@ success, with no read cap below the 64 MiB write limit.
2060
2062
  |-----------|------|----------|-------------|
2061
2063
  | `id` | string | Yes | Exact CoreData note ID |
2062
2064
  | `expectedContentHash` | string | Yes | `contentHash` from the note version being extended |
2063
- | `path` | string | Yes | Absolute path of the local file; symbolic links are refused |
2065
+ | `path` | string | Yes | Absolute path of the local file. Read under the same rules as `create-note`'s [`contentPath`](#create-note): home, temp or `/Volumes` only; hidden paths (any component starting with `.`, such as `~/.ssh` or a project `.env`) and `~/Library` other than iCloud Drive (`~/Library/Mobile Documents`) and `~/Library/CloudStorage` are refused, checked again after resolving symbolic links and letter case, unless the server sets `APPLE_NOTES_MCP_ALLOW_PRIVATE_CONTENT_PATHS=1`. Symbolic links and anything but a regular file (a FIFO, a device) are refused |
2064
2066
  | `filename` | string | No | Name the attachment gets in Notes instead of the source file's name. One path component that keeps the source file's extension, with no slash, colon, backslash, control character, leading dot or surrounding spaces. Notes names a file attachment after the file it receives, so the server gives its private temporary copy this name |
2065
2067
 
2066
2068
  **Returns:** `attachmentId`, `bytes`, the `name` Notes reports, and the new
@@ -2091,7 +2093,7 @@ same verification as [`add-attachment`](#add-attachment).
2091
2093
  | `content` | string | No | Plain-text body placed above the attachment |
2092
2094
  | `folder` | string | No | Existing folder or nested path; create it first with [`create-folder`](#create-folder) |
2093
2095
  | `account` | string | No | Account name; defaults to Notes.app's default account |
2094
- | `path` | string | Yes | Absolute path of the local file (at most 64 MiB) |
2096
+ | `path` | string | Yes | Absolute path of the local file (at most 64 MiB), under the same read rules as `add-attachment`; a refused path creates no note |
2095
2097
  | `filename` | string | No | Attachment name override, as in `add-attachment` |
2096
2098
 
2097
2099
  ```json
@@ -2104,9 +2106,12 @@ same verification as [`add-attachment`](#add-attachment).
2104
2106
  ```
2105
2107
 
2106
2108
  **Returns:** the new note's `id` with `noteCreated: true` and the
2107
- `add-attachment` result. If the attachment step fails after the note exists,
2108
- the error names the new note's id: attach to it with `add-attachment` instead of
2109
- calling this tool again, which would create a second note.
2109
+ `add-attachment` result. If the attachment step fails after the note exists but
2110
+ before the file is inserted, the error names the new note's id: attach to it
2111
+ with `add-attachment` instead of calling this tool again, which would create a
2112
+ second note. If insertion started and could not be verified, the error is
2113
+ `code: "verification_failed"` with `indeterminate: true`: the file may already
2114
+ be in the note, so read it with `list-attachments` before attaching again.
2110
2115
 
2111
2116
  ---
2112
2117
 
@@ -2419,11 +2424,13 @@ and currently available, with a specific reason for each unavailable operation.
2419
2424
  It also reports `runtimeOS` (`platform`, `macOSVersion` from `sw_vers`,
2420
2425
  `darwinRelease`) and a `features` matrix, one entry per feature group:
2421
2426
  `applescriptCore`, `fullDiskAccessReads`, `shortcutsBridges`,
2422
- `backgroundOperationsBridge`, `nativeTagsBridge`, `markdownNoteBridge`, and the
2423
- placeholders `checklistToggle`, `smartFolders`, `paragraphLinks`, and
2424
- `audioTranscription`, which need a native *write* helper this server does not
2425
- ship (requirement `native_write_helper`). The opt-in private helper below is
2426
- read-only, so enabling it does not change them: they stay `not_implemented`.
2427
+ `backgroundOperationsBridge`, `nativeTagsBridge`, `markdownNoteBridge`,
2428
+ `paragraphLinks` and `audioTranscription` (both database reads that need Full
2429
+ Disk Access), and the placeholders `checklistToggle` and `smartFolders`
2430
+ (creating or editing smart folders), which need a native *write* helper this
2431
+ server does not ship (requirement `native_write_helper`). The opt-in private
2432
+ helper below is read-only, so enabling it does not change them: they stay
2433
+ `not_implemented`.
2427
2434
  Each entry carries `available`, `osSupported`, `minimumMacOSVersion`,
2428
2435
  `requirements`, `missing`, `unverified`, `tools`, and a machine-readable
2429
2436
  `reason` that is `null` when available and otherwise the first that applies:
@@ -2503,12 +2510,15 @@ the note's last checklist items in the requested order.
2503
2510
  }
2504
2511
  ```
2505
2512
 
2506
- **Returns:** `items`, each with its `index`, native `id` and `text`, plus
2507
- `orderVerified` and the new `contentHash`. The first uncertain result stops the
2508
- call without a retry and returns `ok: false` with `landed` (the verified items),
2509
- `stoppedAt` (the item's index, text, `outcome` of `"not-written"` or
2510
- `"uncertain"`, and the error), and `notAttempted`. After an uncertain stop, read
2511
- the note before retrying, and retry only the items that are not present.
2513
+ **Returns:** `items` (also as `landed`), each with its `index`, native `id` and
2514
+ `text`, plus `orderVerified` and the new `contentHash`. The first uncertain
2515
+ result stops the call without a retry and returns `ok: false` with `landed` (the
2516
+ verified items), `stoppedAt` (the item's index, text, `outcome` of
2517
+ `"not-written"` or `"uncertain"`, and the error), and `notAttempted`. Every
2518
+ `ok: false` result is an error result (`isError: true`) with a `code`; after an
2519
+ uncertain stop it has `indeterminate: true` and no `contentHash`, since the note
2520
+ may have changed. Read the note before retrying, and retry only the items that
2521
+ are not present.
2512
2522
 
2513
2523
  #### `create-table`
2514
2524
 
@@ -2765,7 +2775,7 @@ All configuration is optional — the server works out of the box. Override beha
2765
2775
  | `APPLE_NOTES_MCP_BACKGROUND_SHORTCUT` | `Apple Notes MCP - Background Operations v5` | Name or UUID of the installed Background Operations bridge to run. `setup` still installs and checks the default name. |
2766
2776
  | `APPLE_NOTES_MCP_MARKDOWN_SHORTCUT` | `Apple Notes MCP - Create Markdown Note` | Name or UUID of the installed Create Markdown Note bridge to run. `setup` still installs and checks the default name. |
2767
2777
  | `APPLE_NOTES_MCP_PASTEBOARD_NAME` | unset | Testing only: makes [`add-attachment-from-pasteboard`](#add-attachment-from-pasteboard) read a private named pasteboard instead of the general clipboard. |
2768
- | `APPLE_NOTES_MCP_ALLOW_PRIVATE_CONTENT_PATHS` | unset | Set to `1` to let `create-note` read a [`contentPath`](#create-note) inside a hidden directory or file (such as `~/.config`) or `~/Library` outside iCloud Drive and `~/Library/CloudStorage`. Off by default because those places hold keys, tokens and app data. |
2778
+ | `APPLE_NOTES_MCP_ALLOW_PRIVATE_CONTENT_PATHS` | unset | Set to `1` to let `create-note` read a [`contentPath`](#create-note), and [`add-attachment`](#add-attachment) and [`create-note-with-attachment`](#create-note-with-attachment) attach a `path`, inside a hidden directory or file (such as `~/.config`) or `~/Library` outside iCloud Drive and `~/Library/CloudStorage`. Off by default because those places hold keys, tokens and app data. |
2769
2779
  | `DEBUG` / `VERBOSE` | unset | Set either to enable verbose diagnostic logging to stderr. |
2770
2780
 
2771
2781
  ### Configuration file (when the host strips `env`)