Skip to main content
Glama

smithsonian-mcp-server

Server Details

Search 14.5M Smithsonian Open Access objects, get CC0 images, find cross-collection connections.

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
99.9% over 68 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
cyanheads/smithsonian-mcp-server
GitHub Stars
2
Server Listing
@cyanheads/smithsonian-mcp-server

TDQS

A4.4/5.0

Scored across 6 tools

Disambiguation5/5

Each tool targets a distinct retrieval mode: free-text search, exact-category browse, metadata fetch, media fetch, related-object discovery, and vocabulary enumeration. The descriptions explicitly cross-reference boundaries (e.g. search_objects vs browse_category, get_object media summary vs get_media URLs), so an agent can reliably choose.

Naming Consistency5/5

Every tool follows the same smithsonian_verb_noun pattern (browse_category, find_related, get_media, get_object, list_terms, search_objects) with a uniform prefix and snake_case throughout. The convention is predictable and readable.

Tool Count5/5

Six tools is well-scoped for a read-only catalog: each covers a distinct capability (discover, browse, resolve vocabulary, retrieve object, retrieve media, expand to related). No tool is redundant or trivially padding the set.

Completeness4/5

The discovery lifecycle is well covered: vocabulary resolution, search, exact-category browse, object metadata, media, and related-object traversal form a coherent loop. As a read-only public-catalog server, write operations are correctly absent, though there are minor gaps (no dedicated exhibition or aggregation endpoints).

Available Tools

6 tools
smithsonian_browse_categoryBrowse Smithsonian by CategoryA
Read-onlyIdempotent
Inspect

Browse Smithsonian objects within one exact category — a single museum (mode "museum"), culture, indexed date term (mode "period"), object type (mode "medium"), or subject term (mode "topic"). The value must be an exact indexed category term, not free text: resolve museum, culture, period, and topic vocabulary with smithsonian_list_terms first (object_type is not enumerable there — harvest it from smithsonian_search_objects results, and treat each casing as its own category, since a harvested object_type covers only the casing it was written in). Returns the category total count, a page of matching objects, and a museum breakdown of that page; page the full category with start and rows. For open-ended or topic discovery, start with smithsonian_search_objects instead.

NameRequiredDescriptionDefault
modeYesBrowse dimension: "museum" (by unit code), "culture" (by culture term), "period" (by indexed date term like "1940s" or "500-1500"), "medium" (by object type like "Paintings"), "topic" (by subject term like "Quilts").
rowsNoNumber of sample objects to return (default 10, max 50).
startNoPagination offset — 0-indexed. Page contiguously with start = page × rows.
valueYesCategory value appropriate to the mode. museum: a unit code like "NASM", "SAAM", or "NMNHBIRDS", matched literally and case-sensitively — not a museum name. culture: term, often plural or qualified ("Aztecs", "Plains Indian"). period: an indexed date term — commonly a decade ("1940s", "1860s"), but year ranges ("500-1500"), century terms ("21st century"), and BCE forms ("-2500", "BCE 1000s") are indexed too. medium: object type, usually plural ("Paintings", "Aircraft"). topic: subject term ("Quilts", "Aviation"). Smithsonian uses a controlled vocabulary — for museum (unit_code), culture, period (date), and topic, call smithsonian_list_terms to find exact terms; medium (object_type) is not enumerable there, so harvest it from smithsonian_search_objects results. Every mode matches its value exactly and case-sensitively, and for medium that split is load-bearing: casing variants are indexed as SEPARATE categories, each reporting its own total_count ("button" and "Button" are different categories, and neither casing is reliably the larger), so browse the variants of a harvested value rather than assuming one covers the concept.

Output Schema

NameRequiredDescription
capNoThe rows cap that was applied.
modeNoBrowse dimension used for this request (one of "museum", "culture", "period", "medium", "topic").
errorNoPresent when the call failed. Absent on success.
shownNoNumber of sample objects returned.
valueNoCategory value queried, as provided in the request.
noticeNoGuidance naming the input that retrieves the objects this page omitted.
truncatedNoTrue when matching objects remain past this page. False on a terminal or past-the-end page, where nothing is being withheld.
total_countNoTotal number of Smithsonian objects matching this category.
sample_objectsNoThe requested page of objects matching the category, in upstream order. Empty when start is past the end of the category.
museum_breakdownNoWhen mode is not "museum": top contributing museums from the sample, helping plan museum-focused follow-up searches.
truncationCeilingNoTotal matching objects (upper bound for omitted items).

TDQS

A5/5.0
Behavior5/5

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

Beyond the readOnly/openWorld/idempotent hints, the description discloses exact case-sensitive matching, emphasizes that medium casing variants are separate categories with independent totals, and states the return shape (total count, page, museum breakdown) plus pagination semantics. No contradictions with 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?

The description is dense but every sentence contributes: it opens with the core purpose, then flow constraints, then return and pagination, then the alternative tool. No filler; the structure flows logically from what→how→when-not.

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 complex 4-parameter tool with five modes, the description fully specifies required vocabulary resolution, exact matching behavior, the casing split, return contents, pagination, and routing to sibling tools. An output schema exists to cover return details, so 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.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds substantial practical meaning: it explains each mode's value format with concrete examples (unit codes, decade terms, BCE forms), the casing sensitivity trap for medium, and how to obtain valid values. This goes well beyond the schema's descriptions and is critical for correct invocation.

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 action ('browse Smithsonian objects') and scope ('within one exact category'), enumerates the five modes, and explicitly contrasts with the open-ended smithsonian_search_objects. This clearly delineates its purpose from siblings and gives the agent a precise mental model.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit when-to-use instructions: resolve museum/culture/period/topic via smithsonian_list_terms, harvest medium from smithsonian_search_objects, and 'For open-ended or topic discovery, start with smithsonian_search_objects instead.' It also warns against free-text values, making the usage constraints unambiguous.

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

smithsonian_get_mediaGet Smithsonian Object MediaA
Read-onlyIdempotent
Inspect

Return every CC0 (open-access) image for a Smithsonian object at multiple resolutions. The tool never returns an empty list — it names the reason instead: an object with nothing digitized, an object whose media is entirely non-image (scanned books, 3D models, sound recordings), and an object whose images are entirely non-CC0 each fail with their own reason. Each image entry includes thumbnail (~120px), screen-size (~800px), and high-resolution JPEG/TIFF URLs with pixel dimensions. The cc0_only filter on smithsonian_search_objects surfaces objects that have downloadable CC0 images.

NameRequiredDescriptionDefault
idYesrecord_id of the object (e.g. "nasm_A19670093000") from smithsonian_search_objects or smithsonian_get_object.

Output Schema

NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
titleNoObject title from the catalog record.
imagesNoCC0-licensed images for this object.
is_cc0NoTrue when the object-level metadata is CC0. The Open Access corpus is CC0 throughout, so this rarely varies; the per-image is_cc0 flag is what gates delivery.
record_idNoSmithsonian catalog record ID for the object.

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already cover readOnly, idempotent, and openWorld hints. The description goes beyond these by disclosing the never-empty-list guarantee and explaining the three distinct failure reasons (nothing digitized, non-image media, non-CC0 images). It also describes the output structure (thumbnail, screen-size, high-res URLs with pixel dimensions), providing meaningful behavioral context without contradicting 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?

The description is reasonably concise given the amount of behavioral detail it conveys. It front-loads the core purpose, then efficiently covers edge cases and output structure. Each sentence contributes information, though it could be slightly tightened without loss. Overall it is well structured and not padded.

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 single-parameter, read-only tool with an existing output schema and annotations covering safety, the description provides complete operational context. It covers the main behavior, failure modes, output characteristics, and even cross-references a sibling tool's filter for workflow integration. Nothing essential 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 100% for the single 'id' parameter, including a format example and source references. The description does not add additional semantic detail about the parameter beyond what the schema already provides, so the baseline of 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 ('Return'), a specific resource ('every CC0 image for a Smithsonian object'), and the scope ('at multiple resolutions'). It clearly distinguishes itself from sibling tools that handle search, browsing, or related-objects, and the mention of the cc0_only filter on smithsonian_search_objects further differentiates the workflow.

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?

The description gives a clear usage hint by pointing to the cc0_only filter on smithsonian_search_objects, implying the agent should search first to find objects with downloadable CC0 images and then call this tool with the record_id. However, it does not explicitly state when *not* to use this tool or list alternatives for other scenarios, so it lacks full exclusion guidance.

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

smithsonian_get_objectGet Smithsonian ObjectA
Read-onlyIdempotent
Inspect

