MCP server for exploring Ancestry.com genealogy data
Server has 7 tools with complete input schemas and descriptions present, but quality is inconsistent. Tool names follow verb_noun convention (good), but descriptions are generic and lack actionable context. Parameters have types and descriptions, but lack constraints (enums, ranges, formats). No output schemas documented. Error handling is minimal, generic 'Error: {message}' responses provide no recovery guidance. Missing parameter validation, idempotency hints, and dependency documentation. Baseline: avg tool description ~150 chars (acceptable), but descriptions lack WHEN/WHY context. No tool annotations (readOnlyHint, destructiveHint). ancestry_login exposes credentials via environment variables (correct pattern), but no audit trail or permission gates documented.
Get detailed information about a person from their profile page
Get historical records attached to a person
Extract timeline events for a person
Get a view of the family tree for a person
Login to Ancestry.com using credentials from config
Search for a person on Ancestry.com by name and optional birth/death years
No output schemas documented. LLMs cannot plan downstream calls or extract required fields. ancestry_search_person, ancestry_get_person_details, ancestry_get_tree_view, ancestry_get_records, ancestry_get_timeline all return unstructured responses.
Descriptions lack actionable context (WHEN/WHY to use). ancestry_get_person_details, ancestry_get_tree_view, ancestry_get_records, ancestry_get_timeline all have generic 50-char descriptions. No dependency hints (e.g., 'Call ancestry_search_person first to get profileUrl').
No parameter constraints (enums, ranges, formats). birthYear, deathYear, location in ancestry_search_person accept free-form strings; generations in ancestry_get_tree_view has no min/max bounds. LLMs can pass invalid values (e.g., generations=999).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | 2026-07-28+ | v2 |
Generate a historical narrative for a person based on their life events and historical context. Uses web search to gather historical information about the time period and region.
Error handling is generic. All tools return 'Error: {message}' with no recovery guidance, error classification, or actionable next steps. LLM cannot distinguish retryable vs fatal errors.
No tool annotations. ancestry_login is a WRITE operation (risk: WRITE) but lacks destructiveHint. ancestry_search_person and read tools lack readOnlyHint. Agents cannot infer safety/idempotency.