A Drupal-shaped content store — title, body, datetime, taxonomy — served to models over MCP from one Cloudflare Worker.
digger-node presents well-structured tool definitions with consistent naming (verb_noun pattern), clear descriptions (avg ~100 chars), and complete input schemas across all 19 tools. All tools follow action-verb conventions (search_, list_, get_, create_, update_, delete_, tag_, untag_). Descriptions are concise and action-oriented. However, output schemas are not documented, LLMs cannot predict response structure for planning downstream calls. Parameter descriptions are present but minimal (avg ~50 chars), lacking format constraints, ranges, or dependency hints. Error handling guidance is absent. No tool annotations (readOnlyHint/destructiveHint) despite clear risk stratification in metadata. Missing idempotency guarantees and recovery guidance.
Create a new node with title, body, type, and optional author
Create a new term in a vocabulary
Create a new vocabulary with name, label, description, and kind
Permanently delete a node by ID
Permanently delete a term
Permanently delete a vocabulary and all its terms
Retrieve a single node by ID
List all terms applied to a node
Output schemas not documented. LLMs cannot predict response structure (fields, types, pagination) for planning downstream tool calls or extracting required data.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Risk metadata exists in server metadata but is not exposed to LLMs via tool definitions, preventing safe retry logic.
Parameter descriptions lack format constraints, ranges, and validation rules. E.g., 'limit' has no min/max; 'type' in create_node has no enum; 'match' enum is present but other enums are missing.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2026-07-28+ | v2 |
Retrieve a single term by ID
Retrieve a single vocabulary by ID
List nodes with filtering by type, vocabulary, terms, status, and pagination
List terms in a vocabulary with optional filtering by parent
List all vocabularies with optional filtering by kind
Search nodes by full-text query with optional limit
Add one or more terms to a node
Remove one or more terms from a node
Update an existing node's title, body, type, author, or status
Update a term's name, description, parent, or weight
Update a vocabulary's label, description, or kind
No error handling guidance. Tools lack recovery hints (e.g., 'If node not found, try search_nodes()') or error classification (retryable vs user-fixable).
Pagination not explicitly documented. list_* tools accept limit/offset but response structure (total_count, has_more, next_offset) is not specified, forcing LLMs to guess.