Skip to main content
Glama

Northwestern University Libraries Digital Collections API

Server Details

Agent integration with the Northwestern University Libraries Digital Collections API

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
nulib/dc-api-v2
GitHub Stars
15

Available Tools

8 tools
get-workGet WorkB
Read-onlyIdempotent
Inspect

Retrieve the full metadata for a work from the NUL Digital Collections.

ParametersJSON Schema
NameRequiredDescriptionDefault
work_idYesThe ID of the work to retrieve

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish that this is a safe, read-only, idempotent operation, so the description does not need to re-state safety. It adds useful context that the result is the full metadata record from NUL Digital Collections, but it does not mention response shape, authentication needs, or other behavioral traits.

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?

A single, front-loaded sentence with no filler or repetition. Every word contributes to identifying the tool's purpose.

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 one-parameter read-only tool with rich annotations and no nested objects, the description is mostly complete: it names the collection, the action, and the output scope. It falls slightly short because the absence of an output schema is not compensated by any detail about the return structure, and the relationship to view-work is unspecified.

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%, and the only parameter, work_id, already has a clear schema description. The tool description does not add meaningful detail about the expected format or provenance of work_id, so it stays at the 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?

The description uses a specific verb ('Retrieve'), a clear resource ('a work'), and a scope ('full metadata'), so an agent can tell this apart from search or list operations. However, it does not differentiate get-work from the similarly named sibling view-work, leaving some ambiguity.

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 about when to use this tool versus alternatives such as view-work, search, or similarity-search. The description states what it does but not the conditions that make it the right choice.

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

List collection records from the NUL Digital Collections.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoThe page of search results to return
max_resultsNoThe maximum number of search results to return per page
public_onlyNoOnly include publicly available works in search results

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe search results returned from the Digital Collections API
infoYes
explainNoThe explain output from Elasticsearch for the search query. Only included if the MCP is running in debug mode.
paginationYes
aggregationsNo

TDQS

B3.4/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 read-only safety profile is fully covered. The description adds modest context by framing the operation as listing records (plural), implying paginated enumeration consistent with the page/max_results parameters, but it does not disclose details like result ordering or pagination limits beyond what the schema's own parameter descriptions state.

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?

A single seven-word sentence with zero filler; the verb and object are front-loaded immediately. Given that the schema and annotations carry the remaining detail, nothing in the description is wasted.

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 simple read-only listing tool with three optional parameters, an output schema, and full annotation coverage, the description is nearly complete. The only notable omission is usage routing context versus sibling tools, which is already penalized under usage_guidelines.

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% — all three parameters (page, max_results, public_only) have descriptions in the input schema, so the baseline of 3 applies. The description itself adds no parameter-level meaning, but this is acceptable because the schema carries the full documentation burden.

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 uses a specific verb ('List') and resource ('collection records from the NUL Digital Collections'), clearly conveying this is a browse/enumeration operation. However, it does not explicitly differentiate itself from sibling tools like view-collection or search, leaving the agent to infer the distinction between listing all collections and viewing one.

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 is given for when to use this tool versus alternatives such as view-collection, search, or similarity-search. The single-sentence description provides no context about use cases, exclusions, or prerequisites, so an agent must rely on sibling names alone to route correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

view-collectionView CollectionB
Read-onlyIdempotent
Inspect

View a collection from the NUL Digital Collections in an interactive viewer.

ParametersJSON Schema
NameRequiredDescriptionDefault
collection_idYesThe ID of the collection to view

Output Schema

ParametersJSON Schema
NameRequiredDescription
iiifContentUrlYesA URL to a IIIF manifest or collection

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, and non-destructive behavior, so the safety profile is clear. The description adds only 'interactive viewer' as behavioral context, which hints at the presentation mode but does not explain output form or any viewer prerequisites. This is acceptable given the strong annotations.

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?

A single sentence with no filler or redundancy. The verb and resource are front-loaded, and every word contributes to the meaning.

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 simple one-parameter, read-only tool with rich annotations and an output schema, the description is largely sufficient. Missing guidance about using list-collections to find a collection_id is a minor gap, but the tool is simple enough that an agent can infer the workflow from sibling names.

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%: collection_id is already described as 'The ID of the collection to view.' The description adds domain context ('NUL Digital Collections') but no additional parameter-level semantics, constraints, or examples.

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 clearly states a specific action ('View') and resource ('a collection from NUL Digital Collections'), and 'interactive viewer' hints at a distinct mode from sibling tools like list-collections. It does not explicitly contrast with sibling view tools, but the resource type makes the purpose 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?

