Skip to main content
Glama

Server Details

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

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
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

B3.3/5.0

Scored across 35 tools

Disambiguation3/5

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.

Naming Consistency4/5

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.

Tool Count2/5

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.

Completeness4/5

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 tools
compare_collectionsCompare project collectionsA
Read-onlyIdempotent
Inspect

Compare 2–4 projects or item sets with identical research-item filters. Reports denominators, missingness, dates and top types/languages; collections can overlap.

NameRequiredDescriptionDefault
cohortsYes
filtersNo

Output Schema

NameRequiredDescription
cohortsYes
snapshot_idYes
overlap_noteYes

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 recordA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
idYesA typed record id from search (item:9902, pub:30001, video:…, podcast:…, project:…, section:…) or resolve_entity
max_charsNoCap on the whole returned text body, default/max 25000
fulltext_offsetNoStart offset into the full text (chars), with include_fulltext
include_fulltextNoDefault false — set true to append a publication's extracted full text
transcript_offsetNoStart offset into the transcript (chars), with include_transcript
fulltext_max_charsNoMax full-text characters to return (default/max 25000)
include_transcriptNoDefault false — set true to append the video/podcast transcript
transcript_max_charsNoMax transcript characters to return (default/max 25000)

Output Schema

NameRequiredDescription
idNo
urlNo
textNo
errorNoPresent instead of the record when the id is unknown
titleNo
metadataNo

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 overviewA
Read-onlyIdempotent
Inspect

Start here: corpus counts, text coverage, breakdowns, dates, snapshot freshness and refresh status.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
countsYes
refreshYes
site_urlYes
universitiesNo
data_snapshotYes
collection_nameYes
items_by_languageNo
metadata_exposureNo
research_sectionsNo
content_date_rangeYes
items_by_universityNo
items_by_resource_typeYes
items_by_research_sectionNo

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 coverageA
Read-onlyIdempotent
Inspect

Snapshot coverage and missing metadata, unresolved loaded-authority links, and sanitized refresh status. Missing catalogue metadata is not evidence of real-world absence.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
countsYes
missingYes
refreshYes
fetched_atYes
snapshot_idYes
schema_versionYes
literal_entitiesYes
unresolved_entitiesYes

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 graphA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
seedYes
limitNoEvidence page size, default 20, max 50
typesNo
offsetNo
edge_idNo
max_edgesNoDefault 50, max 200
max_nodesNoDefault 40, max 100
snapshot_idNo

Output Schema

NameRequiredDescription
seedYes
countNo
edgesNo
nodesNo
typesNo
boundsNo
offsetNo
resultsNo
has_moreNo
truncatedNo
next_offsetNo
snapshot_idYes
total_edgesNo
total_matchesNo
effective_limitNo
neighbour_typesNo
requested_limitNo
response_limitedNo

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 detailB
Read-onlyIdempotent
Inspect

Institution or group profile: identifiers, members, funded projects and credited items, with citation links.

NameRequiredDescriptionDefault
idNoOmeka id or typed id organisation:1224
nameNoInstitution or group name, or an acronym

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 profileB
Read-onlyIdempotent
Inspect

Person affiliations, identifiers, project and section roles, credited items, publications, podcasts, videos and collaborators. Lists cap at 50 with totals. Use id to disambiguate.

NameRequiredDescriptionDefault
idNoExact person Omeka id or typed id (person:123); required to disambiguate homonyms
nameNoFull name in either order, with or without accents: 'Beier, Ulli' and 'Ulli Beier' both resolve

TDQS

B3.2/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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 detailB
Read-onlyIdempotent
Inspect

Podcast detail, duration, audio file and citation link; says which model generated the transcript. Transcript is opt-in, bounded and pageable.

NameRequiredDescriptionDefault
idYesPodcast id from search_podcasts, e.g. 39121, or podcast:39121
transcript_offsetNoStart offset into the transcript (chars), with include_transcript
include_transcriptNoDefault false — set true to include the transcript text
transcript_max_charsNoMax transcript characters to return (default/max 25000)

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 detailB
Read-onlyIdempotent
Inspect

