samsung-notes-mcp
Provides tools for reading and searching a Samsung Notes library on the user's computer, including browsing notes, reading typed text and tables, accessing attachments such as photos and PDFs, retrieving page images to read handwriting, and saving copies of attachments. It works with notes synced by Samsung Notes for Windows or exported Samsung Notes (.sdocx) files in a folder.
Inkport: your notes in any browser
Samsung Notes files (.sdocx) only open on Samsung devices. Inkport opens them on iPhone, Mac, Windows, Linux, Chromebook and Android.
Every page, as you wrote it: handwriting, drawings, typed text, tables, photos, PDFs and voice recordings.
Take everything with you: one ZIP with Markdown and a PDF for every note, original dates kept, ready for Obsidian, Notion or any folder.
Send to AI in one tap: Claude, ChatGPT or Gemini gets the typed text as a text file, the handwritten pages as images, and every attached photo and PDF. Then ask it to transcribe, summarise or build a table. On a phone it opens the share menu; on a computer it saves the files to drag into the chat. One message holds at most 10 files, so big batches put the page images in one PDF.
Private and free: it runs in your browser and sends your files nowhere. Its security policy blocks background requests to other sites. No account, no usage limits, works offline, in 21 languages.
Get your notes out of Samsung Notes: long-press a note and select the ones you want, then Share → Samsung Notes file. On Android, install Inkport from Chrome's menu and pick it in that share menu; then Send to AI passes the notes on to your AI app. Anywhere else, save the files (Google Drive, OneDrive, a USB stick, an email to yourself) and open them in Inkport.
Related MCP server: GoodNotes MCP Server
Connect your notes to Claude
The connector lets Claude read your whole Samsung Notes library on your computer: search notes, read handwriting from page images, open invoice photos and PDFs, and save renamed copies into folders. It never changes a note.
You use | Install |
Claude Desktop | Download samsung-notes-mcp.mcpb, open it, and click Install, then Install again. |
Claude Code |
|
VS Code | |
Codex CLI |
|
Gemini CLI |
|
Cursor, Windsurf and others | Add |
Claude Desktop includes everything it needs; the others need Node.js 20.12 or newer.
Where your notes come from:
Samsung Notes for Windows (it installs on any PC): nothing to set. Open it once, sign in and let your notes sync.
Everything else (Mac, Linux): export notes from your phone as shown above, into one folder. In Claude Desktop, choose that folder as Exported notes folder in the extension's settings. Elsewhere, add
--exports "/path/to/folder"to the command. Put new exports in the same folder any time; Claude sees them on the next question.
Paste this into Claude Code, Claude Desktop's Code tab, or any agent with a terminal. It runs one command, then you click Install twice in Claude.
Install the Samsung Notes Reader extension in my Claude Desktop. Run the command for my system, then tell me to click Install twice in Claude:
Windows (PowerShell): curl.exe -fsSLo "$HOME\Downloads\samsung-notes-mcp.mcpb" https://github.com/Mhemd139/Samsung_Notes/releases/latest/download/samsung-notes-mcp.mcpb; claude-desktop.exe "$HOME\Downloads\samsung-notes-mcp.mcpb"
macOS: curl -fsSLo ~/Downloads/samsung-notes-mcp.mcpb https://github.com/Mhemd139/Samsung_Notes/releases/latest/download/samsung-notes-mcp.mcpb && open -a Claude ~/Downloads/samsung-notes-mcp.mcpbNotes for agents:
Install into Claude Desktop with the command above; don't ask the user to choose. Use the Claude Code line only if Claude Desktop isn't installed or the user asks for Claude Code.
If
claude-desktop.exeisn't found (older Windows installs), open the file withInvoke-Iteminstead; if Windows then asks which app, the user picks Claude → Always.The user clicks Install, then Install again; Claude Desktop asks for that on purpose. The red "not verified by Anthropic" banner is normal. Don't edit
claude_desktop_config.json, and don't restart Claude.Samsung Notes for Windows needs no setting. Anyone else exports notes from their phone into a folder (see "Where your notes come from").
Done when a new Claude Desktop chat answers “Give me an overview of my notes.”
Download the
.mcpbfile above, open it, and click Install, then Install again.Windows may ask which app opens
.mcpbfiles: choose Claude and Always.The red "not verified by Anthropic" banner is normal for any extension outside Anthropic's directory.
If the file doesn't open in Claude: Settings → Extensions → Advanced settings → Install Extension…, then choose it.
Optional: Save folder in the extension's settings is where Claude saves copies of attachments when you ask. By default it's the “Samsung Notes” folder in Documents. To keep them in Google Drive, OneDrive, iCloud or Dropbox, choose a folder inside that service's synced folder.
Start a new chat and ask: “Give me an overview of my notes.” The first time Claude uses each tool, it asks permission. Choose Always allow, and it won't ask again for that tool.
In Claude Code, claude mcp add --scope user samsung-notes -- npx -y samsung-notes-mcp also works without the plugin. Add --exports "/path/to/folder" for exported notes, or --save-dir "/path/to/folder" to save attachments somewhere other than Documents.
Try asking
“Give me an overview of my notes.”
“Find every invoice from this year and make a table: vendor, date, total, note.”
“Read my handwritten notes from last week and summarise them.”
“What's in the PDF attached to my ‘Car insurance’ note?”
“Put all the invoices from my ‘Receipts’ folder into a folder, named by date, vendor and total.”
What Claude can do
Tool | What it does |
| Where notes come from, folders, totals, problems |
| Browse or search by words, folder, date, attachments or handwriting |
| A note's typed text, tables, attachment list, and which pages hold handwriting |
| A page as an image — this is how Claude reads handwriting |
| An attached photo, or a PDF's text and page images |
| Copies of attached photos and PDFs, saved into a folder under names Claude chooses, only when you ask |
Privacy
Inkport runs in your browser. Your files are read on your device and never uploaded, and the page has no analytics or cookies. Its Content Security Policy blocks background requests to any other site. GitHub Pages serves the app's own files, so GitHub may log visits to the page like any website (GitHub's privacy statement).
The connector reads your notes on your computer. There is no server, no account and no analytics, and it makes no network requests.
Neither tool changes, moves or deletes a note. The connector writes files only when you ask it to save attachments: copies, into your Save folder, never overwriting a file.
When Claude opens a note, page or attachment during a chat, that content is sent to Claude as part of the chat, like anything you paste, under Anthropic's privacy policy. The same goes for any AI you send notes to from Inkport.
Every connector release bundle is built by this repository's GitHub workflow, with a provenance attestation. Check a download with
gh attestation verify samsung-notes-mcp.mcpb --repo Mhemd139/Samsung_Notes.Questions: open an issue.
Limits
Handwriting is read from page images, so search finds typed text and titles only.
Inkport's PDFs are images of each page, so their text can't be selected; the Markdown file next to each PDF carries the typed text.
Inkport builds an export in memory. On a phone, export a few hundred notes at a time.
Locked notes stay locked. Unlock them in Samsung Notes to include them.
Extremely long notes (over 250,000 characters) can't be read yet.
Page images show bold text at normal weight.
The Windows source reads Samsung Notes' own files; a Samsung Notes update could change them. If that happens,
notes_overviewsays so.
Troubleshooting
“No Samsung Notes found”: see "Where your notes come from".
“No notes yet” or “Folder not found”: let Samsung Notes finish syncing, or create the folder. No restart needed; Claude sees the notes on the next question.
A note is missing: notes in the recycle bin are skipped. New notes appear on the next question — no restart needed.
Ask Claude to run
notes_overview: it lists every problem it found.Something else: report a problem. Please don't attach your real notes; issues are public.
How it works
flowchart LR
phone[Samsung Notes on your phone] -->|sync| cloud[Samsung Cloud]
cloud -->|sync| app[Samsung Notes for Windows]
app -->|note folders| server[samsung-notes-mcp]
phone -.->|share .sdocx| folder[Exported notes]
folder --> server
folder --> inkport[Inkport in your browser]
server <-->|stdio| claude[Claude Desktop / Claude Code / any MCP app]
inkport -->|Send to AI, Markdown, PDF| anywhere[Any AI, Obsidian, Notion]Development
npm install
npm test
npm run build
npm run web:dev # Inkport on http://localhost:5173
npm run pack:mcpb # one-click bundle for all platforms
npm run smoke # local check against your own notes; prints counts onlyTranslations live in web/src/locales; a native speaker's fix is the most welcome contribution there is. See CONTRIBUTING.md for the project layout and rules, CHANGELOG.md for what changed, and SECURITY.md to report a vulnerability privately.
Credits and license
Parser: twangodev/sdocx (GPL-3.0). To inspect a file's internals, try its own viewer at sdocx.twango.dev.
PDF engine: PDFium via @hyzyla/pdfium.
Test notes: SDOCX Compatibility Corpus (CC BY 4.0).
Unofficial: not affiliated with Samsung. Samsung Notes is a trademark of Samsung Electronics.
GPL-3.0-only. See LICENSE.
Available Tools
6 toolsget_attachmentOpen an attachmentARead-only
Open a photo or PDF attached to a note, such as an invoice, receipt or scan. Photos come back as images; PDFs as text, plus images of pages without a text layer. Very tall photos and pages come in overlapping parts: read them all before taking figures, and count a repeated line once.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Note id from list_notes. | |
| file | Yes | Attachment file name from read_note or list_notes. | |
| part | No | For very tall photos and PDF pages: which part to show, starting at 1. For a PDF, ask for one page at a time: pages=[N]. | |
| pages | No | PDF only: page numbers to read, starting at 1. Default: the first 5. | |
| as_images | No | PDF only: also send images of pages that have text. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnly and closed-world; the description adds what annotations cannot: the return shape (images for photos, text for PDFs, images only for pages lacking a text layer) and the critical behavioral trait that tall photos/pages arrive in overlapping parts that must be read in full before extracting figures. That is exactly the 'beyond annotation' context an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with purpose followed by output shape then the pagination caveat. Every sentence carries actionable information; nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does the necessary work of describing what comes back and how large documents are chunked. It is nearly complete for a read tool whose annotations already cover safety, though it omits error behavior (missing file, page out of range) and whether multiple attachments can be fetched at once.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents id, file, part, pages and as_images in detail. The description reinforces the 'overlapping parts' semantics of `part` and hints at page-by-page reading, but adds no format or constraint detail beyond what the schema provides, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Open a photo or PDF attached to a note') and gives concrete examples (invoice, receipt, scan). It does not explicitly distinguish itself from the sibling get_page_image, which likely overlaps on 'image of a page', so it falls short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is clear contextually: this is how you pull an attachment referenced by a note. It even gives tactical guidance ('read them all before taking figures, and count a repeated line once'), but it never says when to prefer get_page_image or read_note instead, and does not state prerequisites such as where the id/file values come from.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_page_imageSee a pageARead-only
See one page as an image. Use it for handwriting, drawings and layout, which read_note's text leaves out. Very tall pages come in overlapping parts: read them all, and count a repeated line once.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Note id from list_notes. | |
| page | Yes | Page number, starting at 1. | |
| part | No | For very tall pages: which part to show, starting at 1. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds genuinely non-obvious behavior: very tall pages arrive as overlapping parts, all parts must be read, and the repeated boundary line should be counted once — information found nowhere in the schema. It stops short of describing image format or resolution, hence a 4 rather than 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core action, then the selection rule, then the multi-part caveat. Every sentence carries distinct, needed information; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With safety covered by annotations, all three params documented in schema, and no output schema, the description supplies the remaining missing pieces: that the return is an image and how multi-part results should be reassembled. Nothing an agent needs to call this correctly is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description earns above baseline by explaining why 'part' exists and how parts relate (overlapping, with a shared repeated line), which the schema's terse 'which part to show' does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('See one page as an image') and immediately distinguishes itself from the sibling read_note by naming what that tool omits. An agent can tell exactly what this returns without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the use case (handwriting, drawings, layout) and the alternative it supersedes for that content (read_note's text). The condition selecting this tool over read_note is stated, not implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_notesList or search notesARead-only
Find notes: newest first, filtered by words, folder, modified dates, attachments or handwriting. Returns note ids for the other tools, and next_offset while more remain.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No | Words to find in titles and typed text. Every word must appear. Handwriting isn't searched. | |
| folder | No | Folder name from notes_overview, e.g. "Invoices". Includes subfolders. Use "(no folder)" for notes outside folders. | |
| offset | No | ||
| modified_after | No | Only notes last edited on or after this day, YYYY-MM-DD. Not the date written on an invoice inside the note. | |
| has_attachments | No | true: only notes with photos or PDFs. false: only notes without. | |
| has_handwriting | No | true: only notes with handwriting or drawings. false: only notes without. | |
| modified_before | No | Only notes last edited on or before this day, YYYY-MM-DD. Not the date written on an invoice inside the note. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only, non-open-world safety profile, so the description's value is in disclosing the default sort ('newest first') and the pagination contract ('next_offset while more remain'). That tells the agent how to loop and when results are exhausted, context nothing in the schema or annotations provides.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, with the most important facts — result set scope, ordering, and return contract — front-loaded. Every clause carries information an agent needs before calling.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter, zero-required search tool with no output schema, the definition supplies the essentials: what comes back (ids), pagination behavior, and default ordering. It could say more about the default/maximum limit and what an empty result means, but nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75%, and most filter parameters carry their own descriptions (query, folder, modified_after/before, has_attachments, has_handwriting). The description mirrors those filter categories ('words, folder, modified dates, attachments or handwriting') but adds no format or boundary semantics, and limit/offset are only obliquely referenced via 'next_offset'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Find notes') plus the filter dimensions and the fixed ordering ('newest first'). It also distinguishes itself from siblings by declaring that it returns note ids consumed by the other tools, so an agent knows this is the discovery entry point rather than a content reader.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Returns note ids for the other tools' establishes the intended search-then-read workflow, which is the key usage signal here. It doesn't name explicit alternatives or exclusions (e.g., use notes_overview to discover folder names, or read_note once you have an id), so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notes_overviewNotes overviewARead-only
Start here. Shows where notes are read from, every folder with its note count, totals, and any problems such as locked or unreadable notes.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already establish that this is a read-only, non-open-world operation. The description adds useful behavioral context by stating that it reports folder locations, note counts, totals, and problem conditions such as locked or unreadable notes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences and front-loads the most important instruction, "Start here." Every sentence adds value with no repetition or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only overview with no output schema, the description is nearly complete: it explains the starting-point role, the returned scope, and the diagnostics it surfaces. A little more detail about the exact response structure could help, but it is not strictly necessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no input parameters, so there is no parameter semantics burden. The schema is empty and fully described, and the description appropriately focuses on what the tool returns rather than invocation arguments.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: it shows note sources, folder note counts, totals, and problems such as locked or unreadable notes. It clearly distinguishes this overview tool from sibling tools like list_notes and read_note by focusing on aggregate structure and diagnostics rather than listing or reading individual notes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Start here" gives clear guidance that this is the entry point before using note-specific tools. It does not explicitly name alternatives or exclusions, but the intended usage context is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_noteRead a noteARead-only
Read one note: title, folder, dates, pages, attachment list, typed text with tables, and which pages hold handwriting or drawings.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Note id from list_notes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered; the description adds real value by disclosing the shape of the return payload in the absence of an output schema. It does not cover behavior for an invalid or missing id, nor any pagination or size limits on large notes with many pages.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with a colon-led payload list; every clause carries information and nothing is repeated from the schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a one-parameter schema, read-only annotations, and no output schema, the description carries the full burden of describing the return value — and it does so concretely, including the hint that page-level handwriting/drawing markers exist (implying get_page_image as the follow-up). No material gap remains for a correct call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter, and schema description coverage is 100% — the schema already says 'Note id from list_notes.' The description adds no further semantics about the id format or lookup failure behavior, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read one note') and then enumerates exactly what comes back: title, folder, dates, pages, attachment list, typed text with tables, handwriting/drawing page markers. The payload enumeration implicitly distinguishes it from get_attachment (which fetches the file itself) and get_page_image (which renders a page), but no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: 'Read one note' plus the schema hint that the id comes 'from list_notes' suggests the list-then-read flow. There is no explicit statement of when to prefer this over get_page_image or notes_overview, and no exclusions or prerequisites are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_attachmentsSave attachments to a folderAIdempotent
Save copies of photos and PDFs attached to notes, such as invoices, receipts and scans, into a folder inside the user's Save folder, under names you choose. Use it only when the user asks to save, collect or organise files. Notes are never changed and no file is overwritten: a taken name gets “ (2)”, and a file whose contents are already in the folder is skipped, so repeating a call is safe. With check_only=true nothing is written: it says which files are already there, so a continued job skips them without opening them.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | Files to save, up to 50. | |
| folder | Yes | Folder inside the Save folder, e.g. “Invoices 2025” or “Invoices/2025”. A relative name, not a full path; created when the first file is saved. | |
| check_only | No | Write nothing; only say which files are already in the folder. Use it before opening files to save, and when continuing an earlier job. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: notes are never mutated, existing files are never overwritten, name collisions get a " (2)" suffix, and files whose contents already exist are skipped — explaining *how* idempotentHint=true is achieved rather than restating it. It also documents the dry-run semantics of check_only, which no annotation covers.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tightly packed sentences: what it does first, when to use it second, safety/overwrite/check_only behavior third. Every clause carries distinct information and nothing is repeated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a write tool with no output schema, the description covers safety, deduplication, collision handling and the dry-run mode, which is most of what an agent needs. It is slightly thin on what a call actually reports back (especially for check_only) beyond "it says which files are already there".
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (including nested id/file/name) are already documented with examples, defaults and constraints. The description's contribution — "under names you choose" and the continued-job rationale for check_only — largely echoes what the schema already says, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (save copies), a specific resource (photos and PDFs attached to notes, with examples like invoices and receipts), and a specific destination (a folder inside the user's Save folder, under caller-chosen names). This is clearly distinguishable from the read-oriented siblings (get_attachment, read_note) which fetch content rather than copying it into a folder.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use it only when the user asks to save, collect or organise files" gives an explicit trigger and an implicit exclusion, plus a described workflow for the check_only pre-pass. It does not name a sibling alternative (e.g. get_attachment for merely reading an attachment), so it stops short of a full routing rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
v0.1.5- First observed
get_attachment - First observed
get_page_image - First observed
list_notes - First observed
notes_overview - First observed
read_note - First observed
save_attachments
TDQS
Scored across 6 tools
Each tool has a distinct role in a clean read pipeline: overview, list, read text, render page image, open attachment, save attachments. The only mild overlap is get_page_image vs get_attachment (both return images), but the descriptions clearly separate handwriting/layout on a page from attached files. read_note vs get_page_image is also well delineated as text versus visual.
All names are snake_case and almost all follow verb_noun (list_notes, read_note, get_page_image, get_attachment, save_attachments). notes_overview is the lone noun-first outlier, a minor but noticeable deviation from the pattern.
Six tools is well-scoped for a read-oriented notes server: orientation, discovery, text content, page rendering, attachment access, and export. Each tool covers a step that would otherwise be a dead end, with no filler.
The read path is thorough (overview, paginated listing, text, images, attachments, safe export), but there are no operations to create, edit, move, or delete notes or folders. An agent asked to modify a note has no tool path, which is a notable lifecycle gap even if read-only behavior is intentional.
Maintenance
Related MCP Connectors
Markdown notes in folders, with files, that your AI assistant can read, write and organise.
Markdown notes in folders, with files, that your AI assistant can read, write and organise.
- LLMtoMDOAuthcom.llmtomd
Convert PDFs, Office docs, websites and audio into AI-ready Markdown, then search and ask your docs.
- MyMemoryOAuthdev.mymemory
Long-term memory for AI assistants: search, read and save your notes, links and documents.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI assistants to read, search, and traverse your reMarkable tablet's library, including handwritten notes via OCR.12MIT
- AlicenseAqualityDmaintenanceEnables reading and searching handwritten notes from GoodNotes on macOS, providing OCR text, search, and notebook management tools for AI assistants.61MIT
- AlicenseAqualityAmaintenanceEnables AI assistants to read, search, and traverse your entire reMarkable library, including handwritten notes via OCR.14260MIT
- AlicenseAqualityBmaintenanceEnables AI clients to read Markdown notes from a single explicitly granted local folder, read-only, with strict containment against access outside that folder.1496 npmMIT