The only write path into a v2 package (plan 008/B3, ADR-0001). Successor of validate_package.py: the mechanical half of the capability the skill owns. Tool handlers are plain functions (in-process testable, no transport needed); the official MCP SDK wraps them for stdio serving.
Tamheed has well-structured tool names (verb_noun pattern: package_create, entity_upsert, gate_run) and comprehensive input schemas with type definitions. However, descriptions are minimal (10-50 chars), parameter descriptions lack depth, and output schemas are entirely undocumented. No error handling guidance, no recovery hints, and no indication of which operations are idempotent or destructive. The server implements domain-specific logic (entity types, relation rules) but fails to expose this complexity to LLMs via descriptions. Baseline: avg tool description ~30 chars (well below 194-char production baseline); zero documented output schemas; parameters like 'cols' (object) lack guidance on valid keys.
Export entities to a JSON file with digest stamp
Query entities of a given type from the current package
Insert or update an entity in the current package
Run all readiness gates and return verdicts
Close the currently open package
Create a new v2 package with baseline entity types and schema
Open an existing v2 package for operations
Output schemas completely undocumented. No tool specifies what fields are returned, their types, or structure. LLMs cannot plan downstream calls or extract required data.
Parameter descriptions are minimal or absent. 'cols' in entity_upsert is described as 'Entity columns as key-value pairs' but does not explain valid keys, required fields, or constraints. 'entity_type' descriptions list 30+ enum values inline instead of as a formal enum constraint.
No error handling guidance. Tools do not indicate what errors are retryable, user-fixable, or fatal. No recovery hints (e.g., 'If package not found, call package_create first'). Agents cannot self-correct on failure.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | 2026-07-28+ | v2 |
Verify the recorded package passes its canonical round-trip
Tool descriptions are too short (10-35 chars). Production baseline is 194 chars. Descriptions lack WHEN to use, WHAT it returns, and prerequisites. Example: 'Close the currently open package' does not explain side effects or whether it persists changes.
No indication of idempotency or destructiveness. entity_upsert is marked WRITE but lacks confirmation/dry-run pattern. gate_run and package_verify are READ_ONLY but descriptions do not clarify whether they modify state or are safe to retry.