Single tool 'newNote' with critical definition gaps. Tool is explicitly registered with `server.tool()` in index.ts but has severely incomplete parameter documentation and no output schema documentation. Parameter is a bare string with minimal context. No error handling guidance. Tool description is generic (18 chars). Does not follow verb_noun naming properly ('newNote' is camelCase; patterns prefer snake_case). No parameter description provided, LLM cannot infer whether input expects raw text, formatted markdown, tags, or metadata. No output schema documented. Error handling wraps exceptions in JSON.stringify() without categorization or recovery guidance. Composition is reasonable (single concern: create note) but definition quality is well below production baselines.
Create a new note in Flomo
Tool parameter lacks description. The 'input' parameter is defined as type string with no description explaining what format is expected (plain text? markdown? JSON? tags?). LLMs cannot infer intent from type alone.
No documented output schema. Tool returns JSON-stringified API response wrapped in text content type. LLMs do not know which fields to extract or how to chain this tool with others. Response structure is entirely undocumented.
Inadequate error handling. Errors are caught and returned as JSON.stringify(error) with no categorization (retryable vs fatal), no recovery guidance, and no context. An LLM cannot determine whether to retry, ask the user, or abort.
Tool description is 26 characters ('Create a new note in Flomo'). Below recommended minimum (10 - 1024 chars with 194 char baseline). Does not answer WHEN to use, WHAT it returns, or dependencies (requires FLOMO_API_URL env var).
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 31 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 27 | - | v1 |
Naming uses camelCase (newNote) instead of snake_case (new_note). Pattern baseline: 90% of A+ tools start with action verb in snake_case. 'newNote' starts with verb but violates naming convention.
API key exposure risk. FLOMO_API_URL is environment-injected (correct pattern), but no validation or scope declaration in tool. Tool description does not warn LLM of destructive capability or document permission scope (e.g., 'write:notes').
No input validation. Tool accepts any string and passes it directly to API. No length limits, format constraints, or character restrictions documented. LLM has no guidance on input bounds.