A collaborative document and database management system with MCP server integration for database queries, row management, document operations, and team collaboration features
Leaf provides 18 tools with consistent naming (verb_noun pattern) and reasonable descriptions (avg ~100 chars). All tools have input schemas with typed parameters. However, output schemas are undocumented, LLMs cannot predict response structure for chaining. Parameter descriptions are present but often generic ('Optional X'). Error handling guidance is absent. No tool annotations (readOnlyHint/destructiveHint). Missing idempotency guarantees and recovery guidance. Composition is sound (single responsibility per tool), but response design lacks pagination metadata and chaining IDs.
Create a comment on a document, optionally on a specific block or as a reply to another comment.
Create a new property (column) in a database.
Create a new row in a database with optional title, property values, and content (markdown or HTML).
Delete a property (column) from a database.
Delete a row from a database.
Create a duplicate copy of a document (page or database).
List all properties (columns) in a database.
Output schemas undocumented. LLMs cannot predict response structure (fields, types, pagination) for downstream tool chaining. Breaks pattern:tool-chain and pattern:paginated-result.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). LLMs cannot distinguish safe reads from destructive writes without explicit hints. Violates pattern:tool-annotation.
No error handling guidance. Tools lack recovery hints (e.g., 'User not found. Try search_users() first.'). Violates pattern:recovery-guide.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | 2026-07-28+ | v2 |
List members of an organization.
List all teamspaces the user has access to.
Move a document to a different parent, teamspace, or destination (private/organization).
Query a database with optional filters, sorts, and search. Returns paginated rows with resolved values.
Mark a comment thread as resolved or unresolved.
Restore a document from the trash.
Move a document and its subtree to the trash.
Update a property (column) in a database.
Update an existing database row with new title and/or property values.
Upload a file (image or document) and get a URL to access it.
Get information about the current user and their organizations.
Parameter descriptions are generic ('Optional X'). Missing format constraints, ranges, and dependency hints. E.g., 'filters' array lacks structure documentation; 'operator' enum values not listed in description.
No idempotency guarantees documented. Agents retry on ambiguous failures, tools like createDatabaseRowTool and createCommentTool risk duplicate records without idempotency keys or deduplication logic.