Fetch a normalized catalog metadata projection for a Smithsonian object by its record_id (from smithsonian_search_objects results). Returns title, dates, description, labeled notes, makers, materials, dimensions, places, cultures, topics, exhibitions, credit line, identifiers, rights, and a media summary. Natural-history records can include scientific_names, taxonomy, and collection coordinates without inferred precision. The media summary is a count; full image URLs come from smithsonian_get_media.

NameRequiredDescriptionDefault
idYesObject record_id from smithsonian_search_objects results (e.g. "nasm_A19670093000").

Output Schema

NameRequiredDescription
datesNoAll date fields in the catalog record.
errorNoPresent when the call failed. Absent on success.
notesNoAll nonempty catalog notes in source order, including repeated labels.
placeNoGeographic place associations.
titleNoObject title.
is_cc0NoTrue when the object metadata is CC0 (open access). The Smithsonian Open Access corpus is CC0 throughout, so this flag rarely varies — read media_summary.has_cc0_images to predict whether smithsonian_get_media returns images.
makersNoAll named parties associated with this object.
topicsNoSubject and topic terms.
cultureNoCulture associations.
taxonomyNoReported taxonomic ranks; absent ranks remain omitted.
materialsNoPhysical material descriptions.
record_idNoUnique object identifier.
unit_codeNoMuseum unit code.
dimensionsNoDimension and measurement strings.
coordinatesNoCollection points without inferred precision or geocoding; empty when no valid decimal pairs exist.
credit_lineNoAttribution or credit string.
descriptionNoBest available prose description from Summary, Physical Description, Brief Description, Description, Description (Brief), or Citation notes. Absent when only administrative notes exist.
exhibitionsNoExhibition history.
identifiersNoAll accession and catalog identifiers.
museum_nameNoFull museum name. A few rarely-indexed archive sub-unit codes have no mapped name and fall back to the raw unit code.
record_linkNoCanonical Smithsonian Institution URL for this object.
media_summaryNoMedia availability summary. Call smithsonian_get_media for full image URLs.
object_rightsNoRights statement from the catalog.
scientific_namesNoAll reported scientific names in source order; no accepted-name inference.

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 and openWorldHint, so safety is covered elsewhere. The description adds real value beyond them: it discloses the returned payload shape, notes that natural-history records include scientific_names/taxonomy/coordinates 'without inferred precision,' and warns that the media summary is only a count rather than URLs.

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 front-loaded sentences with no filler; the purpose and source of the id come first. The long enumerated list of returned fields is somewhat verbose given an output schema exists, but it is informative rather than padding.

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 single-parameter read tool with annotations and a full output schema, the description covers everything an agent needs: the prerequisite call, the id format, the returned content, the natural-history caveat, and where to get media URLs. Nothing material 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 100% and the single id parameter is already documented with an example ("nasm_A19670093000") in the schema. The description only restates its origin in search results, adding no syntax or format detail beyond the structured field, so the 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?

States a specific verb and resource: 'Fetch a normalized catalog metadata projection for a Smithsonian object by its record_id.' It also distinguishes itself from smithsonian_search_objects (source of the id) and smithsonian_get_media (full image URLs), so an agent can tell it apart from siblings without opening a 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?

Clear context: it must be called with a record_id obtained from smithsonian_search_objects results, and it explicitly routes image-URL needs to smithsonian_get_media. It lacks an explicit 'when not to use' statement, but the prerequisite chain and the media alternative are stated rather than implied.

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

smithsonian_list_termsList Valid Filter TermsA
Read-onlyIdempotent
Inspect

Enumerate the valid term vocabulary for an indexed Smithsonian filter field (unit_code, culture, place, date, online_media_type, topic). Terms are a controlled vocabulary — often plural or qualified (e.g. "Paintings", not "Painting") — so guessed filter values tend to return nothing. Returns a page of the field's distinct term values; large vocabularies (topic has 133k terms, place 114k) page via start and rows. For unit_code, each code is returned with its museum name and contains matches the name as well as the code, so a museum name resolves to its code in one call.

NameRequiredDescriptionDefault
rowsNoNumber of terms to return per page (default 50, max 100).
fieldYesIndexed field to enumerate. Choices: unit_code (museum codes like "NASM"), culture (e.g. "Aztecs"), place (geographic terms), date (decade/era values like "1920s"), online_media_type (media formats like "Images", "3D Models"), topic (subject terms like "Quilts" — 133k terms, so pair it with contains).
startNoPagination offset (0-indexed). Use with rows to page through large vocabularies.
containsNoCase-insensitive substring filter on the term vocabulary — resolve a filter value (e.g. "greek") to its exact controlled-vocabulary term(s). For unit_code the substring also matches each code's museum name, so "National Air and Space" resolves to "NASM".

Output Schema

NameRequiredDescription
capNoThe rows cap that was applied.
errorNoPresent when the call failed. Absent on success.
fieldNoThe enumerated field, as provided in the request.
shownNoNumber of terms returned in this page.
termsNoThe field's distinct term values for this page, in the Smithsonian index's native order. No per-term object counts are available upstream.
totalNoTotal number of distinct terms for this field (the full vocabulary size; terms is one page of it).
labelsNoMuseum name for each unit_code on this page that has one — present only when field is "unit_code". A few rarely-indexed archive sub-unit codes have no mapped name and are absent from this map; their term is still returned in terms.
noticeNoGuidance naming the input that retrieves the terms this page omitted, or how to broaden a contains filter that matched nothing.
truncatedNoTrue when matching terms remain past this page. False on a terminal or past-the-end page, where nothing is being withheld.
truncationCeilingNoDistinct terms available for this query (the full vocabulary, or the contains-match count) — upper bound for omitted items.

TDQS

A4.3/5.0
Behavior4/5

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

Goes well beyond the readOnly/idempotent/openWorld annotations by disclosing that terms are plural/qualified controlled vocabulary, that vocabularies are huge (topic 133k, place 114k) and page via start/rows, and that unit_code results include museum names that match on contains. No auth, rate-limit, or ordering behavior is mentioned, but the operational traits are substantive.

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?

Four sentences, front-loaded with purpose and field enum, then escalating to scale/paging and the unit_code special case. Every sentence adds a fact an agent needs; nothing is filler.

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?

Given an existing output schema (return values need not be explained) and safety annotations already covering read-only semantics, the description supplies exactly the missing pieces: vocabulary quirks, vocabulary sizes, pagination, and unit_code name-to-code resolution. Nothing required for correct invocation is absent.

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 every parameter is already documented, and the description largely restates the same field list, contains semantics and paging mechanics. The only genuinely additive parameter hint is pairing topic with contains; baseline 3 applies when the schema carries the load.

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 ("Enumerate") and resource ("valid term vocabulary for an indexed Smithsonian filter field") plus the exact field set. An agent can distinguish this vocabulary-lookup tool from smithsonian_search_objects or smithsonian_get_object without opening any 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?

Gives a clear use condition: resolve guessed filter values that "tend to return nothing" into exact controlled-vocabulary terms before searching. It does not explicitly name the sibling it feeds into (e.g. smithsonian_search_objects) or say when not to call it, so it stops short of full routing guidance.

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

smithsonian_search_objectsSearch Smithsonian ObjectsA
Read-onlyIdempotent
Inspect

Recommended first step for open-ended or topic discovery: free-text search across 14.5 million Smithsonian objects, with optional exact filters. Filters narrow by museum unit, object type, indexed date term, culture, geographic place, subject topic, named party, and online/CC0 availability. Returns curated summaries (title, date, museum, thumbnail URL, CC0 flag) with the total match count. The record_id in each result is the identifier for smithsonian_get_object, smithsonian_find_related, and smithsonian_get_media. To browse one exact category — a single museum, culture, date term, object type, or topic — use smithsonian_browse_category instead.

NameRequiredDescriptionDefault
rowsNoPage size (default 20, max 100).
queryYesFree-text search. Use specific terms for precision ("Tlingit totem pole") or broad terms for browsing ("quilt").
startNoPagination offset — 0-indexed. Use with rows for paging through large result sets.
filtersNoOptional structured filters to narrow the search.

Output Schema