Project description, team, sections, funders, item counts by type, top subjects and ten sample research items, with citation links.

NameRequiredDescriptionDefault
idYesProject Omeka id (e.g. 37700) or typed id project:37700

TDQS

B3/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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 detailA
Read-onlyIdempotent
Inspect

Publication metadata and citation export (BibTeX default). Full text is opt-in and paginated. Cite amira_url; DOI/repository links are additional sources.

NameRequiredDescriptionDefault
idYesPublication Omeka id or typed id publication:29919
citation_formatNoDefault bibtex; selects bibtex, ris or csl_json field
fulltext_offsetNoStart offset into the full text (chars), with include_fulltext
include_fulltextNoDefault false — set true to include the extracted full text
fulltext_max_charsNoMax full-text characters to return (default/max 25000)

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 detailB
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
idYesOmeka id (the number ending its amira_url, e.g. 9902) or a typed id such as research_item:9902
citation_formatNoExport format for the generated citation: bibtex (default) → `bibtex`, ris → `ris`, csl-json → `csl_json`

TDQS

B3.2/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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 detailB
Read-onlyIdempotent
Inspect

One research section's description, team and projects, each with its research-item count.

NameRequiredDescriptionDefault
idNoSection Omeka id or typed id section:218
nameNoSection name, e.g. 'Arts & Aesthetics'

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 snapshotsA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
limitNoDefault 30, max 100
to_idNo
corpusNo
offsetNo
from_idNo

Output Schema

NameRequiredDescription
countNo
to_idNo
offsetNo
statusYes
from_idNo
resultsNo
has_moreNo
snapshotsYes
next_offsetNo
total_matchesNo
effective_limitNo
requested_limitNo
response_limitedNo

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 passagesA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
idsYespublication:, video: or podcast: ids
limitNoDefault 10, max 20
offsetNo
radiusNo
keywordYes

Output Schema

NameRequiredDescription
countYes
offsetYes
resultsYes
has_moreYes
next_offsetNo
snapshot_idYes
total_matchesYes
effective_limitNo
requested_limitNo
unavailable_idsYes
response_limitedNo
scanned_matches_cappedYes

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 detailB
Read-onlyIdempotent
Inspect

Video detail, thumbnail and citation link; says how the transcript was produced when recorded. Transcript is opt-in, bounded and pageable.

NameRequiredDescriptionDefault
idYesVideo id from search_videos, e.g. 39218, or video:39218
transcript_offsetNoStart offset into the transcript (chars), with include_transcript
include_transcriptNoDefault false — set true to include the transcript text
transcript_max_charsNoMax transcript characters to return (default/max 25000)

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 facetB
Read-onlyIdempotent
Inspect

Ranked formats, languages or resource types used by research items. Feed values into the corresponding search filters.

NameRequiredDescriptionDefault
limitNoDefault 100, max 500
offsetNo
keywordNoSubstring filter on the value
categoryYes'genres' is an alias of 'formats'. The former 'tags' facet is merged into subjects — use list_subjects

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 institutionsB
Read-onlyIdempotent
Inspect

Cluster partner institutions grouped by catalogue category, with citation links.

NameRequiredDescriptionDefault
categoryNoOptional: amrc | privileged | cooperation | global, or a category label

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 collectionsB
Read-onlyIdempotent
Inspect

Omeka item sets ranked by research-item count, with catalogue links. Feed an ID into search_research_items.collection.

NameRequiredDescriptionDefault
limitNoDefault 50, max 200
offsetNo
keywordNoSubstring filter on the collection title

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 groupsB
Read-onlyIdempotent
Inspect

Browse research groups and associations by name, with citation links.

NameRequiredDescriptionDefault
limitNoDefault 50, max 200
offsetNo
keywordNoName or acronym, partial

TDQS

B3.1/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 institutionsA
Read-onlyIdempotent
Inspect