No usage guidance is provided. The description does not say when to use this tool instead of list-collections, get-work, or view-work, nor does it mention how an agent should obtain a collection_id. Sibling tools are not referenced at all.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

view-search-resultsView Search ResultsC
Read-onlyIdempotent
Inspect

View results from the search-works tool in an interactive viewer.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoThe page of search results to return
queryNoA natural language query. Best for exploratory / conceptual searches.
fieldsNoStructured field search. Best when searching for specific known items or values, or for narrowing a search by specifying particular fields to search within.
max_resultsNoThe maximum number of search results to return per page
public_onlyNoOnly include publicly available works in search results

Output Schema

ParametersJSON Schema
NameRequiredDescription
iiifContentUrlYesA URL to a IIIF manifest or collection

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the tool read-only, idempotent, and non-destructive, so the description only needed to add behavioral context. Instead, it says the tool 'View[s] results from the search-works tool in an interactive viewer,' while the schema description says it 'Search[es] for items in the Digital Collections' using queries and field filters. This mismatch misleads the agent about what the tool actually does and omits behavior like pagination, default result limits, and public-only filtering.

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?

The description is a single concise sentence with no filler or redundancy. It front-loads the action ('View results'), though it is too terse to convey the tool's actual search behavior.

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?

Despite a rich schema, detailed nested parameters, and helpful annotations, the description is not complete enough for an agent to decide when to use this tool. It fails to explain how this relates to the sibling 'search' tool, whether it requires prior results, or that the input schema performs a new search. The vagueness is particularly damaging given the tool's complex param structure.

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?

The schema provides 100% parameter description coverage, including detailed descriptions for all five top-level parameters and nested field properties. The tool description adds no parameter-specific semantics, but the schema already carries the full burden, so a baseline score of 3 is appropriate.

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 a specific action and resource ('View results from the search-works tool') and is not a tautology. However, 'interactive viewer' is vague, and the tool's input schema actually describes a search operation ('Search for items in the Digital Collections'), so the purpose is unclear and not distinguished from sibling tools like 'search' or 'view-work'.

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 description gives no explicit guidance on when to use this tool versus alternatives. It only references a 'search-works tool,' implying some prior search step, but does not state whether this tool should be used after searching, instead of 'search,' or when viewing existing results. This is especially confusing because the schema indicates the tool itself performs searches.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

view-similar-worksView Similar WorksA
Read-onlyIdempotent
Inspect

View results from the similarity-search tool in an interactive viewer.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoThe page of search results to return
work_idYesID of a work to find similar items for.
max_resultsNoThe maximum number of search results to return per page
public_onlyNoOnly include publicly available works in search results

Output Schema

ParametersJSON Schema
NameRequiredDescription
iiifContentUrlYesA URL to a IIIF manifest or collection

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent, non-destructive behavior. The description adds the 'interactive viewer' framing, which implies a display surface rather than a raw data return. It does not add much beyond that, but it does not contradict 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short sentence with no filler, and the core action ('View results') is front-loaded. The description is appropriately sized for a tool whose safety profile and return shape are already captured by annotations and 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?

For a read-only viewer with an output schema and a fully documented input schema, the description is mostly complete. What is missing is explicit differentiation from view-search-results, which could prevent an agent from choosing the right tool based on the description alone.

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 fully documents page, work_id, max_results, and public_only. The description adds only that the results come from similarity-search, giving no extra parameter-level meaning beyond the schema 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?

The description uses a specific verb ('View') and names a concrete resource: results from the similarity-search tool, delivered in an interactive viewer. It clearly distinguishes this from the computation tool similarity-search, though it does not explicitly differentiate from the similarly named sibling view-search-results, so it stops 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 phrase 'results from the similarity-search tool' gives an implied usage context: call this after or for similarity-search results. However, it provides no explicit when-not-to-use guidance or comparison with view-search-results, leaving the agent to infer the routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

view-workView WorkB
Read-onlyIdempotent
Inspect

View a work from the NUL Digital Collections in an interactive viewer.

ParametersJSON Schema
NameRequiredDescriptionDefault
work_idYesThe ID of the work to view

