Skip to main content
Glama

met-museum-mcp-server

Search Met Collection

met_search_collections
Read-onlyIdempotent

Search the Metropolitan Museum of Art collection by keyword and optional filters. Returns the total match count and one page of matching object IDs, which met_get_object resolves to full records. Relevance is keyword-based, not semantic; department and geographic filters narrow results more than a longer query. Paging reaches only the first 10,000 matches of any search, so narrow a larger one with filters. The medium parameter takes an object classification as the Met spells it ("Paintings", "Sculpture"), not a material like "Oil on canvas". hasImages also includes copyrighted works; CC0 status is per object, from the isPublicDomain and hasCC0Image fields on met_get_object. isHighlight accepts true only. isOnView restricts results to works currently on display in a Met gallery.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
qYesKeyword query, matched across title, artist name, culture, medium, tags, and other text fields; matchField narrows the match to titles or tags. Broad terms return large ID sets. "*" matches every object, for a search narrowed by filters alone; paging still reaches only the first 10,000 matches. An accession number (e.g., "29.100.5") ranks its object first, with near-numbered objects after it — confirm the match from accessionNumber on met_get_object.
limitNoMaximum number of object IDs to return in this page. A page holds at most 500 IDs, the Met search maximum: a larger value, up to 10,000, reads a 500-ID page and the notice says so — continue from nextOffset. Paging reaches only the first 10,000 matches, so a page that would cross 10,000 is cut short there.
mediumNoFilter by object classification, case-sensitive and spelled as the Met spells it (e.g., "Paintings", "Drawings", "Prints", "Ceramics", "Sculpture", "Photographs", "Textiles") — "paintings" or "Painting" matches nothing. Maps to the classification field on the object, not the materials text, so a material description like "Oil on canvas" matches nothing either; met_get_object returns an object’s classification.
offsetNoZero-based index of the first match to return (default 0); pass the nextOffset from a previous response to continue paging. Only the first 10,000 matches are reachable, so an offset at or beyond 10,000, or at or beyond total, returns an empty page rather than an error. Matches with tied relevance can change order between requests, so an ID can occasionally repeat or be skipped at a page boundary.
dateEndNoLatest object date (year, inclusive). Negative integers for BCE. Requires dateBegin.
isOnViewNoWhen true, restricts results to objects currently on display in a Met gallery; false restricts them to objects not on view. The GalleryNumber field on the met_get_object record identifies the specific gallery.
dateBeginNoEarliest object date (year, inclusive). Negative integers for BCE (e.g., -500 for 500 BCE). Requires dateEnd.
hasImagesNoWhen true, restricts results to objects that have at least one associated image, including copyrighted works whose images cannot be reproduced; false restricts them to objects with none. For freely reusable CC0 images, confirm per object from the isPublicDomain and hasCC0Image fields on met_get_object.
matchFieldNoRestrict the keyword match to one field: "title" matches object titles only, "tags" matches subject tags only. Omit it to match across all text fields. Combines with every filter. Has no effect when q is "*".
geoLocationNoFilter by geographic origin: one country, region, or city, as a one-element array (e.g., ["France"]). The value is matched broadly against geography fields and artist nationality. Works best with the Egyptian Art, Greek and Roman Art, and similar departments that have well-populated geography fields.
isHighlightNoOpt-in filter, true only — omit it rather than passing false, which the search ignores. Selects objects the Met has designated as highlights — major works central to the collection.
departmentIdNoRestrict results to one curatorial department. Valid IDs come from met_list_departments — the Met exposes a sparse set (roughly 1–21, with gaps); an unrecognized ID is rejected with an invalid_department error rather than silently widening the search. Can be combined with other filters. The Met searches 7 (The Cloisters) and 17 (Medieval Art) as one combined result set: for either, objectIDs keeps only the requested department's matches while total and paging count both, so a page can hold fewer than limit IDs while more remain.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
errorNoPresent when the call failed. Absent on success.
totalNoTotal number of objects in the Met collection matching the search. Can exceed 10,000, the most that paging reaches.
noticeNoPresent when total is 0, when total exceeds 10,000, when a limit above 500 was read as a 500-ID page with matches still remaining, or when departmentId is 7 or 17; several apply as one string. For a limit above 500 it says the page was read with limit 500 and to continue from nextOffset. With total 0 it says whether the keyword matches nothing or the filters removed every match, naming the filters to correct or drop. Above 10,000 it states that only the first 10,000 matches are reachable by paging, and that filters or a more specific keyword bring the rest into reach. For departmentId 7 or 17 it states that total counts both departments and a page can hold fewer than limit IDs, or that the department filter could not be applied to this page.
offsetNoThe resolved offset this page was read from — the offset input after its default of 0. When it is nonzero and at or beyond the smaller of total and 10,000, the page is empty because the offset ran past what paging reaches, not because the search found nothing.
returnedNoCount of object IDs in this page.
objectIDsNoObject IDs for this page, up to `limit` results and never more than 500. For departmentId 7 or 17, only the requested department's matches among the positions this page read, so it can hold fewer than `limit`, or none, while more remain.
remainingNoCount of reachable matches after this page: the smaller of total and 10,000, minus (offset + the positions this page read), floored at 0 — positions read as described under truncated. An empty page reports 0. 0 means no further page exists.
truncatedNoTrue when reachable matches remain after this page (offset + the positions this page read < the smaller of total and 10,000); false when this page is the last one paging reaches. The positions read equal returned, except for departmentId 7 or 17, where they also count the matches the department filter left out. An empty page reports false: it ends paging even inside that window.
nextOffsetNoThe offset to pass on the next call to continue paging, or null when no further page is reachable (truncated is false): offset plus the positions this page read, which for departmentId 7 or 17 can exceed returned.
effectiveQueryNoThe search as applied: q and each filter set, as name=value pairs with JSON-encoded values in parameter order, without limit or offset.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changed
    • changedInput schema / properties / limit / description
      Previous value: -"Maximum number of object IDs to return in this page. Paging reaches only the first 10,000 matches, so a page that would cross 10,000 is cut short there."New value: +"Maximum number of object IDs to return in this page. A page holds at most 500 IDs, the Met search maximum: a larger value, up to 10,000, reads a 500-ID page and the notice says so — continue from nextOffset. Paging reaches only the first 10,000 matches, so a page that would cross 10,000 is cut short there."
    • changedInput schema / properties / limit / maximum
      Previous value: -500New value: +10000
    • changedOutput schema / properties / error / properties / data / properties / reason / description
      Previous value: -"Machine-readable failure mode. Declared by this tool: `invalid_date_range`: dateBegin or dateEnd is provided without the other, or dateBegin > dateEnd. `invalid_filter`: q is whitespace-only, or medium or geoLocation was supplied blank — an empty array, or an entry with no non-whitespace characters. `invalid_department`: departmentId is provided but is not one of the Met department IDs. `upstream_blocked`: The Met API's firewall refused the request with HTTP 403 — it blocks this server's address, not one endpoint. `upstream_unavailable`: The Met API answered HTTP 500, 502, 503, or 504 to the department lookup or the search until the retry ladder ran out — an outage on its side. `retry_deadline_exceeded`: The call's time budget ran out, retries and backoff included, before the Met API returned a successful response to the department lookup or the search. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `invalid_date_range`: dateBegin or dateEnd is provided without the other, or dateBegin > dateEnd. `invalid_filter`: q is whitespace-only, or medium or geoLocation was supplied blank — an empty array, or an entry with no non-whitespace characters. `invalid_department`: departmentId is provided but is not one of the Met department IDs. `upstream_blocked`: The Met API's firewall refused the request with HTTP 403 — it blocks this server's address, not one endpoint. `upstream_unavailable`: The Met API answered HTTP 500, 502, 503, or 504 to the department lookup or the search until the retry ladder ran out — an outage on its side. `upstream_rate_limited`: The Met API answered HTTP 429 to the department lookup or the search until the retry ladder ran out, or asked for a wait longer than the ladder or the call's time budget allows — it throttles this server's address, not one query. `retry_deadline_exceeded`: The call's time budget ran out, retries and backoff included, before the Met API returned a successful response to the department lookup or the search. Other values are possible when a failure originates below the handler."
    • changedOutput schema / properties / error / properties / data / properties / reason / examples
      Previous value: -[
      -  "invalid_date_range",
      -  "invalid_filter",
      -  "invalid_department",
      -  "upstream_blocked",
      -  "upstream_unavailable",
      -  "retry_deadline_exceeded"
      -]New value: +[
      +  "invalid_date_range",
      +  "invalid_filter",
      +  "invalid_department",
      +  "upstream_blocked",
      +  "upstream_unavailable",
      +  "upstream_rate_limited",
      +  "retry_deadline_exceeded"
      +]
    • changedOutput schema / properties / notice / description
      Previous value: -"Present when total is 0, when total exceeds 10,000, or when departmentId is 7 or 17; several apply as one string. With total 0 it says whether the keyword matches nothing or the filters removed every match, naming the filters to correct or drop. Above 10,000 it states that only the first 10,000 matches are reachable by paging, and that filters or a more specific keyword bring the rest into reach. For departmentId 7 or 17 it states that total counts both departments and a page can hold fewer than limit IDs, or that the department filter could not be applied to this page."New value: +"Present when total is 0, when total exceeds 10,000, when a limit above 500 was read as a 500-ID page with matches still remaining, or when departmentId is 7 or 17; several apply as one string. For a limit above 500 it says the page was read with limit 500 and to continue from nextOffset. With total 0 it says whether the keyword matches nothing or the filters removed every match, naming the filters to correct or drop. Above 10,000 it states that only the first 10,000 matches are reachable by paging, and that filters or a more specific keyword bring the rest into reach. For departmentId 7 or 17 it states that total counts both departments and a page can hold fewer than limit IDs, or that the department filter could not be applied to this page."
    • changedOutput schema / properties / objectIDs / description
      Previous value: -"Object IDs for this page, up to `limit` results. For departmentId 7 or 17, only the requested department's matches among the positions this page read, so it can hold fewer than `limit`, or none, while more remain."New value: +"Object IDs for this page, up to `limit` results and never more than 500. For departmentId 7 or 17, only the requested department's matches among the positions this page read, so it can hold fewer than `limit`, or none, while more remain."
  2. Changed13 schema fields changed
    • changedInput schema / properties / departmentId / description
      Previous value: -"Restrict results to one curatorial department. Valid IDs come from met_list_departments — the Met exposes a sparse set (roughly 1–21, with gaps); an unrecognized ID is rejected with an invalid_department error rather than silently widening the search. Can be combined with other filters."New value: +"Restrict results to one curatorial department. Valid IDs come from met_list_departments — the Met exposes a sparse set (roughly 1–21, with gaps); an unrecognized ID is rejected with an invalid_department error rather than silently widening the search. Can be combined with other filters. The Met searches 7 (The Cloisters) and 17 (Medieval Art) as one combined result set: for either, objectIDs keeps only the requested department's matches while total and paging count both, so a page can hold fewer than limit IDs while more remain."
    • addedInput schema / properties / matchField
      Added value: +{
      +  "description": "Restrict the keyword match to one field: \"title\" matches object titles only, \"tags\" matches subject tags only. Omit it to match across all text fields. Combines with every filter. Has no effect when q is \"*\".",
      +  "enum": [
      +    "title",
      +    "tags"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / offset / description
      Previous value: -"Zero-based index of the first match to return (default 0); pass the nextOffset from a previous response to continue paging. Only the first 10,000 matches are reachable, so an offset at or beyond 10,000, or at or beyond a nonzero total, returns an empty page rather than an error. Matches with tied relevance can change order between requests, so an ID can occasionally repeat or be skipped at a page boundary."New value: +"Zero-based index of the first match to return (default 0); pass the nextOffset from a previous response to continue paging. Only the first 10,000 matches are reachable, so an offset at or beyond 10,000, or at or beyond total, returns an empty page rather than an error. Matches with tied relevance can change order between requests, so an ID can occasionally repeat or be skipped at a page boundary."
    • changedInput schema / properties / q / description
      Previous value: -"Keyword query, matched across title, artist name, culture, medium, tags, and other text fields. Broad terms return large ID sets."New value: +"Keyword query, matched across title, artist name, culture, medium, tags, and other text fields; matchField narrows the match to titles or tags. Broad terms return large ID sets. \"*\" matches every object, for a search narrowed by filters alone; paging still reaches only the first 10,000 matches. An accession number (e.g., \"29.100.5\") ranks its object first, with near-numbered objects after it — confirm the match from accessionNumber on met_get_object."
    • addedOutput schema / properties / effectiveQuery
      Added value: +{
      +  "description": "The search as applied: q and each filter set, as name=value pairs with JSON-encoded values in parameter order, without limit or offset.",
      +  "type": "string"
      +}
    • changedOutput schema / properties / error / properties / data / properties / reason / description
      Previous value: -"Machine-readable failure mode. Declared by this tool: `no_results`: total is 0 — no object matches the keyword, or none of its matches survives the filters. `invalid_date_range`: dateBegin or dateEnd is provided without the other, or dateBegin > dateEnd. `invalid_filter`: q is whitespace-only, or medium or geoLocation was supplied blank — an empty array, or an entry with no non-whitespace characters. `invalid_department`: departmentId is provided but is not one of the Met department IDs. `upstream_blocked`: The Met API's firewall refused the request with HTTP 403 — it blocks this server's address, not one endpoint. `retry_deadline_exceeded`: The call's time budget ran out, retries and backoff included, before the Met API returned a successful response to the department lookup or the search. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `invalid_date_range`: dateBegin or dateEnd is provided without the other, or dateBegin > dateEnd. `invalid_filter`: q is whitespace-only, or medium or geoLocation was supplied blank — an empty array, or an entry with no non-whitespace characters. `invalid_department`: departmentId is provided but is not one of the Met department IDs. `upstream_blocked`: The Met API's firewall refused the request with HTTP 403 — it blocks this server's address, not one endpoint. `upstream_unavailable`: The Met API answered HTTP 500, 502, 503, or 504 to the department lookup or the search until the retry ladder ran out — an outage on its side. `retry_deadline_exceeded`: The call's time budget ran out, retries and backoff included, before the Met API returned a successful response to the department lookup or the search. Other values are possible when a failure originates below the handler."
    • changedOutput schema / properties / error / properties / data / properties / reason / examples
      Previous value: -[
      -  "no_results",
      -  "invalid_date_range",
      -  "invalid_filter",
      -  "invalid_department",
      -  "upstream_blocked",
      -  "retry_deadline_exceeded"
      -]New value: +[
      +  "invalid_date_range",
      +  "invalid_filter",
      +  "invalid_department",
      +  "upstream_blocked",
      +  "upstream_unavailable",
      +  "retry_deadline_exceeded"
      +]
    • changedOutput schema / properties / nextOffset / description
      Previous value: -"The offset to pass on the next call to continue paging, or null when no further page is reachable (truncated is false)."New value: +"The offset to pass on the next call to continue paging, or null when no further page is reachable (truncated is false): offset plus the positions this page read, which for departmentId 7 or 17 can exceed returned."
    • changedOutput schema / properties / notice / description
      Previous value: -"Present only when total exceeds 10,000: states that only the first 10,000 matches are reachable by paging, and that filters or a more specific keyword bring the rest into reach."New value: +"Present when total is 0, when total exceeds 10,000, or when departmentId is 7 or 17; several apply as one string. With total 0 it says whether the keyword matches nothing or the filters removed every match, naming the filters to correct or drop. Above 10,000 it states that only the first 10,000 matches are reachable by paging, and that filters or a more specific keyword bring the rest into reach. For departmentId 7 or 17 it states that total counts both departments and a page can hold fewer than limit IDs, or that the department filter could not be applied to this page."
    • changedOutput schema / properties / objectIDs / description
      Previous value: -"Object IDs for this page, up to `limit` results."New value: +"Object IDs for this page, up to `limit` results. For departmentId 7 or 17, only the requested department's matches among the positions this page read, so it can hold fewer than `limit`, or none, while more remain."
    • changedOutput schema / properties / offset / description
      Previous value: -"The resolved offset this page was read from — the offset input after its default of 0. When it is at or beyond the smaller of total and 10,000, the page is empty because the offset ran past what paging reaches, not because the search found nothing."New value: +"The resolved offset this page was read from — the offset input after its default of 0. When it is nonzero and at or beyond the smaller of total and 10,000, the page is empty because the offset ran past what paging reaches, not because the search found nothing."
    • changedOutput schema / properties / remaining / description
      Previous value: -"Count of reachable matches after this page: the smaller of total and 10,000, minus (offset + returned), floored at 0. 0 means no further page exists."New value: +"Count of reachable matches after this page: the smaller of total and 10,000, minus (offset + the positions this page read), floored at 0 — positions read as described under truncated. An empty page reports 0. 0 means no further page exists."
    • changedOutput schema / properties / truncated / description
      Previous value: -"True when reachable matches remain after this page (offset + returned < the smaller of total and 10,000); false when this page is the last one paging reaches."New value: +"True when reachable matches remain after this page (offset + the positions this page read < the smaller of total and 10,000); false when this page is the last one paging reaches. The positions read equal returned, except for departmentId 7 or 17, where they also count the matches the department filter left out. An empty page reports false: it ends paging even inside that window."
  3. Changed2 schema fields changed
    • changedOutput schema / properties / error / properties / data / properties / reason / description
      Previous value: -"Machine-readable failure mode. Declared by this tool: `no_results`: total is 0 — no object matches the keyword, or none of its matches survives the filters. `invalid_date_range`: dateBegin or dateEnd is provided without the other, or dateBegin > dateEnd. `invalid_filter`: q is whitespace-only, or medium or geoLocation was supplied blank — an empty array, or an entry with no non-whitespace characters. `invalid_department`: departmentId is provided but is not one of the Met department IDs. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `no_results`: total is 0 — no object matches the keyword, or none of its matches survives the filters. `invalid_date_range`: dateBegin or dateEnd is provided without the other, or dateBegin > dateEnd. `invalid_filter`: q is whitespace-only, or medium or geoLocation was supplied blank — an empty array, or an entry with no non-whitespace characters. `invalid_department`: departmentId is provided but is not one of the Met department IDs. `upstream_blocked`: The Met API's firewall refused the request with HTTP 403 — it blocks this server's address, not one endpoint. `retry_deadline_exceeded`: The call's time budget ran out, retries and backoff included, before the Met API returned a successful response to the department lookup or the search. Other values are possible when a failure originates below the handler."
    • changedOutput schema / properties / error / properties / data / properties / reason / examples
      Previous value: -[
      -  "no_results",
      -  "invalid_date_range",
      -  "invalid_filter",
      -  "invalid_department"
      -]New value: +[
      +  "no_results",
      +  "invalid_date_range",
      +  "invalid_filter",
      +  "invalid_department",
      +  "upstream_blocked",
      +  "retry_deadline_exceeded"
      +]
  4. Changed21 schema fields changed
    • changedInput schema / properties / dateBegin / description
      Previous value: -"Earliest object date (year, inclusive). Negative integers for BCE (e.g., -500 for 500 BCE). Requires dateEnd. The range is a partial index like the other filters: it omits some objects whose own record dates them inside it."New value: +"Earliest object date (year, inclusive). Negative integers for BCE (e.g., -500 for 500 BCE). Requires dateEnd."
    • changedInput schema / properties / dateEnd / description
      Previous value: -"Latest object date (year, inclusive). Negative integers for BCE. Requires dateBegin. The range is a partial index like the other filters: it omits some objects whose own record dates them inside it."New value: +"Latest object date (year, inclusive). Negative integers for BCE. Requires dateBegin."
    • changedInput schema / properties / departmentId / description
      Previous value: -"Restrict results to one curatorial department. Valid IDs come from met_list_departments — the Met exposes a sparse set (roughly 1–21, with gaps); an unrecognized ID is rejected with an invalid_department error rather than silently returning no matches. A partial index like the other filters: it omits some objects whose own record names the department. Can be combined with other filters; combining with isPublicDomain works but returns far fewer results than expected."New value: +"Restrict results to one curatorial department. Valid IDs come from met_list_departments — the Met exposes a sparse set (roughly 1–21, with gaps); an unrecognized ID is rejected with an invalid_department error rather than silently widening the search. Can be combined with other filters."
    • changedInput schema / properties / geoLocation / description
      Previous value: -"Filter by geographic origin. Each value is matched broadly against geography fields and artist nationality. Multiple values are AND-combined — [\"France\", \"Egypt\"] returns objects associated with both, not either, so more values narrow the result set. A partial index like the other filters: it omits some objects whose own geography fields name the location. Works best with the Egyptian Art, Greek and Roman Art, and similar departments that have well-populated geography fields."New value: +"Filter by geographic origin: one country, region, or city, as a one-element array (e.g., [\"France\"]). The value is matched broadly against geography fields and artist nationality. Works best with the Egyptian Art, Greek and Roman Art, and similar departments that have well-populated geography fields."
    • addedInput schema / properties / geoLocation / maxItems
      Added value: +1
    • changedInput schema / properties / hasImages / description
      Previous value: -"When true, restricts results to objects that have at least one associated image, including copyrighted works whose images cannot be reproduced. A partial index like every filter here: it omits some objects that do have images, so absence from the results is not evidence an object has none. isPublicDomain is the nearest filter for freely reusable CC0 images — confirm per object from the isPublicDomain and hasCC0Image fields on met_get_object."New value: +"When true, restricts results to objects that have at least one associated image, including copyrighted works whose images cannot be reproduced; false restricts them to objects with none. For freely reusable CC0 images, confirm per object from the isPublicDomain and hasCC0Image fields on met_get_object."
    • changedInput schema / properties / isHighlight / description
      Previous value: -"Opt-in filter, true only — omit it rather than passing false, which the upstream index answers unsoundly. Selects objects the Met has designated as highlights — major works central to the collection. A partial index like isPublicDomain: it omits objects whose own record reports isHighlight true, so absence from the results is not evidence a work is not a highlight."New value: +"Opt-in filter, true only — omit it rather than passing false, which the search ignores. Selects objects the Met has designated as highlights — major works central to the collection."
    • changedInput schema / properties / isOnView / description
      Previous value: -"When true, restricts results to objects currently on display in a Met gallery. A partial index like the other filters — it omits some objects that are on view, so absence from the results is not evidence a work is off display. The GalleryNumber field on the met_get_object record identifies the specific gallery."New value: +"When true, restricts results to objects currently on display in a Met gallery; false restricts them to objects not on view. The GalleryNumber field on the met_get_object record identifies the specific gallery."
    • removedInput schema / properties / isPublicDomain
      Removed value: -{
      -  "const": true,
      -  "description": "Opt-in filter, true only — omit it rather than passing false, which the upstream index answers unsoundly. Selects objects released under CC0 open access, which return direct high-resolution image URLs in met_get_object. A partial index, not exhaustive coverage: it omits objects whose own record reports isPublicDomain true — object 436580 matches the query \"sunflower\" and is public domain, yet the filtered search does not return it — so absence from the results is not evidence an object lacks CC0 status. Combining it with departmentId narrows it further; when a search returns nothing, retry without the filter.",
      -  "type": "boolean"
      -}
    • changedInput schema / properties / limit / description
      Previous value: -"Maximum number of object IDs to return from the full result set. The Met search returns every match (up to tens of thousands); this caps how many IDs are returned."New value: +"Maximum number of object IDs to return in this page. Paging reaches only the first 10,000 matches, so a page that would cross 10,000 is cut short there."
    • changedInput schema / properties / medium / description
      Previous value: -"Filter by object classification (e.g., \"Paintings\", \"Drawings\", \"Prints\", \"Ceramics\", \"Sculpture\", \"Photographs\", \"Textiles\"). Maps to the classification field on the object, not the materials/medium text field — pass a classification category name, not a material description like \"Oil on canvas\". A partial index like the other filters: it omits some objects that carry the classification on their own record."New value: +"Filter by object classification, case-sensitive and spelled as the Met spells it (e.g., \"Paintings\", \"Drawings\", \"Prints\", \"Ceramics\", \"Sculpture\", \"Photographs\", \"Textiles\") — \"paintings\" or \"Painting\" matches nothing. Maps to the classification field on the object, not the materials text, so a material description like \"Oil on canvas\" matches nothing either; met_get_object returns an object’s classification."
    • changedInput schema / properties / offset / description
      Previous value: -"Zero-based index into the full result set to start from (default 0). The nextOffset from a previous response is the value to pass here for the next page; a broad query carries the same timeout risk on every page, so narrow it with filters if paging times out. An offset at or beyond total returns an empty page, not an error."New value: +"Zero-based index of the first match to return (default 0); pass the nextOffset from a previous response to continue paging. Only the first 10,000 matches are reachable, so an offset at or beyond 10,000, or at or beyond a nonzero total, returns an empty page rather than an error. Matches with tied relevance can change order between requests, so an ID can occasionally repeat or be skipped at a page boundary."
    • changedOutput schema / properties / error / properties / data / properties / reason / description
      Previous value: -"Machine-readable failure mode. Declared by this tool: `no_results`: total is 0 — the API returned null objectIDs for the query, or nothing the filters returned also matched the query. `invalid_date_range`: dateBegin or dateEnd is provided without the other, or dateBegin > dateEnd. `invalid_filter`: q is whitespace-only, or medium or geoLocation was supplied blank — an empty array, or an entry with no non-whitespace characters. `invalid_department`: departmentId is provided but is not one of the Met department IDs. `search_timeout`: The keyword+filter result set is too large to download within the request timeout — a broad query with few or no filters. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `no_results`: total is 0 — no object matches the keyword, or none of its matches survives the filters. `invalid_date_range`: dateBegin or dateEnd is provided without the other, or dateBegin > dateEnd. `invalid_filter`: q is whitespace-only, or medium or geoLocation was supplied blank — an empty array, or an entry with no non-whitespace characters. `invalid_department`: departmentId is provided but is not one of the Met department IDs. Other values are possible when a failure originates below the handler."
    • changedOutput schema / properties / error / properties / data / properties / reason / examples
      Previous value: -[
      -  "no_results",
      -  "invalid_date_range",
      -  "invalid_filter",
      -  "invalid_department",
      -  "search_timeout"
      -]New value: +[
      +  "no_results",
      +  "invalid_date_range",
      +  "invalid_filter",
      +  "invalid_department"
      +]
    • changedOutput schema / properties / nextOffset / description
      Previous value: -"The offset to pass on the next call to continue paging, or null when the result set is exhausted (truncated is false)."New value: +"The offset to pass on the next call to continue paging, or null when no further page is reachable (truncated is false)."
    • changedOutput schema / properties / notice / description
      Previous value: -"Present only when a filtered search could not be checked against the unfiltered query. That check is best-effort; when it does not complete the page is returned uncorrected and may contain objects unrelated to the keyword."New value: +"Present only when total exceeds 10,000: states that only the first 10,000 matches are reachable by paging, and that filters or a more specific keyword bring the rest into reach."
    • changedOutput schema / properties / offset / description
      Previous value: -"The resolved offset this page was read from — the offset input after its default of 0. Compare it against total: when offset is greater than or equal to total the page is empty because the offset ran past the end of the result set, not because the query has nothing left to return."New value: +"The resolved offset this page was read from — the offset input after its default of 0. When it is at or beyond the smaller of total and 10,000, the page is empty because the offset ran past what paging reaches, not because the search found nothing."
    • changedOutput schema / properties / remaining / description
      Previous value: -"Count of matching object IDs after this page: total − (offset + returned), floored at 0. 0 means this is the last page."New value: +"Count of reachable matches after this page: the smaller of total and 10,000, minus (offset + returned), floored at 0. 0 means no further page exists."
    • changedOutput schema / properties / returned / description
      Previous value: -"Count of object IDs in this response — may be less than `total` when the full result set was truncated by `limit`."New value: +"Count of object IDs in this page."
    • changedOutput schema / properties / total / description
      Previous value: -"Total number of matching objects in the Met collection (may far exceed the returned IDs)."New value: +"Total number of objects in the Met collection matching the search. Can exceed 10,000, the most that paging reaches."
    • changedOutput schema / properties / truncated / description
      Previous value: -"True when matching IDs remain beyond this page (offset + returned < total); false when this page is the last."New value: +"True when reachable matches remain after this page (offset + returned < the smaller of total and 10,000); false when this page is the last one paging reaches."
  5. Changed11 schema fields changed
    • changedInput schema / properties / dateBegin / description
      Previous value: -"Earliest object date (year, inclusive). Negative integers for BCE (e.g., -500 for 500 BCE). Requires dateEnd."New value: +"Earliest object date (year, inclusive). Negative integers for BCE (e.g., -500 for 500 BCE). Requires dateEnd. The range is a partial index like the other filters: it omits some objects whose own record dates them inside it."
    • changedInput schema / properties / dateEnd / description
      Previous value: -"Latest object date (year, inclusive). Negative integers for BCE. Requires dateBegin."New value: +"Latest object date (year, inclusive). Negative integers for BCE. Requires dateBegin. The range is a partial index like the other filters: it omits some objects whose own record dates them inside it."
    • changedInput schema / properties / departmentId / description
      Previous value: -"Restrict results to one curatorial department. Valid IDs come from met_list_departments — the Met exposes a sparse set (roughly 1–21, with gaps); an unrecognized ID is rejected with an invalid_department error rather than silently returning no matches. Can be combined with other filters; combining with isPublicDomain works but returns far fewer results than expected."New value: +"Restrict results to one curatorial department. Valid IDs come from met_list_departments — the Met exposes a sparse set (roughly 1–21, with gaps); an unrecognized ID is rejected with an invalid_department error rather than silently returning no matches. A partial index like the other filters: it omits some objects whose own record names the department. Can be combined with other filters; combining with isPublicDomain works but returns far fewer results than expected."
    • changedInput schema / properties / geoLocation / description
      Previous value: -"Filter by geographic origin. Each value is matched broadly against geography fields and artist nationality. Multiple values are AND-combined — [\"France\", \"Egypt\"] returns objects associated with both, not either, so more values narrow the result set. Works best with the Egyptian Art, Greek and Roman Art, and similar departments that have well-populated geography fields."New value: +"Filter by geographic origin. Each value is matched broadly against geography fields and artist nationality. Multiple values are AND-combined — [\"France\", \"Egypt\"] returns objects associated with both, not either, so more values narrow the result set. A partial index like the other filters: it omits some objects whose own geography fields name the location. Works best with the Egyptian Art, Greek and Roman Art, and similar departments that have well-populated geography fields."
    • changedInput schema / properties / hasImages / description
      Previous value: -"When true, restricts results to objects that have at least one associated image, including copyrighted works whose images cannot be reproduced. isPublicDomain is the nearest filter for freely reusable CC0 images, but it is partial — confirm per object from the isPublicDomain and hasCC0Image fields on met_get_object."New value: +"When true, restricts results to objects that have at least one associated image, including copyrighted works whose images cannot be reproduced. A partial index like every filter here: it omits some objects that do have images, so absence from the results is not evidence an object has none. isPublicDomain is the nearest filter for freely reusable CC0 images — confirm per object from the isPublicDomain and hasCC0Image fields on met_get_object."
    • changedInput schema / properties / isHighlight / description
      Previous value: -"Opt-in filter, true only — omit it rather than passing false, which the upstream index answers unsoundly. Selects objects the Met has designated as highlights — major works central to the collection. Like isPublicDomain its results are not a subset of the unfiltered search: it omits objects whose own record reports isHighlight true, and adds a few highlights that do not match the query."New value: +"Opt-in filter, true only — omit it rather than passing false, which the upstream index answers unsoundly. Selects objects the Met has designated as highlights — major works central to the collection. A partial index like isPublicDomain: it omits objects whose own record reports isHighlight true, so absence from the results is not evidence a work is not a highlight."
    • changedInput schema / properties / isOnView / description
      Previous value: -"When true, restricts results to objects currently on display in a Met gallery. The GalleryNumber field on the met_get_object record identifies the specific gallery."New value: +"When true, restricts results to objects currently on display in a Met gallery. A partial index like the other filters — it omits some objects that are on view, so absence from the results is not evidence a work is off display. The GalleryNumber field on the met_get_object record identifies the specific gallery."
    • changedInput schema / properties / isPublicDomain / description
      Previous value: -"Opt-in filter, true only — omit it rather than passing false, which the upstream index answers unsoundly. Selects objects released under CC0 open access, which return direct high-resolution image URLs in met_get_object. Its results are not a subset of the same search run without it: it omits objects whose own record reports isPublicDomain true, and adds a few CC0 objects that do not match the query at all — check each returned record against the query before presenting it. Combining it with departmentId narrows it further; when a search returns nothing, retry without the filter."New value: +"Opt-in filter, true only — omit it rather than passing false, which the upstream index answers unsoundly. Selects objects released under CC0 open access, which return direct high-resolution image URLs in met_get_object. A partial index, not exhaustive coverage: it omits objects whose own record reports isPublicDomain true — object 436580 matches the query \"sunflower\" and is public domain, yet the filtered search does not return it — so absence from the results is not evidence an object lacks CC0 status. Combining it with departmentId narrows it further; when a search returns nothing, retry without the filter."
    • changedInput schema / properties / medium / description
      Previous value: -"Filter by object classification (e.g., \"Paintings\", \"Drawings\", \"Prints\", \"Ceramics\", \"Sculpture\", \"Photographs\", \"Textiles\"). Maps to the classification field on the object, not the materials/medium text field — pass a classification category name, not a material description like \"Oil on canvas\"."New value: +"Filter by object classification (e.g., \"Paintings\", \"Drawings\", \"Prints\", \"Ceramics\", \"Sculpture\", \"Photographs\", \"Textiles\"). Maps to the classification field on the object, not the materials/medium text field — pass a classification category name, not a material description like \"Oil on canvas\". A partial index like the other filters: it omits some objects that carry the classification on their own record."
    • changedOutput schema / properties / error / properties / data / properties / reason / description
      Previous value: -"Machine-readable failure mode. Declared by this tool: `no_results`: total is 0 — the API returned null objectIDs for this query+filter combination. `invalid_date_range`: dateBegin or dateEnd is provided without the other, or dateBegin > dateEnd. `invalid_filter`: q is whitespace-only, or medium or geoLocation was supplied blank — an empty array, or an entry with no non-whitespace characters. `invalid_department`: departmentId is provided but is not one of the Met department IDs. `search_timeout`: The result set is too large to download within the request timeout — a broad, unfiltered query. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `no_results`: total is 0 — the API returned null objectIDs for the query, or nothing the filters returned also matched the query. `invalid_date_range`: dateBegin or dateEnd is provided without the other, or dateBegin > dateEnd. `invalid_filter`: q is whitespace-only, or medium or geoLocation was supplied blank — an empty array, or an entry with no non-whitespace characters. `invalid_department`: departmentId is provided but is not one of the Met department IDs. `search_timeout`: The keyword+filter result set is too large to download within the request timeout — a broad query with few or no filters. Other values are possible when a failure originates below the handler."
    • addedOutput schema / properties / notice
      Added value: +{
      +  "description": "Present only when a filtered search could not be checked against the unfiltered query. That check is best-effort; when it does not complete the page is returned uncorrected and may contain objects unrelated to the keyword.",
      +  "type": "string"
      +}
  6. Changed9 schema fields changed
    • changedInput schema / properties / hasImages / description
      Previous value: -"When true, restricts results to objects that have at least one associated image, including copyrighted works whose images cannot be reproduced. isPublicDomain is the filter for freely reusable CC0 images."New value: +"When true, restricts results to objects that have at least one associated image, including copyrighted works whose images cannot be reproduced. isPublicDomain is the nearest filter for freely reusable CC0 images, but it is partial — confirm per object from the isPublicDomain and hasCC0Image fields on met_get_object."
    • addedInput schema / properties / isHighlight / const
      Added value: +true
    • changedInput schema / properties / isHighlight / description
      Previous value: -"When true, restricts to objects the Met has designated as highlights — major works central to the collection."New value: +"Opt-in filter, true only — omit it rather than passing false, which the upstream index answers unsoundly. Selects objects the Met has designated as highlights — major works central to the collection. Like isPublicDomain its results are not a subset of the unfiltered search: it omits objects whose own record reports isHighlight true, and adds a few highlights that do not match the query."
    • addedInput schema / properties / isPublicDomain / const
      Added value: +true
    • changedInput schema / properties / isPublicDomain / description
      Previous value: -"When true, restricts results to objects released under CC0 open access — free to use without permission or attribution. These objects return direct high-resolution image URLs in met_get_object. Combining with departmentId works but returns far fewer results, since the search index covers only a subset of public-domain objects per department."New value: +"Opt-in filter, true only — omit it rather than passing false, which the upstream index answers unsoundly. Selects objects released under CC0 open access, which return direct high-resolution image URLs in met_get_object. Its results are not a subset of the same search run without it: it omits objects whose own record reports isPublicDomain true, and adds a few CC0 objects that do not match the query at all — check each returned record against the query before presenting it. Combining it with departmentId narrows it further; when a search returns nothing, retry without the filter."
    • changedOutput schema / anyOf
      Previous value: -[
      -  {
      -    "not": {
      -      "required": [
      -        "error"
      -      ]
      -    },
      -    "required": [
      -      "total",
      -      "objectIDs",
      -      "returned",
      -      "truncated",
      -      "remaining",
      -      "nextOffset"
      -    ]
      -  },
      -  {
      -    "required": [
      -      "error"
      -    ]
      -  }
      -]New value: +[
      +  {
      +    "not": {
      +      "required": [
      +        "error"
      +      ]
      +    },
      +    "required": [
      +      "total",
      +      "objectIDs",
      +      "returned",
      +      "truncated",
      +      "remaining",
      +      "nextOffset",
      +      "offset"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "error"
      +    ]
      +  }
      +]
    • changedOutput schema / properties / error / properties / data / properties / reason / description
      Previous value: -"Machine-readable failure mode. Declared by this tool: `no_results`: total is 0 — the API returned null objectIDs for this query+filter combination. `invalid_date_range`: dateBegin or dateEnd is provided without the other, or dateBegin > dateEnd. `invalid_department`: departmentId is provided but is not one of the Met department IDs. `search_timeout`: The result set is too large to download within the request timeout — a broad, unfiltered query. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `no_results`: total is 0 — the API returned null objectIDs for this query+filter combination. `invalid_date_range`: dateBegin or dateEnd is provided without the other, or dateBegin > dateEnd. `invalid_filter`: q is whitespace-only, or medium or geoLocation was supplied blank — an empty array, or an entry with no non-whitespace characters. `invalid_department`: departmentId is provided but is not one of the Met department IDs. `search_timeout`: The result set is too large to download within the request timeout — a broad, unfiltered query. Other values are possible when a failure originates below the handler."
    • changedOutput schema / properties / error / properties / data / properties / reason / examples
      Previous value: -[
      -  "no_results",
      -  "invalid_date_range",
      -  "invalid_department",
      -  "search_timeout"
      -]New value: +[
      +  "no_results",
      +  "invalid_date_range",
      +  "invalid_filter",
      +  "invalid_department",
      +  "search_timeout"
      +]
    • addedOutput schema / properties / offset
      Added value: +{
      +  "description": "The resolved offset this page was read from — the offset input after its default of 0. Compare it against total: when offset is greater than or equal to total the page is empty because the offset ran past the end of the result set, not because the query has nothing left to return.",
      +  "maximum": 9007199254740991,
      +  "minimum": -9007199254740991,
      +  "type": "integer"
      +}
  7. Changed7 schema 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": [
      +      "total",
      +      "objectIDs",
      +      "returned",
      +      "truncated",
      +      "remaining",
      +      "nextOffset"
      +    ]
      +  },
      +  {
      +    "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`: total is 0 — the API returned null objectIDs for this query+filter combination. `invalid_date_range`: dateBegin or dateEnd is provided without the other, or dateBegin > dateEnd. `invalid_department`: departmentId is provided but is not one of the Met department IDs. `search_timeout`: The result set is too large to download within the request timeout — a broad, unfiltered query. Other values are possible when a failure originates below the handler.",
      +          "examples": [
      +            "no_results",
      +            "invalid_date_range",
      +            "invalid_department",
      +            "search_timeout"
      +          ],
      +          "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"
      +}
    • changedOutput schema / properties / objectIDs / description
      Previous value: -"Object IDs for the first `limit` results."New value: +"Object IDs for this page, up to `limit` results."
    • removedOutput schema / required
      Removed value: -[
      -  "total",
      -  "objectIDs",
      -  "returned",
      -  "truncated",
      -  "remaining",
      -  "nextOffset"
      -]
  8. Changed12 schema fields changed
    • changedInput schema / properties / departmentId / description
      Previous value: -"Restrict results to one curatorial department. Call met_list_departments to get valid IDs — the Met exposes a sparse set (roughly 1–21, with gaps), and an unrecognized ID is rejected with an invalid_department error rather than silently returning no matches. Can be combined with other filters; combining with isPublicDomain works but returns far fewer results than expected — use isPublicDomain alone when CC0 coverage is the goal."New value: +"Restrict results to one curatorial department. Valid IDs come from met_list_departments — the Met exposes a sparse set (roughly 1–21, with gaps); an unrecognized ID is rejected with an invalid_department error rather than silently returning no matches. Can be combined with other filters; combining with isPublicDomain works but returns far fewer results than expected."
    • changedInput schema / properties / geoLocation / description
      Previous value: -"Filter by geographic origin. Each value is matched broadly against geography fields and artist nationality. Multiple values are AND-combined — [\"France\", \"Egypt\"] returns objects associated with both, not either; use a single value for broader results. Works best with the Egyptian Art, Greek and Roman Art, and similar departments that have well-populated geography fields."New value: +"Filter by geographic origin. Each value is matched broadly against geography fields and artist nationality. Multiple values are AND-combined — [\"France\", \"Egypt\"] returns objects associated with both, not either, so more values narrow the result set. Works best with the Egyptian Art, Greek and Roman Art, and similar departments that have well-populated geography fields."
    • changedInput schema / properties / hasImages / description
      Previous value: -"When true, restricts results to objects that have at least one associated image. For freely reusable CC0 images, use isPublicDomain instead — hasImages includes copyrighted works whose images cannot be reproduced."New value: +"When true, restricts results to objects that have at least one associated image, including copyrighted works whose images cannot be reproduced. isPublicDomain is the filter for freely reusable CC0 images."
    • changedInput schema / properties / isHighlight / description
      Previous value: -"When true, restricts to objects the Met has designated as highlights — major works central to the collection. Use to surface iconic pieces rather than browsing the full corpus."New value: +"When true, restricts to objects the Met has designated as highlights — major works central to the collection."
    • changedInput schema / properties / isOnView / description
      Previous value: -"When true, restricts results to objects currently on display in a Met gallery. The GalleryNumber field on the met_get_object record identifies the specific gallery. Combine with a keyword to answer \"what is on display right now?\" — pairs well with isHighlight for must-see works."New value: +"When true, restricts results to objects currently on display in a Met gallery. The GalleryNumber field on the met_get_object record identifies the specific gallery."
    • changedInput schema / properties / isPublicDomain / description
      Previous value: -"When true, restricts results to objects released under CC0 open access — free to use without permission or attribution. These objects return direct high-resolution image URLs in met_get_object. Can be combined with departmentId but severely restricts results (the search index only indexes a subset of public-domain objects per department); prefer using isPublicDomain alone and filtering by department from the returned object records."New value: +"When true, restricts results to objects released under CC0 open access — free to use without permission or attribution. These objects return direct high-resolution image URLs in met_get_object. Combining with departmentId works but returns far fewer results, since the search index covers only a subset of public-domain objects per department."
    • changedInput schema / properties / limit / description
      Previous value: -"Maximum number of object IDs to return from the full result set. The API returns all matches (up to tens of thousands) — this caps what is handed back. Chain the returned IDs to met_get_object in batches of up to 20."New value: +"Maximum number of object IDs to return from the full result set. The Met search returns every match (up to tens of thousands); this caps how many IDs are returned."
    • changedInput schema / properties / offset / description
      Previous value: -"Zero-based index into the full result set to start from (default 0). Paginate by passing the nextOffset returned by a previous call; each page re-runs the upstream search and applies the offset locally, so a broad query carries the same timeout risk on every page — narrow it with filters if paging times out. An offset at or beyond total returns an empty page, not an error."New value: +"Zero-based index into the full result set to start from (default 0). The nextOffset from a previous response is the value to pass here for the next page; a broad query carries the same timeout risk on every page, so narrow it with filters if paging times out. An offset at or beyond total returns an empty page, not an error."
    • changedInput schema / properties / q / description
      Previous value: -"Keyword query. Searched across title, artist name, culture, medium, tags, and other text fields. Use concise, specific terms — broad queries return large ID sets. Tip: departmentId and geoLocation sharpen results far more than a longer query string."New value: +"Keyword query, matched across title, artist name, culture, medium, tags, and other text fields. Broad terms return large ID sets."
    • changedOutput schema / properties / objectIDs / description
      Previous value: -"Object IDs for the first `limit` results. Pass to met_get_object (up to 20 at a time) to retrieve full records."New value: +"Object IDs for the first `limit` results."
    • changedOutput schema / properties / objectIDs / items / description
      Previous value: -"A Met object ID. Pass to met_get_object to retrieve the full record."New value: +"A Met object ID."
    • changedOutput schema / properties / truncated / description
      Previous value: -"True when matching IDs remain beyond this page (offset + returned < total). Pass nextOffset as offset to fetch the next page, increase limit, or refine filters to narrow results."New value: +"True when matching IDs remain beyond this page (offset + returned < total); false when this page is the last."
  9. Changed6 schema fields changed
    • changedInput schema / properties / departmentId / description
      Previous value: -"Restrict results to one curatorial department. Use met_list_departments to get valid IDs (1–21, not all integers are valid). Can be combined with other filters; combining with isPublicDomain works but returns far fewer results than expected — use isPublicDomain alone when CC0 coverage is the goal."New value: +"Restrict results to one curatorial department. Call met_list_departments to get valid IDs — the Met exposes a sparse set (roughly 1–21, with gaps), and an unrecognized ID is rejected with an invalid_department error rather than silently returning no matches. Can be combined with other filters; combining with isPublicDomain works but returns far fewer results than expected — use isPublicDomain alone when CC0 coverage is the goal."
    • addedInput schema / properties / offset
      Added value: +{
      +  "default": 0,
      +  "description": "Zero-based index into the full result set to start from (default 0). Paginate by passing the nextOffset returned by a previous call; each page re-runs the upstream search and applies the offset locally, so a broad query carries the same timeout risk on every page — narrow it with filters if paging times out. An offset at or beyond total returns an empty page, not an error.",
      +  "maximum": 9007199254740991,
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • addedOutput schema / properties / nextOffset
      Added value: +{
      +  "anyOf": [
      +    {
      +      "maximum": 9007199254740991,
      +      "minimum": -9007199254740991,
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "The offset to pass on the next call to continue paging, or null when the result set is exhausted (truncated is false)."
      +}
    • addedOutput schema / properties / remaining
      Added value: +{
      +  "description": "Count of matching object IDs after this page: total − (offset + returned), floored at 0. 0 means this is the last page.",
      +  "maximum": 9007199254740991,
      +  "minimum": -9007199254740991,
      +  "type": "integer"
      +}
    • changedOutput schema / properties / truncated / description
      Previous value: -"True when total > returned. Increase `limit`, refine filters, or add keywords to narrow results."New value: +"True when matching IDs remain beyond this page (offset + returned < total). Pass nextOffset as offset to fetch the next page, increase limit, or refine filters to narrow results."
    • changedOutput schema / required
      Previous value: -[
      -  "total",
      -  "objectIDs",
      -  "returned",
      -  "truncated"
      -]New value: +[
      +  "total",
      +  "objectIDs",
      +  "returned",
      +  "truncated",
      +  "remaining",
      +  "nextOffset"
      +]
  10. Added

TDQS

Score is being calculated.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.