{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_bnac2reygsfu","handle":"ahg-archives","url":"https://wellknown.network/agents/ahg-archives","links":{"self":"https://wellknown.network/agents/ahg-archives/record.json","html":"https://wellknown.network/agents/ahg-archives","markdown":"https://wellknown.network/agents/ahg-archives/record.md","api":"https://wellknown.network/api/v1/agents/ahg-archives","status":"https://wellknown.network/api/v1/agents/ahg-archives/status","claim":"https://wellknown.network/agents/ahg-archives/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/ahg-archives/claim.json","badge":"https://wellknown.network/agents/ahg-archives/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/ahg-archives/history","tools":"https://wellknown.network/api/v1/agents/ahg-archives/tools"},"ard":{"identifier":"urn:air:mcp.theahg.co.za:server:ahg-archives","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"AHG Archives","summary":"Search and read AtoM archival catalogues with citable links; staff propose changes for review.","description":"Search and read AtoM archival catalogues with citable links; staff propose changes for review.","publisher":{"name":"za.co.theahg","url":null},"homepage":"https://www.atom-extensions.com","repository":"https://github.com/ArchiveHeritageGroup/ahg-archives-mcp","version":"0.8.2","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://mcp.theahg.co.za/mcp","type":"mcp_streamable_http","auth":null,"probeable":true},{"url":"https://mcp.theahg.co.za/public/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-10-27T05:37:00.836298Z","publishedAt":"2026-10-27T05:37:00.836298Z","registryName":"za.co.theahg/ahg-archives"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","repoUrl":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"content.translation","name":"Translation","confidence":1,"provenance":"derived"},{"slug":"media.speech-recognition","name":"Speech Recognition","confidence":1,"provenance":"derived"},{"slug":"code.review","name":"Code Review","confidence":0.885,"provenance":"derived"},{"slug":"dev.docs-lookup","name":"Documentation Lookup","confidence":0.54,"provenance":"derived"},{"slug":"content.writing","name":"Writing & Editing","confidence":0.51,"provenance":"derived"}],"categories":["code","content","dev","media"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 6h ago.","lastOkAt":"2026-10-29T00:30:56.560Z","lastProbedAt":"2026-10-29T00:30:56.560Z","statusComputedAt":"2026-10-29T00:34:10.041Z","reliability30d":{"probes":8,"successRate":1,"p50Ms":623,"basis":"mixed","measures":{"availability":"availability (some checks stopped at authentication)","latency":"response time (mixed)","tools":"partially observed","summary":"Some successful checks reached the service and some stopped at an authentication response; figures combine both."},"checks":{"total":8,"ok":8,"authBoundaryOk":4,"serviceOk":4,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-29T00:30:56.560Z","kind":"mcp_initialize","ok":true,"httpStatus":401,"latencyMs":938,"error":null,"detail":{"authRequired":true,"wwwAuthenticate":"Bearer error=\"invalid_token\", error_description=\"Authentication required\", resource_metadata=\"https://mcp.theahg.co.za/.well-known/oauth-protected-resource/mcp\""}},{"at":"2026-10-28T23:25:18.002Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":193,"error":null,"detail":{"tools":[{"name":"search_records","description":"Search archival descriptions (fonds, series, files, items) by keyword.\n\n    Returns title, level of description and the citable URL of each match.\n    Use get_r"},{"name":"list_catalogues","description":"The catalogues this service can search and read. Proposals go to the home catalogue only."},{"name":"get_record","description":"Read one archival description in full, by its slug (the last part of its URL).\n\n    Includes dates, names, subjects, places, notes and, where the catalogue\n    "},{"name":"get_children","description":"List the descriptions directly below one record (for example the series in a fonds)."},{"name":"work_through_series","description":"Work through every record below a parent (for example each page of a family\n    Bible), a batch at a time, with a running summary of what you proposed where.\n\n "},{"name":"get_authority","description":"Read an authority record (a person, family or organisation) by its slug."},{"name":"search_authorities","description":"Find existing authority records (people, organisations, families) or places by name.\n\n    Every word must appear in the name, in any order, so \"Hendrik Engelbre"},{"name":"get_iiif_manifest","description":"Return the IIIF manifest URL for a record's images, for viewing in a IIIF viewer."},{"name":"get_record_text","description":"Read the text held for a record's files: text extracted from a PDF or by OCR,\n    and transcriptions of audio or video.\n\n    Use it for documents, where reading"},{"name":"get_record_image","description":"Look at a record's image: returns the reference image itself, so you can\n    describe what it shows, read inscriptions or labels, or judge its condition.\n\n    U"},{"name":"list_my_proposals","description":"List the proposals you made and what became of them, newest first.\n\n    Each shows the record, the name, place, date or field text proposed, and its\n    status:"},{"name":"propose_access_points_and_dates","description":"Propose access points (people, organisations, places) and dates for one record.\n\n    Read the record with get_record first. Propose only what its text, or a\n   "},{"name":"propose_relationships","description":"Propose relationships between people or organisations that a record states,\n    such as a marriage or parent and child in a family register.\n\n    Each side must"},{"name":"propose_description_change","description":"Propose new text for one field of a record, for an archivist to review.\n\n    text is the complete proposed text for the field, not a fragment: read the\n    reco"},{"name":"propose_transcription","description":"Propose a transcription of a record's file, such as a scanned page with no text.\n\n    Look at the page with get_record_image first and transcribe what is writte"},{"name":"propose_translation","description":"Propose a translation of one field of a record into another language.\n\n    language is the target language code, e.g. \"en\", \"af\" or \"nl\". Translate the\n    reco"}],"toolCount":16,"toolsHash":"5736668c005d0b64a24292034e726fae9176babe380c237f30258a36eeaeb963","serverName":"AHG Archives","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"1.30.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-28T16:31:48.527Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":740,"error":null,"detail":{"tools":[{"name":"search_records","description":"Search archival descriptions (fonds, series, files, items) by keyword.\n\n    Returns title, level of description and the citable URL of each match.\n    Use get_r"},{"name":"list_catalogues","description":"The catalogues this service can search and read. Proposals go to the home catalogue only."},{"name":"get_record","description":"Read one archival description in full, by its slug (the last part of its URL).\n\n    Includes dates, names, subjects, places, notes and, where the catalogue\n    "},{"name":"get_children","description":"List the descriptions directly below one record (for example the series in a fonds)."},{"name":"work_through_series","description":"Work through every record below a parent (for example each page of a family\n    Bible), a batch at a time, with a running summary of what you proposed where.\n\n "},{"name":"get_authority","description":"Read an authority record (a person, family or organisation) by its slug."},{"name":"search_authorities","description":"Find existing authority records (people, organisations, families) or places by name.\n\n    Every word must appear in the name, in any order, so \"Hendrik Engelbre"},{"name":"get_iiif_manifest","description":"Return the IIIF manifest URL for a record's images, for viewing in a IIIF viewer."},{"name":"get_record_text","description":"Read the text held for a record's files: text extracted from a PDF or by OCR,\n    and transcriptions of audio or video.\n\n    Use it for documents, where reading"},{"name":"get_record_image","description":"Look at a record's image: returns the reference image itself, so you can\n    describe what it shows, read inscriptions or labels, or judge its condition.\n\n    U"},{"name":"list_my_proposals","description":"List the proposals you made and what became of them, newest first.\n\n    Each shows the record, the name, place, date or field text proposed, and its\n    status:"},{"name":"propose_access_points_and_dates","description":"Propose access points (people, organisations, places) and dates for one record.\n\n    Read the record with get_record first. Propose only what its text, or a\n   "},{"name":"propose_relationships","description":"Propose relationships between people or organisations that a record states,\n    such as a marriage or parent and child in a family register.\n\n    Each side must"},{"name":"propose_description_change","description":"Propose new text for one field of a record, for an archivist to review.\n\n    text is the complete proposed text for the field, not a fragment: read the\n    reco"},{"name":"propose_transcription","description":"Propose a transcription of a record's file, such as a scanned page with no text.\n\n    Look at the page with get_record_image first and transcribe what is writte"},{"name":"propose_translation","description":"Propose a translation of one field of a record into another language.\n\n    language is the target language code, e.g. \"en\", \"af\" or \"nl\". Translate the\n    reco"}],"toolCount":16,"toolsHash":"5736668c005d0b64a24292034e726fae9176babe380c237f30258a36eeaeb963","serverName":"AHG Archives","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"1.30.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-28T16:29:56.101Z","kind":"mcp_initialize","ok":true,"httpStatus":401,"latencyMs":184,"error":null,"detail":{"authRequired":true,"wwwAuthenticate":"Bearer error=\"invalid_token\", error_description=\"Authentication required\", resource_metadata=\"https://mcp.theahg.co.za/.well-known/oauth-protected-resource/mcp\""}},{"at":"2026-10-28T09:28:58.380Z","kind":"mcp_initialize","ok":true,"httpStatus":401,"latencyMs":550,"error":null,"detail":{"authRequired":true,"wwwAuthenticate":"Bearer error=\"invalid_token\", error_description=\"Authentication required\", resource_metadata=\"https://mcp.theahg.co.za/.well-known/oauth-protected-resource/mcp\""}},{"at":"2026-10-28T09:28:07.601Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":199,"error":null,"detail":{"tools":[{"name":"search_records","description":"Search archival descriptions (fonds, series, files, items) by keyword.\n\n    Returns title, level of description and the citable URL of each match.\n    Use get_r"},{"name":"list_catalogues","description":"The catalogues this service can search and read. Proposals go to the home catalogue only."},{"name":"get_record","description":"Read one archival description in full, by its slug (the last part of its URL).\n\n    Includes dates, names, subjects, places, notes and, where the catalogue\n    "},{"name":"get_children","description":"List the descriptions directly below one record (for example the series in a fonds)."},{"name":"work_through_series","description":"Work through every record below a parent (for example each page of a family\n    Bible), a batch at a time, with a running summary of what you proposed where.\n\n "},{"name":"get_authority","description":"Read an authority record (a person, family or organisation) by its slug."},{"name":"search_authorities","description":"Find existing authority records (people, organisations, families) or places by name.\n\n    Every word must appear in the name, in any order, so \"Hendrik Engelbre"},{"name":"get_iiif_manifest","description":"Return the IIIF manifest URL for a record's images, for viewing in a IIIF viewer."},{"name":"get_record_text","description":"Read the text held for a record's files: text extracted from a PDF or by OCR,\n    and transcriptions of audio or video.\n\n    Use it for documents, where reading"},{"name":"get_record_image","description":"Look at a record's image: returns the reference image itself, so you can\n    describe what it shows, read inscriptions or labels, or judge its condition.\n\n    U"},{"name":"list_my_proposals","description":"List the proposals you made and what became of them, newest first.\n\n    Each shows the record, the name, place, date or field text proposed, and its\n    status:"},{"name":"propose_access_points_and_dates","description":"Propose access points (people, organisations, places) and dates for one record.\n\n    Read the record with get_record first. Propose only what its text, or a\n   "},{"name":"propose_relationships","description":"Propose relationships between people or organisations that a record states,\n    such as a marriage or parent and child in a family register.\n\n    Each side must"},{"name":"propose_description_change","description":"Propose new text for one field of a record, for an archivist to review.\n\n    text is the complete proposed text for the field, not a fragment: read the\n    reco"},{"name":"propose_transcription","description":"Propose a transcription of a record's file, such as a scanned page with no text.\n\n    Look at the page with get_record_image first and transcribe what is writte"},{"name":"propose_translation","description":"Propose a translation of one field of a record into another language.\n\n    language is the target language code, e.g. \"en\", \"af\" or \"nl\". Translate the\n    reco"}],"toolCount":16,"toolsHash":"5736668c005d0b64a24292034e726fae9176babe380c237f30258a36eeaeb963","serverName":"AHG Archives","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"1.30.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-28T02:30:24.745Z","kind":"mcp_initialize","ok":true,"httpStatus":401,"latencyMs":307,"error":null,"detail":{"authRequired":true,"wwwAuthenticate":"Bearer error=\"invalid_token\", error_description=\"Authentication required\", resource_metadata=\"https://mcp.theahg.co.za/.well-known/oauth-protected-resource/mcp\""}},{"at":"2026-10-28T02:30:24.410Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":350,"error":null,"detail":{"tools":[{"name":"search_records","description":"Search archival descriptions (fonds, series, files, items) by keyword.\n\n    Returns title, level of description and the citable URL of each match.\n    Use get_r"},{"name":"list_catalogues","description":"The catalogues this service can search and read. Proposals go to the home catalogue only."},{"name":"get_record","description":"Read one archival description in full, by its slug (the last part of its URL).\n\n    Includes dates, names, subjects, places, notes and, where the catalogue\n    "},{"name":"get_children","description":"List the descriptions directly below one record (for example the series in a fonds)."},{"name":"work_through_series","description":"Work through every record below a parent (for example each page of a family\n    Bible), a batch at a time, with a running summary of what you proposed where.\n\n "},{"name":"get_authority","description":"Read an authority record (a person, family or organisation) by its slug."},{"name":"search_authorities","description":"Find existing authority records (people, organisations, families) or places by name.\n\n    Every word must appear in the name, in any order, so \"Hendrik Engelbre"},{"name":"get_iiif_manifest","description":"Return the IIIF manifest URL for a record's images, for viewing in a IIIF viewer."},{"name":"get_record_text","description":"Read the text held for a record's files: text extracted from a PDF or by OCR,\n    and transcriptions of audio or video.\n\n    Use it for documents, where reading"},{"name":"get_record_image","description":"Look at a record's image: returns the reference image itself, so you can\n    describe what it shows, read inscriptions or labels, or judge its condition.\n\n    U"},{"name":"list_my_proposals","description":"List the proposals you made and what became of them, newest first.\n\n    Each shows the record, the name, place, date or field text proposed, and its\n    status:"},{"name":"propose_access_points_and_dates","description":"Propose access points (people, organisations, places) and dates for one record.\n\n    Read the record with get_record first. Propose only what its text, or a\n   "},{"name":"propose_relationships","description":"Propose relationships between people or organisations that a record states,\n    such as a marriage or parent and child in a family register.\n\n    Each side must"},{"name":"propose_description_change","description":"Propose new text for one field of a record, for an archivist to review.\n\n    text is the complete proposed text for the field, not a fragment: read the\n    reco"},{"name":"propose_transcription","description":"Propose a transcription of a record's file, such as a scanned page with no text.\n\n    Look at the page with get_record_image first and transcribe what is writte"},{"name":"propose_translation","description":"Propose a translation of one field of a record into another language.\n\n    language is the target language code, e.g. \"en\", \"af\" or \"nl\". Translate the\n    reco"}],"toolCount":16,"toolsHash":"5736668c005d0b64a24292034e726fae9176babe380c237f30258a36eeaeb963","serverName":"AHG Archives","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"1.30.0","protocolVersion":"2025-06-18"}}],"tools":null,"package":null,"toolSurface":{"id":"ts_c2atqcgmuqf7","endpointId":"ep_w46sj8kdjjwg","hash":"5736668c005d0b64a24292034e726fae9176babe380c237f30258a36eeaeb963","toolCount":16,"serverName":"AHG Archives","serverVersion":"1.30.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-28T02:30:24.420Z","lastSeenAt":"2026-10-28T23:25:18.012Z","observations":4,"toolNames":["search_records","list_catalogues","get_record","get_children","work_through_series","get_authority","search_authorities","get_iiif_manifest","get_record_text","get_record_image","list_my_proposals","propose_access_points_and_dates","propose_relationships","propose_description_change","propose_transcription","propose_translation"],"distinctSurfaces":1},"endpointFacts":[]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"za.co.theahg/ahg-archives","url":"https://registry.modelcontextprotocol.io/v0/servers/za.co.theahg%2Fahg-archives","firstSeenAt":"2026-10-28T01:21:46.283Z","fetchedAt":"2026-10-28T01:21:46.283Z","normalizedAt":"2026-10-28T01:21:46.283Z"}]},"firstSeenAt":"2026-10-28T01:21:46.283Z","updatedAt":"2026-10-28T23:28:17.513Z"}