The server provides 4 tools with clear verb-noun naming and reasonable descriptions. All tools have input schemas with Zod validation. However, output schemas are not explicitly documented, parameter constraints are minimal, and error handling lacks actionable recovery guidance. Descriptions are adequate but fall short of LLM-optimized length (target 50-200 chars per pattern baseline). The insert_lines tool modifies state but descriptions do not sufficiently emphasize irreversibility or include prerequisites.
Get a page with the specified title from the Cosense project.
Insert lines after the specified target line in a Cosense page. If the target line is not found, append to the end of the page.
List Cosense pages in the project.
Search for pages containing the specified query string in the Cosense project.
Output schemas not documented. Tools return text content but the structure (pagination, field names, metadata) is not formally specified. LLMs cannot reliably parse results or plan downstream calls.
insert_lines is a destructive/stateful operation but lacks confirmation mechanism or dry-run support. No isError or warning in description to signal irreversibility. Agents may invoke without realizing consequences.
Error messages are generic and lack recovery guidance. Example: 'Error: Failed to get page X: <JSON error>' provides no hint on what the LLM should try next (e.g. 'Try search_pages() to find the correct title').
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 66 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 45 | - | v1 |
No input validation or constraint documentation. The 'title' parameter accepts any string; no length limits, character restrictions, or format guidance. Search 'query' parameter lacks explanation of space-separated behavior or max term count.
list_pages does not paginate or limit results. If a Cosense project has hundreds of pages, the tool returns all of them, risking context window exhaustion. No limit parameter, offset/cursor, or total_count in response.
Zod schema definitions exist in code but are not exposed to the MCP protocol layer as formal JSON Schema objects. The input schema objects shown use only description annotations, actual type constraints may not be visible to the client.
Configuration requires cosenseSid (session ID) and projectName. These are injected at startup but error messages do not help agents understand when they are invalid. If session expires, agents get opaque errors without retry guidance.