AMIRA — Africa Multiple Research Data
Server Details
Read-only access to AMIRA, the Africa Multiple research-data platform on Omeka S.
- Status
- Healthy
- Uptime
- 100.0% over 20 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- AM-Digital-Research-Environment/amira-mcp-server
- GitHub Stars
- 1
- Server Listing
- AMIRA MCP Server
TDQS
Scored across 35 tools
Most tools target distinct resource types, but relationship/discovery tools such as find_related, get_entity_graph, and resolve_entity overlap enough to cause hesitation. Search vs. list variants and generic fetch/search also create some near-neighbors, though descriptions help.
Names are overwhelmingly snake_case with predictable get_/list_/search_ verb patterns. Bare 'fetch' and 'search' plus 'find_related' are minor deviations from the otherwise consistent convention.
At 35 tools, the server is well above the heavy threshold for an agent-facing set. The research catalogue domain is broad, but many list/get/search variants could be consolidated to reduce selection burden.
Core discovery workflows are well covered: global and per-type search, detail views, facet lists, graph exploration, comparison, quality, and snapshot tools. Detail endpoints for secondary authorities such as groups, journals, locations, subjects, collections, and categories are missing, but list/search outputs provide workarounds.
Available Tools
35 toolscompare_collectionsCompare project collectionsARead-onlyIdempotentInspect
Compare 2–4 projects or item sets with identical research-item filters. Reports denominators, missingness, dates and top types/languages; collections can overlap.
| Name | Required | Description | Default |
|---|---|---|---|
| cohorts | Yes | ||
| filters | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| cohorts | Yes | |
| snapshot_id | Yes | |
| overlap_note | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so safety is covered. The description adds real behavioral value beyond that: it discloses the cardinality bound (2–4), the fact that one filter set is applied uniformly across all cohorts, the output dimensions reported, and that overlapping collections are allowed rather than deduplicated.
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 compact sentences, front-loaded with the action and cardinality, followed by output expectations and a single caveat. No filler or restatement of the tool name.
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?
An output schema exists, so return values need not be explained, and the description's summary of reported metrics is a helpful supplement rather than a requirement. Combined with annotation coverage of the read-only profile, an agent has enough to call this correctly; only per-filter semantics remain thin due to the 0% schema coverage.
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 0%, so the description carries the full burden. It usefully clarifies that `filters` is shared/identical across all `cohorts` and that `cohorts` accepts projects or item sets sized 2–4, but the roughly twenty filter fields (genre, country, year_from/to, has_media, etc.) receive no explanation, so compensation for the coverage gap is only partial.
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 and resource ('Compare 2–4 projects or item sets') and immediately scopes the operation to a comparison across cohorts. This clearly distinguishes it from the sibling list_/get_/search_ tools, which retrieve a single entity or a flat result set. It also previews the output dimensions (denominators, missingness, dates, top types/languages).
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?
'Compare 2–4 projects or item sets with identical research-item filters' gives a clear condition for use: multi-cohort comparison under one filter set. The caveat 'collections can overlap' warns about a likely misuse assumption (that cohorts are disjoint). However, no sibling alternative is named for the single-collection case (e.g., get_collection_overview or list_collections), so routing guidance is implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetchFetch one AMIRA recordARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | A typed record id from search (item:9902, pub:30001, video:…, podcast:…, project:…, section:…) or resolve_entity | |
| max_chars | No | Cap on the whole returned text body, default/max 25000 | |
| fulltext_offset | No | Start offset into the full text (chars), with include_fulltext | |
| include_fulltext | No | Default false — set true to append a publication's extracted full text | |
| transcript_offset | No | Start offset into the transcript (chars), with include_transcript | |
| fulltext_max_chars | No | Max full-text characters to return (default/max 25000) | |
| include_transcript | No | Default false — set true to append the video/podcast transcript | |
| transcript_max_chars | No | Max transcript characters to return (default/max 25000) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| url | No | |
| text | No | |
| error | No | Present instead of the record when the id is unknown |
| title | No | |
| metadata | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/non-destructive, so the description's job is to add context — and it does: fulltext/transcript are opt-in and pageable, content respects an exposure policy, and an unknown ID errors rather than returning empty. That is meaningful behavior beyond the structured hints, though it omits whether errors are distinguishable by type.
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, no filler, with the core read purpose front-loaded ahead of the opt-in paging and error details. Every clause carries information.
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 an output schema present the description need not explain return values, and the read-only annotations cover safety, so what remains is largely sufficient. The missing piece is routing relative to the typed getter siblings and any auth/exposure prerequisites.
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 8 parameters including the include_/offset/max_chars family. The description's 'opt-in and pageable' phrasing echoes this but adds no syntax, interaction rules (e.g., offset requires the matching include flag), or default guidance beyond the schema.
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 (read) and resource (a typed search result / AMIRA record) and adds the 'as a cited document' framing. However, it never distinguishes itself from the typed siblings (get_publication, get_podcast, get_video, get_research_item), so an agent cannot tell from the description why it would call fetch with 'pub:30001' instead of get_publication.
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?
Implies usage through 'read a typed search result' and 'full text/transcripts are opt-in', which tells the agent this follows a search. But there is no explicit when-to-use/when-not, no mention of the typed getter alternatives, and no prerequisites or exposure-policy preconditions spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_collection_overviewAfrica Multiple collection overviewARead-onlyIdempotentInspect
Start here: corpus counts, text coverage, breakdowns, dates, snapshot freshness and refresh status.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| counts | Yes | |
| refresh | Yes | |
| site_url | Yes | |
| universities | No | |
| data_snapshot | Yes | |
| collection_name | Yes | |
| items_by_language | No | |
| metadata_exposure | No | |
| research_sections | No | |
| content_date_range | Yes | |
| items_by_university | No | |
| items_by_resource_type | Yes | |
| items_by_research_section | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and closed-world, so the safety profile is fully covered. The description adds the fact that it reports snapshot freshness and refresh status, which is mildly useful context, but does not mention auth, rate limits, or cost beyond that.
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?
A single front-loaded sentence ('Start here: ...') with no filler; each listed item earns its place by signalling returned content. It is a fragment rather than a full sentence, but it is efficient.
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 zero-parameter, read-only tool with an output schema that already documents the return shape, the description is nearly complete. It could do more to differentiate from sibling aggregate tools, but nothing essential for correct invocation is missing.
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 tool takes zero parameters, so the baseline is 4. There is nothing for the description to disambiguate at the parameter level.
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 concrete outputs (corpus counts, text coverage, breakdowns, dates, snapshot freshness, refresh status), so an agent understands this is an aggregate overview of a collection. It does not, however, distinguish itself from siblings like get_data_quality or list_collections, which also report collection-level statistics.
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?
'Start here' implies the tool should be used first, giving implicit usage guidance. But no explicit when-to-use/when-not conditions are stated and no alternative (e.g. get_data_quality) is named for the cases where a different tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_data_qualityInspect data coverageARead-onlyIdempotentInspect
Snapshot coverage and missing metadata, unresolved loaded-authority links, and sanitized refresh status. Missing catalogue metadata is not evidence of real-world absence.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| counts | Yes | |
| missing | Yes | |
| refresh | Yes | |
| fetched_at | Yes | |
| snapshot_id | Yes | |
| schema_version | Yes | |
| literal_entities | Yes | |
| unresolved_entities | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only, idempotent, non-destructive profile, so the bar is lower. The description still adds real behavioral value: it scopes what is reported (coverage, unresolved authority links, sanitized refresh status) and warns that missing catalogue metadata is not evidence of real-world absence, which meaningfully shapes how an agent should treat the output.
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 compact sentences, front-loaded with the reported facets and closed with the interpretive warning. Slightly dense and telegraphic, but no sentence is wasted and nothing is buried.
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 zero-argument diagnostic tool with an output schema and full annotation coverage, the description supplies what is needed to invoke it correctly and to interpret the results. The only meaningful omission is any when-to-use framing relative to the many sibling lookup tools.
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 tool takes no parameters, so the baseline for this dimension is 4. The description introduces no parameter concepts that need elaboration and correctly stays at the level of what the call returns.
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 the resource (data coverage) and enumerates the specific facets reported: coverage gaps, missing metadata, unresolved loaded-authority links, and refresh status. 'Snapshot' is used loosely as a verb, but combined with the title 'Inspect data coverage' the agent understands this is the diagnostic view over catalogue quality. It is clearly distinct from the domain-lookup and search siblings.
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?
There is no statement of when to call this versus alternatives (e.g. get_snapshot_changes, list_collections) and no prerequisites. The closing sentence is a caveat about interpreting results, not guidance on selecting the tool, so the agent gets no routing help.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_entity_graphExplore an entity graphARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| seed | Yes | ||
| limit | No | Evidence page size, default 20, max 50 | |
| types | No | ||
| offset | No | ||
| edge_id | No | ||
| max_edges | No | Default 50, max 200 | |
| max_nodes | No | Default 40, max 100 | |
| snapshot_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| seed | Yes | |
| count | No | |
| edges | No | |
| nodes | No | |
| types | No | |
| bounds | No | |
| offset | No | |
| results | No | |
| has_more | No | |
| truncated | No | |
| next_offset | No | |
| snapshot_id | Yes | |
| total_edges | No | |
| total_matches | No | |
| effective_limit | No | |
| neighbour_types | No | |
| requested_limit | No | |
| response_limited | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly/idempotent/non-destructive/closed-world, so the safety profile is covered. The description adds genuine context beyond that: results mix explicit links with derived co-occurrence, each edge carries distinct-record counts and cited evidence, and pagination consistency requires pinning snapshot_id. That is meaningful behavioral disclosure for a read tool.
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?
Three dense clauses with zero filler, front-loaded with the core result shape followed by the two behavioural levers (filtering, paging). Every sentence carries information an agent needs; nothing restates the name or annotations.
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 an output schema present, return values need not be described, and the description instead covers the graph construction, filtering semantics, and pagination invariants. For an 8-parameter tool the only real omission is any characterization of the offset parameter, which is undocumented in both description and schema.
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 only 38%, so the description must compensate, and it does: it explains types (pre-filter on neighbours, applied before bounds), edge_id (pages that edge's evidence), snapshot_id (pin for stable paging), and implies seed ('from a typed ID'). limit, max_edges and max_nodes are documented in-schema; only offset remains unexplained anywhere.
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+resource: 'One-hop graph from a typed ID', and elaborates the two link classes (explicit catalogue links, derived co-occurrence) and what they carry (distinct-record counts, cited evidence). An agent knows exactly what it gets. It does not, however, name or contrast with the closest sibling, find_related, which also returns related entities.
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?
'types filters neighbours before the bounds' and 'Pass edge_id to page its evidence; pin snapshot_id across pages' give real operational guidance on filtering and paging. But there is no when-to-use vs alternatives statement, and no exclusion regarding find_related or list_cluster_partners, so usage is only implied for the discovery-vs-graph decision.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_institutionGet institution detailBRead-onlyIdempotentInspect
Institution or group profile: identifiers, members, funded projects and credited items, with citation links.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Omeka id or typed id organisation:1224 | |
| name | No | Institution or group name, or an acronym |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds no additional behavioral context such as pagination, authentication needs, or what happens when neither id nor name is supplied (0 required params).
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?
A single compact sentence that front-loads the resource and lists the returned facets efficiently, though the phrase 'with citation links' is slightly ambiguous without further explanation.
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 read-only profile lookup with only two well-documented optional params and no output schema, the description is adequate but leaves gaps regarding how the tool behaves when both or neither parameters are supplied, and it does not clarify output structure or how it relates to sibling lookup tools.
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?
With schema description coverage at 100%, the baseline is 3. The description adds marginal value by surfacing the two retrieval modes (by identifier or by name/acronym) implied by the schema, but does not add format details beyond the schema.
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 resource (institution or group profile) and enumerates what it returns (identifiers, members, funded projects, credited items, citation links). It does not explicitly distinguish itself from the sibling get_person or list_institutions, but the resource is clearly an institution/group detail fetch.
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?
No guidance on when to use this tool versus alternatives such as list_institutions, get_collection_overview, or resolve_entity. The agent must infer usage purely from the name and resource described.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_personGet person profileBRead-onlyIdempotentInspect
Person affiliations, identifiers, project and section roles, credited items, publications, podcasts, videos and collaborators. Lists cap at 50 with totals. Use id to disambiguate.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Exact person Omeka id or typed id (person:123); required to disambiguate homonyms | |
| name | No | Full name in either order, with or without accents: 'Beier, Ulli' and 'Ulli Beier' both resolve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, so the safety profile is covered. The description adds a genuinely non-obvious behavioral trait beyond them: list sub-results are capped at 50 with totals reported, which tells the agent to expect truncated collections. It still omits whether a lookup miss errors or returns empty, but the cap disclosure is the kind of context annotations cannot carry.
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?
Three short sentences, no filler, and the disambiguation advice is placed last where it is actionable. The opening noun list is dense but front-loads the returnable content, which is useful given there is no output schema.
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 usefully substitutes by naming the categories of data returned, and it discloses the 50-item cap. What remains missing is failure behavior for ambiguous or unmatched names and any guidance on which sibling tool to use instead — modest gaps for a simple two-param read.
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 both params (id, name) are already fully documented including the homonym-disambiguation rule and accent/order tolerance for name. 'Use id to disambiguate' restates the schema's own wording, adding no new meaning. Baseline 3 applies when the schema does the heavy lifting.
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 enumerates what the tool returns (affiliations, identifiers, roles, credited items, publications, podcasts, videos, collaborators) but never states the action plainly — it reads as a field list rather than 'retrieve a person's profile'. An agent can infer the purpose from name/title plus the field enumeration, but nothing distinguishes it from search_persons or resolve_entity beyond the read/write shape.
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 only usage guidance is 'Use id to disambiguate,' which is a parameter tip rather than when-to-use-this-vs-alternatives guidance. It never says when to prefer this over search_persons, resolve_entity, or get_entity_graph, nor what happens if only a name is supplied that matches multiple people.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_podcastGet podcast episode detailBRead-onlyIdempotentInspect
Podcast detail, duration, audio file and citation link; says which model generated the transcript. Transcript is opt-in, bounded and pageable.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Podcast id from search_podcasts, e.g. 39121, or podcast:39121 | |
| transcript_offset | No | Start offset into the transcript (chars), with include_transcript | |
| include_transcript | No | Default false — set true to include the transcript text | |
| transcript_max_chars | No | Max transcript characters to return (default/max 25000) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds genuinely useful behavior beyond that: the transcript is opt-in, bounded, and pageable, and the response discloses which model produced the transcript. It still says nothing about error/not-found handling or how paging terminates, so it is only moderately additive.
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?
It is compact — two sentences of roughly 25 words — with the return-value summary front-loaded before the transcript caveat. Minor deduction for the comma-splice, fragment-heavy style that makes it read as a field list rather than a crisp capability statement.
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 does the right thing by naming the returned fields (duration, audio file, citation link, transcript model) and by flagging transcript paging and bounding. It stops short of covering how to source the id, what happens when the podcast is missing, or default page size behavior, leaving small but real gaps.
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 all four parameters (id, include_transcript, transcript_offset, transcript_max_chars) are already self-documenting. The description's 'opt-in, bounded and pageable' phrasing loosely echoes those params but adds no new syntax, units, or constraints beyond the schema. Baseline 3 applies.
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 identifies the resource (podcast) and enumerates what the tool returns — detail, duration, audio file, citation link, transcript-generating model — so an agent can tell what it fetches. However, it uses a nominal fragment ('Podcast detail') rather than a verb, and never explicitly differentiates itself from close siblings like get_video or fetch.
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?
There is no statement of when to use this tool versus search_podcasts, get_video, or fetch, and no mention that the required id is obtained from search_podcasts (that fact lives only in the schema). The only usage-flavored content is 'Transcript is opt-in,' which is really a parameter default rather than routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_projectGet project detailBRead-onlyIdempotentInspect
Project description, team, sections, funders, item counts by type, top subjects and ten sample research items, with citation links.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Project Omeka id (e.g. 37700) or typed id project:37700 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is covered structurally. The description adds genuinely useful behavioral context by disclosing the sampling behavior ('ten sample research items') and the presence of citation links, which the annotations cannot express. However, it omits any note on permission scope or truncation of the sample.
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?
A single efficient sentence-fragment with no filler; every listed field earns its place. It is front-loaded with the resource and the most important content, though the absence of a leading verb slightly weakens the opening.
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 must carry return-value information, and it does so reasonably well by enumerating the payload components (team, sections, funders, item counts, subjects, sample items). For a read-only single-resource detail endpoint with a fully documented parameter and complete annotations, this is close to sufficient; a routing note versus siblings is the only real gap.
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%: the single 'id' parameter is fully documented in the schema, including the Omeka numeric form and the typed 'project:37700' form. The description adds nothing about the parameter, so the baseline 3 is correct.
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 is a noun-phrase inventory of payload contents ('Project description, team, sections, funders, item counts...') rather than a verb+resource statement. An agent can infer it fetches a project's details, but it never explicitly says 'retrieve a project' and offers no differentiation from siblings like get_collection_overview or search_projects.
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?
There is no when-to-use guidance, no prerequisite mention, and no indication of how this differs from search_projects or search_research_items. The agent must infer usage entirely from the name and the field list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_publicationGet publication detailARead-onlyIdempotentInspect
Publication metadata and citation export (BibTeX default). Full text is opt-in and paginated. Cite amira_url; DOI/repository links are additional sources.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Publication Omeka id or typed id publication:29919 | |
| citation_format | No | Default bibtex; selects bibtex, ris or csl_json field | |
| fulltext_offset | No | Start offset into the full text (chars), with include_fulltext | |
| include_fulltext | No | Default false — set true to include the extracted full text | |
| fulltext_max_chars | No | Max full-text characters to return (default/max 25000) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, closed-world behavior, so the description isn't burdened with safety disclosure. It still adds real context beyond them: BibTeX is the default citation format, full text is opt-in and paginated, and amira_url is the canonical citation source with DOI/repository links as secondary.
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?
Three short, front-loaded sentences with no filler: it leads with what is returned, then the opt-in/pagination behavior, then citation guidance. Tight and well-ordered.
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 annotations carry the safety profile and no output schema exists, the description adequately covers the payload (metadata, citation formats, opt-in full text) for a single-record get. It leaves the mechanics of continuing pagination slightly implicit, so it is strong but not exhaustive.
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 id, citation_format, and the fulltext parameters (defaults, min/max). The description's mention of BibTeX default and paginated full text largely mirrors what the schema states, adding little beyond the 3 baseline.
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 (get) and resource (publication) and clarifies the payload is metadata plus citation export, so the agent knows it returns a single publication's data rather than a list. It does not name the sibling search_publications to distinguish list-vs-detail retrieval, so it falls short of a 5.
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?
'Full text is opt-in and paginated' implies the retrieval context and how to expand results, but there is no explicit when-to-use guidance or exclusion versus search_publications / list_publication_facets. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_research_itemGet research item detailBRead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Omeka id (the number ending its amira_url, e.g. 9902) or a typed id such as research_item:9902 | |
| citation_format | No | Export format for the generated citation: bibtex (default) → `bibtex`, ris → `ris`, csl-json → `csl_json` |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the safety profile is covered; the description adds genuinely new behavioral facts, namely that long fields are truncated at 25,000 characters and that the payload aggregates linked entities, media, IIIF and a generated citation. It stops short of describing truncation signalling or what happens when an id is not found.
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?
A single dense sentence with no filler, and the payload enumeration is front-loaded. It loses a point only because the most decision-relevant information (the retrieval verb and its scope) is omitted rather than compressed.
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 usefully compensates by listing what the caller receives, plus the truncation cap. It is adequately complete for a two-parameter read tool, though it never clarifies the id-form distinction that the schema itself carries.
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 both parameters (and the accepted id forms) are already documented in the schema. The description restates the three citation formats but adds no syntax or default behavior beyond the enum values already present, so baseline 3 applies.
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 enumerates the response payload (metadata, linked entities, rights, media files, IIIF manifest, citation) but never states a verb or the resource being acted on; the ''get by id'' intent is only recoverable from the title and the schema. It also draws no boundary against siblings such as search_research_items, resolve_entity, or fetch, which an agent must choose between.
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?
There is no when-to-use guidance and no mention of alternatives, despite several plausible competing tools in the sibling list (search_research_items, fetch, resolve_entity, get_entity_graph). The citation_format capability is surfaced but without saying when one would request it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_research_sectionGet research section detailBRead-onlyIdempotentInspect
One research section's description, team and projects, each with its research-item count.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Section Omeka id or typed id section:218 | |
| name | No | Section name, e.g. 'Arts & Aesthetics' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world behavior, so safety is covered. The description adds the return shape (team, projects, per-project item counts), which is real value given there is no output schema, but it says nothing about behavior when both id and name are omitted or mismatched.
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?
One compact sentence with no waste, and the resource is front-loaded. It reads as a noun phrase rather than a sentence, which slightly weakens its force as a statement of action.
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 does part of the job by sketching the returned fields, but it leaves the two-optional-parameter lookup model and failure modes unexplained for an agent deciding how to call it.
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%, with useful examples ('section:218', 'Arts & Aesthetics'), so the baseline is 3. The description contributes no additional parameter meaning such as which key takes precedence or what happens with zero params.
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 fragment names a single, specific resource (one research section) and enumerates its payload (description, team, projects, item counts), which separates it from list_research_sections and get_research_item. It lacks an explicit verb, but the resource and scope are unambiguous.
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?
There is no guidance on when to use this versus list_research_sections or get_research_item, and no mention that id and name are optional lookup keys. The agent must infer that either identifier can be supplied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_snapshot_changesCompare retained snapshotsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Default 30, max 100 | |
| to_id | No | ||
| corpus | No | ||
| offset | No | ||
| from_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| to_id | No | |
| offset | No | |
| status | Yes | |
| from_id | No | |
| results | No | |
| has_more | No | |
| snapshots | Yes | |
| next_offset | No | |
| total_matches | No | |
| effective_limit | No | |
| requested_limit | No | |
| response_limited | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds the fallback behavior (returning snapshot IDs when fewer than two exist) and pagination intent, but says nothing about result size, ordering, or what happens when from_id/to_id are omitted.
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?
Three tight sentences, each doing distinct work: core action, edge-case behavior, and alternative routing. Front-loaded with the primary purpose and free of filler.
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?
An output schema exists, so return formatting is fairly excused, and the fallback behavior is disclosed. However, with 5 loosely documented parameters and no explanation of how snapshots are selected or defaulted, the definition is not complete enough for an agent to invoke it confidently.
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 only 20%, and the description adds no meaning for from_id, to_id, corpus, or offset. The core mechanic — whether omitting from_id compares the latest two snapshots or defaults to something else — is left entirely unstated, which is the single most important parameter question for this tool.
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 action and resource: paginating added/updated/deleted records between retained snapshots on this Omeka instance. The sibling list is large, and the description differentiates by naming the snapshot-comparison scope and pointing at search-tool alternatives, though it never says what 'retained snapshots' are.
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?
Gives two concrete routing rules: it lists snapshot IDs when fewer than two exist, and it directs agents to added_since on the search tools for recent additions without history. That is real when/when-not guidance, but nothing tells the agent how to choose between snapshots or which corpus defaults apply.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_text_passagesFind cited text passagesARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | publication:, video: or podcast: ids | |
| limit | No | Default 10, max 20 | |
| offset | No | ||
| radius | No | ||
| keyword | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| offset | Yes | |
| results | Yes | |
| has_more | Yes | |
| next_offset | No | |
| snapshot_id | Yes | |
| total_matches | Yes | |
| effective_limit | No | |
| requested_limit | No | |
| unavailable_ids | Yes | |
| response_limited | No | |
| scanned_matches_capped | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), and the description adds genuinely new behavioral traits: accent-insensitive literal matching, no ranking, UTF-16 origin offsets, bounded context, and citations. This meaningfully exceeds what annotations disclose.
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?
Three tight, front-loaded fragments with no filler; the purpose leads and the constraints follow. It is appropriately sized, though the telegraphic phrasing slightly compresses several distinct claims into run-on clauses.
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?
An output schema exists, so return values need no explanation, and annotations carry the safety profile. The main residual gap is pagination/radius semantics, but the description supplies enough matching-context detail for a competent caller.
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 only 40% (offset, radius, and keyword have no schema descriptions), so the description must compensate. It hints at radius via 'bounded context' and at offset via 'UTF-16 offsets', but never clarifies that 'offset' is likely a pagination cursor distinct from the passage's text offset, leaving real ambiguity.
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 (Find) and resource (literal accent-insensitive keyword passages) with the scope of IDs it operates on, and the clause 'no semantic ranking' distinguishes it from the search-family siblings. It stops short of naming the alternative tool (e.g., search), so the differentiation is implied rather than 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?
'Requires full text exposure; no semantic ranking' gives clear context for when to reach for this tool over a semantic search, and implies the prerequisite for it to work at all. It doesn't explicitly name the sibling to use instead or an exclusion list, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_videoGet YouTube video detailBRead-onlyIdempotentInspect
Video detail, thumbnail and citation link; says how the transcript was produced when recorded. Transcript is opt-in, bounded and pageable.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Video id from search_videos, e.g. 39218, or video:39218 | |
| transcript_offset | No | Start offset into the transcript (chars), with include_transcript | |
| include_transcript | No | Default false — set true to include the transcript text | |
| transcript_max_chars | No | Max transcript characters to return (default/max 25000) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds the opt-in/bounded/pageable transcript behavior and that it discloses transcript provenance, but these largely restate what the schema parameter descriptions already say, limiting the marginal value.
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, front-loaded with the return contents, and no filler. The phrasing 'says how the transcript was produced when recorded' is slightly telegraphic, keeping it from a 5.
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 does carry the return-value burden and lists detail, thumbnail, citation link, and transcript provenance. Combined with annotations covering safety and a fully documented schema, it is nearly complete for a read tool, missing only explicit routing to siblings.
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 four parameters with defaults and bounds. The description's 'opt-in, bounded and pageable' mirrors include_transcript, transcript_max_chars, and transcript_offset without adding format or syntax detail, so the baseline 3 applies.
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 the resource and enumerates what it returns (video detail, thumbnail, citation link), so an agent can tell it apart from list/search siblings. It is a noun phrase rather than an explicit verb, and it never names search_videos as the counterpart, so it falls short of a 5.
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?
There is no when-to-use/when-not guidance and no alternative is named. The only usage-flavored statement ('Transcript is opt-in') describes a parameter default rather than a condition for selecting this tool over search_videos or get_podcast.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_categoriesList a category facetBRead-onlyIdempotentInspect
Ranked formats, languages or resource types used by research items. Feed values into the corresponding search filters.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Default 100, max 500 | |
| offset | No | ||
| keyword | No | Substring filter on the value | |
| category | Yes | 'genres' is an alias of 'formats'. The former 'tags' facet is merged into subjects — use list_subjects |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so safety is fully covered. The description adds the useful fact that results are 'Ranked' (frequency-ordered), but says nothing about pagination behavior, deduplication, or empty-result handling beyond what the schema implies.
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 short sentences with zero filler, and the resource identity is front-loaded. The first sentence is a noun phrase without a verb, which slightly reduces immediate parseability, but there is no waste.
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 must carry the return-value burden, and it only loosely characterizes the output as ranked facet values without describing shape, ordering, or pagination semantics. For a moderate-complexity facet tool this is adequate but leaves real gaps around the returned structure and how it relates to sibling facet tools.
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 75%, so the schema already documents limit, keyword and the category enum including the genres/tags aliasing. The description adds little parameter-level detail beyond listing the facet kinds, so it sits at the baseline rather than compensating for any gap.
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 the resource ('formats, languages or resource types used by research items') and implies the verb (a ranked facet listing), so an agent can tell it produces category facet values. However, it omits a clear verb and does not differentiate itself from sibling facet listers like list_subjects or list_years; that routing hint only appears in the schema.
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?
'Feed values into the corresponding search filters' gives a clear downstream use case, implying this tool is a value-lookup for search filtering. It offers no explicit when-not guidance or sibling alternatives in the description itself (the list_subjects routing is buried in the schema enum), leaving usage implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_cluster_partnersList cluster partner institutionsBRead-onlyIdempotentInspect
Cluster partner institutions grouped by catalogue category, with citation links.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Optional: amrc | privileged | cooperation | global, or a category label |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so safety and idempotency are covered. The description adds the useful detail that results are grouped by category and include citation links, but says nothing about pagination, result size, or what an empty cluster returns.
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?
A single short sentence with the resource front-loaded and no filler. It is efficient, though it is arguably under-specified rather than optimally tight.
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 should convey return structure; 'grouped by catalogue category, with citation links' partially does this but leaves the grouping shape and citation format unspecified. Adequate but with a clear gap for a list tool.
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% and the single optional category parameter is documented in the schema with its accepted values (amrc | privileged | cooperation | global). The description adds no syntax or filtering semantics beyond that, so the schema does the heavy lifting and a baseline 3 is appropriate.
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 (cluster partner institutions) and a distinguishing trait (grouped by catalogue category, with citation links), so an agent can tell what it returns. It does not, however, differentiate itself from the many sibling list_* tools (list_institutions, list_groups, list_categories), leaving the 'cluster' concept undefined.
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?
There is no when-to-use guidance and no alternatives named. With list_institutions and list_categories among the siblings, the agent has no signal for choosing this tool over them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_collectionsList collectionsBRead-onlyIdempotentInspect
Omeka item sets ranked by research-item count, with catalogue links. Feed an ID into search_research_items.collection.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Default 50, max 200 | |
| offset | No | ||
| keyword | No | Substring filter on the collection title |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile needs no restatement. The description adds two useful behavioral facts beyond the annotations: results are ranked by research-item count and carry catalogue links, but says nothing about pagination behavior or result size limits.
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 short sentences, front-loaded with what the tool returns and followed by the downstream chaining hint. No filler, though the second sentence is a usage note rather than a structural necessity.
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 partly compensates by naming the ranking criterion and catalogue links, but it omits the shape of returned items (what fields, what the links look like) and leaves offset semantics undocumented. Adequate but with clear gaps for a list tool with three parameters.
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 67%; limit and keyword are documented in-schema, while offset is not described anywhere. The description itself adds no parameter meaning beyond what the schema provides, so the baseline 3 for high-but-incomplete coverage is appropriate.
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+resource ('Omeka item sets') and adds scope detail (ranked by research-item count, with catalogue links), which helps distinguish it from sibling listers like list_categories or list_subjects. It does not explicitly contrast with compare_collections or get_collection_overview, so it falls short of a 5.
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 second sentence gives forward guidance ('Feed an ID into search_research_items.collection'), which tells the agent what this list feeds into, but it never says when to use this tool versus siblings such as compare_collections or get_collection_overview. Usage is only implied by the ranking/filtering framing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_groupsList groupsBRead-onlyIdempotentInspect
Browse research groups and associations by name, with citation links.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Default 50, max 200 | |
| offset | No | ||
| keyword | No | Name or acronym, partial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false, destructiveHint=false, covering the safety profile. The description adds only that results include 'citation links,' which is minor context. It says nothing about pagination behavior or result ordering beyond what the schema implies.
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?
A single, front-loaded sentence with the resource named first. No wasted words, though it is arguably too sparse given the tool's role among many list_* siblings.
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 list tool in a dense family of list_* siblings, the description omits pagination behavior, result ordering, and any differentiation from list_institutions/list_journals. With no output schema, the agent gets little about what a 'group' record contains or how to page through 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 67% (limit and keyword documented, offset not). The description mentions browsing 'by name,' loosely tying to the keyword parameter, but adds no format or syntax detail beyond the schema. Baseline 3 is appropriate given the schema does most of the work.
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 clear verb+resource ('Browse research groups and associations') with a scope hint ('by name'). It is distinguishable from list_institutions, list_journals, etc. by the 'groups and associations' resource, though it doesn't explicitly contrast with those siblings.
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?
No when-to-use guidance. It doesn't say when to use list_groups versus search for a specific group by keyword, nor does it reference any alternative sibling. The 'keyword' param implies narrowing but the description gives no routing context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_institutionsList institutionsARead-onlyIdempotentInspect
Browse institution authorities by name or acronym (e.g. 'UJKZ'), with project counts and citation links.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Default 50, max 200 | |
| offset | No | ||
| keyword | No | Name or acronym, partial |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered. The description adds return-content context ('project counts and citation links'), which is useful, but no pagination or rate-limit behavior is mentioned.
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?
A single well-formed sentence with zero filler, front-loading the resource and how to match it. Efficient, though it could carry one more clause of guidance without bloating.
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 read-only, annotation-covered list tool with no output schema, the description states what is returned (project counts, citation links) and how to query it. Adequate; only pagination semantics and sibling routing are missing.
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 67% – limit and keyword are documented in-schema, offset is not, and the description adds a concrete keyword example ('UJKZ') that the schema lacks. It picks up some of the slack but doesn't clarify offset, so baseline 3 fits.
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 clear verb (browse) and resource (institution authorities) with the search key (name or acronym, e.g. 'UJKZ'). An agent can distinguish it from get_institution by the plural/list framing, though no sibling is named explicitly.
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 word 'browse' and the keyword example imply discovery/listing use, but there is no explicit when-to-use statement, no exclusion of get_institution, and no guidance on when to prefer this over broader search tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_journalsList journalsBRead-onlyIdempotentInspect
Publication venues ranked by linked bibliography records, with ISSN and catalogue links.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Default 50, max 200 | |
| offset | No | ||
| keyword | No | Substring filter on the journal title |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this a safe, idempotent, read-only, closed-world operation, so the safety profile needs no restatement. The description adds content-level context (results are ranked by linked bibliography records and include ISSN and catalogue links) that is not in the annotations, which is helpful given there is no output schema. It stops short of noting pagination, ordering stability, or empty-result behavior.
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?
A single front-loaded sentence with no filler; the ranking and available fields come first. It is appropriately sized for a simple list tool, though it is arguably too terse to route the agent among the many sibling list_* tools.
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 simple, read-only, zero-required-parameter list tool, the description covers the resource and the notable return fields (ISSN, catalogue links), partly compensating for the absent output schema. It omits how results are ordered/paginated and any disambiguation from the numerous sibling list_* tools, leaving real gaps.
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 67%: limit states 'Default 50, max 200' and keyword describes the substring filter, while offset is only explained by its name. The description contributes nothing about parameters, so the baseline 3 for moderate-coverage schemas is appropriate.
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 defines the resource precisely as 'publication venues ranked by linked bibliography records,' which distinguishes a journal entity from generic collections, institutions, or subjects. The listing/retrieval verb is only implied in the text (the title supplies 'List'), so it is clear but not maximally 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?
There is no guidance on when to call this tool versus siblings like list_subjects, list_institutions, or search_publications, and no mention of prerequisites such as the keyword filter's role. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_locationsList locationsBRead-onlyIdempotentInspect
Research places with coordinates and ancestor rollups. One item can count under both city and country. Feed a name into search_research_items.location.
| Name | Required | Description | Default |
|---|---|---|---|
| bbox | No | [west, south, east, north] | |
| near | No | Places within km of a point | |
| limit | No | Default 50, max 300 | |
| offset | No | ||
| country | No | One country, exact name or alias, plus its cities | |
| filters | No | Research-item filters applied before place counts | |
| keyword | No | Substring filter on the place name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive, closed-world behavior, so the bar is lower. The description adds a genuine non-obvious trait: ancestor rollups and non-mutually-exclusive counts ("One item can count under both city and country"), which warns the agent that counts can double. It still omits pagination/return-shape behavior, but that addition is real value 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?
Three short sentences, front-loaded with the entity type, no filler. It is efficient, though the middle sentence about city/country counts is telegraphic and would benefit from slightly more framing.
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 7-parameter tool with nested objects and no output schema, the description should say more about the return shape (coordinates are mentioned, but not how counts or rollups are returned). Annotations cover the safety profile, so the gap is not severe, but the description is only minimally complete for a result-bearing discovery tool.
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 86%, so the schema already documents bbox, near, country, keyword, limit and offset. The description adds only an implicit link between the emitted place names and search_research_items.location, contributing little parameter meaning beyond the schema; the baseline of 3 applies.
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 conveys that the tool surfaces places ("Research places with coordinates and ancestor rollups"), which tells the agent the resource is geographic entities, but there is no explicit verb and it never says plainly that it lists/discover locations. It is understandable but vague, and it does not distinguish itself from siblings like list_subjects or list_years beyond the geographic nature of the output.
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?
"Feed a name into search_research_items.location" gives a downstream handoff, which implies this tool is for discovering location names, but the description never states when to use this tool versus the other list_* or search_* siblings. Usage is implied rather than specified, and no exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_publication_facetsPublication facetsARead-onlyIdempotentInspect
Ranked facets for the entire filtered bibliography before pagination. Uses the same selection rules as search_publications.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Exact type; discover values with list_publication_facets | |
| facet | Yes | ||
| limit | No | Default 25, max 100 | |
| venue | No | Journal/book title, partial | |
| author | No | Author/editor name, either name order | |
| offset | No | ||
| keyword | No | Title, abstracts, venue, subjects or full text; every word must match, quote a phrase | |
| subject | No | Subject heading, partial | |
| year_to | No | ||
| language | No | Language name or ISO code | |
| year_from | No | ||
| added_since | No | Added to AMIRA on or after this ISO date | |
| has_fulltext | No | Filter by extracted full-text availability |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| facet | Yes | |
| offset | Yes | |
| filters | No | |
| results | Yes | |
| has_more | Yes | |
| next_offset | No | |
| total_matches | Yes | |
| missing_values | Yes | |
| effective_limit | No | |
| requested_limit | No | |
| response_limited | No | |
| total_publications | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive behavior, so safety is covered. The description adds genuinely new behavior: facets are computed over the entire filtered bibliography, not the current page, and results are ranked. That is exactly the trait that distinguishes facet aggregation from paginated search.
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, front-loaded with the core behavior and followed by the routing/parameter-equivalence note. No filler, no restatement of the tool name or title.
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?
An output schema exists, so return-value shape needn't be explained, and annotations cover the safety profile. However, for a 13-parameter aggregation tool the description is thin: it never clarifies the relationship to list_years/list_subjects, nor what a facet result contains (values plus counts), leaving a real risk of misrouting.
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 69% and the 13 parameters are largely self-documented (facet is an enum, limit/offset ranges are stated). The description contributes only the "same selection rules as search_publications" equivalence, which adds some meaning but no syntax or format detail beyond the schema. Baseline 3 is appropriate.
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 concrete verb+resource: returns ranked facets for the bibliography, scoped to the whole filtered set before pagination. That scope statement distinguishes it from paginated document retrieval like search_publications. It does not, however, distinguish it from siblings such as list_years or list_subjects, which plausibly return the same facet dimensions as flat lists.
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?
"Uses the same selection rules as search_publications" tells the agent the filter parameters behave identically, which is useful routing context. But it never says when to choose this tool over search_publications or over the overlapping list_years/list_subjects siblings, so the selection decision is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_research_sectionsList research sectionsBRead-onlyIdempotentInspect
Cluster research sections, funding phases, project/item counts and citation links. Includes the external-collection grouping.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered structurally. The description's only added behavioral content is that the result includes the external-collection grouping, which is useful scope information. It says nothing about shape, size, or whether results are paginated or cached.
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 short sentences, roughly 17 words, with no filler or redundancy — genuinely tight. The only structural weakness is front-loading: the opening phrase 'Cluster research sections...' obscures the verb instead of leading with what the tool returns or does.
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 no-parameter, read-only list tool with no output schema, the description does convey the categories of content returned (sections, phases, counts, citation links, external collections). What is missing is the operation itself and any differentiator from the singular get_research_section, leaving the agent to infer the most decision-relevant fact.
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 tool takes zero parameters, so there is nothing for the description to disambiguate; schema coverage is 100% and the empty object is self-explanatory. Baseline 4 applies for a parameterless tool.
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 the resource (research sections) and enumerates what the grouping surfaces (funding phases, project/item counts, citation links), so the subject matter is identifiable. However, it never states the action clearly — 'Cluster' is an odd opener for a tool named list_* — and it does not distinguish itself from the singular sibling get_research_section. An agent can guess the domain but not the operation with confidence.
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?
There is no when-to-use guidance at all. With ~35 siblings including get_research_section, list_collections, list_cluster_partners and list_subjects, the description should say when a caller wants aggregated sections rather than a single section or another collection listing. Nothing routes the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_subjectsList subjectsARead-onlyIdempotentInspect
Subject headings (LCSH or free tags) ranked by distinct research-item count. Feed a heading into search_research_items.subject.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Default 50, max 300 | |
| offset | No | ||
| keyword | No | Substring filter on the subject heading | |
| vocabulary | No | Only Library of Congress headings or only free tags |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower. The description still adds real behavioral context: the result is ranked by distinct research-item count, and headings are either controlled vocabulary or free tags. Pagination behavior is left to the schema.
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 tight sentences with zero filler, front-loading what the tool returns before the actionable usage hint. Every clause 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 simple, annotation-covered list tool with no output schema, the description conveys both what is returned (ranked subject headings) and how to consume it. Nothing an agent needs to call it correctly is missing.
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 75%, so most parameters are documented structurally. The description's mention of LCSH vs. free tags loosely corresponds to the vocabulary enum but largely restates schema content, adding little syntax or format guidance beyond it. Baseline 3 applies.
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 resource (subject headings, LCSH or free tags) and a precise ordering rule (ranked by distinct research-item count), which an agent can distinguish from siblings like list_categories or list_years. The scope and content are unambiguous.
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?
'Feed a heading into search_research_items.subject' gives explicit downstream usage, telling the agent why and when to call this tool in a workflow. It stops short of naming a when-not-to-use condition or a competing sibling, so it is clear context without exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_yearsList yearsARead-onlyIdempotentInspect
Research-item year/decade histogram with dated and undated counts. A date range counts in each spanned bucket. Supports shared item filters and pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Latest year to report (inclusive) | |
| from | No | Earliest year to report (inclusive) | |
| sort | No | Default 'chronological' (oldest first); 'count' ranks by item count | |
| limit | No | Default 200, max 500 | |
| bucket | No | Default 'year' | |
| offset | No | ||
| filters | No | Research-item filters applied before bucketing |
Output Schema
| Name | Required | Description |
|---|---|---|
| sort | Yes | |
| count | Yes | |
| bucket | Yes | |
| offset | Yes | |
| results | Yes | |
| has_more | Yes | |
| year_range | No | |
| dated_items | Yes | |
| next_offset | No | |
| total_matches | Yes | |
| undated_items | Yes | |
| distinct_buckets | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower, yet the description adds genuinely non-obvious behavior: a date range contributes to each spanned bucket, and undated items are counted separately. It goes beyond the structured fields, though it doesn't mention the limit cap or truncation behavior.
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?
Three short sentences, front-loaded with the tool's purpose and output shape, with zero filler. Each sentence adds a distinct fact (what it returns, the bucketing rule, filter/pagination support).
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?
An output schema exists, so return value details needn't be repeated, and the description covers filters, pagination, and the aggregation rule. It is nearly complete for a 7-param aggregation tool, missing only explicit routing guidance against sibling list/search tools.
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 high (86%), so the baseline is 3, but the description adds meaning the schema cannot convey: that 'filters' are the shared research-item filter set applied before bucketing, and the bucket-spanning rule that governs how 'from'/'to' interact with 'bucket'. This is useful semantics beyond the per-field 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 output artifact — a research-item year/decade histogram with dated and undated counts — which is far more precise than the tool name 'list_years' alone. It does not explicitly contrast itself with sibling aggregation tools like list_publication_facets, so it stops short of full sibling differentiation.
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?
There is no explicit when-to-use or when-not-to-use guidance and no named alternative (e.g. search_research_items or list_publication_facets) for obtaining date distributions. 'Supports shared item filters and pagination' describes capability, not the condition under which this tool should be chosen over its siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_entityResolve an entityARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | ||
| limit | No | ||
| query | Yes | ||
| offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | |
| count | Yes | |
| offset | Yes | |
| results | Yes | |
| has_more | Yes | |
| ambiguous | Yes | |
| next_offset | No | |
| snapshot_id | Yes | |
| suggestions | No | |
| total_matches | Yes | |
| effective_limit | No | |
| requested_limit | No | |
| response_limited | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower; the description still adds real behavior context by stating it returns ambiguity instead of silently merging names. It stops short of describing pagination semantics or empty-result behavior, but the disambiguation policy is the important disclosure.
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?
Three short sentences, front-loaded with the core action, then the key behavioral guarantee, then the follow-up tool. No filler and nothing redundant with the title.
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?
An output schema exists, so return-value explanation is not required, and annotations cover safety. The description supplies purpose, disambiguation policy, and next-step routing, which is nearly enough for a 4-param lookup tool; only the param semantics and alternative-tool routing are thin.
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 0% across four parameters, so the description must carry the burden. It only gestures at semantics via 'label or typed ID' (loosely mapping to query and type) and says nothing about limit or offset, leaving pagination behavior undocumented in both schema and description.
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+resource ('Resolve a label or typed ID to cited candidates') and adds a distinguishing behavioral clause ('Returns ambiguity instead of merging names') that separates it from merge-style lookups. It does not explicitly contrast itself with the many search_* siblings, but an agent can still tell it resolves inputs to canonical IDs rather than searching for records.
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 gives downstream guidance ('Use a returned id with get_entity_graph or get_* tools'), which is genuinely useful chaining advice. However it never states when to pick this over search / search_persons / get_person, nor what to do when resolution returns multiple candidates or none — usage is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchSearch the AMIRA collectionARead-onlyIdempotentInspect
Ranked search across items, publications, videos, podcasts, projects and sections. Returns typed IDs, titles and citation URLs. Fetch selected records for evidence.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Default 10, max 50 | |
| query | Yes | A few keywords, names, places or themes — e.g. 'Yoruba architecture'. Terms are matched individually, so concise queries beat full sentences | |
| types | No | Restrict to these record kinds |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes | |
| effective_limit | No | |
| requested_limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world behavior, so the safety profile is covered. The description adds real behavioral context beyond that: results are abbreviated (typed IDs, titles, citation URLs) and full evidence requires a follow-up fetch. No rate limits, pagination, or ranking caveats are mentioned.
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?
Three short sentences, scope first, result shape second, next action third. No filler, no restatement of the tool name, and the most decision-relevant information is front-loaded.
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 low-parameter search tool with an output schema and full schema coverage, the definition is nearly sufficient: an agent knows what it searches, what comes back, and what to do next. The one missing piece is disambiguation from the many type-specific search siblings in a crowded namespace.
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%, and the schema itself carries strong parameter docs (query syntax guidance, limit default 10 / max 50, enumerated types). The description adds nothing parameter-specific beyond echoing the type list, so the baseline 3 for fully-documented schemas applies.
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 (ranked search) and enumerates the resource kinds it spans (items, publications, videos, podcasts, projects, sections), which implicitly positions it as the cross-type search. It never explicitly contrasts itself with the six type-specific search_* siblings, so an agent must infer the boundary.
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?
'Fetch selected records for evidence' gives a follow-up workflow hint, but there is no when-to-use vs. when-to-use-an-alternative guidance. With six narrower search_* siblings available, the absence of routing advice (e.g. use this for mixed-type intent, use search_publications for publications only) leaves selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_personsSearch peopleARead-onlyIdempotentInspect
Find canonical person authority records. Names accept either order and ignore accents. Use resolve_entity to disambiguate homonyms.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Default 25, max 100 | |
| offset | No | ||
| keyword | No | Matches the name, a name variant or an affiliation | |
| affiliation | No | Matches the person's affiliations only |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description adds real behavioral context beyond that: name matching ignores accents and accepts either name order, and results are canonical/authority records with homonym ambiguity that resolve_entity handles.
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?
Three short sentences, zero filler, with the core purpose front-loaded and the disambiguation advice last. Every sentence carries information the agent needs.
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 still conveys what records are returned (canonical authority records) and how matching behaves. Pagination defaults are left to the schema parameter descriptions, which is acceptable for a four-parameter, order-free search.
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 75%, so schema already documents limit, keyword, and affiliation, but the description adds matching semantics not present there: input names tolerate accent variation and either word order. It does not clarify the keyword-versus-affiliation distinction, which is the only remaining ambiguity.
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 and resource ('Find canonical person authority records'), which distinguishes it from the sibling get_person (single-record fetch) and the generic search tool. The 'canonical authority record' framing tells the agent what kind of objects come back, though it does not name the sibling it differs from explicitly.
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 gives a concrete routing rule: 'Use resolve_entity to disambiguate homonyms,' naming an alternative tool and the condition that selects it. It stops short of saying when to use this search versus get_person for a known identifier.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_podcastsSearch podcastsARead-onlyIdempotentInspect
Search podcast metadata and transcripts. Text-only hits include snippets; full transcripts require get_podcast with opt-in.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Default 20, max 100 | |
| offset | No | ||
| person | No | A speaker/host name; either name order works | |
| series | No | Series title, partial (e.g. 'Cluster Conversations') | |
| keyword | No | Every word must occur in the title, abstract or transcript; quote a phrase to match it exactly | |
| year_to | No | Latest year | |
| language | No | Name or ISO code — 'French', 'fr', 'fra' all match | |
| year_from | No | Earliest year |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safe read-only/idempotent/non-destructive profile. The description adds genuinely new behavior: text-only hits return snippets while full transcripts require a separate opt-in call to get_podcast. It omits pagination behavior despite limit/offset params.
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 tightly packed sentences with zero filler; the resource scope is front-loaded and the fallback-to-get_podcast caveat follows immediately.
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 usefully characterizes the return shape (snippets vs full transcripts), which is the key thing an agent needs to know. Pagination and ranking semantics for the 8 optional filters are left implicit, a minor gap.
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 88%, so the schema itself documents nearly all parameters (keyword matching rules, language ISO codes, partial series titles). The description adds no parameter-level detail, which is acceptable at this coverage level.
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+resource ('Search podcast metadata and transcripts'), which cleanly separates it from siblings like search_videos and search_publications. It doesn't explicitly name a sibling it is not, but the resource 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent to get_podcast for full transcripts and notes the opt-in requirement, giving a clear when-to-use-this-vs-that condition. No when-not guidance, but the alternative is named with its selection condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_projectsSearch research projectsARead-onlyIdempotentInspect
Search project names, descriptions and membership. Returns cited summaries and item counts; use get_project for detail.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Default 25, max 100 | |
| member | No | A project member's name; either order works | |
| offset | No | ||
| keyword | No | Matches the project name, an acronym or the description | |
| university | No | ubt | unilag | ujkz | ufba | external — code or name. A data facet, not a full AMRC list | |
| institution | No | Funding/affiliated institution name, partial | |
| research_section | No | Name or id, e.g. 'Knowledges' | |
| principal_investigator | No | A PI name; either order works ('Erdmute Alber' finds 'Alber, Erdmute') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so safety is covered. The description adds return-format context (cited summaries and item counts), which is useful given there is no output schema, but it does not describe pagination behavior or ranking.
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, both front-loaded and waste-free. The first states scope and the second states output plus the routing alternative.
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 an 8-parameter, no-required-parameter search tool with 88% schema coverage and rich annotations, the description covers purpose, scope, return shape, and the key alternative. The main missing piece is pagination or result-set behavior, but that is partially addressed by the schema's limit and offset fields.
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 88%, so the schema already documents nearly all parameters, including limit defaults, keyword matching, university facets, and PI name-order behavior. The description adds no meaningful parameter semantics beyond that, so baseline 3 is appropriate.
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 (projects), and names the exact fields searched: names, descriptions, and membership. It also explicitly distinguishes itself from the sibling get_project, so an agent can choose between them without opening either schema.
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 gives a clear usage signal by directing the agent to get_project for detail, which implies search_projects is for discovery and summarized results. It does not spell out explicit exclusions or when-not-to-use conditions beyond that, but the alternative is named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_publicationsSearch publicationsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Exact type; discover values with list_publication_facets | |
| limit | No | Default 25; max 100 summaries or 25 exports, also byte-bounded | |
| venue | No | Journal/book title, partial | |
| author | No | Author/editor name, either name order | |
| export | No | Return a file link instead of rows | |
| offset | No | ||
| keyword | No | Title, abstracts, venue, subjects or full text; every word must match, quote a phrase | |
| subject | No | Subject heading, partial | |
| year_to | No | ||
| language | No | Language name or ISO code | |
| year_from | No | ||
| added_since | No | Added to AMIRA on or after this ISO date | |
| has_fulltext | No | Filter by extracted full-text availability | |
| citation_format | No | Omit for summaries; pages carry bibtex, ris or csl_json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive and closed-world, so the safety profile is covered. The description adds genuinely useful behavior: newest-first ordering, keyword matching against PDF full text with snippet returns, per-page citations under citation_format, and a single consolidated export file.
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?
Four short sentences, front-loaded with the filter/sort semantics and then the three output-shaping modes. Dense and largely waste-free, though 'Cite amira_url' is a fragment whose referent is unclear.
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 14-parameter read tool with no output schema, the description covers sort order and the three output modes (summaries, per-page citations, export file). Pagination/limit behavior is left entirely to the schema, but the core invocation-affecting behavior is present.
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 high (79%) and the description still adds meaning beyond it: keyword reaches PDF text and returns match snippets, citation_format yields per-page citations, and export collapses every match into one file link. These clarify the interaction between parameters rather than restating field definitions.
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 the resource (bibliography/publications) and the operation (AND-filtered search, newest first), which is more specific than the title 'Search publications'. It narrows scope usefully but does not explicitly distinguish itself from siblings like search, search_research_items, or list_publication_facets.
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?
There is no explicit statement of when to use this tool versus alternatives, nor any exclusions. The schema points at list_publication_facets for discovering type values, but the description never routes the agent to siblings such as compare_collections or get_publication.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_research_itemsSearch research itemsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| genre | No | Format/genre descriptor, partial (e.g. 'interview', 'letter', 'photograph') | |
| limit | No | Default 20, max 100 | |
| export | No | Return a file link instead of rows | |
| offset | No | ||
| country | No | Country only, exact name or common alias ('Côte d'Ivoire' = 'Ivory Coast'). Use `location` for cities | |
| keyword | No | Every word must occur in the title, description, abstract, contents or identifiers; quote a phrase to match it exactly | |
| subject | No | Subject heading, partial (e.g. 'Architecture'). Subjects absorb the former free-form tags — there is no tag filter | |
| year_to | No | Keep items whose content dates overlap up to this year | |
| language | No | Name or ISO code — 'French', 'fr', 'fra' and legacy 'fre' all match | |
| location | No | A place at ANY level of the city→country hierarchy: 'Nigeria' finds Lagos items, 'Lagos' finds only Lagos | |
| has_media | No | true: only items with digitised files | |
| year_from | No | Keep items whose content dates overlap from this year | |
| collection | No | Item-set title (partial) or id from list_collections | |
| project_id | No | Project Omeka id | |
| university | No | ubt | unilag | ujkz | ufba | external — code or full name | |
| added_since | No | Added to AMIRA on or after this ISO date | |
| contributor | No | A person/organisation credited on the item; either name order works | |
| location_id | No | Exact location authority ID, including descendants; avoids homonym matches | |
| resource_type | No | e.g. 'Image', 'Text', 'Audio', 'Moving image' | |
| modified_since | No | Changed on or after this ISO date | |
| research_section | No | e.g. 'Arts & Aesthetics', 'Mobilities' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly/idempotent/non-destructive, so the bar is lower. The description adds real behavioral context beyond that: filters combine with AND, empty results have a diagnosable cause, and export switches the response from rows to a file link rather than filtering differently.
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?
Three short sentences, front-loaded with the purpose. The middle sentence on AND semantics and empty results is high-value; the export sentence is brief and 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 21-parameter read-only search with no output schema, the description covers the most consequential gotchas (AND logic, export mode, empty-result diagnosis). Return shape and pagination are left to the schema, which documents limit/offset, so nothing critical is missing.
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 95% with 21 documented parameters, so the schema carries nearly all parameter meaning. The description only gestures at the filter set and the export mode ('export links all matches as a file'), adding little syntax or constraint detail beyond the schema.
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+resource ('Search digitised research items'), which clearly separates it from sibling searches like search_persons, search_publications and search_videos. It does not name any alternative directly, but the resource noun is distinct enough for disambiguation.
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 explains the AND-combination of filters and what empty results imply (relax a filter, or use a stored place name), which is genuinely useful usage context. However, it gives no explicit when-to-use vs. alternatives — nothing tells the agent when to prefer this over search or get_research_item.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_videosSearch YouTube videosARead-onlyIdempotentInspect
Search video metadata and transcripts. Text-only hits include snippets; full transcripts require get_video with opt-in.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Default 20, max 100 | |
| offset | No | ||
| keyword | No | Every word must occur in the title, abstract or transcript; quote a phrase to match it exactly | |
| speaker | No | A speaker name; either name order works | |
| year_to | No | Latest year | |
| language | No | Name or ISO code — 'French', 'fr', 'fra' all match | |
| playlist | No | Playlist title, partial | |
| year_from | No | Earliest year |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover safety profile (readOnly, idempotent, non-destructive, not open-world). The description adds that text-only hits include snippets and full transcripts require get_video with opt-in. This is useful context about output behavior, but it does not disclose other traits like pagination, rate limits, or whether results are ranked. With annotations already handling safety, this addition is moderate value.
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 concise sentences, front-loaded with the core purpose, no wasted words. It efficiently conveys the search scope and a key behavioral note.
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 no output schema and eight parameters with high schema coverage, the description provides sufficient context: it identifies the tool's domain, notes snippet vs. full transcript behavior, and points to get_video for full transcripts. It lacks explicit guidance on when to choose this over other search tools, but overall it is complete for an agent to understand and invoke the tool correctly.
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 88%, with clear descriptions for most parameters (limit, keyword, speaker, language, year_from/year_to, playlist). The description does not elaborate on parameter meanings beyond what the schema provides. Therefore, the baseline of 3 is appropriate, as the schema already does the heavy lifting.
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+resource: searching video metadata and transcripts. It clarifies the content scope (metadata, transcripts, snippets), distinguishing it from generic text search tools. However, it does not explicitly differentiate from sibling search tools like search_podcasts or search_publications, leaving some ambiguity for an agent that must choose among many search_* tools.
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 implies usage for searching videos but gives no explicit when-to-use or when-not-to-use guidance against alternatives such as get_video or search. It does note that full transcripts require get_video with opt-in, which hints at a limitation, but lacks clear routing instructions (e.g., when to use search_videos vs. get_video directly).
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.
1 tool update
- Changed
search_projects1 field changed- changed
Input schema / properties / principal_investigator / descriptionPrevious value: -"A PI name; either order works ('Oliver Baumann' finds 'Baumann, Oliver')"New value: +"A PI name; either order works ('Erdmute Alber' finds 'Alber, Erdmute')"
1 tool update
- Changed
get_entity_graph3 fields changed- added
Input schema / properties / typesAdded value: +{ + "items": { + "enum": [ + "person", + "project", + "section", + "organisation", + "location", + "subject", + "format", + "language", + "collection", + "research_item", + "publication", + "journal", + "podcast", + "video", + "playlist" + ], + "type": "string" + }, + "maxItems": 15, + "minItems": 1, + "type": "array" +} - added
Output schema / properties / neighbour_typesAdded value: +{ + "additionalProperties": { + "type": "number" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" +} - added
Output schema / properties / typesAdded value: +{ + "items": { + "type": "string" + }, + "type": "array" +}
3 tool updates
- Changed
fetch1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"A typed record id from search (item:7392, pub:30001, video:…, podcast:…, project:…, section:…) or resolve_entity"New value: +"A typed record id from search (item:9902, pub:30001, video:…, podcast:…, project:…, section:…) or resolve_entity"
- Changed
get_research_item1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"Omeka id (the number ending its amira_url, e.g. 7392) or a typed id such as research_item:7392"New value: +"Omeka id (the number ending its amira_url, e.g. 9902) or a typed id such as research_item:9902"
- Changed
search1 field changed- changed
Output schema / properties / results / items / properties / id / descriptionPrevious value: -"Typed record id, e.g. 'item:7392'"New value: +"Typed record id, e.g. 'item:9902'"
1 tool update
- Changed
resolve_entity2 fields changed- added
Output schema / properties / hintAdded value: +{ + "type": "string" +} - added
Output schema / properties / suggestionsAdded value: +{ + "items": { + "additionalProperties": false, + "properties": { + "amira_url": { + "type": "string" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": [ + "id", + "name", + "amira_url" + ], + "type": "object" + }, + "type": "array" +}
34 tool updates
- Added
compare_collections - Changed
fetch2 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"A typed record id from search: item:7392 | pub:30001 | video:39218 | podcast:39121 | project:37700 | section:218"New value: +"A typed record id from search (item:7392, pub:30001, video:…, podcast:…, project:…, section:…) or resolve_entity" - added
Input schema / properties / id / maxLengthAdded value: +1000
- Changed
find_related1 field changed- added
Input schema / properties / value / maxLengthAdded value: +1000
- Changed
get_collection_overview1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "collection_name": { + "type": "string" + }, + "content_date_range": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "earliest": { + "type": "number" + }, + "latest": { + "type": [ + "number", + "null" + ] + } + }, + "required": [ + "earliest", + "latest" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "counts": { + "additionalProperties": { + "type": "number" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "data_snapshot": { + "additionalProperties": false, + "properties": { + "api_base": { + "type": "string" + }, + "fetched_at": { + "type": "string" + }, + "max_modified": { + "type": [ + "string", + "null" + ] + }, + "note": { + "type": "string" + }, + "source": { + "type": "string" + } + }, + "required": [ + "source", + "fetched_at", + "max_modified", + "api_base", + "note" + ], + "type": "object" + }, + "items_by_language": { + "additionalProperties": { + "type": "number" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "items_by_research_section": { + "additionalProperties": { + "type": "number" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "items_by_resource_type": { + "additionalProperties": { + "type": "number" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "items_by_university": { + "additionalProperties": { + "type": "number" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "metadata_exposure": { + "type": "string" + }, + "refresh": { + "additionalProperties": false, + "properties": { + "enabled": { + "type": "boolean" + }, + "error_class": { + "type": [ + "string", + "null" + ] + }, + "in_flight": { + "type": "boolean" + }, + "last_attempt": { + "type": [ + "string", + "null" + ] + }, + "last_success": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "enabled", + "in_flight", + "last_attempt", + "last_success", + "error_class" + ], + "type": "object" + }, + "research_sections": { + "items": { + "type": "string" + }, + "type": "array" + }, + "site_url": { + "type": "string" + }, + "universities": { + "additionalProperties": { + "type": "string" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + } + }, + "required": [ + "collection_name", + "site_url", + "counts", + "items_by_resource_type", + "content_date_range", + "data_snapshot", + "refresh" + ], + "type": "object" +}
- Added
get_data_quality - Added
get_entity_graph - Changed
get_institution4 fields changed- added
Input schema / properties / idAdded value: +{ + "anyOf": [ + { + "maxLength": 64, + "type": "string" + }, + { + "type": "number" + } + ], + "description": "Omeka id or typed id organisation:1224" +} - changed
Input schema / properties / name / descriptionPrevious value: -"Institution name"New value: +"Institution or group name, or an acronym" - added
Input schema / properties / name / maxLengthAdded value: +1000 - removed
Input schema / requiredRemoved value: -[ - "name" -]
- Changed
get_person4 fields changed- added
Input schema / properties / idAdded value: +{ + "anyOf": [ + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + { + "maxLength": 64, + "type": "string" + } + ], + "description": "Exact person Omeka id or typed id (person:123); required to disambiguate homonyms" +} - changed
Input schema / properties / name / descriptionPrevious value: -"Either name order, with or without accents: 'Beier, Ulli' and 'Ulli Beier' both resolve"New value: +"Full name in either order, with or without accents: 'Beier, Ulli' and 'Ulli Beier' both resolve" - added
Input schema / properties / name / maxLengthAdded value: +1000 - removed
Input schema / requiredRemoved value: -[ - "name" -]
- Changed
get_podcast3 fields changed- added
Input schema / properties / id / anyOfAdded value: +[ + { + "maxLength": 1000, + "type": "string" + }, + { + "type": "number" + } +] - changed
Input schema / properties / id / descriptionPrevious value: -"Podcast id from search_podcasts, e.g. 39121"New value: +"Podcast id from search_podcasts, e.g. 39121, or podcast:39121" - removed
Input schema / properties / id / typeRemoved value: -[ - "string", - "number" -]
- Changed
get_project3 fields changed- added
Input schema / properties / id / anyOfAdded value: +[ + { + "maxLength": 256, + "type": "string" + }, + { + "type": "number" + } +] - changed
Input schema / properties / id / descriptionPrevious value: -"Project Omeka o:id, e.g. 37700"New value: +"Project Omeka id (e.g. 37700) or typed id project:37700" - removed
Input schema / properties / id / typeRemoved value: -[ - "string", - "number" -]
- Changed
get_publication3 fields changed- added
Input schema / properties / id / anyOfAdded value: +[ + { + "maxLength": 1000, + "type": "string" + }, + { + "type": "number" + } +] - changed
Input schema / properties / id / descriptionPrevious value: -"Publication Omeka o:id (legacy publication keys also work)"New value: +"Publication Omeka id or typed id publication:29919" - removed
Input schema / properties / id / typeRemoved value: -[ - "string", - "number" -]
- Changed
get_research_item3 fields changed- added
Input schema / properties / id / anyOfAdded value: +[ + { + "maxLength": 1000, + "type": "string" + }, + { + "type": "number" + } +] - changed
Input schema / properties / id / descriptionPrevious value: -"The item's Omeka o:id — the number ending its amira_url, e.g. 7392. Legacy DRE keys also work"New value: +"Omeka id (the number ending its amira_url, e.g. 7392) or a typed id such as research_item:7392" - removed
Input schema / properties / id / typeRemoved value: -[ - "string", - "number" -]
- Changed
get_research_section3 fields changed- added
Input schema / properties / idAdded value: +{ + "anyOf": [ + { + "maxLength": 64, + "type": "string" + }, + { + "type": "number" + } + ], + "description": "Section Omeka id or typed id section:218" +} - added
Input schema / properties / name / maxLengthAdded value: +1000 - removed
Input schema / requiredRemoved value: -[ - "name" -]
- Added
get_snapshot_changes - Added
get_text_passages - Changed
get_video3 fields changed- added
Input schema / properties / id / anyOfAdded value: +[ + { + "maxLength": 1000, + "type": "string" + }, + { + "type": "number" + } +] - changed
Input schema / properties / id / descriptionPrevious value: -"Video id from search_videos, e.g. 39218"New value: +"Video id from search_videos, e.g. 39218, or video:39218" - removed
Input schema / properties / id / typeRemoved value: -[ - "string", - "number" -]
- Changed
list_categories1 field changed- added
Input schema / properties / keyword / maxLengthAdded value: +1000
- Changed
list_cluster_partners1 field changed- added
Input schema / properties / category / maxLengthAdded value: +1000
- Changed
list_collections1 field changed- added
Input schema / properties / keyword / maxLengthAdded value: +1000
- Changed
list_groups2 fields changed- added
Input schema / properties / keyword / descriptionAdded value: +"Name or acronym, partial" - added
Input schema / properties / keyword / maxLengthAdded value: +1000
- Changed
list_institutions2 fields changed- added
Input schema / properties / keyword / descriptionAdded value: +"Name or acronym, partial" - added
Input schema / properties / keyword / maxLengthAdded value: +1000
- Changed
list_journals1 field changed- added
Input schema / properties / keyword / maxLengthAdded value: +1000
- Changed
list_locations6 fields changed- added
Input schema / properties / bboxAdded value: +{ + "description": "[west, south, east, north]", + "items": { + "type": "number" + }, + "maxItems": 4, + "minItems": 4, + "type": "array" +} - changed
Input schema / properties / country / descriptionPrevious value: -"Narrow to one country: the country itself plus its cities/regions"New value: +"One country, exact name or alias, plus its cities" - added
Input schema / properties / country / maxLengthAdded value: +1000 - added
Input schema / properties / filtersAdded value: +{ + "additionalProperties": false, + "description": "Research-item filters applied before place counts", + "properties": { + "added_since": { + "maxLength": 40, + "type": "string" + }, + "collection": { + "maxLength": 1000, + "type": "string" + }, + "contributor": { + "maxLength": 1000, + "type": "string" + }, + "country": { + "maxLength": 1000, + "type": "string" + }, + "genre": { + "maxLength": 1000, + "type": "string" + }, + "has_media": { + "type": "boolean" + }, + "keyword": { + "maxLength": 1000, + "type": "string" + }, + "language": { + "maxLength": 1000, + "type": "string" + }, + "location": { + "maxLength": 1000, + "type": "string" + }, + "location_id": { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + "modified_since": { + "maxLength": 40, + "type": "string" + }, + "project_id": { + "anyOf": [ + { + "maxLength": 256, + "type": "string" + }, + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + } + ] + }, + "research_section": { + "maxLength": 1000, + "type": "string" + }, + "resource_type": { + "maxLength": 1000, + "type": "string" + }, + "subject": { + "maxLength": 1000, + "type": "string" + }, + "university": { + "maxLength": 1000, + "type": "string" + }, + "year_from": { + "maximum": 2200, + "minimum": 0, + "type": "integer" + }, + "year_to": { + "maximum": 2200, + "minimum": 0, + "type": "integer" + } + }, + "type": "object" +} - added
Input schema / properties / keyword / maxLengthAdded value: +1000 - added
Input schema / properties / nearAdded value: +{ + "additionalProperties": false, + "description": "Places within km of a point", + "properties": { + "km": { + "exclusiveMinimum": 0, + "type": "number" + }, + "latitude": { + "type": "number" + }, + "longitude": { + "type": "number" + } + }, + "required": [ + "latitude", + "longitude", + "km" + ], + "type": "object" +}
- Changed
list_publication_facets9 fields changed- added
Input schema / properties / added_sinceAdded value: +{ + "description": "Added to AMIRA on or after this ISO date", + "maxLength": 40, + "type": "string" +} - added
Input schema / properties / author / maxLengthAdded value: +1000 - changed
Input schema / properties / keyword / descriptionPrevious value: -"Title, abstract, venue, subjects or full text; substring match"New value: +"Title, abstracts, venue, subjects or full text; every word must match, quote a phrase" - added
Input schema / properties / keyword / maxLengthAdded value: +1000 - added
Input schema / properties / language / maxLengthAdded value: +1000 - added
Input schema / properties / subject / maxLengthAdded value: +1000 - added
Input schema / properties / type / maxLengthAdded value: +1000 - added
Input schema / properties / venue / maxLengthAdded value: +1000 - added
Output schema / properties / response_limitedAdded value: +{ + "type": "boolean" +}
- Changed
list_subjects2 fields changed- added
Input schema / properties / keyword / maxLengthAdded value: +1000 - added
Input schema / properties / vocabularyAdded value: +{ + "description": "Only Library of Congress headings or only free tags", + "enum": [ + "lcsh", + "tag" + ], + "type": "string" +}
- Changed
list_years2 fields changed- added
Input schema / properties / filtersAdded value: +{ + "additionalProperties": false, + "description": "Research-item filters applied before bucketing", + "properties": { + "added_since": { + "maxLength": 40, + "type": "string" + }, + "collection": { + "maxLength": 1000, + "type": "string" + }, + "contributor": { + "maxLength": 1000, + "type": "string" + }, + "country": { + "maxLength": 1000, + "type": "string" + }, + "genre": { + "maxLength": 1000, + "type": "string" + }, + "has_media": { + "type": "boolean" + }, + "keyword": { + "maxLength": 1000, + "type": "string" + }, + "language": { + "maxLength": 1000, + "type": "string" + }, + "location": { + "maxLength": 1000, + "type": "string" + }, + "location_id": { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + "modified_since": { + "maxLength": 40, + "type": "string" + }, + "project_id": { + "anyOf": [ + { + "maxLength": 256, + "type": "string" + }, + { + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + } + ] + }, + "research_section": { + "maxLength": 1000, + "type": "string" + }, + "resource_type": { + "maxLength": 1000, + "type": "string" + }, + "subject": { + "maxLength": 1000, + "type": "string" + }, + "university": { + "maxLength": 1000, + "type": "string" + }, + "year_from": { + "maximum": 2200, + "minimum": 0, + "type": "integer" + }, + "year_to": { + "maximum": 2200, + "minimum": 0, + "type": "integer" + } + }, + "type": "object" +} - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": {}, + "properties": { + "bucket": { + "type": "string" + }, + "count": { + "type": "number" + }, + "dated_items": { + "type": "number" + }, + "distinct_buckets": { + "type": "number" + }, + "has_more": { + "type": "boolean" + }, + "next_offset": { + "type": "number" + }, + "offset": { + "type": "number" + }, + "results": { + "items": { + "additionalProperties": false, + "properties": { + "decade": { + "type": "string" + }, + "from": { + "type": "number" + }, + "item_count": { + "type": "number" + }, + "to": { + "type": "number" + }, + "year": { + "type": "number" + } + }, + "required": [ + "item_count" + ], + "type": "object" + }, + "type": "array" + }, + "sort": { + "type": "string" + }, + "total_matches": { + "type": "number" + }, + "undated_items": { + "type": "number" + }, + "year_range": { + "additionalProperties": false, + "properties": { + "max": { + "type": "number" + }, + "min": { + "type": "number" + } + }, + "required": [ + "min", + "max" + ], + "type": "object" + } + }, + "required": [ + "count", + "total_matches", + "offset", + "has_more", + "bucket", + "sort", + "distinct_buckets", + "dated_items", + "undated_items", + "results" + ], + "type": "object" +}
- Added
resolve_entity - Changed
search3 fields changed- added
Input schema / properties / query / maxLengthAdded value: +1000 - added
Output schema / properties / effective_limitAdded value: +{ + "type": "number" +} - added
Output schema / properties / requested_limitAdded value: +{ + "type": "number" +}
- Changed
search_persons3 fields changed- added
Input schema / properties / affiliation / maxLengthAdded value: +1000 - changed
Input schema / properties / keyword / descriptionPrevious value: -"Matches the name or an affiliation"New value: +"Matches the name, a name variant or an affiliation" - added
Input schema / properties / keyword / maxLengthAdded value: +1000
- Changed
search_podcasts7 fields changed- changed
Input schema / properties / keyword / descriptionPrevious value: -"Matches title, abstract — and the transcript"New value: +"Every word must occur in the title, abstract or transcript; quote a phrase to match it exactly" - added
Input schema / properties / keyword / maxLengthAdded value: +1000 - added
Input schema / properties / languageAdded value: +{ + "description": "Name or ISO code — 'French', 'fr', 'fra' all match", + "maxLength": 1000, + "type": "string" +} - added
Input schema / properties / person / maxLengthAdded value: +1000 - added
Input schema / properties / series / maxLengthAdded value: +1000 - changed
Input schema / properties / year_from / descriptionPrevious value: -"Earliest episode year"New value: +"Earliest year" - changed
Input schema / properties / year_to / descriptionPrevious value: -"Latest episode year"New value: +"Latest year"
- Changed
search_projects8 fields changed- added
Input schema / properties / institution / maxLengthAdded value: +1000 - changed
Input schema / properties / keyword / descriptionPrevious value: -"Matches the project name or description"New value: +"Matches the project name, an acronym or the description" - added
Input schema / properties / keyword / maxLengthAdded value: +1000 - added
Input schema / properties / member / maxLengthAdded value: +1000 - added
Input schema / properties / principal_investigator / maxLengthAdded value: +1000 - changed
Input schema / properties / research_section / descriptionPrevious value: -"e.g. 'Knowledges', 'Moralities'"New value: +"Name or id, e.g. 'Knowledges'" - added
Input schema / properties / research_section / maxLengthAdded value: +1000 - added
Input schema / properties / university / maxLengthAdded value: +1000
- Changed
search_publications10 fields changed- added
Input schema / properties / added_sinceAdded value: +{ + "description": "Added to AMIRA on or after this ISO date", + "maxLength": 40, + "type": "string" +} - added
Input schema / properties / author / maxLengthAdded value: +1000 - changed
Input schema / properties / citation_format / descriptionPrevious value: -"Omit for summaries; export results contain bibtex, ris or csl_json"New value: +"Omit for summaries; pages carry bibtex, ris or csl_json" - added
Input schema / properties / exportAdded value: +{ + "description": "Return a file link instead of rows", + "enum": [ + "csv", + "jsonl", + "bibtex", + "ris", + "csl-json" + ], + "type": "string" +} - changed
Input schema / properties / keyword / descriptionPrevious value: -"Title, abstract, venue, subjects or full text; substring match"New value: +"Title, abstracts, venue, subjects or full text; every word must match, quote a phrase" - added
Input schema / properties / keyword / maxLengthAdded value: +1000 - added
Input schema / properties / language / maxLengthAdded value: +1000 - added
Input schema / properties / subject / maxLengthAdded value: +1000 - added
Input schema / properties / type / maxLengthAdded value: +1000 - added
Input schema / properties / venue / maxLengthAdded value: +1000
- Changed
search_research_items21 fields changed- added
Input schema / properties / added_sinceAdded value: +{ + "description": "Added to AMIRA on or after this ISO date", + "maxLength": 40, + "type": "string" +} - added
Input schema / properties / collection / maxLengthAdded value: +1000 - added
Input schema / properties / contributor / maxLengthAdded value: +1000 - changed
Input schema / properties / country / descriptionPrevious value: -"Only the country level of the hierarchy. Use `location` to match a city or any level"New value: +"Country only, exact name or common alias ('Côte d'Ivoire' = 'Ivory Coast'). Use `location` for cities" - added
Input schema / properties / country / maxLengthAdded value: +1000 - added
Input schema / properties / exportAdded value: +{ + "description": "Return a file link instead of rows", + "enum": [ + "csv", + "jsonl" + ], + "type": "string" +} - added
Input schema / properties / genre / maxLengthAdded value: +1000 - added
Input schema / properties / has_mediaAdded value: +{ + "description": "true: only items with digitised files", + "type": "boolean" +} - changed
Input schema / properties / keyword / descriptionPrevious value: -"Matches titles, description, abstract, table of contents and identifiers. Accent- and case-insensitive"New value: +"Every word must occur in the title, description, abstract, contents or identifiers; quote a phrase to match it exactly" - added
Input schema / properties / keyword / maxLengthAdded value: +1000 - added
Input schema / properties / language / maxLengthAdded value: +1000 - added
Input schema / properties / location / maxLengthAdded value: +1000 - added
Input schema / properties / location_idAdded value: +{ + "description": "Exact location authority ID, including descendants; avoids homonym matches", + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" +} - added
Input schema / properties / modified_sinceAdded value: +{ + "description": "Changed on or after this ISO date", + "maxLength": 40, + "type": "string" +} - added
Input schema / properties / project_id / anyOfAdded value: +[ + { + "maxLength": 1000, + "type": "string" + }, + { + "type": "number" + } +] - changed
Input schema / properties / project_id / descriptionPrevious value: -"Project Omeka o:id (legacy project keys also work)"New value: +"Project Omeka id" - removed
Input schema / properties / project_id / typeRemoved value: -[ - "string", - "number" -] - added
Input schema / properties / research_section / maxLengthAdded value: +1000 - added
Input schema / properties / resource_type / maxLengthAdded value: +1000 - added
Input schema / properties / subject / maxLengthAdded value: +1000 - added
Input schema / properties / university / maxLengthAdded value: +1000
- Changed
search_videos7 fields changed- changed
Input schema / properties / keyword / descriptionPrevious value: -"Matches title, abstract — and the transcript"New value: +"Every word must occur in the title, abstract or transcript; quote a phrase to match it exactly" - added
Input schema / properties / keyword / maxLengthAdded value: +1000 - added
Input schema / properties / language / maxLengthAdded value: +1000 - added
Input schema / properties / playlist / maxLengthAdded value: +1000 - added
Input schema / properties / speaker / maxLengthAdded value: +1000 - changed
Input schema / properties / year_from / descriptionPrevious value: -"Earliest upload year"New value: +"Earliest year" - changed
Input schema / properties / year_to / descriptionPrevious value: -"Latest upload year"New value: +"Latest year"
29 tool updates
- First observed
fetch - First observed
find_related - First observed
get_collection_overview - First observed
get_institution - First observed
get_person - First observed
get_podcast - First observed
get_project - First observed
get_publication - First observed
get_research_item - First observed
get_research_section - First observed
get_video - First observed
list_categories - First observed
list_cluster_partners - First observed
list_collections - First observed
list_groups - First observed
list_institutions - First observed
list_journals - First observed
list_locations - First observed
list_publication_facets - First observed
list_research_sections - First observed
list_subjects - First observed
list_years - First observed
search - First observed
search_persons - First observed
search_podcasts - First observed
search_projects - First observed
search_publications - First observed
search_research_items - First observed
search_videos
Related MCP Connectors
Read-only access to the Islam West Africa Collection via Hugging Face datasets.
Read-only access to S. Araba Lawson's Afromorphism essays, glossary, books, and site.
Public Caribbean & diaspora cultural data: Observatory facts, territories, events.
Access the OpenAlex academic research catalog — 270M+ publications.
Related MCP Servers
- AlicenseAqualityAmaintenanceProvides read-only access to public African language speech corpora, with tools to list, search, cite, and plan de-duplicated training sets while enforcing licence and citation provenance.829 PyPI1Apache 2.0
- AlicenseNot gradedqualityCmaintenanceEnables agents to find, read, and cite digitized primary sources published via IIIF — searching several institutions' catalogues, resolving item pages to manifests, pulling page images or regions for vision models, and generating citations with rights and provenance. Runs read-only over stateless Streamable HTTP with no login.AGPL 3.0
- AlicenseNot gradedqualityBmaintenanceA read-only MCP server for the Islam West Africa Collection (IWAC) digital archive, providing 37 tools to search and analyze newspaper articles, publications, references, and more.2MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to search and retrieve items from an Omeka S collection through the Omeka REST API, returning readable metadata and public item page links.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.