apple-notes-mcp 2.8.28 → 2.8.30

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 +57 -2
  2. package/build/index.js +758 -202
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -56,7 +56,7 @@ Install as a Claude Code plugin for automatic configuration and enhanced AI beha
56
56
 
57
57
  This method also installs a **skill** that teaches Claude when and how to use Apple Notes effectively.
58
58
 
59
- On the first tool call, macOS shows an Automation permission prompt ("Claude" wants access to control "Notes") — click **OK**. Optionally, grant **Full Disk Access** to the app that launches the server to enable the database-backed tools (`get-checklist-state`, `get-note-metadata`, `get-note-link`, checklist annotations in `get-note-markdown`, and full `get-sync-status` detail); see the [Full Disk Access Setup Guide](https://github.com/sweetrb/apple-notes-mcp/blob/main/docs/FULL-DISK-ACCESS.md). The rest of the server is pure AppleScript and works without it.
59
+ On the first tool call, macOS shows an Automation permission prompt ("Claude" wants access to control "Notes") — click **OK**. Optionally, grant **Full Disk Access** to the app that launches the server to enable the database-backed tools (`get-checklist-state`, `get-note-metadata`, `get-audio-transcripts`, `get-note-link`, checklist annotations in `get-note-markdown`, and full `get-sync-status` detail); see the [Full Disk Access Setup Guide](https://github.com/sweetrb/apple-notes-mcp/blob/main/docs/FULL-DISK-ACCESS.md). The rest of the server is pure AppleScript and works without it.
60
60
 
61
61
  Native tag, checklist, table, pin, and rich append operations use two packaged
62
62
  Apple Shortcuts. A third, `Apple Notes MCP - Create Markdown Note`, is optional:
@@ -169,6 +169,7 @@ On first use, macOS will ask for permission to automate Notes.app. Click "OK" to
169
169
  | **Multi-Account** | Work with iCloud, Gmail, Exchange, or any configured account, including account IDs and default folders |
170
170
  | **Batch Operations** | Delete or move multiple notes at once |
171
171
  | **Checklist State** | Read checklist done/undone state directly from the Notes database (requires Full Disk Access) |
172
+ | **Audio Transcripts** | Read the transcripts and summaries Notes stored for audio recordings (requires Full Disk Access) |
172
173
  | **Export** | Export all notes as JSON or get individual notes as Markdown |
173
174
  | **Attachments** | List attachments, save them to disk, or fetch their bytes as base64 |
174
175
  | **Notes.app UI State** | Reveal a note in Notes.app or read the current Notes.app selection |
@@ -513,6 +514,28 @@ Disk Access.
513
514
 
514
515
  ---
515
516
 
517
+ #### `get-note-tables`
518
+
519
+ Reads every native table in one exact note, in body order, from the NoteStore
520
+ database. Each table is returned as GitHub-flavored Markdown and as JSON `rows`
521
+ with stable `rowIds` and `columnIds`. Notes tables have no header row, so the
522
+ Markdown uses the first row as the header. Pipes are escaped as `\|`,
523
+ backslashes are doubled, and line breaks inside a cell become `<br>`.
524
+
525
+ | Parameter | Type | Required | Description |
526
+ |-----------|------|----------|-------------|
527
+ | `id` | string | Yes | Exact note ID (`x-coredata://…/ICNote/pNNN`) |
528
+
529
+ `tableCellsComplete` is false when any table or cell could not be decoded. A
530
+ cell holding an embedded object is `null` in `rows`, listed in
531
+ `incompleteCells`, and shown as `[undecoded cell]` in Markdown. A table whose
532
+ data cannot be decoded at all has `complete: false`, a `reason`, and no rows.
533
+ Cell text is never guessed. Links and styling inside cells are not rendered.
534
+ A note without tables returns an empty `tables` list. This tool is read-only,
535
+ requires Full Disk Access, and refuses password-protected notes.
536
+
537
+ ---
538
+
516
539
  #### `get-note-blocks`
517
540
 
518
541
  Decodes one note's body into typed blocks, read-only, from the NoteStore
@@ -1252,6 +1275,38 @@ Reads note metadata that AppleScript cannot expose, by querying the NoteStore SQ
1252
1275
 
1253
1276
  ---
1254
1277
 
1278
+ #### `get-audio-transcripts`
1279
+
1280
+ Reads the transcript, and the summary when one exists, that Notes already computed for the audio recordings in a note. It does not transcribe anything itself. Notes keeps each recording's transcript as word-level mergeable data on the audio attachment's database row, and this tool decodes it read-only.
1281
+
1282
+ **Requires:** Full Disk Access for the MCP host process (see [Full Disk Access Setup](#full-disk-access)). Password-protected notes are refused.
1283
+
1284
+ | Parameter | Type | Required | Description |
1285
+ |-----------|------|----------|-------------|
1286
+ | `id` | string | Yes | Note ID (use `search-notes` to find it first) |
1287
+ | `includeSegments` | boolean | No | Also return word-level segments: `text`, `start` and `duration` in seconds, and `speaker`. Default `false` |
1288
+ | `maxSegments` | number | No | Cap on segments per attachment when `includeSegments` is set (default 2000, at most 20000) |
1289
+
1290
+ **Example:**
1291
+ ```json
1292
+ {
1293
+ "id": "x-coredata://ABC123/ICNote/p456",
1294
+ "includeSegments": true,
1295
+ "maxSegments": 500
1296
+ }
1297
+ ```
1298
+
1299
+ **Returns:** `structuredContent.attachments` holds one entry per top-level audio attachment, in the order the recordings appear in the note. Each entry has:
1300
+
1301
+ - `attachmentId` (usable with `save-attachment`), `identifier`, `typeUti`, and `durationSeconds` when known
1302
+ - `status`: `ok` (a transcript is stored), `none` (no transcript is stored, for example a recording Notes has not transcribed, or an audio file attached from elsewhere), or `undecodable` with a `reason`
1303
+ - `text` (the words joined into readable text), `wordCount`, `fragmentCount`, `speakers`, `summary` and `topLineSummary` when stored, and `needsTranscription` when the database records it
1304
+ - `segments`, only when `includeSegments` is set, with `segmentsTruncated` when the cap cut them short
1305
+
1306
+ A recording extended with more takes has several fragments. Their transcripts are joined in stored order, separated by a blank line, and each segment carries a `fragment` index. Recordings with more than one fragment have been verified against synthetic fixtures only. A response that would exceed `APPLE_NOTES_MCP_EXPORT_MAX_BYTES` (default 8 MB) drops segments first and then shortens `text`, marking `truncated`, `segmentsTruncated` and `textTruncated`. When the note body cannot be parsed, attachments come back in database order with `bodyOrder: false`.
1307
+
1308
+ ---
1309
+
1255
1310
  #### `add-attachment`
1256
1311
 
1257
1312
  Adds one nonempty local file of at most 64 MiB to an exact note using `id`, the
@@ -1669,7 +1724,7 @@ MCP stores no secrets, but as a general rule keep only non-secret config here.
1669
1724
 
1670
1725
  ## Full Disk Access
1671
1726
 
1672
- Several tools read directly from the Apple Notes SQLite database, which lives in a macOS-protected directory. Those tools require **Full Disk Access** for the process running the MCP server: `get-checklist-state`, `get-note-metadata`, `get-note-blocks`, `get-note-link`, the checklist annotations in `get-note-markdown`, and the database half of `get-sync-status`.
1727
+ Several tools read directly from the Apple Notes SQLite database, which lives in a macOS-protected directory. Those tools require **Full Disk Access** for the process running the MCP server: `get-checklist-state`, `get-note-metadata`, `get-note-blocks`, `get-audio-transcripts`, `get-note-link`, the checklist annotations in `get-note-markdown`, and the database half of `get-sync-status`.
1673
1728
 
1674
1729
  > 📘 **For the full why-and-how walkthrough (which app to grant, verifying with `doctor`, graceful degradation), see the [Full Disk Access Setup Guide](https://github.com/sweetrb/apple-notes-mcp/blob/main/docs/FULL-DISK-ACCESS.md).** The summary below is the quick version.
1675
1730