fold3-com-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@fold3-com-mcpsearch for Civil War pension records for John Smith"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
fold3-com-mcp
An MCP server for Fold3, Ancestry's military-records site. It covers:
search across service records, pension files, muster rolls, draft cards, casualty lists, census and newspapers;
reading files, pages, index records, census lines and memorials;
browsing a collection's tree;
full-resolution page images.
It calls the site's own services from Node. It signs in through the Ancestry session that ancestry-com-mcp already saved (Fold3's "Sign in with Ancestry"), so there is no browser or password. It is read-only.
Tools
Tool | Actions | What for |
|
| Hits with their type, collection, index fields and matched values; facet counts to choose filters. |
|
| A FILE (index fields, every page's image id, access, citation), IMAGE, INDEX_RECORD, SUB_IMAGE (a census line) or MEMORIAL (facts and linked Ancestry records). |
|
| Find collections, read one (access level, NARA publication), and walk its browse tree (state › surname › given name › file). |
|
| Page images at full resolution (stitched from the viewer's tiles), inline or to disk; a whole file to a directory with a SHA-256 manifest. |
|
| Whether the session is signed in and what the account may open. |
|
| Read-only requests to Fold3's services, and POST only to the search. |
What the search does, and why (each point checked against live counts; see docs/endpoints.md):
Person dates use the person fields.
birthYear,deathYearandserviceYearmap todate.vital.birth,date.vital.deathanddate.military. Fold3's generic date filter matches collection date spans: a 1775-2019 gravesite index matches any year. That filter is offered ascoverageYearand described as such.namematches every name indexed in a file, witnesses included;matchedshows why a hit came back.[Blank]index fields are dropped. Fold3 lists every field of a collection's schema on every record./record/URLs are resolved by their slug. Index records and census lines share ids (61017601 is both).
Access: searching and index data need no subscription. Images need an account that may view the collection. The
user's account (linked to their Ancestry login) is a Fold3 non-subscriber, so PUBLIC collections (the War of 1812
pension files, among others) open and SUBSCRIBER ones say they need a subscription.
Related MCP server: X Browser MCP
Setup
Requirements: Node 26+ (runs TypeScript directly) and pnpm; no browser.
pnpm install.mcp.json:
{ "mcpServers": { "fold3": { "command": "node", "args": ["/path/to/fold3-com-mcp/src/server.ts"],
"env": { "ANCESTRY_SESSION_FILE": "/path/to/ancestry-com-mcp/.session.json", "FOLD3_SESSION_FILE": "/path/to/fold3-com-mcp/.session.json" } } } }ANCESTRY_SESSION_FILE(default~/Projects/ancestry-com-mcp/.session.json) is only read, never written.FOLD3_SESSION_FILE(default.session.jsonin this checkout, mode 600, git-ignored) keeps the Fold3 cookies.FOLD3_MIN_INTERVAL_MS(default 250) spaces requests.
Tests
pnpm test: unit tests on recorded responses (test/fixtures, re-recorded withnode scripts/record-fixtures.ts, which strips tokens and the account id). No network.pnpm mcp-test: live, over stdio. It calls every action and error path, checks sizes, and downloads a few pages to a temp directory. It also runs a count comparison for every search filter: a real value must narrow the total and a nonsense value must give about zero.pnpm typecheck.
Caveats
Fold3's index is transcribed by volunteers and staff. Read the images for anything that matters, and cite the file (
fold3_record getreturns a citation for a FILE).A search reaches only its first 10,000 hits and returns at most 50 per call.
A full-resolution page is 20 to 60 tiles, so it takes several seconds.
fold3_download filefetches at most 40 pages per call and keeps pages already on disk.
Available Tools
6 toolsfold3_collectionFold3 collectionsARead-onlyIdempotent
Fold3's collections ("titles", about 1,000). Actions:
list: collections whose title contains all the given words (name), with record counts, e.g. name "1812 pension" or "Confederate Tennessee".
get: one collection (needs collectionId): full title, description, source and NARA publication/catalog numbers, access level (free or subscription), record count, browse levels.
browse: walk a collection's browse tree (needs collectionId; path = labels chosen so far). War of 1812 Pension Files: [] → states, ["South Carolina"] → surnames, ["South Carolina","Hunt"] → given names, ["South Carolina","Hunt","Joseph"] → the file(s) with ids. Levels list up to 5,000 entries; contains narrows a long level.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | list: words in the collection title | |
| path | No | browse: the labels chosen so far, top level first, e.g. ["South Carolina","Hunt"] | |
| count | No | list/browse: items per call (list default 50, browse default 100) | |
| start | No | Paging offset: index of the first item to return (default 0) | |
| action | Yes | list · get · browse | |
| contains | No | browse: only entries whose label contains this text | |
| collectionId | No | get/browse: collection id, e.g. "761" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive behavior. The description adds useful behavioral detail beyond that: record counts for list, returned fields for get, browse-level limits up to 5,000 entries, and the narrowing effect of the contains parameter. No contradictions with annotations exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-organized into a compact bullet list with no wasted words. Each action gets a focused line, examples are embedded efficiently, and the browse-tree traversal example communicates a complex idea in a concise form.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with three actions and seven parameters, the description covers the main behaviors, parameter relationships, and return highlights well. It could be slightly more complete by explicitly noting pagination semantics for list versus browse, but the schema already documents start and count, so the description is largely sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaningful parameter semantics: it maps actions to their required parameters, explains path as labels chosen so far, and gives concrete examples such as name="1812 pension" and path=["South Carolina","Hunt"]. This goes beyond the schema's isolated property descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (Fold3 collections) and enumerates three concrete actions: list, get, and browse. Each action is tied to a clear verb and resource, and the examples make it easy to tell this tool apart from siblings like fold3_search or fold3_record.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for each action, including which parameters each action needs and illustrative use cases. It does not explicitly name sibling tools or state when not to use this tool, but the action-specific guidance leaves little ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fold3_downloadDownload Fold3 imagesAIdempotent
Fetch Fold3 page images at up to full resolution (stitched from the viewer's tiles; the site's own download is capped at 1600 px). Actions:
image: one page (needs imageId, from fold3_record get or a hit's imageId). Without outPath it is returned inline for reading, scaled to maxSide (default 1600); with outPath the full resolution is written unless maxSide is given.
file: the pages of a multi-page file (needs fileId and outDir), written as page-01.jpg, page-02.jpg, … with a manifest.json (ids, sizes, SHA-256). Pages already on disk are kept. At most 40 pages per call (a full-resolution page takes several seconds); continue with start. Works for collections this account may view (free ones such as the War of 1812 pensions); it signs in through Ancestry by itself when needed, and says so when a collection needs a subscription.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | file: pages to fetch in this call (default and max 40) | |
| start | No | file: first page to fetch, counting from 0 (default 0) | |
| action | Yes | image · file | |
| fileId | No | file: file id (a FILE hit's id) | |
| outDir | No | file: absolute directory for the pages and manifest.json | |
| imageId | No | image: page image id | |
| maxSide | No | Scale so the longer side is at most this many pixels (inline default 1600; files and outPath default to full resolution) | |
| outPath | No | image: absolute path to write the JPEG to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotentHint=true and destructiveHint=false, and the description adds valuable behavioral context: it stitches from viewer's tiles, the site's own download is capped at 1600 px, pages already on disk are kept, and it signs in through Ancestry by itself when needed. It also discloses that full-resolution pages take several seconds and that at most 40 pages per call. This goes beyond the annotations and helps the agent anticipate side effects and performance. A small gap: it doesn't explicitly state what happens if a page fails mid-download, but overall strong.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear intro, bullet-like action breakdown, and a final note on access. It is somewhat long but every sentence carries useful information. The front-loading of the main purpose and the action list helps an agent quickly parse it. Slight verbosity in the access note could be trimmed, but it's justified for transparency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 8 parameters, no output schema, and moderate complexity (two actions, continuation, resolution scaling), the description covers the essential context: what each action does, required parameters, defaults, limits, and access behavior. It doesn't describe the exact structure of manifest.json beyond listing ids, sizes, SHA-256, but that is likely sufficient for an agent to proceed. The lack of an output schema is partially compensated by the description's detail on return behavior (inline vs file writing).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description adds meaning by explaining the relationship between parameters (e.g., image needs imageId, file needs fileId and outDir, maxSide default behavior differs for inline vs outPath, start for continuation). This is more than the schema alone provides, though the schema already covers the basics. A 4 is appropriate because the description enriches parameter semantics without being redundant.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches Fold3 page images at up to full resolution, and distinguishes the two actions (image vs file) with their required parameters. It also differentiates from siblings by mentioning it is the download tool, while siblings like fold3_search, fold3_record, fold3_collection, fold3_session, and fold3_raw_request serve other purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly explains when to use the image action (one page, needs imageId) and when to use the file action (multi-page file, needs fileId and outDir). It also notes the 40-page limit and the start parameter for continuation, and mentions that it works for collections the account may view, with subscription requirements disclosed. This is strong guidance for an agent to select the correct action and parameters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fold3_raw_requestRaw Fold3 requestARead-onlyIdempotent
A read-only request to Fold3's own services for data the other tools lack: GET any path under /fold31/, /fold31-search/, /fold31-image-data/, /fold31-index-record/, /fold31-memorial/, or POST a DocumentQuery to /fold31-search/doc-search. docs/endpoints.md lists the useful paths. Prefer the other tools: their results are projected to fit and their filters are checked.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | post: the DocumentQuery JSON | |
| path | No | Service path, e.g. /fold31/api/publication/pub/761 | |
| action | Yes | get · post (search only) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, and non-destructive, so the bar is lower. The description adds behavioral detail beyond annotations: it lists allowed endpoint prefixes and the POST DocumentQuery action, and implies that raw requests bypass the filtering/projection of the other tools, which is important context for safe use.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The core purpose is front-loaded, and the routing advice ('prefer other tools') follows logically. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a raw-access fallback with open-world semantics and no output schema, the description covers the essential usage constraints (allowed paths, methods, documentation reference, and the caveat about raw results). An agent can safely decide when to call this tool and how to construct a request.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (all parameters described), so baseline is 3. The description adds meaning beyond the schema: it explains that POST is used for a DocumentQuery, ties the path to specific prefixes, and implies that body is only for POST, which complements the schema's brief descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('request'), resource (Fold3 services), and allowed paths/methods. Clearly distinguishes from siblings by saying it provides 'data the other tools lack' and explicitly naming the alternative tools in the preference note.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Prefer the other tools' and explains why (projected results, checked filters), indicating when NOT to use this tool. Also points to docs/endpoints.md for useful paths, giving an actionable guide for correct usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fold3_recordRead a Fold3 recordARead-onlyIdempotent
Read one Fold3 document. Action get: needs id + type (as a search hit reports them) or url (a fold3.com /file/, /image/, /record/ or /memorial/ page).
FILE: title, collection and its access, index fields ("[Blank]" fields dropped), page count, every page's imageId, whether this account may view it, and a citation. Long files page with start/count.
IMAGE: the page's title, file, index fields, size and whether it is viewable.
INDEX_RECORD / SUB_IMAGE: the index fields; a SUB_IMAGE (a person's line on a census page) names its imageId and line.
MEMORIAL: facts, stories, and the Ancestry records Fold3 linked (collectionId + recordId for ancestry_record get). Images themselves come from fold3_download.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Document id from a search hit (with type) | |
| url | No | A fold3.com page URL instead of id + type | |
| type | No | The hit's type; ids of different types can collide | |
| count | No | FILE: pages to list (default 200) | |
| start | No | Paging offset: index of the first item to return (default 0) | |
| action | Yes | get |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag the operation as read-only, idempotent, and non-destructive, and the description adds rich behavioral detail beyond that: FILE paging behavior, dropped '[Blank]' fields, per-page imageId exposure, account-level viewability, and MEMORIAL's linked Ancestry records. This gives an agent an accurate model of what the tool actually returns and how it behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action and then uses a clean bullet structure to cover each type without redundancy. Every sentence and bullet earns its place; the length is justified by the tool's five distinct record types.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of explaining return behavior, and it does so thoroughly for every type. It also covers input alternatives, paging, and the boundary with fold3_download. An agent has enough information to select the correct parameters and interpret each record type's response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes every parameter at 100% coverage, but the description adds meaningful semantics beyond those descriptions: id+type can be replaced by url, type values map to different response shapes, SUB_IMAGE returns imageId and line, and MEMORIAL provides collectionId + recordId for ancestry_record. This materially helps an agent construct correct calls.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear verb-resource pair, 'Read one Fold3 document,' and immediately distinguishes the supported variants (FILE, IMAGE, INDEX_RECORD, SUB_IMAGE, MEMORIAL). It is specific and differentiates from siblings like fold3_download by stating images themselves come from that tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly explains the input modes ('id + type' or 'url') and routes image retrieval to fold3_download with an explicit statement: 'Images themselves come from fold3_download.' It does not exhaustively enumerate when not to use other siblings such as fold3_search or fold3_session, but the intended usage context is strongly implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fold3_searchSearch Fold3ARead-onlyIdempotent
Search Fold3's military and other historical records (service records, pensions, muster rolls, draft cards, census, casualty lists, newspapers, memorials). Actions:
search: hits matching the criteria; needs at least one criterion. Each hit gives type (FILE = a multi-page file such as a pension or service record; IMAGE; INDEX_RECORD = an index entry; SUB_IMAGE = one person's line on an image such as a census page; MEMORIAL), id, title, collection, its index fields, pages, and the index values that matched. Read one with fold3_record get using its type and id. About 360 chars per hit, 50 per call at most; only the first 10000 hits of a search can be reached.
facets: how the matches split by collection, war, record type and document type (counts only), to pick filters before paging through thousands of hits. Searching needs no subscription; viewing images depends on the collection (free collections such as the War of 1812 pensions open with the user's free account; most others need a Fold3 subscription, which this account does not have — fold3_session status says).
| Name | Required | Description | Default |
|---|---|---|---|
| war | No | Only titles in this war or topic: us-revolutionary-war-us, war-of-1812, indian-and-mexican-american-wars, us-civil-war, us-civil-war-union, us-civil-war-confederate, spanish-american-war, world-war-i-united-states, world-war-ii-united-states, korean-war, vietnam-war-us, afghan-war-us, census, naturalizations, city-directories, native-american, african-american, holocaust, unit-histories, non-military, world-war-i-uk, world-war-ii-uk, war-of-1812-uk, us-revolutionary-war-uk | |
| name | No | A person's name as Fold3's Name field ("Joseph Hunt"); narrower than keywords (17,720 Joseph Hunts against 170,359 keyword hits) | |
| sort | No | search: relevance (default), alphabetical, oldest, newest | |
| count | No | search: hits per call (default 20, max 50); facets: values per facet (default 20) | |
| place | No | Place words as Fold3's Place field, e.g. "Giles County" | |
| start | No | Paging offset: index of the first item to return (default 0) | |
| state | No | Only records Fold3 places in this US state or territory | |
| action | Yes | search · facets | |
| docType | No | image (page images and files), index_record (index-only entries), memorial (Fold3 memorial pages), military_unit | |
| keywords | No | Words anywhere in the index (names, units, places, numbers), e.g. "Youngblood" or "62nd Tennessee" | |
| birthYear | No | Birth year on the record (date.vital.birth); with birthYearTo a range | |
| deathYear | No | Death year on the record (date.vital.death); with deathYearTo a range | |
| recordType | No | Only this kind of record, e.g. pension, service-record, muster-roll, draft-card, census, casualty, newspaper | |
| birthYearTo | No | End of a birth-year range | |
| deathYearTo | No | End of a death-year range | |
| serviceYear | No | Year of military service on the record (date.military); with serviceYearTo a range, e.g. 1812-1815 | |
| collectionId | No | Only this collection (title), e.g. "761" = US, War of 1812 Pension Files; ids from fold3_collection list or a hit's collectionId | |
| coverageYear | No | Fold3's generic date filter: documents whose date SPAN covers this year. A whole collection's span counts (a 1775-2019 gravesite index matches 1814), so it does not filter a person's dates; prefer birthYear/deathYear/serviceYear | |
| serviceYearTo | No | End of a service-year range | |
| coverageYearTo | No | End of a coverage-year range |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, but the description adds substantial behavioral detail: hit types and their structure, limits (50 per call, first 10000 hits), subscription requirements for viewing images, and the caveat that coverageYear is a generic filter that does not filter personal dates. This goes well beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but well-structured with bullet points for the two actions. Every sentence adds value: it covers scope, hit types, limits, subscription, and follow-up steps. It front-loads the core purpose and efficiently organizes the operational details without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (20 parameters, two actions, no output schema), the description is remarkably complete. It explains the return format (hit types and fields), pagination limits, subscription nuance, and the relationship to fold3_record. An agent has everything needed to invoke it correctly and interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed per-parameter descriptions, so the baseline is 3. The description adds meaning beyond that by explaining that search requires at least one criterion, that facets returns counts, that count has different meanings per action, and that only the first 10000 hits are reachable (affecting start/count). It also clarifies the relationship between name and keywords, which is useful for parameter selection.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Search') and resource (Fold3's military and other historical records), enumerates the record types, and distinguishes the two actions (search vs. facets). It clearly differentiates from sibling tools by describing its role as the search entry point and pointing to fold3_record for reading a specific hit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly explains when to use each action (search for hits, facets to pick filters before paging), notes that searching requires no subscription, and instructs the agent to use fold3_record for reading hits. It also mentions consulting fold3_session for subscription status, giving clear context for selection among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fold3_sessionFold3 sessionAIdempotent
The Fold3 sign-in. status: whether the saved session is signed in, the account's status (subscriber or not) and premium access. login: sign in through the Ancestry session that ancestry-com-mcp saved (Fold3's own "Sign in with Ancestry"); no browser or password, but it needs a valid Ancestry session (ancestry_session status). Downloads sign in by themselves when needed, so login is rarely called directly.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | status · login |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true and destructiveHint=false, and the description adds context: login uses the saved Ancestry session, has no browser or password interaction, and status reports signed-in status, account type, and premium access. This goes beyond the annotations by explaining the mechanism and prerequisites, though it doesn't detail failure modes or side effects of repeated logins.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, concise and front-loaded with the core purpose. It explains both actions and provides a critical usage note without redundancy. Minor inefficiency: the phrase 'The Fold3 sign-in' could be more precise, but overall it's well-structured and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a session-management tool with a single parameter, the description covers the essential return values for status, the login mechanism, and the prerequisite. It does not have an output schema, but it adequately describes what the agent can expect. The note about login being rarely called directly fills a practical gap. Some detail about error handling or idempotency confirmation is absent but not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only lists the enum values 'status' and 'login' with a terse description. The description enriches these by defining exactly what status returns (signed-in status, account subscription level, premium access) and what login does (signs in via Ancestry session). Since schema coverage is 100% but the enum descriptions are minimal, the description adds meaningful semantic detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states that this tool manages the Fold3 session, covering 'status' and 'login' actions. It clearly differentiates from sibling tools like fold3_search and fold3_download by focusing on session state rather than data retrieval or downloads. While the opening phrase 'The Fold3 sign-in' is a bit noun-like, the subsequent explanation makes the purpose explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Downloads sign in by themselves when needed, so login is rarely called directly,' which tells the agent when not to call login. It also specifies that login requires a valid Ancestry session (via ancestry_session status), giving a clear precondition. This directly addresses when to use status versus login and when to avoid the tool altogether.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
v0.1.0- First observed
fold3_collection - First observed
fold3_download - First observed
fold3_raw_request - First observed
fold3_record - First observed
fold3_search - First observed
fold3_session
TDQS
Scored across 6 tools
The six tools are mostly distinct: search, record, collection, download, session, and raw request each target a different concern. Some overlap exists between fold3_record and fold3_download (both handle images), and fold3_raw_request could duplicate the others, but the descriptions clarify boundaries.
All tools use a consistent fold3_ prefix with a noun indicating the resource (search, record, collection, download, session, raw_request). The pattern is predictable, though fold3_raw_request is slightly less verb-like than the others.
Six tools is well-scoped for a domain-specific server covering search, retrieval, browsing, downloading, session management, and a fallback raw request. Each tool has a clear purpose and the count feels appropriate.
The server covers the core workflow: search, inspect records, browse collections, download images, and manage session. Minor gaps exist (e.g., no explicit way to list all collections or handle saved records), but the raw request tool fills edge cases.
Maintenance
Related MCP Connectors
Read-only OpenHeritage search for genealogy and cultural heritage records.
Read-only MCP access to authorized Vocci sessions, notes, files, and memory search.
Read-only access to your tabletop campaigns: codex, sessions, and session notes.
Read-only access to your Citlyze workspace: AI search visibility, citations, and recommendations.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to search FamilySearch's Family Tree, view person details, explore ancestors and descendants, and search historical records using browser session authentication.5 npm3MIT
- FlicenseBqualityBmaintenanceEnables browser-based Twitter/X research and account workflows through a signed-in browser, supporting search, timeline/profile reads, saved searches, snapshot exports, and prepared account actions without requiring an X developer API key.25-
- AlicenseNot gradedqualityBmaintenanceProvides read-only access to the Internet Archive's Wayback Machine and catalog, enabling retrieval of archived web captures, snapshot metadata, and catalog search.BSD 3-Clause
- AlicenseAqualityBmaintenanceEnables direct interaction with FamilySearch.org's shared Family Tree and historical records, including reading and adding people, facts, relationships, sources, notes, memories, record search, and image downloads, without needing a browser.9MIT