Model Context Protocol server for Fresh Jots — let Claude, Cursor, and any MCP client read and write your Fresh Jots notes via the API.
Strong foundation with 11 well-named tools, comprehensive descriptions (avg 180 chars), and complete input schemas using Zod validation. All tools have clear verb-noun naming (list_, read_, create_, append_, update_, move_, delete_). Descriptions explain WHAT, WHEN, and consequences. Parameters are typed with enums where appropriate (format, sort, folder_id unions). Tool annotations present (readOnlyHint). However, output schemas are not documented, LLMs cannot predict response structure. Error handling returns API error codes but lacks recovery guidance. Some parameter descriptions could be more prescriptive about constraints.
Append text to the note with the given exact filename, creating the note if it does not exist yet (find-or-create). This is the primitive for logging: call it repeatedly to accumulate entries (AI session logs, cron output, journal lines) in one note addressed by a stable filename like "ai-sessions.txt". Plain text only.
Create a new folder.
Create a new plain-text note. The server derives the filename from the title. To create a note you can address later by an exact filename of your choosing, use append_to_note instead (it creates the note on first write). Plain text only.
Delete a folder.
Delete a note by exact filename or numeric id. Provide exactly one of filename or id.
List the account's folders.
Output schemas not documented. LLMs cannot predict response structure (fields, types, pagination). Responses from list_notes, read_note, and others lack documented return types.
Error handling lacks recovery guidance. API errors return code + message but do not tell LLM what to do next (retry, ask user, try alternative tool). E.g., 'Fresh Jots API error [not_found]' gives no actionable path.
Destructive operations (delete_note, delete_folder) lack confirmation/dry-run pattern. Agents can permanently delete notes without a safety gate.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
List the account's notes (most-recently-updated first by default) as summaries: id, filename, title, format, timestamps, and a body excerpt. Filter by folder or format. Both plain and rich notes are listed, but only plain notes can be created or edited through this server.
Move a note to a folder (or out of its folder if folder_id is null), addressed by exact filename or numeric id. Provide exactly one of filename or id.
Read a single note in full (including its complete plain_body) by exact filename (e.g. "ai-sessions.txt") or numeric id. Provide exactly one of filename or id.
Rename a folder.
Update a plain-text note's title, body, and/or folder, addressed by exact filename or numeric id. Only the fields you supply change; omitted fields are left untouched. Rich-format and append-only notes reject body/title edits. Provide exactly one of filename or id.
list_notes description mentions 'body excerpt' but does not specify excerpt length or truncation behavior. Parameter descriptions for limit/offset lack guidance on pagination semantics (e.g., does offset apply before or after filtering?).
Encryption parameters (decrypt, encrypt) require FRESHJOTS_PASSPHRASE environment variable but do not document failure mode if passphrase is missing. Error message is clear at runtime but not in tool description.