# AMIRA — Africa Multiple Research Data

> Read-only access to AMIRA, the Africa Multiple research-data platform on Omeka S.

- name: io.github.AM-Digital-Research-Environment/amira-mcp-server
- version: 1.25.0
- connection class: R0 (autonomous)
- trust: 96/100
- quality: 81/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.AM-Digital-Research-Environment%2Famira-mcp-server
- tools: https://api.protogrid.dev/v1/servers/io.github.AM-Digital-Research-Environment%2Famira-mcp-server/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "amira-mcp-server": {
      "type": "http",
      "url": "https://data.africamultiple.uni-bayreuth.de/mcp"
    }
  }
}
```


## Trust

- hygiene: 95
- liveness: 100
- freshness: 100
- provenance: 90
- drivers: +repository +namespace-matches-repo +website +reachable +uptime-100% +updated-0d-ago -unpinned-packages(1)
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 81/100 (good)

### protocol: 100 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- pass `protocol.list_ttl`: tool list is cacheable (ttlMs 3600000)

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 93 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 35 of 35 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- warn `tools.token_cost`: about 8,867 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 25 (weight 15)

- warn `stability.changes`: 41 tool changes in 30 days
- fail `stability.rug_pull`: 29 tools kept their name but changed most of their description in 30 days; review before trusting them

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 35, about 8,867 tokens to load them all
- tool set hash: 7cc812fa75b571c38884060e2f5e8437
- tools last changed: 2026-10-20T14:37:00.331Z
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.AM-Digital-Research-Environment/amira-mcp-server.svg)](https://protogrid.dev/servers/io.github.AM-Digital-Research-Environment/amira-mcp-server)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-20 `get_entity_graph` changed (description, inputSchema, outputSchema)
  - before: One-hop graph from a typed ID: explicit catalogue links and derived co-occurrence with distinct-record counts and cited evidence. Pass edge_id to page its evidence; pin snapshot_id across pages.
  - after: One-hop graph from a typed ID: explicit catalogue links and derived co-occurrence with distinct-record counts and cited evidence. types filters neighbours before the bounds. Pass edge_id to page its evidence; pin snapshot_id across pages.
- 2026-10-19 `fetch` changed (inputSchema)
- 2026-10-19 `search` changed (outputSchema)
- 2026-10-19 `get_research_item` changed (inputSchema)
- 2026-10-08 `resolve_entity` changed (outputSchema)
- 2026-10-08 `get_person` changed (description)
  - before: Person affiliations, authority identifiers, PI/member projects, credited items, publications and top collaborators. Lists cap at 50 with totals. Use id to disambiguate.
  - after: Person affiliations, identifiers, project and section roles, credited items, publications, podcasts, videos and collaborators. Lists cap at 50 with totals. Use id to disambiguate.
- 2026-10-07 `fetch` changed (description, inputSchema, annotations) **meaning changed**
  - before: Retrieve one AMIRA record by an `id` from the search tool. Returns { id, title, text, url, metadata } — `text` concatenates the record's descriptive fields, `url` is the citable AMIRA/Omeka page, and DOI / watch / listen URLs appear in metadata when available. Large text is OPT-IN: video and podcast transcripts, and publications' extracted PDF full text, are omitted by default (metadata reports has_transcript / transcript_length and has_fulltext / fulltext_length) because either can run to tens of thousands of characters. Set the matching include_* flag to append one, and page it with the offset/max_chars pair — the window is sized to what `max_chars` leaves after the metadata header, and `*_returned_chars` is exactly what landed in `text`, so the next page starts at offset + returned_chars with no gap.
  - after: Read a typed search result as a cited document. Full text/transcripts are opt-in and pageable; metadata and text respect exposure policy. Unknown ID returns an error.
- 2026-10-07 `search` changed (description, inputSchema, outputSchema, annotations) **meaning changed**
  - before: Search the Africa Multiple (AMIRA) research collection, ranked by relevance. Covers research items (digitised artefacts), the cluster bibliography (reaching INTO the extracted full text of open-access publications), podcasts and YouTube videos (reaching INTO their transcripts), and the cluster's projects and research sections. Matching is accent-insensitive. Returns { results: [{ id, title, url }] }, where `url` is the citable AMIRA/Omeka record page; pass an `id` to the fetch tool for the full record. (The OpenAI/ChatGPT-compatible entry point; richer filtered tools — search_research_items, find_related, list_* — are also available.)
  - after: Ranked search across items, publications, videos, podcasts, projects and sections. Returns typed IDs, titles and citation URLs. Fetch selected records for evidence.
- 2026-10-07 `get_snapshot_changes` added
  - Page added/updated/deleted records between retained snapshots from this Omeka instance. Lists available snapshot IDs when fewer than two exist. For recent additions without history, use added_since on the search tools.
- 2026-10-07 `get_data_quality` added
  - Snapshot coverage and missing metadata, unresolved loaded-authority links, and sanitized refresh status. Missing catalogue metadata is not evidence of real-world absence.

Full history: https://api.protogrid.dev/v1/servers/io.github.AM-Digital-Research-Environment%2Famira-mcp-server/changes

## Remotes

- https://data.africamultiple.uni-bayreuth.de/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

- mcpb https://github.com/AM-Digital-Research-Environment/amira-mcp-server/releases/download/v1.25.0/amira-mcp-server.mcpb

## Tools (35)

- `compare_collections`: Compare 2–4 projects or item sets with identical research-item filters. Reports denominators, missingness, dates and top types/languages; collections can overlap.
- `fetch`: Read a typed search result as a cited document. Full text/transcripts are opt-in and pageable; metadata and text respect exposure policy. Unknown ID returns an error.
- `find_related`: Subjects, people, places and projects connected through shared records. Per-corpus counts deduplicate each record; subject/person seeds also include publications. Returns ambiguity and cited samples.
- `get_collection_overview`: Start here: corpus counts, text coverage, breakdowns, dates, snapshot freshness and refresh status.
- `get_data_quality`: Snapshot coverage and missing metadata, unresolved loaded-authority links, and sanitized refresh status. Missing catalogue metadata is not evidence of real-world absence.
- `get_entity_graph`: One-hop graph from a typed ID: explicit catalogue links and derived co-occurrence with distinct-record counts and cited evidence. types filters neighbours before the bounds. Pass edge_id to page its evidence; pin snapshot_id across pages.
- `get_institution`: Institution or group profile: identifiers, members, funded projects and credited items, with citation links.
- `get_person`: Person affiliations, identifiers, project and section roles, credited items, publications, podcasts, videos and collaborators. Lists cap at 50 with totals. Use id to disambiguate.
- `get_podcast`: Podcast detail, duration, audio file and citation link; says which model generated the transcript. Transcript is opt-in, bounded and pageable.
- `get_project`: Project description, team, sections, funders, item counts by type, top subjects and ten sample research items, with citation links.
- `get_publication`: Publication metadata and citation export (BibTeX default). Full text is opt-in and paginated. Cite amira_url; DOI/repository links are additional sources.
- `get_research_item`: Research-item metadata, linked entities, rights, media files, IIIF manifest and a generated citation (BibTeX/RIS/CSL-JSON). Long fields cap at 25,000 characters.
- `get_research_section`: One research section's description, team and projects, each with its research-item count.
- `get_snapshot_changes`: Page added/updated/deleted records between retained snapshots from this Omeka instance. Lists available snapshot IDs when fewer than two exist. For recent additions without history, use added_since on the search tools.
- `get_text_passages`: Find literal accent-insensitive keyword passages in selected publication/video/podcast IDs. Original UTF-16 offsets, bounded context, and citations. Requires full text exposure; no semantic ranking.
- `get_video`: Video detail, thumbnail and citation link; says how the transcript was produced when recorded. Transcript is opt-in, bounded and pageable.
- `list_categories`: Ranked formats, languages or resource types used by research items. Feed values into the corresponding search filters.
- `list_cluster_partners`: Cluster partner institutions grouped by catalogue category, with citation links.
- `list_collections`: Omeka item sets ranked by research-item count, with catalogue links. Feed an ID into search_research_items.collection.
- `list_groups`: Browse research groups and associations by name, with citation links.
- `list_institutions`: Browse institution authorities by name or acronym (e.g. 'UJKZ'), with project counts and citation links.
- `list_journals`: Publication venues ranked by linked bibliography records, with ISSN and catalogue links.
- `list_locations`: Research places with coordinates and ancestor rollups. One item can count under both city and country. Feed a name into search_research_items.location.
- `list_publication_facets`: Ranked facets for the entire filtered bibliography before pagination. Uses the same selection rules as search_publications.
- `list_research_sections`: Cluster research sections, funding phases, project/item counts and citation links. Includes the external-collection grouping.
- `list_subjects`: Subject headings (LCSH or free tags) ranked by distinct research-item count. Feed a heading into search_research_items.subject.
- `list_years`: Research-item year/decade histogram with dated and undated counts. A date range counts in each spanned bucket. Supports shared item filters and pagination.
- `resolve_entity`: Resolve a label or typed ID to cited candidates. Returns ambiguity instead of merging names. Use a returned id with get_entity_graph or get_* tools.
- `search`: Ranked search across items, publications, videos, podcasts, projects and sections. Returns typed IDs, titles and citation URLs. Fetch selected records for evidence.
- `search_persons`: Find canonical person authority records. Names accept either order and ignore accents. Use resolve_entity to disambiguate homonyms.
- `search_podcasts`: Search podcast metadata and transcripts. Text-only hits include snippets; full transcripts require get_podcast with opt-in.
- `search_projects`: Search project names, descriptions and membership. Returns cited summaries and item counts; use get_project for detail.
- `search_publications`: AND-filtered bibliography, newest first. Keyword includes PDF text and returns match snippets. citation_format returns citations per page; export links every match as one file. Cite amira_url.
- `search_research_items`: Search digitised research items. Filters are AND-combined; empty results suggest a filter to relax or a stored place name. export links all matches as a file.
- `search_videos`: Search video metadata and transcripts. Text-only hits include snippets; full transcripts require get_video with opt-in.