Browse institution authorities by name or acronym (e.g. 'UJKZ'), with project counts and citation links.

NameRequiredDescriptionDefault
limitNoDefault 50, max 200
offsetNo
keywordNoName or acronym, partial

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 journalsB
Read-onlyIdempotent
Inspect

Publication venues ranked by linked bibliography records, with ISSN and catalogue links.

NameRequiredDescriptionDefault
limitNoDefault 50, max 200
offsetNo
keywordNoSubstring filter on the journal title

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 locationsB
Read-onlyIdempotent
Inspect

Research places with coordinates and ancestor rollups. One item can count under both city and country. Feed a name into search_research_items.location.

NameRequiredDescriptionDefault
bboxNo[west, south, east, north]
nearNoPlaces within km of a point
limitNoDefault 50, max 300
offsetNo
countryNoOne country, exact name or alias, plus its cities
filtersNoResearch-item filters applied before place counts
keywordNoSubstring filter on the place name

TDQS

B3.3/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines3/5

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 facetsA
Read-onlyIdempotent
Inspect

Ranked facets for the entire filtered bibliography before pagination. Uses the same selection rules as search_publications.

NameRequiredDescriptionDefault
typeNoExact type; discover values with list_publication_facets
facetYes
limitNoDefault 25, max 100
venueNoJournal/book title, partial
authorNoAuthor/editor name, either name order
offsetNo
keywordNoTitle, abstracts, venue, subjects or full text; every word must match, quote a phrase
subjectNoSubject heading, partial
year_toNo
languageNoLanguage name or ISO code
year_fromNo
added_sinceNoAdded to AMIRA on or after this ISO date
has_fulltextNoFilter by extracted full-text availability

Output Schema

NameRequiredDescription
countYes
facetYes
offsetYes
filtersNo
resultsYes
has_moreYes
next_offsetNo
total_matchesYes
missing_valuesYes
effective_limitNo
requested_limitNo
response_limitedNo
total_publicationsYes

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 sectionsB
Read-onlyIdempotent
Inspect

Cluster research sections, funding phases, project/item counts and citation links. Includes the external-collection grouping.

NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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 subjectsA
Read-onlyIdempotent
Inspect

Subject headings (LCSH or free tags) ranked by distinct research-item count. Feed a heading into search_research_items.subject.

NameRequiredDescriptionDefault
limitNoDefault 50, max 300
offsetNo
keywordNoSubstring filter on the subject heading
vocabularyNoOnly Library of Congress headings or only free tags

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 yearsA
Read-onlyIdempotent
Inspect

Research-item year/decade histogram with dated and undated counts. A date range counts in each spanned bucket. Supports shared item filters and pagination.

NameRequiredDescriptionDefault
toNoLatest year to report (inclusive)
fromNoEarliest year to report (inclusive)
sortNoDefault 'chronological' (oldest first); 'count' ranks by item count
limitNoDefault 200, max 500
bucketNoDefault 'year'
offsetNo
filtersNoResearch-item filters applied before bucketing

Output Schema

NameRequiredDescription
sortYes
countYes
bucketYes
offsetYes
resultsYes
has_moreYes
year_rangeNo
dated_itemsYes
next_offsetNo
total_matchesYes
undated_itemsYes
distinct_bucketsYes

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 entityA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
typeNo
limitNo
queryYes
offsetNo

Output Schema

NameRequiredDescription
hintNo
countYes
offsetYes
resultsYes
has_moreYes
ambiguousYes
next_offsetNo
snapshot_idYes
suggestionsNo
total_matchesYes
effective_limitNo
requested_limitNo
response_limitedNo

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

search_personsSearch peopleA
Read-onlyIdempotent
Inspect

Find canonical person authority records. Names accept either order and ignore accents. Use resolve_entity to disambiguate homonyms.

NameRequiredDescriptionDefault
limitNoDefault 25, max 100
offsetNo
keywordNoMatches the name, a name variant or an affiliation
affiliationNoMatches the person's affiliations only

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 podcastsA
Read-onlyIdempotent
Inspect