Output Schema

ParametersJSON Schema
NameRequiredDescription
iiifContentUrlYesA URL to a IIIF manifest or collection

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish that the tool is read-only and non-destructive. The description adds the behavioral context that the work is shown in an interactive viewer, which is useful, but it does not explain what the interaction or output entails 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?

The description is one sentence and front-loaded with the key action. It adds useful context ('NUL Digital Collections', 'interactive viewer') despite slightly echoing the tool name and 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?

For a simple one-parameter tool with complete schema coverage, clear annotations, and an output schema, the description is mostly sufficient. The main gap is the lack of explicit differentiation from sibling tools, but nothing critical is missing for a basic call.

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%, and the single required parameter work_id is already documented in the schema. The description does not add any additional parameter meaning beyond what the schema provides, so the baseline score of 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 gives a specific verb ('View') and a resource ('a work from the NUL Digital Collections'), and adds the distinctive detail 'in an interactive viewer.' It is clear, though it does not explicitly differentiate itself from the sibling get-work tool.

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 description provides no guidance on when to use this tool versus alternatives such as get-work or view-search-results. The 'interactive viewer' phrase implies a UI-oriented use case, but no explicit context, conditions, or exclusions are stated.

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. Dates show when Glama detected each change.

  1. 8 tool updates
    • Changedget-work1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlist-collections2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsearch2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsimilarity-search2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedview-collection2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "iiifContentUrl": {
        +      "description": "A URL to a IIIF manifest or collection",
        +      "format": "uri",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "iiifContentUrl"
        +  ],
        +  "type": "object"
        +}
    • Changedview-search-results2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "iiifContentUrl": {
        +      "description": "A URL to a IIIF manifest or collection",
        +      "format": "uri",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "iiifContentUrl"
        +  ],
        +  "type": "object"
        +}
    • Changedview-similar-works2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "iiifContentUrl": {
        +      "description": "A URL to a IIIF manifest or collection",
        +      "format": "uri",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "iiifContentUrl"
        +  ],
        +  "type": "object"
        +}
    • Changedview-work2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "iiifContentUrl": {
        +      "description": "A URL to a IIIF manifest or collection",
        +      "format": "uri",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "iiifContentUrl"
        +  ],
        +  "type": "object"
        +}
  2. 1 tool update
    • Changedlist-collections4 fields changed
      • addedOutput schema / properties / data / items / properties / description / anyOf
        Added value: +[
        +  {
        +    "description": "A brief description of the search result item",
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / data / items / properties / description / description
        Removed value: -"A brief description of the search result item"
      • removedOutput schema / properties / data / items / properties / description / type
        Removed value: -"string"
      • changedOutput schema / properties / data / items / required
        Previous value: -[
        -  "id",
        -  "title",
        -  "description",
        -  "thumbnail",
        -  "iiif_collection",
        -  "visibility"
        -]New value: +[
        +  "id",
        +  "title",
        +  "thumbnail",
        +  "iiif_collection",
        +  "visibility"
        +]
  3. 8 tool updates
    • First observedget-work
    • First observedlist-collections
    • First observedsearch
    • First observedsimilarity-search
    • First observedview-collection
    • First observedview-search-results
    • First observedview-similar-works
    • First observedview-work

Frequently Asked Questions

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

B3.4/5.0
Disambiguation4/5

Most tools have clear boundaries: search and similarity-search are distinct query modes, and view-* tools are explicitly for interactive viewing while get-work and list-collections return metadata. However, get-work vs view-work and list-collections vs view-collection could cause mild confusion, and view-search-results refers to a 'search-works' tool that is actually named 'search'.

Naming Consistency3/5

Tool names mostly follow a lowercase hyphenated verb-object pattern like get-work, list-collections, and view-work. However, 'search' lacks an object, 'similarity-search' is formatted as a compound noun rather than a verb phrase, and the description for view-search-results references a non-existent 'search-works' tool name.

Tool Count5/5

Eight tools is a well-scoped set for a digital collections API. Each tool serves a distinct function covering search, retrieval, similarity, and interactive viewing without feeling bloated or sparse.

Completeness4/5

The tool surface covers the core read-only workflows: searching, similarity matching, retrieving work metadata, listing collections, and viewing results interactively. A minor gap is the lack of a direct get-collection metadata tool separate from list-collections, but agents can likely work around this.