Hermes-first MCP bridge for the Pencil design tool — proxies the bundled MCP server and adds .pen file utilities
Four tools with basic schemas and descriptions, but significant gaps in parameter documentation and output schema clarity. All tools are READ_ONLY file operations on .pen files. Naming follows verb_noun pattern (pencil_*) but descriptions are terse (avg 65 chars, below 194-char baseline). No parameter descriptions visible in schema definitions. Output schemas not documented. Error handling minimal, no recovery guidance or actionable error messages. Tool composition is reasonable (each does one thing), but parameter constraints and validation rules are absent.
Validate multiple .pen files in batch
Extract design tokens (colors, fonts, spacing, variables) from a .pen file
Flatten the document tree into a list of elements with path info
Validate a .pen file structure and report errors
Parameter descriptions missing. Schema shows 'path' and 'paths' with minimal descriptions ('Path to .pen file'). LLMs cannot infer whether paths must be absolute, relative, or support ~/ expansion; whether .pen must be ZIP or JSON; or what happens on invalid input.
Output schemas not documented. No visible schema for return values. LLMs cannot plan downstream operations or extract structured data. E.g., pencil_extract_tokens should document whether it returns {colors: [...], fonts: [...], spacing: [...]} or a flat list.
Error handling lacks recovery guidance. Code shows FileNotFoundError, ValueError, and JSONDecodeError but no actionable error messages. E.g., 'File not found: /path/to/file' should suggest 'Check the path or use pencil_list_files() to discover available .pen files.'
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 44 | 2026-07-28+ | v2 |
pencil_flatten_tree max_depth parameter lacks constraints. No min/max bounds documented. LLMs may pass 0, negative, or absurdly large values (e.g., 999999) causing performance issues or stack overflow.
pencil_batch_validate lacks per-item error reporting. If 1 of 50 files is invalid, the tool likely returns a blanket error instead of {results: [{path, valid, errors}, ...]}. This forces the agent to retry all 50 files.