Server has 13 tools with consistent naming (verb_noun pattern: joplin_get_note, joplin_list_notes, etc.) and all tools have descriptions. Input schemas are present and use Zod validation with type definitions. However, descriptions are generic (avg ~60 chars, well below the 194-char baseline for A+ tools), parameter descriptions lack actionable constraints (e.g., no min/max for pagination limits, no format guidance), and output schemas are not documented, responses are JSON.stringify'd without field documentation. Error handling is minimal (raw API errors propagated). No tool annotations (readOnlyHint, destructiveHint) despite clear risk stratification (READ_ONLY, WRITE, DESTRUCTIVE). Pagination present but limit/page params lack bounds documentation.
Create a new note
Create a new notebook (folder)
Create a new tag
Delete a note by ID
Delete a notebook and all its contents
Get a note by ID, returning its title, body, and metadata
List notes within a specific notebook
Descriptions are generic and lack actionable context. E.g., 'List notes with pagination' (30 chars) does not explain when to use this vs joplin_search, what fields are returned, or pagination behavior. Baseline for A+ tools is 194 chars with WHEN/WHY guidance.
Pagination parameters (limit, page) lack bounds documentation. No min/max specified; LLMs may pass absurd values (limit=999999). Rubric requires 'page_size 1 - 100, days 1 - 365' style constraints in descriptions.
Output schemas not documented. Tools return JSON.stringify'd API responses without field documentation. LLMs cannot plan downstream calls or extract required IDs (e.g., does joplin_list_notes return note IDs for joplin_get_note?). Rubric requires 'Document the output schema.'
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | 2026-07-28+ | v2 |
List all notebooks (folders)
List notes with pagination
List all tags
Search notes, notebooks, or tags using Joplin's search engine
Update an existing note
Rename or move a notebook
No tool annotations despite clear risk stratification. Tools marked DESTRUCTIVE (joplin_delete_note, joplin_delete_notebook) lack destructiveHint annotation. READ_ONLY tools lack readOnlyHint. Spec 2026-07-28 supports tool annotations; missing them prevents client-side safety guardrails.
Error handling is minimal. Raw Joplin API errors (e.g., 'Joplin API 404: Not found') are propagated without recovery guidance. Rubric requires 'Error responses must tell the LLM what to do next' and categorization (retryable, user-fixable, fatal).