Gramps API + MCP Server + A2A Agent — genealogy (people/families/events/places/sources/media)
Critical failures across all dimensions. Tool descriptions are HTTP verb+path strings (e.g., 'GET /bookmarks/{namespace}'), under 20 chars, generic, and non-actionable for LLM tool selection. No output schemas documented. No error handling guidance. No parameter enums, ranges, or constraints. Tools like delete_bookmark_edit and delete_config expose destructive operations with zero confirmation or dry-run support. Parameter names are opaque (namespace, handle, key, extension) without type hints or resolution guidance. No evidence of idempotency, pagination, or composition patterns.
DELETE /bookmarks/{namespace}/{handle}
DELETE /config/{key}/
GET /bookmarks/{namespace}
GET /bookmarks/
GET /citations/{handle}
GET /citations/
GET /config/{key}/
LLMs cannot infer parameter meaning from names alone (e.g., 'namespace', 'handle', 'key' are ambiguous).
Tool descriptions are HTTP verb+path strings (e.g., 'GET /bookmarks/{namespace}'), under 20 characters, generic, and non-actionable. LLMs cannot determine WHEN to use a tool or WHY it differs from similar tools. Baseline: descriptions should be 50-200 chars explaining intent, use case, and prerequisites.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 26 | <=2025-11-25 | v2 |
GET /config/
GET /events/{handle}
GET /events/{handle1}/span/{handle2}
GET /events/
GET /exporters/{extension}
GET /exporters/{extension}/file
GET /exporters/{extension}/file/processed/{filename}
GET /exporters/
GET /facts/
GET /citations/{phoenix_handle}/merge/{titanic_handle}
GET /events/{phoenix_handle}/merge/{titanic_handle}
GET /people/{handle}/dna/matches
GET /people/{handle}/ydna
POST /chat/
POST /parsers/dna-match
POST /exporters/{extension}/file
PUT /bookmarks/{namespace}/{handle}
PUT /config/{key}/
No output schemas documented. LLMs cannot plan downstream tool calls or extract required fields (e.g., after get_person_dna_matches, what fields are returned? Can the result be passed to another tool?).
Destructive tools (delete_bookmark_edit, delete_config) have no confirmation, dry-run, or error recovery guidance. Agents can irreversibly delete data without safeguards. No error handling tells LLM what to do on failure.
Parameter names are opaque (namespace, handle, key, extension, phoenix_handle, titanic_handle) with no type hints or resolution guidance. LLMs cannot determine whether to pass IDs, names, or encoded values. No enums, ranges, or format constraints visible.