NameRequiredDescription
capNoThe rows cap that was applied.
errorNoPresent when the call failed. Absent on success.
shownNoNumber of objects returned in this page.
noticeNoGuidance naming the input that retrieves the objects this page omitted.
objectsNoCurated object summaries for the current page.
truncatedNoTrue when matching objects remain past this page. False on a terminal or past-the-end page, where nothing is being withheld.
total_countNoTotal matching objects in the Smithsonian catalog before pagination.
truncationCeilingNoTotal matching objects (upper bound for omitted items).

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint, idempotentHint, openWorldHint), so the bar is lower. The description nonetheless adds corpus scale (14.5M objects), the fact that filters are exact-match constraints, the total match count in the response, and — crucially — that each result's record_id is the chaining key for smithsonian_get_object, smithsonian_find_related, and smithsonian_get_media.

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 sentences, each doing distinct work: purpose and scale, filter overview and return shape, then identifier chaining and the sibling alternative. Front-loaded with the disambiguating scope statement and no filler.

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 4-parameter search tool with a 100%-covered nested schema, an output schema, and full annotations, nothing an agent needs is missing: purpose, filter scope, return fields, chaining keys, and the sibling alternative are all present.

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 nested filters object is exhaustively documented in the schema itself (including vocabulary sources and edge cases), so the schema does the heavy lifting. The description only enumerates the filter categories at a high level ('museum unit, object type, indexed date term, culture, geographic place, subject topic, named party, and online/CC0 availability'), which restates rather than extends the schema.

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 ('free-text search across 14.5 million Smithsonian objects') and frames its position in the workflow ('Recommended first step for open-ended or topic discovery'). It explicitly contrasts itself with smithsonian_browse_category, so an agent can distinguish the two 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 Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit when-to-use condition (open-ended/topic discovery with free text) and names the alternative with its own condition ('To browse one exact category ... use smithsonian_browse_category instead'). It also notes the filters are 'exact' versus the free-text query, which tells the agent how to combine them.

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. 4 tool updates
    • Changedsmithsonian_find_related1 field changed
      • changedOutput schema / properties / notice / description
        Previous value: -"Guidance naming the inputs that retrieve the related objects this page omitted — start for the next page, signals[].search_continuation for a signal past this tool's reach."New value: +"Composed partial-failure, empty-result, and paging guidance. Failed signals carry safe categories; start pages the related set and signals[].search_continuation reaches a broader signal."
    • Changedsmithsonian_get_object6 fields changed
      • changedOutput schema / anyOf
        Previous value: -[
        -  {
        -    "not": {
        -      "required": [
        -        "error"
        -      ]
        -    },
        -    "required": [
        -      "record_id",
        -      "title",
        -      "unit_code",
        -      "museum_name",
        -      "dates",
        -      "makers",
        -      "materials",
        -      "dimensions",
        -      "place",
        -      "culture",
        -      "topics",
        -      "exhibitions",
        -      "identifiers",
        -      "is_cc0",
        -      "media_summary"
        -    ]
        -  },
        -  {
        -    "required": [
        -      "error"
        -    ]
        -  }
        -]New value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "error"
        +      ]
        +    },
        +    "required": [
        +      "record_id",
        +      "title",
        +      "unit_code",
        +      "museum_name",
        +      "dates",
        +      "notes",
        +      "scientific_names",
        +      "coordinates",
        +      "makers",
        +      "materials",
        +      "dimensions",
        +      "place",
        +      "culture",
        +      "topics",
        +      "exhibitions",
        +      "identifiers",
        +      "is_cc0",
        +      "media_summary"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / coordinates
        Added value: +{
        +  "description": "Collection points without inferred precision or geocoding; empty when no valid decimal pairs exist.",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "A valid reported decimal coordinate pair.",
        +    "properties": {
        +      "latitude": {
        +        "description": "Reported decimal latitude in degrees.",
        +        "type": "number"
        +      },
        +      "locality": {
        +        "description": "Locality reported alongside this point.",
        +        "type": "string"
        +      },
        +      "longitude": {
        +        "description": "Reported decimal longitude in degrees.",
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "latitude",
        +      "longitude"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • changedOutput schema / properties / description / description
        Previous value: -"Best available prose description (Summary, Physical Description, or Brief Description notes)."New value: +"Best available prose description from Summary, Physical Description, Brief Description, Description, Description (Brief), or Citation notes. Absent when only administrative notes exist."
      • addedOutput schema / properties / notes
        Added value: +{
        +  "description": "All nonempty catalog notes in source order, including repeated labels.",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "A labeled catalog note.",
        +    "properties": {
        +      "content": {
        +        "description": "Plain-text note content.",
        +        "type": "string"
        +      },
        +      "label": {
        +        "description": "Catalog note label, or Note when absent.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "label",
        +      "content"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / scientific_names
        Added value: +{
        +  "description": "All reported scientific names in source order; no accepted-name inference.",
        +  "items": {
        +    "description": "A catalog-reported scientific name.",
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / taxonomy
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Reported taxonomic ranks; absent ranks remain omitted.",
        +  "properties": {
        +    "class": {
        +      "description": "Reported class values.",
        +      "items": {
        +        "description": "A class value.",
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "family": {
        +      "description": "Reported family values.",
        +      "items": {
        +        "description": "A family value.",
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "kingdom": {
        +      "description": "Reported kingdom values.",
        +      "items": {
        +        "description": "A kingdom value.",
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "order": {
        +      "description": "Reported order values.",
        +      "items": {
        +        "description": "An order value.",
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "phylum": {
        +      "description": "Reported phylum values.",
        +      "items": {
        +        "description": "A phylum value.",
        +        "type": "string"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedsmithsonian_list_terms1 field changed
      • changedOutput schema / properties / terms / items / description
        Previous value: -"A term value — pass directly as the filter value in smithsonian_search_objects or smithsonian_browse_category."New value: +"A term value for the corresponding smithsonian_search_objects filter. online_media_type values feed search only; browse_category supports museum (unit_code), culture, period (date), medium (object_type), and topic, with no media-type or place mode."
    • Changedsmithsonian_search_objects2 fields changed
      • addedInput schema / properties / filters / properties / online_media_type
        Added value: +{
        +  "description": "Exact indexed media category from smithsonian_list_terms { field: \"online_media_type\" }, e.g. \"Images\", \"3D Models\", \"Sound recordings\". Even Images does not guarantee attached or CC0 images; read smithsonian_get_object.media_summary for availability.",
        +  "type": "string"
        +}
      • addedInput schema / properties / filters / properties / scientific_name
        Added value: +{
        +  "description": "Exact indexed scientific name from smithsonian_get_object.scientific_names, e.g. \"Crotalus horridus\". Not enumerable via smithsonian_list_terms.",
        +  "type": "string"
        +}
  2. 6 tool updates
    • Changedsmithsonian_browse_category6 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "error"
        +      ]
        +    },
        +    "required": [
        +      "mode",
        +      "value",
        +      "total_count",
        +      "sample_objects",
        +      "museum_breakdown"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / error
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "Present when the call failed. Absent on success.",
        +  "properties": {
        +    "code": {
        +      "description": "JSON-RPC error code for this failure.",
        +      "maximum": 9007199254740991,
        +      "minimum": -9007199254740991,
        +      "type": "integer"
        +    },
        +    "data": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "reason": {
        +          "description": "Machine-readable failure mode. Declared by this tool: `invalid_category`: The category value matched no objects — a browse category is an exact indexed facet, so a zero match means the value did not resolve to retrievable objects. Other values are possible when a failure originates below the handler.",
        +          "examples": [
        +            "invalid_category"
        +          ],
        +          "type": "string"
        +        },
        +        "recovery": {
        +          "additionalProperties": {},
        +          "description": "Actionable next step for the caller.",
        +          "properties": {
        +            "hint": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "hint"
        +          ],
        +          "type": "object"
        +        },
        +        "retryable": {
        +          "description": "Whether retrying may succeed.",
        +          "type": "boolean"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "message": {
        +      "description": "Human-readable description of what went wrong.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "code",
        +    "message"
        +  ],
        +  "type": "object"
        +}
      • removedOutput schema / required
        Removed value: -[
        -  "mode",
        -  "value",
        -  "total_count",
        -  "sample_objects",
        -  "museum_breakdown"
        -]
    • Changedsmithsonian_find_related6 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "error"
        +      ]
        +    },
        +    "required": [
        +      "anchor",
        +      "related",
        +      "search_signals_used",
        +      "signals"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / error
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "Present when the call failed. Absent on success.",
        +  "properties": {
        +    "code": {
        +      "description": "JSON-RPC error code for this failure.",
        +      "maximum": 9007199254740991,
        +      "minimum": -9007199254740991,
        +      "type": "integer"
        +    },
        +    "data": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "reason": {
        +          "description": "Machine-readable failure mode. Declared by this tool: `not_found`: The anchor object ID does not exist in the Smithsonian catalog. `invalid_id`: The ID is empty or contains only whitespace. Other values are possible when a failure originates below the handler.",
        +          "examples": [
        +            "not_found",
        +            "invalid_id"
        +          ],
        +          "type": "string"
        +        },
        +        "recovery": {
        +          "additionalProperties": {},
        +          "description": "Actionable next step for the caller.",
        +          "properties": {
        +            "hint": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "hint"
        +          ],
        +          "type": "object"
        +        },
        +        "retryable": {
        +          "description": "Whether retrying may succeed.",
        +          "type": "boolean"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "message": {
        +      "description": "Human-readable description of what went wrong.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "code",
        +    "message"
        +  ],
        +  "type": "object"
        +}
      • removedOutput schema / required
        Removed value: -[
        -  "anchor",
        -  "related",
        -  "search_signals_used",
        -  "signals"
        -]
    • Changedsmithsonian_get_media6 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "error"
        +      ]
        +    },
        +    "required": [
        +      "record_id",
        +      "title",
        +      "is_cc0",
        +      "images"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / error
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "Present when the call failed. Absent on success.",
        +  "properties": {
        +    "code": {
        +      "description": "JSON-RPC error code for this failure.",
        +      "maximum": 9007199254740991,
        +      "minimum": -9007199254740991,
        +      "type": "integer"
        +    },
        +    "data": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "reason": {
        +          "description": "Machine-readable failure mode. Declared by this tool: `not_found`: No object with the given ID exists in the Smithsonian catalog. `no_media`: The object exists but has no digitized online media. `no_images`: The object has digitized media, but none of it is an image — the media is entirely non-image types such as scanned books, 3D models, or sound recordings. `not_cc0`: The object has media but none of its images are CC0 open access. `invalid_id`: The ID is empty or contains only whitespace. Other values are possible when a failure originates below the handler.",
        +          "examples": [
        +            "not_found",
        +            "no_media",
        +            "no_images",
        +            "not_cc0",
        +            "invalid_id"
        +          ],
        +          "type": "string"
        +        },
        +        "recovery": {
        +          "additionalProperties": {},
        +          "description": "Actionable next step for the caller.",
        +          "properties": {
        +            "hint": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "hint"
        +          ],
        +          "type": "object"
        +        },
        +        "retryable": {
        +          "description": "Whether retrying may succeed.",
        +          "type": "boolean"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "message": {
        +      "description": "Human-readable description of what went wrong.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "code",
        +    "message"
        +  ],
        +  "type": "object"
        +}
      • removedOutput schema / required
        Removed value: -[
        -  "record_id",
        -  "title",
        -  "is_cc0",
        -  "images"
        -]
    • Changedsmithsonian_get_object6 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "error"
        +      ]
        +    },
        +    "required": [
        +      "record_id",
        +      "title",
        +      "unit_code",
        +      "museum_name",
        +      "dates",
        +      "makers",
        +      "materials",
        +      "dimensions",
        +      "place",
        +      "culture",
        +      "topics",
        +      "exhibitions",
        +      "identifiers",
        +      "is_cc0",
        +      "media_summary"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / error
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "Present when the call failed. Absent on success.",
        +  "properties": {
        +    "code": {
        +      "description": "JSON-RPC error code for this failure.",
        +      "maximum": 9007199254740991,
        +      "minimum": -9007199254740991,
        +      "type": "integer"
        +    },
        +    "data": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "reason": {
        +          "description": "Machine-readable failure mode. Declared by this tool: `not_found`: No object with the given ID exists in the Smithsonian catalog. `invalid_id`: The ID format is clearly malformed (empty string, whitespace only). Other values are possible when a failure originates below the handler.",
        +          "examples": [
        +            "not_found",
        +            "invalid_id"
        +          ],
        +          "type": "string"
        +        },
        +        "recovery": {
        +          "additionalProperties": {},
        +          "description": "Actionable next step for the caller.",
        +          "properties": {
        +            "hint": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "hint"
        +          ],
        +          "type": "object"
        +        },
        +        "retryable": {
        +          "description": "Whether retrying may succeed.",
        +          "type": "boolean"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "message": {
        +      "description": "Human-readable description of what went wrong.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "code",
        +    "message"
        +  ],
        +  "type": "object"
        +}
      • removedOutput schema / required
        Removed value: -[
        -  "record_id",
        -  "title",
        -  "unit_code",
        -  "museum_name",
        -  "dates",
        -  "makers",
        -  "materials",
        -  "dimensions",
        -  "place",
        -  "culture",
        -  "topics",
        -  "exhibitions",
        -  "identifiers",
        -  "is_cc0",
        -  "media_summary"
        -]
    • Changedsmithsonian_list_terms6 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "error"
        +      ]
        +    },
        +    "required": [
        +      "field",
        +      "terms",
        +      "total"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / error
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "Present when the call failed. Absent on success.",
        +  "properties": {
        +    "code": {
        +      "description": "JSON-RPC error code for this failure.",
        +      "maximum": 9007199254740991,
        +      "minimum": -9007199254740991,
        +      "type": "integer"
        +    },
        +    "data": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "reason": {
        +          "description": "Machine-readable failure mode. Declared by this tool: `no_terms`: The field returned no indexed terms. Other values are possible when a failure originates below the handler.",
        +          "examples": [
        +            "no_terms"
        +          ],
        +          "type": "string"
        +        },
        +        "recovery": {
        +          "additionalProperties": {},
        +          "description": "Actionable next step for the caller.",
        +          "properties": {
        +            "hint": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "hint"
        +          ],
        +          "type": "object"
        +        },
        +        "retryable": {
        +          "description": "Whether retrying may succeed.",
        +          "type": "boolean"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "message": {
        +      "description": "Human-readable description of what went wrong.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "code",
        +    "message"
        +  ],
        +  "type": "object"
        +}
      • removedOutput schema / required
        Removed value: -[
        -  "field",
        -  "terms",
        -  "total"
        -]
    • Changedsmithsonian_search_objects6 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "error"
        +      ]
        +    },
        +    "required": [
        +      "objects",
        +      "total_count"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / error
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "Present when the call failed. Absent on success.",
        +  "properties": {
        +    "code": {
        +      "description": "JSON-RPC error code for this failure.",
        +      "maximum": 9007199254740991,
        +      "minimum": -9007199254740991,
        +      "type": "integer"
        +    },
        +    "data": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "reason": {
        +          "description": "Machine-readable failure mode. Declared by this tool: `no_results`: An unfiltered query matched no objects. `invalid_filter`: A filtered search matched nothing — most often a filter value outside the Smithsonian controlled vocabulary (e.g. a singular \"Painting\" instead of \"Paintings\"). Other values are possible when a failure originates below the handler.",
        +          "examples": [
        +            "no_results",
        +            "invalid_filter"
        +          ],
        +          "type": "string"
        +        },
        +        "recovery": {
        +          "additionalProperties": {},
        +          "description": "Actionable next step for the caller.",
        +          "properties": {
        +            "hint": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "hint"
        +          ],
        +          "type": "object"
        +        },
        +        "retryable": {
        +          "description": "Whether retrying may succeed.",
        +          "type": "boolean"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "message": {
        +      "description": "Human-readable description of what went wrong.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "code",
        +    "message"
        +  ],
        +  "type": "object"
        +}
      • removedOutput schema / required
        Removed value: -[
        -  "objects",
        -  "total_count"
        -]
  3. 2 tool updates
    • Changedsmithsonian_browse_category1 field changed
      • changedInput schema / properties / value / description
        Previous value: -"Category value appropriate to the mode. museum: a unit code like \"NASM\", \"SAAM\", or \"NMNHBIRDS\", matched literally and case-sensitively — not a museum name. culture: term, often plural or qualified (\"Aztecs\", \"Plains Indian\"). period: an indexed date term — commonly a decade (\"1940s\", \"1860s\"), but year ranges (\"500-1500\"), century terms (\"21st century\"), and BCE forms (\"-2500\", \"BCE 1000s\") are indexed too. medium: object type, usually plural (\"Paintings\", \"Aircraft\"). topic: subject term (\"Quilts\", \"Aviation\"). Smithsonian uses a controlled vocabulary — for museum (unit_code), culture, period (date), and topic, call smithsonian_list_terms to find exact terms; medium (object_type) is not enumerable there, so harvest it from smithsonian_search_objects results."New value: +"Category value appropriate to the mode. museum: a unit code like \"NASM\", \"SAAM\", or \"NMNHBIRDS\", matched literally and case-sensitively — not a museum name. culture: term, often plural or qualified (\"Aztecs\", \"Plains Indian\"). period: an indexed date term — commonly a decade (\"1940s\", \"1860s\"), but year ranges (\"500-1500\"), century terms (\"21st century\"), and BCE forms (\"-2500\", \"BCE 1000s\") are indexed too. medium: object type, usually plural (\"Paintings\", \"Aircraft\"). topic: subject term (\"Quilts\", \"Aviation\"). Smithsonian uses a controlled vocabulary — for museum (unit_code), culture, period (date), and topic, call smithsonian_list_terms to find exact terms; medium (object_type) is not enumerable there, so harvest it from smithsonian_search_objects results. Every mode matches its value exactly and case-sensitively, and for medium that split is load-bearing: casing variants are indexed as SEPARATE categories, each reporting its own total_count (\"button\" and \"Button\" are different categories, and neither casing is reliably the larger), so browse the variants of a harvested value rather than assuming one covers the concept."
    • Changedsmithsonian_search_objects2 fields changed
      • changedInput schema / properties / filters / properties / object_type / description
        Previous value: -"Object type term from Smithsonian's controlled vocabulary — commonly plural (e.g. \"Paintings\", \"Photographs\", \"Aircraft\"). Singular everyday forms like \"Painting\" usually return nothing. This field is not enumerable via smithsonian_list_terms; harvest valid values from the object_type field in smithsonian_search_objects results."New value: +"Object type term from Smithsonian's controlled vocabulary — commonly plural (e.g. \"Paintings\", \"Photographs\", \"Aircraft\"). Singular everyday forms like \"Painting\" usually return nothing. This field is not enumerable via smithsonian_list_terms; harvest valid values from the object_type field in smithsonian_search_objects results. Matched exactly and case-sensitively, and casing variants are indexed as SEPARATE categories — \"button\" and \"Button\" each hold their own records, and neither casing is reliably the larger — so probe a harvested value's other casings rather than assuming one covers the concept."
      • changedOutput schema / properties / objects / items / properties / object_type / description
        Previous value: -"Object type term (e.g. \"Aircraft\", \"Paintings\", \"Photographs\")."New value: +"Object type term (e.g. \"Aircraft\", \"Paintings\", \"Photographs\"). Harvest it here to filter a later search, but it is case-sensitive and casing variants are separate categories upstream — this row carries one casing of the concept, not all of it."
  4. 4 tool updates
    • Changedsmithsonian_browse_category4 fields changed
      • changedInput schema / properties / mode / description
        Previous value: -"Browse dimension: \"museum\" (by unit code), \"culture\" (by culture term), \"period\" (by indexed date term like \"1940s\" or \"500-1500\"), \"medium\" (by object type like \"Paintings\")."New value: +"Browse dimension: \"museum\" (by unit code), \"culture\" (by culture term), \"period\" (by indexed date term like \"1940s\" or \"500-1500\"), \"medium\" (by object type like \"Paintings\"), \"topic\" (by subject term like \"Quilts\")."
      • changedInput schema / properties / mode / enum
        Previous value: -[
        -  "museum",
        -  "culture",
        -  "period",
        -  "medium"
        -]New value: +[
        +  "museum",
        +  "culture",
        +  "period",
        +  "medium",
        +  "topic"
        +]
      • changedInput schema / properties / value / description
        Previous value: -"Category value appropriate to the mode. museum: a unit code like \"NASM\", \"SAAM\", or \"NMNHBIRDS\", matched literally and case-sensitively — not a museum name. culture: term, often plural or qualified (\"Aztecs\", \"Plains Indian\"). period: an indexed date term — commonly a decade (\"1940s\", \"1860s\"), but year ranges (\"500-1500\"), century terms (\"21st century\"), and BCE forms (\"-2500\", \"BCE 1000s\") are indexed too. medium: object type, usually plural (\"Paintings\", \"Aircraft\"). Smithsonian uses a controlled vocabulary — for museum (unit_code), culture, and period (date), call smithsonian_list_terms to find exact terms; medium (object_type) is not enumerable there, so harvest it from smithsonian_search_objects results."New value: +"Category value appropriate to the mode. museum: a unit code like \"NASM\", \"SAAM\", or \"NMNHBIRDS\", matched literally and case-sensitively — not a museum name. culture: term, often plural or qualified (\"Aztecs\", \"Plains Indian\"). period: an indexed date term — commonly a decade (\"1940s\", \"1860s\"), but year ranges (\"500-1500\"), century terms (\"21st century\"), and BCE forms (\"-2500\", \"BCE 1000s\") are indexed too. medium: object type, usually plural (\"Paintings\", \"Aircraft\"). topic: subject term (\"Quilts\", \"Aviation\"). Smithsonian uses a controlled vocabulary — for museum (unit_code), culture, period (date), and topic, call smithsonian_list_terms to find exact terms; medium (object_type) is not enumerable there, so harvest it from smithsonian_search_objects results."
      • changedOutput schema / properties / mode / description
        Previous value: -"Browse dimension used for this request (one of \"museum\", \"culture\", \"period\", \"medium\")."New value: +"Browse dimension used for this request (one of \"museum\", \"culture\", \"period\", \"medium\", \"topic\")."
    • Changedsmithsonian_find_related2 fields changed
      • addedOutput schema / properties / signals / items / properties / search_continuation / properties / filters / properties / name
        Added value: +{
        +  "description": "smithsonian_search_objects filters.name value.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / signals / items / properties / search_continuation / properties / filters / properties / topic
        Added value: +{
        +  "description": "smithsonian_search_objects filters.topic value.",
        +  "type": "string"
        +}
    • Changedsmithsonian_list_terms2 fields changed
      • changedInput schema / properties / field / description
        Previous value: -"Indexed field to enumerate. Choices: unit_code (museum codes like \"NASM\"), culture (e.g. \"Aztecs\"), place (geographic terms), date (decade/era values like \"1920s\"), online_media_type (media formats like \"Images\", \"3D Models\")."New value: +"Indexed field to enumerate. Choices: unit_code (museum codes like \"NASM\"), culture (e.g. \"Aztecs\"), place (geographic terms), date (decade/era values like \"1920s\"), online_media_type (media formats like \"Images\", \"3D Models\"), topic (subject terms like \"Quilts\" — 133k terms, so pair it with contains)."
      • changedInput schema / properties / field / enum
        Previous value: -[
        -  "unit_code",
        -  "culture",
        -  "place",
        -  "date",
        -  "online_media_type"
        -]New value: +[
        +  "unit_code",
        +  "culture",
        +  "place",
        +  "date",
        +  "online_media_type",
        +  "topic"
        +]
    • Changedsmithsonian_search_objects2 fields changed
      • addedInput schema / properties / filters / properties / name
        Added value: +{
        +  "description": "Indexed named party — maker, collector, donor, issuing authority, or any other role the catalog records. Written surname-first (e.g. \"Warhol, Andy\"). This field is not enumerable via smithsonian_list_terms. A smithsonian_find_related name signal carries the indexed form verbatim and is the reliable source; smithsonian_get_object's makers[] is the catalog's free-text form of the same parties and is often written differently (\"Major J. A. L. Möller (Jacob A.L. Möller/Monty Möller), Non-Indian, 1883-1957\" for the indexed \"Möller, Major J. A. L.\"), so treat it as a starting guess.",
        +  "type": "string"
        +}
      • addedInput schema / properties / filters / properties / topic
        Added value: +{
        +  "description": "Subject term from the controlled vocabulary (e.g. \"Quilts\", \"Aviation\"). Matches the topics[] values smithsonian_get_object returns, and is a hard constraint — topic \"Quilts\" matches 1,134 objects where the same word as free text matches 2,677. The full set is enumerable via smithsonian_list_terms (field \"topic\").",
        +  "type": "string"
        +}
  5. 5 tool updates
    • Changedsmithsonian_browse_category3 fields changed
      • changedInput schema / properties / mode / description
        Previous value: -"Browse dimension: \"museum\" (by unit code), \"culture\" (by culture term), \"period\" (by decade like \"1940s\"), \"medium\" (by object type like \"Paintings\")."New value: +"Browse dimension: \"museum\" (by unit code), \"culture\" (by culture term), \"period\" (by indexed date term like \"1940s\" or \"500-1500\"), \"medium\" (by object type like \"Paintings\")."
      • changedInput schema / properties / value / description
        Previous value: -"Category value appropriate to the mode. museum: a unit code like \"NASM\", \"SAAM\", or \"NMNHBIRDS\", matched literally and case-sensitively — not a museum name. culture: term, often plural or qualified (\"Aztecs\", \"Plains Indian\"). period: a decade in \"NNNNs\" form (\"1940s\", \"1860s\"), required for that mode. medium: object type, usually plural (\"Paintings\", \"Aircraft\"). Smithsonian uses a controlled vocabulary — for museum (unit_code), culture, and period (date), call smithsonian_list_terms to find exact terms; medium (object_type) is not enumerable there, so harvest it from smithsonian_search_objects results."New value: +"Category value appropriate to the mode. museum: a unit code like \"NASM\", \"SAAM\", or \"NMNHBIRDS\", matched literally and case-sensitively — not a museum name. culture: term, often plural or qualified (\"Aztecs\", \"Plains Indian\"). period: an indexed date term — commonly a decade (\"1940s\", \"1860s\"), but year ranges (\"500-1500\"), century terms (\"21st century\"), and BCE forms (\"-2500\", \"BCE 1000s\") are indexed too. medium: object type, usually plural (\"Paintings\", \"Aircraft\"). Smithsonian uses a controlled vocabulary — for museum (unit_code), culture, and period (date), call smithsonian_list_terms to find exact terms; medium (object_type) is not enumerable there, so harvest it from smithsonian_search_objects results."
      • changedOutput schema / properties / sample_objects / items / properties / is_cc0 / description
        Previous value: -"True when the object is CC0 open access."New value: +"True when the object metadata is CC0 (open access). The Smithsonian Open Access corpus is CC0 throughout, so this flag rarely varies and cannot gate an image download — read thumbnail_url for that."
    • Changedsmithsonian_find_related3 fields changed
      • changedOutput schema / properties / related / items / properties / is_cc0 / description
        Previous value: -"True when the object is CC0 open access."New value: +"True when the object metadata is CC0 (open access). The Smithsonian Open Access corpus is CC0 throughout, so this flag rarely varies and cannot gate an image download — read thumbnail_url for that."
      • addedOutput schema / properties / signals / items / properties / search_continuation / properties / filters / properties / date
        Added value: +{
        +  "description": "smithsonian_search_objects filters.date value.",
        +  "type": "string"
        +}
      • removedOutput schema / properties / signals / items / properties / search_continuation / properties / filters / properties / date_decade
        Removed value: -{
        -  "description": "smithsonian_search_objects filters.date_decade value.",
        -  "type": "string"
        -}
    • Changedsmithsonian_get_media2 fields changed
      • changedOutput schema / properties / images / items / properties / is_cc0 / description
        Previous value: -"True when this specific image is CC0 (may differ from the object-level flag)."New value: +"True when this specific image is CC0 (may differ from the object-level flag). Always true on returned images — non-CC0 images are filtered out before the response."
      • changedOutput schema / properties / is_cc0 / description
        Previous value: -"True when the object-level metadata is CC0."New value: +"True when the object-level metadata is CC0. The Open Access corpus is CC0 throughout, so this rarely varies; the per-image is_cc0 flag is what gates delivery."
    • Changedsmithsonian_get_object1 field changed
      • changedOutput schema / properties / is_cc0 / description
        Previous value: -"True when the object metadata is CC0 (open access). Call smithsonian_get_media to get images."New value: +"True when the object metadata is CC0 (open access). The Smithsonian Open Access corpus is CC0 throughout, so this flag rarely varies — read media_summary.has_cc0_images to predict whether smithsonian_get_media returns images."
    • Changedsmithsonian_search_objects5 fields changed
      • changedInput schema / properties / filters / properties / cc0_only / description
        Previous value: -"When true, restrict to CC0 open-access objects. Useful before calling smithsonian_get_media."New value: +"When true, restrict to records that have CC0-licensed media attached (the Lucene term media_usage:CC0). This selects on media presence, not license status — the roughly 9.2M records it excludes are CC0 too, they simply have nothing digitized. Read has_media on each result to decide whether smithsonian_get_media will return anything."
      • addedInput schema / properties / filters / properties / date
        Added value: +{
        +  "description": "Indexed date term. Decades (\"1920s\", \"1960s\") are the most common form, but the vocabulary also carries year ranges (\"500-1500\"), century terms (\"21st century\"), and BCE forms (\"-2500\", \"BCE 1000s\"). The value must be an exact term — the full set is enumerable via smithsonian_list_terms (field \"date\").",
        +  "type": "string"
        +}
      • removedInput schema / properties / filters / properties / date_decade
        Removed value: -{
        -  "description": "Decade filter (e.g. \"1920s\", \"1960s\"). Must match the \"NNNNs\" format exactly. Indexed decades are enumerable via smithsonian_list_terms (field \"date\").",
        -  "pattern": "^\\d{4}s$",
        -  "type": "string"
        -}
      • changedOutput schema / properties / objects / items / properties / date / description
        Previous value: -"Decade-level date the catalog indexes for the object (e.g. \"1960s\"). Sparse — omitted when the record has no indexed date."New value: +"Indexed date term for the object — commonly a decade (\"1960s\"), but the vocabulary also carries year ranges (\"500-1500\"), century terms (\"21st century\"), and BCE forms (\"-2500\", \"BCE 1000s\"). Sparse — omitted when the record has no indexed date."
      • changedOutput schema / properties / objects / items / properties / is_cc0 / description
        Previous value: -"True when the object metadata is CC0 (open access). Use smithsonian_get_media for CC0 image downloads."New value: +"True when the object metadata is CC0 (open access). The Smithsonian Open Access corpus is CC0 throughout, so this flag rarely varies and cannot gate an image download — read has_media for that."
  6. 1 tool update
    • Changedsmithsonian_list_terms2 fields changed
      • changedInput schema / properties / contains / description
        Previous value: -"Case-insensitive substring filter on the term vocabulary — resolve a filter value (e.g. \"greek\") to its exact controlled-vocabulary term(s)."New value: +"Case-insensitive substring filter on the term vocabulary — resolve a filter value (e.g. \"greek\") to its exact controlled-vocabulary term(s). For unit_code the substring also matches each code's museum name, so \"National Air and Space\" resolves to \"NASM\"."
      • addedOutput schema / properties / labels
        Added value: +{
        +  "additionalProperties": {
        +    "type": "string"
        +  },
        +  "description": "Museum name for each unit_code on this page that has one — present only when field is \"unit_code\". A few rarely-indexed archive sub-unit codes have no mapped name and are absent from this map; their term is still returned in terms.",
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
  7. 8 tool updates
    • Addedsmithsonian_browse_category
    • Removedsmithsonian_explore
    • Changedsmithsonian_find_related8 fields changed
      • changedInput schema / properties / id / description
        Previous value: -"record_id of the anchor object (e.g. \"nasm_A19670093000\") from smithsonian_search or smithsonian_get_object."New value: +"record_id of the anchor object (e.g. \"nasm_A19670093000\") from smithsonian_search_objects or smithsonian_get_object."
      • changedOutput schema / properties / signals / description
        Previous value: -"Per-signal breakdown of every fan-out that returned. Use search_continuation with smithsonian_search to retrieve a signal's matches past this tool's 5000-per-signal reach. A signal whose upstream call failed is omitted."New value: +"Per-signal breakdown of every fan-out that returned. Use search_continuation with smithsonian_search_objects to retrieve a signal's matches past this tool's 5000-per-signal reach. A signal whose upstream call failed is omitted."
      • changedOutput schema / properties / signals / items / properties / search_continuation / description
        Previous value: -"Exact smithsonian_search input that reproduces this signal's full match set, at any depth."New value: +"Exact smithsonian_search_objects input that reproduces this signal's full match set, at any depth."
      • changedOutput schema / properties / signals / items / properties / search_continuation / properties / filters / description
        Previous value: -"Pass verbatim as smithsonian_search's filters. Omitted when the signal's constraint is already carried entirely by query."New value: +"Pass verbatim as smithsonian_search_objects's filters. Omitted when the signal's constraint is already carried entirely by query."
      • changedOutput schema / properties / signals / items / properties / search_continuation / properties / filters / properties / culture / description
        Previous value: -"smithsonian_search filters.culture value."New value: +"smithsonian_search_objects filters.culture value."
      • changedOutput schema / properties / signals / items / properties / search_continuation / properties / filters / properties / date_decade / description
        Previous value: -"smithsonian_search filters.date_decade value."New value: +"smithsonian_search_objects filters.date_decade value."
      • changedOutput schema / properties / signals / items / properties / search_continuation / properties / filters / properties / object_type / description
        Previous value: -"smithsonian_search filters.object_type value."New value: +"smithsonian_search_objects filters.object_type value."
      • changedOutput schema / properties / signals / items / properties / search_continuation / properties / query / description
        Previous value: -"Pass verbatim as smithsonian_search's query. Empty when the signal is expressed entirely through filters."New value: +"Pass verbatim as smithsonian_search_objects's query. Empty when the signal is expressed entirely through filters."
    • Changedsmithsonian_get_media1 field changed
      • changedInput schema / properties / id / description
        Previous value: -"record_id of the object (e.g. \"nasm_A19670093000\") from smithsonian_search or smithsonian_get_object."New value: +"record_id of the object (e.g. \"nasm_A19670093000\") from smithsonian_search_objects or smithsonian_get_object."
    • Changedsmithsonian_get_object1 field changed
      • changedInput schema / properties / id / description
        Previous value: -"Object record_id from smithsonian_search results (e.g. \"nasm_A19670093000\")."New value: +"Object record_id from smithsonian_search_objects results (e.g. \"nasm_A19670093000\")."
    • Changedsmithsonian_list_terms1 field changed
      • changedOutput schema / properties / terms / items / description
        Previous value: -"A term value — pass directly as the filter value in smithsonian_search or smithsonian_explore."New value: +"A term value — pass directly as the filter value in smithsonian_search_objects or smithsonian_browse_category."
    • Removedsmithsonian_search
    • Addedsmithsonian_search_objects
  8. 4 tool updates
    • Changedsmithsonian_explore5 fields changed
      • addedInput schema / properties / start
        Added value: +{
        +  "default": 0,
        +  "description": "Pagination offset — 0-indexed. Page contiguously with start = page × rows.",
        +  "maximum": 9007199254740991,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedOutput schema / properties / notice
        Added value: +{
        +  "description": "Guidance naming the input that retrieves the objects this page omitted.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / sample_objects / description
        Previous value: -"The first page of objects matching the category, in upstream order."New value: +"The requested page of objects matching the category, in upstream order. Empty when start is past the end of the category."
      • changedOutput schema / properties / sample_objects / items / description
        Previous value: -"A sample object from the first page of category matches."New value: +"A sample object from the requested page of category matches."
      • changedOutput schema / properties / truncated / description
        Previous value: -"True when the sample was capped by the rows parameter."New value: +"True when matching objects remain past this page. False on a terminal or past-the-end page, where nothing is being withheld."
    • Changedsmithsonian_find_related4 fields changed
      • addedOutput schema / properties / notice
        Added value: +{
        +  "description": "Guidance naming the inputs that retrieve the related objects this page omitted — start for the next page, signals[].search_continuation for a signal past this tool's reach.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / signals
        Added value: +{
        +  "description": "Per-signal breakdown of every fan-out that returned. Use search_continuation with smithsonian_search to retrieve a signal's matches past this tool's 5000-per-signal reach. A signal whose upstream call failed is omitted.",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "One fan-out signal with its true size and its retrieval path.",
        +    "properties": {
        +      "row_count": {
        +        "description": "True upstream match count for this signal, uncapped — it can exceed the 5000-per-signal depth this tool's own paging reaches.",
        +        "type": "number"
        +      },
        +      "search_continuation": {
        +        "additionalProperties": false,
        +        "description": "Exact smithsonian_search input that reproduces this signal's full match set, at any depth.",
        +        "properties": {
        +          "filters": {
        +            "additionalProperties": false,
        +            "description": "Pass verbatim as smithsonian_search's filters. Omitted when the signal's constraint is already carried entirely by query.",
        +            "properties": {
        +              "culture": {
        +                "description": "smithsonian_search filters.culture value.",
        +                "type": "string"
        +              },
        +              "date_decade": {
        +                "description": "smithsonian_search filters.date_decade value.",
        +                "type": "string"
        +              },
        +              "object_type": {
        +                "description": "smithsonian_search filters.object_type value.",
        +                "type": "string"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "query": {
        +            "description": "Pass verbatim as smithsonian_search's query. Empty when the signal is expressed entirely through filters.",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "query"
        +        ],
        +        "type": "object"
        +      },
        +      "signal": {
        +        "description": "Matches an entry in search_signals_used and in related[].similarity_signals.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "signal",
        +      "row_count",
        +      "search_continuation"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • changedOutput schema / properties / truncationCeiling / description
        Previous value: -"Upper bound on the related objects reachable by paging with start. Cross-signal overlaps are not subtracted, so it can overcount."New value: +"Upper bound on the related objects reachable by paging with start. Cross-signal overlaps are not subtracted, so it can overcount. Signals larger than this tool's per-signal reach are counted at that reach — see signals[].row_count for their true size."
      • changedOutput schema / required
        Previous value: -[
        -  "anchor",
        -  "related",
        -  "search_signals_used"
        -]New value: +[
        +  "anchor",
        +  "related",
        +  "search_signals_used",
        +  "signals"
        +]
    • Changedsmithsonian_list_terms2 fields changed
      • changedOutput schema / properties / notice / description
        Previous value: -"Guidance when a contains filter matched no terms — how to broaden or drop the filter."New value: +"Guidance naming the input that retrieves the terms this page omitted, or how to broaden a contains filter that matched nothing."
      • changedOutput schema / properties / truncated / description
        Previous value: -"True when the term list was capped by the rows parameter."New value: +"True when matching terms remain past this page. False on a terminal or past-the-end page, where nothing is being withheld."
    • Changedsmithsonian_search2 fields changed
      • addedOutput schema / properties / notice
        Added value: +{
        +  "description": "Guidance naming the input that retrieves the objects this page omitted.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / truncated / description
        Previous value: -"True when the result set was capped by the rows parameter."New value: +"True when matching objects remain past this page. False on a terminal or past-the-end page, where nothing is being withheld."
  9. 4 tool updates
    • Changedsmithsonian_explore2 fields changed
      • changedInput schema / properties / value / description
        Previous value: -"Category value appropriate to the mode. museum: a short unit code like \"NASM\" or \"SAAM\". culture: term, often plural or qualified (\"Aztecs\", \"Plains Indian\"). period: decade (\"1940s\", \"1860s\"). medium: object type, usually plural (\"Paintings\", \"Aircraft\"). Smithsonian uses a controlled vocabulary — for culture, place, or unit_code, call smithsonian_list_terms to find exact terms."New value: +"Category value appropriate to the mode. museum: a unit code like \"NASM\", \"SAAM\", or \"NMNHBIRDS\", matched literally and case-sensitively — not a museum name. culture: term, often plural or qualified (\"Aztecs\", \"Plains Indian\"). period: decade (\"1940s\", \"1860s\"). medium: object type, usually plural (\"Paintings\", \"Aircraft\"). Smithsonian uses a controlled vocabulary — for culture, place, or unit_code, call smithsonian_list_terms to find exact terms."
      • changedOutput schema / properties / museum_breakdown / items / properties / museum_name / description
        Previous value: -"Full name of the museum."New value: +"Full name of the museum. A few rarely-indexed archive sub-unit codes have no mapped name and fall back to the raw unit code."
    • Changedsmithsonian_find_related1 field changed
      • changedOutput schema / properties / related / items / properties / museum_name / description
        Previous value: -"Full museum name."New value: +"Full museum name. A few rarely-indexed archive sub-unit codes have no mapped name and fall back to the raw unit code."
    • Changedsmithsonian_get_object1 field changed
      • changedOutput schema / properties / museum_name / description
        Previous value: -"Full museum name."New value: +"Full museum name. A few rarely-indexed archive sub-unit codes have no mapped name and fall back to the raw unit code."
    • Changedsmithsonian_search3 fields changed
      • changedInput schema / properties / filters / properties / online_only / description
        Previous value: -"When true, restrict to objects that have any online media."New value: +"When true, restrict to records carrying an indexed online_media_type value. That vocabulary covers digitized surrogates — finding aids, catalog cards, scanned books, full text, electronic resources — alongside images, 3D models, and video, and the surrogate types often have no deliverable media attached, so a match can still report has_media: false. Read has_media on each result to decide whether smithsonian_get_media will return anything."
      • changedOutput schema / properties / objects / items / properties / has_media / description
        Previous value: -"True when the object has any digitized online media."New value: +"True when the object carries deliverable online media items. This is the signal smithsonian_get_media reads, so it — not the online_only filter — predicts whether that call returns anything."
      • changedOutput schema / properties / objects / items / properties / museum_name / description
        Previous value: -"Full museum name for the unit code."New value: +"Full museum name for the unit code. A few rarely-indexed archive sub-unit codes have no mapped name and fall back to the raw unit code."
  10. 3 tool updates
    • Changedsmithsonian_explore5 fields changed
      • changedInput schema / properties / mode / description
        Previous value: -"Browse dimension: \"museum\" (by unit code/name), \"culture\" (by culture term), \"period\" (by decade like \"1940s\"), \"medium\" (by object type like \"Paintings\")."New value: +"Browse dimension: \"museum\" (by unit code), \"culture\" (by culture term), \"period\" (by decade like \"1940s\"), \"medium\" (by object type like \"Paintings\")."
      • changedInput schema / properties / value / description
        Previous value: -"Category value appropriate to the mode. museum: unit code (\"NMNH\") or full name (\"National Museum of Natural History\"). culture: term, often plural or qualified (\"Aztecs\", \"Plains Indian\"). period: decade (\"1940s\", \"1860s\"). medium: object type, usually plural (\"Paintings\", \"Aircraft\"). Smithsonian uses a controlled vocabulary — for culture, place, or unit_code, call smithsonian_list_terms to find exact terms."New value: +"Category value appropriate to the mode. museum: a short unit code like \"NASM\" or \"SAAM\". culture: term, often plural or qualified (\"Aztecs\", \"Plains Indian\"). period: decade (\"1940s\", \"1860s\"). medium: object type, usually plural (\"Paintings\", \"Aircraft\"). Smithsonian uses a controlled vocabulary — for culture, place, or unit_code, call smithsonian_list_terms to find exact terms."
      • changedOutput schema / properties / museum_breakdown / items / properties / unit_code / description
        Previous value: -"Smithsonian unit code for this museum (e.g. \"NMNH\", \"SAAM\")."New value: +"Smithsonian unit code for this museum (e.g. \"NMNHPALEO\", \"SAAM\")."
      • changedOutput schema / properties / sample_objects / description
        Previous value: -"Representative objects from the category."New value: +"The first page of objects matching the category, in upstream order."
      • changedOutput schema / properties / sample_objects / items / description
        Previous value: -"A representative sample object from the category."New value: +"A sample object from the first page of category matches."
    • Changedsmithsonian_find_related2 fields changed
      • changedInput schema / properties / start / description
        Previous value: -"Pagination offset into the interleaved related-object sequence — 0-indexed. Page contiguously with start = page × limit: page N+1 continues where page N ended. Each contributing signal is reachable to a depth of 5000 objects (fetched in chunks upstream), so deep pages of a broad signal are retrievable. Near a page seam a small, bounded number of objects (up to the active-signal count) can shift by one page when a deeper page surfaces an object that ranks very differently across signals. Beyond 5000 matches for a signal, truncated stays true but deeper pages aren't reachable."New value: +"Pagination offset — 0-indexed. Page contiguously with start = page × limit; each signal is reachable to a depth of 5000 objects, beyond which truncated stays true but deeper pages aren't retrievable."
      • changedOutput schema / properties / truncationCeiling / description
        Previous value: -"Upper bound on the reachable related objects across the contributing signals — each signal’s upstream match count is capped at its per-signal reach before summing, so the ceiling never exceeds what paging with start can actually retrieve. Cross-signal overlaps are not subtracted."New value: +"Upper bound on the related objects reachable by paging with start. Cross-signal overlaps are not subtracted, so it can overcount."
    • Changedsmithsonian_search3 fields changed
      • addedInput schema / properties / filters / properties / date_decade / pattern
        Added value: +"^\\d{4}s$"
      • changedInput schema / properties / filters / properties / unit_code / description
        Previous value: -"Museum unit code (e.g. \"NASM\", \"NMNH\", \"SAAM\", \"NMAH\", \"NMAAHC\", \"NMAI\", \"NPG\", \"CHNDM\", \"SIL\"). The full set is enumerable via smithsonian_list_terms (field \"unit_code\")."New value: +"Museum unit code (e.g. \"NASM\", \"SAAM\", \"NMAH\", \"NMAAHC\", \"NMAI\", \"NPG\", \"CHNDM\", \"SIL\"); the National Museum of Natural History is indexed under discipline sub-units like \"NMNHBIRDS\" and \"NMNHPALEO\", not a bare \"NMNH\". The full set is enumerable via smithsonian_list_terms (field \"unit_code\")."
      • changedOutput schema / properties / objects / items / properties / unit_code / description
        Previous value: -"Museum unit code (e.g. \"NASM\", \"NMNH\", \"SAAM\"). Use as a filter in future searches."New value: +"Museum unit code (e.g. \"NASM\", \"SAAM\", \"NMNHBIRDS\"). Use as a filter in future searches."
  11. 1 tool update
    • Changedsmithsonian_find_related2 fields changed
      • changedInput schema / properties / start / description
        Previous value: -"Pagination offset into the interleaved related-object sequence — 0-indexed. Page contiguously with start = page × limit: page N+1 continues where page N ended, within the first 100 related objects per signal. Near a page seam a small, bounded number of objects (up to the active-signal count) can shift by one page when a deeper page surfaces an object that ranks very differently across signals. Beyond the cap, truncated stays true but deeper pages aren't reachable."New value: +"Pagination offset into the interleaved related-object sequence — 0-indexed. Page contiguously with start = page × limit: page N+1 continues where page N ended. Each contributing signal is reachable to a depth of 5000 objects (fetched in chunks upstream), so deep pages of a broad signal are retrievable. Near a page seam a small, bounded number of objects (up to the active-signal count) can shift by one page when a deeper page surfaces an object that ranks very differently across signals. Beyond 5000 matches for a signal, truncated stays true but deeper pages aren't reachable."
      • changedOutput schema / properties / truncationCeiling / description
        Previous value: -"Upper bound on total related objects across the contributing signals (sum of each fan-out signal’s upstream match count; cross-signal overlaps are not subtracted)."New value: +"Upper bound on the reachable related objects across the contributing signals — each signal’s upstream match count is capped at its per-signal reach before summing, so the ceiling never exceeds what paging with start can actually retrieve. Cross-signal overlaps are not subtracted."
  12. 1 tool update
    • Changedsmithsonian_list_terms3 fields changed
      • addedInput schema / properties / contains
        Added value: +{
        +  "description": "Case-insensitive substring filter on the term vocabulary — resolve a filter value (e.g. \"greek\") to its exact controlled-vocabulary term(s).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / notice
        Added value: +{
        +  "description": "Guidance when a contains filter matched no terms — how to broaden or drop the filter.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / truncationCeiling / description
        Previous value: -"Total distinct terms for the field (upper bound for omitted items)."New value: +"Distinct terms available for this query (the full vocabulary, or the contains-match count) — upper bound for omitted items."
  13. 1 tool update
    • Changedsmithsonian_find_related3 fields changed
      • addedInput schema / properties / start
        Added value: +{
        +  "default": 0,
        +  "description": "Pagination offset into the interleaved related-object sequence — 0-indexed. Page contiguously with start = page × limit: page N+1 continues where page N ended, within the first 100 related objects per signal. Near a page seam a small, bounded number of objects (up to the active-signal count) can shift by one page when a deeper page surfaces an object that ranks very differently across signals. Beyond the cap, truncated stays true but deeper pages aren't reachable.",
        +  "maximum": 9007199254740991,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • changedOutput schema / properties / truncated / description
        Previous value: -"True when the related list was capped by the limit parameter."New value: +"True when the related list is incomplete — either capped by the limit or more results exist upstream past the current page (advance start to retrieve them)."
      • addedOutput schema / properties / truncationCeiling
        Added value: +{
        +  "description": "Upper bound on total related objects across the contributing signals (sum of each fan-out signal’s upstream match count; cross-signal overlaps are not subtracted).",
        +  "type": "number"
        +}
  14. 1 tool update
    • Changedsmithsonian_search1 field changed
      • addedOutput schema / properties / objects / items / properties / date
        Added value: +{
        +  "description": "Decade-level date the catalog indexes for the object (e.g. \"1960s\"). Sparse — omitted when the record has no indexed date.",
        +  "type": "string"
        +}

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables searching and exploring millions of items from the Smithsonian Institution's collections including artifacts, artworks, specimens, photographs, and more, using the Smithsonian Open Access API.
    3
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables searching and retrieving detailed information about items from the Smithsonian Open Access collection, including metadata and images.
    10 npm
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Provides AI assistants with access to search, explore, and analyze over 3 million collection objects from the Smithsonian Institution's museums. Enables finding objects currently on exhibit, retrieving detailed metadata, high-resolution images, and 3D models from America's national museums.
    5
    57 npm
    10
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Federated, license-verified search across open-access museum collections — currently The Met, Cleveland, AIC, Wikimedia Commons, and Europeana, with more being added. Strict-default-deny rights gate accepts only CC0 / Public Domain Mark, returning reuse-safe artwork with citations in three styles.
    5
    53 npm
    14
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.