A Python MCP server providing browser search, document rendering, PDF extraction, and office document conversion tools with async database persistence and caching.
Two tools with complete input schemas and descriptions, but descriptions are generic and lack LLM-optimized guidance. Both tools follow verb_noun naming (browser_render_*). Schemas include proper types and parameter descriptions. However, descriptions lack context on WHEN to use each tool, what distinguishes them, and actionable error recovery. Output schemas are not documented. No error handling guidance. Parameters lack constraints (e.g., DPI range, page number validation). Missing idempotency hints and composition guidance.
Render specified pages (or all pages) of a local Word document (.docx) into high-fidelity PNG preview images. Returns network-compliant Resource URIs and inline visual previews.
Render specified slides (or all slides) of a local PowerPoint presentation (.pptx) into high-fidelity PNG preview images. Returns network-compliant Resource URIs and inline visual previews.
Descriptions lack LLM-optimized guidance. Both tools describe WHAT they do but not WHEN to use them or how they differ. Generic descriptions like 'Render specified slides' do not help LLMs choose between tools or understand prerequisites.
Output schemas are not documented. LLMs cannot plan downstream operations or extract required fields (e.g., image URIs, page counts, error details). Responses are opaque.
Parameters lack constraints and validation guidance. 'dpi' has no min/max (unbounded integers invite absurd values). 'pages' and 'slides' arrays lack length limits or index range documentation. No guidance on what happens if indices are out of bounds.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
No error handling or recovery guidance. If a page/slide index is invalid, or rendering fails, the LLM has no actionable next step. Error responses should guide the agent (e.g., 'Page 5 not found. Document has 3 pages.').
No tool annotations (readOnlyHint, idempotentHint). Both tools are read-only and idempotent, but this is not declared. LLMs cannot infer safety properties and may avoid retrying on transient failures.