MCP server for interacting with Evernote notebooks and notes
Server has 7 tools with basic schemas and descriptions, but significant gaps prevent production use. Tool names follow verb_noun convention (list_, read_, create_, update_) which is good. However, most parameter descriptions are missing entirely, only tool-level descriptions exist. Input schemas use Zod but lack parameter-level documentation. Output schemas are partially defined (list_evernote_notebooks, list_evernote_notes have outputSchema; others omit it). Error handling is absent, no recovery guidance, no categorization of retryable vs fatal errors. The list_evernote_notes description is a wall of text (1000+ chars) that violates the 10-1024 char guideline and buries key details. No parameter constraints (enums, ranges, patterns) despite many parameters accepting only specific values (e.g., order is a NoteSortOrder enum, not a free number). No mention of ENML format constraints in create/update tools despite documentation stating content must be valid ENML. Missing output documentation for count_evernote_notes and read_evernote_note* tools.
Count notes matching a filter.
Create a new evernote note.The content is in ENML (Evernote Markup Language).ENML is formally defined in http://xml.evernote.com/pub/enml2.dtd.
List evernote notebooks title and guid
List evernote notes title and guid.You can filter notes by following parameters:order: The NoteSortOrder value indicating what criterion should be used to sort the results of the filter.ascending: If true, the results will be ascending in the requested sort order. If false, the results will be descending.words: A search query string that will filter the set of notes to be returned. Accepts the full search grammar documented in the Evernote API Overview.notebookGuid: The Guid of the notebook that must contain the notes.tagGuids: The list of tags (by GUID) that must be present on the notes.timeZone: The zone ID for the user, which will be used to interpret any dates or times in the queries that do not include their desired zone information.inactive: If true, then only notes that are not active (i.e. notes in the Trash) will be returned. Otherwise, only active notes will be returned. There is no way to find both active and inactive notes in a single query.emphasized: A search query string that may or may not influence the notes to be returned, both in terms of coverage as well as of order. Think of it as a wish list, not a requirement. Accepts the full search grammar documented in the Evernote API Overview.includeAllReadableNotebooks: If true, then the search will include all business notebooks that are readable by the user. A business authentication token must be supplied for this option to take effect when calling search APIs.offset: The offset of the first note to return. This is useful for paging through results.maxNotes: The maximum number of notes to return. This is useful for limiting the number of results returned.
Missing output schemas for 5 of 7 tools (count_evernote_notes, read_evernote_note, read_evernote_notes, create_evernote_note, update_evernote_note). LLMs cannot plan downstream calls or extract required fields without documented return types.
list_evernote_notes description is 1000+ characters (violates 10-1024 guideline) and concatenates parameter docs without structure. Buries key details and wastes tokens. Should be 50-150 chars with parameter descriptions moved to individual parameter fields.
No parameter-level descriptions anywhere. Zod schema defines types but LLMs cannot read JSON Schema, they rely on description text. E.g., 'order' parameter accepts NoteSortOrder enum but no description explains valid values or what each means.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | 2025-06-18+ | v2 |
Read evernote note content
Read multiple evernote notes content by an array of guids.
Update an existing evernote note.The content is in ENML (Evernote Markup Language).ENML is formally defined in http://xml.evernote.com/pub/enml2.dtd.
No error handling or recovery guidance. If a note GUID is invalid, read_evernote_note returns a raw error with no actionable next step. Should categorize errors (retryable, user-fixable, fatal) and suggest alternatives.
ENML format requirement mentioned in descriptions but no validation or format guidance. create_evernote_note and update_evernote_note accept 'content' as free string, should document ENML constraints, provide examples, or validate server-side with clear error messages.