Skip to main content
Glama
ball2jh

ancestry-com-mcp

by ball2jh

search_records

Read-only

Search Ancestry's historical records, member trees, stories, and photos using names, dates, places, relatives, and event filters to find relevant genealogical hits.

Instructions

Search Ancestry historical records (census, vital, military, immigration…), optionally member trees, stories and photos — the full website search form. Names are "First Last"; years are 4-digit; places are free text ("Cocke County, Tennessee, USA") and should carry a gpid from record.suggest_places when a placeScope is used. Default matching is fuzzy everywhere (results are ranked, not filtered). Tighten per field: firstNameMatch/lastNameMatch (cumulative levels like the site slider: exact ⊂ similar ⊂ phonetic ⊂ initials|soundex); each event object takes year, yearEnd (range), yearTolerance (0 = that year only, 1/2/5/10 = ± years, omit = fuzzy), place, gpid (from record.suggest_places) and placeScope (exact, county, county_adjacent, state, state_adjacent, country; omit = fuzzy); exactRelatives, exactKeyword, exactRace. Name wildcards: "?" = one character, "" = 0–5 characters; a wildcarded name needs at least 3 literal letters and must start or end with a letter (Sm?th, Johson) and only applies with exact name matching. Start broad (name + birth year), then narrow. collectionFocus re-ranks toward a country/ethnicity; collectionId restricts to one collection; extraParams passes any other site query parameter (collection-specific fields, e.g. f-SelfMilitaryRank). Returns up to 50 hits per page with indexed fields and collection/record ids for record.get and record.save_to_person.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pageNo
raceNorace/nationality
birthNo
childNo
countNodefault 20
deathNo
typesNodefault records only
fatherNo
genderNo
motherNo
spouseNo
treeIdNo
arrivalNo
keywordNo
siblingNo
anyEventNo
lastNameNo
marriageNo
militaryNo
personIdNo
exactNameNoshorthand: both names exact
exactRaceNo
firstNameNo
residenceNo"lived in"
extraParamsNo
collectionIdNo
exactKeywordNo
lastNameMatchNo
secondSurnameNo
exactRelativesNo
firstNameMatchNo
collectionFocusNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.3.0

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Despite readOnlyHint=true already covering safety, the description adds substantial behavioral detail: default matching is fuzzy everywhere (results ranked, not filtered), wildcard rules, yearTolerance semantics (0 = exact, 1/2/5/10 = ±years, omit = fuzzy), and return behavior (up to 50 hits with indexed fields and ids). It also explains that collectionFocus re-ranks rather than filters, and that extraParams passes any other site query parameter. This goes well beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but every sentence carries necessary information. It is logically organized: purpose, input formats, matching behavior, event object details, wildcard rules, search strategy, special parameters, and return info. It front-loads the core purpose and progressively details advanced usage. There is no filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 32 parameters, nested objects, and no output schema, the description is remarkably complete. It explains how to construct effective searches, the meaning of key parameters, result size, and how results link to downstream tools (record.get, record.save_to_person). It also mentions related tools like record.suggest_places for gpid. The only missing detail is the exact JSON structure of the returned hits, but that's not required without an output schema and the description indicates the necessary information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 16%, so the description must compensate. It does: it explains name format ('First Last'), year format (4-digit), place format (free text with gpid), the cumulative matching levels for firstNameMatch/lastNameMatch, the structure and semantics of event objects (year, yearEnd, yearTolerance, place, gpid, placeScope), wildcard syntax and constraints, and the meaning of exactRelatives/exactKeyword/exactRace. It also covers collectionFocus, collectionId, and extraParams. Even though not every parameter is individually described, the ones needing explanation are covered thoroughly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it searches Ancestry historical records (census, vital, military, immigration…) plus optionally trees, stories, and photos, and identifies it as the full website search form. This distinguishes it from siblings like record (which fetches a specific record) and person (which handles individual profiles). The scope is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit search strategy: 'Start broad (name + birth year), then narrow.' Explains when to use collectionFocus (re-rank toward a country/ethnicity) vs collectionId (restrict to one collection) vs extraParams (collection-specific fields). It also describes how to tighten matching per field (exactName, firstNameMatch/lastNameMatch, exactRelatives, etc.) and references downstream tools (record.get, record.save_to_person). This gives clear when-to-use and how-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.