Search podcast metadata and transcripts. Text-only hits include snippets; full transcripts require get_podcast with opt-in.

NameRequiredDescriptionDefault
limitNoDefault 20, max 100
offsetNo
personNoA speaker/host name; either name order works
seriesNoSeries title, partial (e.g. 'Cluster Conversations')
keywordNoEvery word must occur in the title, abstract or transcript; quote a phrase to match it exactly
year_toNoLatest year
languageNoName or ISO code — 'French', 'fr', 'fra' all match
year_fromNoEarliest year

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 projectsA
Read-onlyIdempotent
Inspect

Search project names, descriptions and membership. Returns cited summaries and item counts; use get_project for detail.

NameRequiredDescriptionDefault
limitNoDefault 25, max 100
memberNoA project member's name; either order works
offsetNo
keywordNoMatches the project name, an acronym or the description
universityNoubt | unilag | ujkz | ufba | external — code or name. A data facet, not a full AMRC list
institutionNoFunding/affiliated institution name, partial
research_sectionNoName or id, e.g. 'Knowledges'
principal_investigatorNoA PI name; either order works ('Erdmute Alber' finds 'Alber, Erdmute')

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 publicationsA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
typeNoExact type; discover values with list_publication_facets
limitNoDefault 25; max 100 summaries or 25 exports, also byte-bounded
venueNoJournal/book title, partial
authorNoAuthor/editor name, either name order
exportNoReturn a file link instead of rows
offsetNo
keywordNoTitle, abstracts, venue, subjects or full text; every word must match, quote a phrase
subjectNoSubject heading, partial
year_toNo
languageNoLanguage name or ISO code
year_fromNo
added_sinceNoAdded to AMIRA on or after this ISO date
has_fulltextNoFilter by extracted full-text availability
citation_formatNoOmit for summaries; pages carry bibtex, ris or csl_json

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 itemsA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
genreNoFormat/genre descriptor, partial (e.g. 'interview', 'letter', 'photograph')
limitNoDefault 20, max 100
exportNoReturn a file link instead of rows
offsetNo
countryNoCountry only, exact name or common alias ('Côte d'Ivoire' = 'Ivory Coast'). Use `location` for cities
keywordNoEvery word must occur in the title, description, abstract, contents or identifiers; quote a phrase to match it exactly
subjectNoSubject heading, partial (e.g. 'Architecture'). Subjects absorb the former free-form tags — there is no tag filter
year_toNoKeep items whose content dates overlap up to this year
languageNoName or ISO code — 'French', 'fr', 'fra' and legacy 'fre' all match
locationNoA place at ANY level of the city→country hierarchy: 'Nigeria' finds Lagos items, 'Lagos' finds only Lagos
has_mediaNotrue: only items with digitised files
year_fromNoKeep items whose content dates overlap from this year
collectionNoItem-set title (partial) or id from list_collections
project_idNoProject Omeka id
universityNoubt | unilag | ujkz | ufba | external — code or full name
added_sinceNoAdded to AMIRA on or after this ISO date
contributorNoA person/organisation credited on the item; either name order works
location_idNoExact location authority ID, including descendants; avoids homonym matches
resource_typeNoe.g. 'Image', 'Text', 'Audio', 'Moving image'
modified_sinceNoChanged on or after this ISO date
research_sectionNoe.g. 'Arts & Aesthetics', 'Mobilities'

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 videosA
Read-onlyIdempotent
Inspect

Search video metadata and transcripts. Text-only hits include snippets; full transcripts require get_video with opt-in.

NameRequiredDescriptionDefault
limitNoDefault 20, max 100
offsetNo
keywordNoEvery word must occur in the title, abstract or transcript; quote a phrase to match it exactly
speakerNoA speaker name; either name order works
year_toNoLatest year
languageNoName or ISO code — 'French', 'fr', 'fra' all match
playlistNoPlaylist title, partial
year_fromNoEarliest year

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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. 1 tool update
    • Changedsearch_projects1 field changed
      • changedInput schema / properties / principal_investigator / description
        Previous 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')"
  2. 1 tool update
    • Changedget_entity_graph3 fields changed
      • addedInput schema / properties / types
        Added 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"
        +}
      • addedOutput schema / properties / neighbour_types
        Added value: +{
        +  "additionalProperties": {
        +    "type": "number"
        +  },
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • addedOutput schema / properties / types
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
  3. 3 tool updates
    • Changedfetch1 field changed
      • changedInput schema / properties / id / description
        Previous 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"
    • Changedget_research_item1 field changed
      • changedInput schema / properties / id / description
        Previous 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"
    • Changedsearch1 field changed
      • changedOutput schema / properties / results / items / properties / id / description
        Previous value: -"Typed record id, e.g. 'item:7392'"New value: +"Typed record id, e.g. 'item:9902'"
  4. 1 tool update
    • Changedresolve_entity2 fields changed
      • addedOutput schema / properties / hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / suggestions
        Added value: +{
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "amira_url": {
        +        "type": "string"
        +      },
        +      "id": {
        +        "type": "string"
        +      },
        +      "name": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "id",
        +      "name",
        +      "amira_url"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
  5. 34 tool updates
    • Addedcompare_collections
    • Changedfetch2 fields changed
      • changedInput schema / properties / id / description
        Previous 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"
      • addedInput schema / properties / id / maxLength
        Added value: +1000
    • Changedfind_related1 field changed
      • addedInput schema / properties / value / maxLength
        Added value: +1000
    • Changedget_collection_overview1 field changed
      • changedOutput 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"
        +}
    • Addedget_data_quality
    • Addedget_entity_graph
    • Changedget_institution4 fields changed
      • addedInput schema / properties / id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 64,
        +      "type": "string"
        +    },
        +    {
        +      "type": "number"
        +    }
        +  ],
        +  "description": "Omeka id or typed id organisation:1224"
        +}
      • changedInput schema / properties / name / description
        Previous value: -"Institution name"New value: +"Institution or group name, or an acronym"
      • addedInput schema / properties / name / maxLength
        Added value: +1000
      • removedInput schema / required
        Removed value: -[
        -  "name"
        -]
    • Changedget_person4 fields changed
      • addedInput schema / properties / id
        Added 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"
        +}
      • changedInput schema / properties / name / description
        Previous 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"
      • addedInput schema / properties / name / maxLength
        Added value: +1000
      • removedInput schema / required
        Removed value: -[
        -  "name"
        -]
    • Changedget_podcast3 fields changed
      • addedInput schema / properties / id / anyOf
        Added value: +[
        +  {
        +    "maxLength": 1000,
        +    "type": "string"
        +  },
        +  {
        +    "type": "number"
        +  }
        +]
      • changedInput schema / properties / id / description
        Previous value: -"Podcast id from search_podcasts, e.g. 39121"New value: +"Podcast id from search_podcasts, e.g. 39121, or podcast:39121"
      • removedInput schema / properties / id / type
        Removed value: -[
        -  "string",
        -  "number"
        -]
    • Changedget_project3 fields changed
      • addedInput schema / properties / id / anyOf
        Added value: +[
        +  {
        +    "maxLength": 256,
        +    "type": "string"
        +  },
        +  {
        +    "type": "number"
        +  }
        +]
      • changedInput schema / properties / id / description
        Previous value: -"Project Omeka o:id, e.g. 37700"New value: +"Project Omeka id (e.g. 37700) or typed id project:37700"
      • removedInput schema / properties / id / type
        Removed value: -[
        -  "string",
        -  "number"
        -]
    • Changedget_publication3 fields changed
      • addedInput schema / properties / id / anyOf
        Added value: +[
        +  {
        +    "maxLength": 1000,
        +    "type": "string"
        +  },
        +  {
        +    "type": "number"
        +  }
        +]
      • changedInput schema / properties / id / description
        Previous value: -"Publication Omeka o:id (legacy publication keys also work)"New value: +"Publication Omeka id or typed id publication:29919"
      • removedInput schema / properties / id / type
        Removed value: -[
        -  "string",
        -  "number"
        -]
    • Changedget_research_item3 fields changed
      • addedInput schema / properties / id / anyOf
        Added value: +[
        +  {
        +    "maxLength": 1000,
        +    "type": "string"
        +  },
        +  {
        +    "type": "number"
        +  }
        +]
      • changedInput schema / properties / id / description
        Previous 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"
      • removedInput schema / properties / id / type
        Removed value: -[
        -  "string",
        -  "number"
        -]
    • Changedget_research_section3 fields changed
      • addedInput schema / properties / id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 64,
        +      "type": "string"
        +    },
        +    {
        +      "type": "number"
        +    }
        +  ],
        +  "description": "Section Omeka id or typed id section:218"
        +}
      • addedInput schema / properties / name / maxLength
        Added value: +1000
      • removedInput schema / required
        Removed value: -[
        -  "name"
        -]
    • Addedget_snapshot_changes
    • Addedget_text_passages
    • Changedget_video3 fields changed
      • addedInput schema / properties / id / anyOf
        Added value: +[
        +  {
        +    "maxLength": 1000,
        +    "type": "string"
        +  },
        +  {
        +    "type": "number"
        +  }
        +]
      • changedInput schema / properties / id / description
        Previous value: -"Video id from search_videos, e.g. 39218"New value: +"Video id from search_videos, e.g. 39218, or video:39218"
      • removedInput schema / properties / id / type
        Removed value: -[
        -  "string",
        -  "number"
        -]
    • Changedlist_categories1 field changed
      • addedInput schema / properties / keyword / maxLength
        Added value: +1000
    • Changedlist_cluster_partners1 field changed
      • addedInput schema / properties / category / maxLength
        Added value: +1000
    • Changedlist_collections1 field changed
      • addedInput schema / properties / keyword / maxLength
        Added value: +1000
    • Changedlist_groups2 fields changed
      • addedInput schema / properties / keyword / description
        Added value: +"Name or acronym, partial"
      • addedInput schema / properties / keyword / maxLength
        Added value: +1000
    • Changedlist_institutions2 fields changed
      • addedInput schema / properties / keyword / description
        Added value: +"Name or acronym, partial"
      • addedInput schema / properties / keyword / maxLength
        Added value: +1000
    • Changedlist_journals1 field changed
      • addedInput schema / properties / keyword / maxLength
        Added value: +1000
    • Changedlist_locations6 fields changed
      • addedInput schema / properties / bbox
        Added value: +{
        +  "description": "[west, south, east, north]",
        +  "items": {
        +    "type": "number"
        +  },
        +  "maxItems": 4,
        +  "minItems": 4,
        +  "type": "array"
        +}
      • changedInput schema / properties / country / description
        Previous value: -"Narrow to one country: the country itself plus its cities/regions"New value: +"One country, exact name or alias, plus its cities"
      • addedInput schema / properties / country / maxLength
        Added value: +1000
      • addedInput schema / properties / filters
        Added 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"
        +}
      • addedInput schema / properties / keyword / maxLength
        Added value: +1000
      • addedInput schema / properties / near
        Added 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"
        +}
    • Changedlist_publication_facets9 fields changed
      • addedInput schema / properties / added_since
        Added value: +{
        +  "description": "Added to AMIRA on or after this ISO date",
        +  "maxLength": 40,
        +  "type": "string"
        +}
      • addedInput schema / properties / author / maxLength
        Added value: +1000
      • changedInput schema / properties / keyword / description
        Previous 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"
      • addedInput schema / properties / keyword / maxLength
        Added value: +1000
      • addedInput schema / properties / language / maxLength
        Added value: +1000
      • addedInput schema / properties / subject / maxLength
        Added value: +1000
      • addedInput schema / properties / type / maxLength
        Added value: +1000
      • addedInput schema / properties / venue / maxLength
        Added value: +1000
      • addedOutput schema / properties / response_limited
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedlist_subjects2 fields changed
      • addedInput schema / properties / keyword / maxLength
        Added value: +1000
      • addedInput schema / properties / vocabulary
        Added value: +{
        +  "description": "Only Library of Congress headings or only free tags",
        +  "enum": [
        +    "lcsh",
        +    "tag"
        +  ],
        +  "type": "string"
        +}
    • Changedlist_years2 fields changed
      • addedInput schema / properties / filters
        Added 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"
        +}
      • changedOutput 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"
        +}
    • Addedresolve_entity
    • Changedsearch3 fields changed
      • addedInput schema / properties / query / maxLength
        Added value: +1000
      • addedOutput schema / properties / effective_limit
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / requested_limit
        Added value: +{
        +  "type": "number"
        +}
    • Changedsearch_persons3 fields changed
      • addedInput schema / properties / affiliation / maxLength
        Added value: +1000
      • changedInput schema / properties / keyword / description
        Previous value: -"Matches the name or an affiliation"New value: +"Matches the name, a name variant or an affiliation"
      • addedInput schema / properties / keyword / maxLength
        Added value: +1000
    • Changedsearch_podcasts7 fields changed
      • changedInput schema / properties / keyword / description
        Previous 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"
      • addedInput schema / properties / keyword / maxLength
        Added value: +1000
      • addedInput schema / properties / language
        Added value: +{
        +  "description": "Name or ISO code — 'French', 'fr', 'fra' all match",
        +  "maxLength": 1000,
        +  "type": "string"
        +}
      • addedInput schema / properties / person / maxLength
        Added value: +1000
      • addedInput schema / properties / series / maxLength
        Added value: +1000
      • changedInput schema / properties / year_from / description
        Previous value: -"Earliest episode year"New value: +"Earliest year"
      • changedInput schema / properties / year_to / description
        Previous value: -"Latest episode year"New value: +"Latest year"
    • Changedsearch_projects8 fields changed
      • addedInput schema / properties / institution / maxLength
        Added value: +1000
      • changedInput schema / properties / keyword / description
        Previous value: -"Matches the project name or description"New value: +"Matches the project name, an acronym or the description"
      • addedInput schema / properties / keyword / maxLength
        Added value: +1000
      • addedInput schema / properties / member / maxLength
        Added value: +1000
      • addedInput schema / properties / principal_investigator / maxLength
        Added value: +1000
      • changedInput schema / properties / research_section / description
        Previous value: -"e.g. 'Knowledges', 'Moralities'"New value: +"Name or id, e.g. 'Knowledges'"
      • addedInput schema / properties / research_section / maxLength
        Added value: +1000
      • addedInput schema / properties / university / maxLength
        Added value: +1000
    • Changedsearch_publications10 fields changed
      • addedInput schema / properties / added_since
        Added value: +{
        +  "description": "Added to AMIRA on or after this ISO date",
        +  "maxLength": 40,
        +  "type": "string"
        +}
      • addedInput schema / properties / author / maxLength
        Added value: +1000
      • changedInput schema / properties / citation_format / description
        Previous value: -"Omit for summaries; export results contain bibtex, ris or csl_json"New value: +"Omit for summaries; pages carry bibtex, ris or csl_json"
      • addedInput schema / properties / export
        Added value: +{
        +  "description": "Return a file link instead of rows",
        +  "enum": [
        +    "csv",
        +    "jsonl",
        +    "bibtex",
        +    "ris",
        +    "csl-json"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / keyword / description
        Previous 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"
      • addedInput schema / properties / keyword / maxLength
        Added value: +1000
      • addedInput schema / properties / language / maxLength
        Added value: +1000
      • addedInput schema / properties / subject / maxLength
        Added value: +1000
      • addedInput schema / properties / type / maxLength
        Added value: +1000
      • addedInput schema / properties / venue / maxLength
        Added value: +1000
    • Changedsearch_research_items21 fields changed
      • addedInput schema / properties / added_since
        Added value: +{
        +  "description": "Added to AMIRA on or after this ISO date",
        +  "maxLength": 40,
        +  "type": "string"
        +}
      • addedInput schema / properties / collection / maxLength
        Added value: +1000
      • addedInput schema / properties / contributor / maxLength
        Added value: +1000
      • changedInput schema / properties / country / description
        Previous 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"
      • addedInput schema / properties / country / maxLength
        Added value: +1000
      • addedInput schema / properties / export
        Added value: +{
        +  "description": "Return a file link instead of rows",
        +  "enum": [
        +    "csv",
        +    "jsonl"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / genre / maxLength
        Added value: +1000
      • addedInput schema / properties / has_media
        Added value: +{
        +  "description": "true: only items with digitised files",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / keyword / description
        Previous 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"
      • addedInput schema / properties / keyword / maxLength
        Added value: +1000
      • addedInput schema / properties / language / maxLength
        Added value: +1000
      • addedInput schema / properties / location / maxLength
        Added value: +1000
      • addedInput schema / properties / location_id
        Added value: +{
        +  "description": "Exact location authority ID, including descendants; avoids homonym matches",
        +  "exclusiveMinimum": 0,
        +  "maximum": 9007199254740991,
        +  "type": "integer"
        +}
      • addedInput schema / properties / modified_since
        Added value: +{
        +  "description": "Changed on or after this ISO date",
        +  "maxLength": 40,
        +  "type": "string"
        +}
      • addedInput schema / properties / project_id / anyOf
        Added value: +[
        +  {
        +    "maxLength": 1000,
        +    "type": "string"
        +  },
        +  {
        +    "type": "number"
        +  }
        +]
      • changedInput schema / properties / project_id / description
        Previous value: -"Project Omeka o:id (legacy project keys also work)"New value: +"Project Omeka id"
      • removedInput schema / properties / project_id / type
        Removed value: -[
        -  "string",
        -  "number"
        -]
      • addedInput schema / properties / research_section / maxLength
        Added value: +1000
      • addedInput schema / properties / resource_type / maxLength
        Added value: +1000
      • addedInput schema / properties / subject / maxLength
        Added value: +1000
      • addedInput schema / properties / university / maxLength
        Added value: +1000
    • Changedsearch_videos7 fields changed
      • changedInput schema / properties / keyword / description
        Previous 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"
      • addedInput schema / properties / keyword / maxLength
        Added value: +1000
      • addedInput schema / properties / language / maxLength
        Added value: +1000
      • addedInput schema / properties / playlist / maxLength
        Added value: +1000
      • addedInput schema / properties / speaker / maxLength
        Added value: +1000
      • changedInput schema / properties / year_from / description
        Previous value: -"Earliest upload year"New value: +"Earliest year"
      • changedInput schema / properties / year_to / description
        Previous value: -"Latest upload year"New value: +"Latest year"
  6. 29 tool updates
    • First observedfetch
    • First observedfind_related
    • First observedget_collection_overview
    • First observedget_institution
    • First observedget_person
    • First observedget_podcast
    • First observedget_project
    • First observedget_publication
    • First observedget_research_item
    • First observedget_research_section
    • First observedget_video
    • First observedlist_categories
    • First observedlist_cluster_partners
    • First observedlist_collections
    • First observedlist_groups
    • First observedlist_institutions
    • First observedlist_journals
    • First observedlist_locations
    • First observedlist_publication_facets
    • First observedlist_research_sections
    • First observedlist_subjects
    • First observedlist_years
    • First observedsearch
    • First observedsearch_persons
    • First observedsearch_podcasts
    • First observedsearch_projects
    • First observedsearch_publications
    • First observedsearch_research_items
    • First observedsearch_videos

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables 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
  • A
    license
    Not graded
    quality
    B
    maintenance
    A 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.
    2
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables 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
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.