Server has 13 tools with complete input schemas and descriptions. Naming follows verb_noun convention (get_, list_, create_, delete_, append_, insert_, update_, move_). Descriptions are present but brief (avg 60 chars, below 194-char baseline). Parameters are typed and mostly described, but lack constraint details (enums, ranges, formats). Output schemas are not documented, tools return JSON strings without declaring field structure. Error handling exists but lacks recovery guidance. No tool annotations (readOnlyHint/destructiveHint) despite clear risk levels. Missing pagination on list_pages despite default limit=50.
Append blocks to a page.
Append blocks to a journal page (today or specified date).
Create a new page.
Delete a block and all its children.
Delete a page.
Get a single block by UUID.
Return a page entity and deduplicated block tree by page name.
Output schemas not documented. Tools return JSON strings without declaring field structure (e.g., get_page returns {page, blocks, block_count} but LLM must infer structure). LLMs cannot plan downstream calls or extract data reliably.
Tool annotations missing. Destructive tools (delete_block, delete_page) and write tools lack readOnlyHint/destructiveHint/idempotentHint annotations. Agents cannot distinguish safe reads from irreversible operations.
Parameter descriptions lack constraint details. 'blocks' parameter accepts string|object|array but no format guidance. 'position' enum is declared but other params (uuid, page_name, date) lack format/length/pattern constraints. LLMs cannot validate inputs before calling.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | <=2025-11-25 | v2 |
Get backlinks to a page (pages that reference this page).
Ping Logseq and return graph name and page count.
Insert a block before or after a target block, or as a child.
List pages with optional namespace filter.
Move a block to a new position relative to a target block.
Update a block's content and/or properties.
Error handling lacks recovery guidance. client.py raises McpError with generic messages ('Logseq API error 500', 'Logseq is not running') but does not suggest next steps. LLM cannot self-correct or retry intelligently.
list_pages lacks pagination metadata. Returns up to 50 items by default but no total_count, next_cursor, or has_more flag. Large result sets risk context window exhaustion; agent cannot request next page.