met-museum-mcp-server
Ce que fait ce MCP
Searches The Metropolitan Museum of Art collection and retrieves detailed artwork metadata, provenance, measurements, and image links.
Outils
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['objectIDs'], 'properties': {'objectIDs': {'type': 'array', 'items': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'A Met object ID from met_search_collections or met_list_objects.', 'exclusiveMinimum': 0}, 'maxItems': 20, 'minItems': 1, 'description': 'One or more Met object IDs to fetch. Maximum 20 per call. IDs come from met_search_collections or met_list_objects. A repeated ID is fetched and returned once, at its first position. Partial failures are reported per ID rather than failing the whole batch.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['objects', 'failed']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['all_not_found', 'all_failed', 'upstream_blocked', 'retry_deadline_exceeded'], 'description': "Machine-readable failure mode. Declared by this tool: `all_not_found`: Every requested objectID returned a 404 â\x80\x94 all IDs are stale or invalid. `all_failed`: Every requested objectID failed due to network errors or API downtime. `upstream_blocked`: No object was fetched and the Met API's firewall refused requests with HTTP 403 â\x80\x94 it blocks this server's address, not one object. `retry_deadline_exceeded`: No object was fetched and every fetch ran out of the call's time budget, retries and backoff included â\x80\x94 an ID whose fetch would have started after the budget was spent counts too. Other values are possible when a failure originates below the handler."}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'failed': {'type': 'array', 'items': {'type': 'object', 'required': ['objectID', 'error'], 'properties': {'error': {'type': 'string', 'description': 'Error detail and suggested recovery action.'}, 'objectID': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Object ID that could not be fetched.'}}, 'description': 'A per-ID fetch failure.', 'additionalProperties': False}, 'description': 'Object IDs that failed to fetch with per-ID error context.'}, 'notice': {'type': 'string', 'description': 'How to retrieve the deferred records, with the budget applied. Present only when the batch byte budget deferred a record.'}, 'objects': {'type': 'array', 'items': {'type': 'object', 'required': ['objectID', 'title', 'isPublicDomain', 'hasCC0Image', 'primaryImage', 'primaryImageSmall', 'additionalImages', 'objectURL', 'department', 'objectName', 'classification', 'isHighlight', 'isTimelineWork', 'artistDisplayName', 'artistDisplayBio', 'artistNationality', 'artistBeginDate', 'artistEndDate', 'constituents', 'objectDate', 'objectBeginDate', 'objectEndDate', 'medium', 'dimensions', 'culture', 'period', 'dynasty', 'accessionNumber', 'creditLine', 'country', 'region', 'geography', 'measurements', 'tags', 'objectWikidata_URL', 'GalleryNumber'], 'properties': {'tags': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'required': ['term', 'AAT_URL', 'Wikidata_URL'], 'properties': {'term': {'type': 'string', 'description': 'Tag label (e.g., "Men", "Self-portraits", "Flowers").'}, 'AAT_URL': {'type': 'string', 'description': 'Getty Art & Architecture Thesaurus URL for the term.'}, 'Wikidata_URL': {'type': 'string', 'description': 'Wikidata entity URL for the term. Useful for enrichment.'}}, 'description': 'A controlled vocabulary tag applied to the object.', 'additionalProperties': False}}, {'type': 'null'}], 'description': 'Controlled vocabulary tags applied to the object. Null when no tags assigned.'}, 'title': {'type': 'string', 'description': 'Object title as catalogued.'}, 'medium': {'type': 'string', 'description': 'Materials and techniques (e.g., "Oil on canvas", "Bronze", "Limestone").'}, 'period': {'type': 'string', 'description': 'Historical period (e.g., "New Kingdom, Ramesside", "Meiji period"). Often empty.'}, 'region': {'type': 'string', 'description': 'Geographic region of origin. Often empty.'}, 'country': {'type': 'string', 'description': 'Country of origin. Often empty.'}, 'culture': {'type': 'string', 'description': 'Cultural origin when not attributed to an individual (e.g., "Japanese", "Roman"). Often empty for Western art with named artists.'}, 'dynasty': {'type': 'string', 'description': 'Dynasty for applicable cultures (e.g., "Dynasty 19"). Often empty.'}, 'objectID': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Unique Met object identifier.'}, 'geography': {'type': 'object', 'required': ['geographyType', 'city', 'state', 'county', 'subregion', 'locale', 'locus', 'excavation', 'river'], 'properties': {'city': {'type': 'string', 'description': 'City of origin or findspot (e.g., "Damascus", "Constantinople (?)", "Springfield"). The most widely populated field of this block outside the archaeological departments; empty when the Met records no city.'}, 'locus': {'type': 'string', 'description': 'Specific findspot within the locale (e.g., "burial chamber"). Excavated objects only.'}, 'river': {'type': 'string', 'description': 'Associated river. Empty on nearly every record.'}, 'state': {'type': 'string', 'description': 'State or province of origin (e.g., "Massachusetts"). Sparse, and concentrated in departments that catalogue a manufacturing place. Empty when the Met records none.'}, 'county': {'type': 'string', 'description': 'County of origin. Empty on nearly every record.'}, 'locale': {'type': 'string', 'description': 'Named place within the site (e.g., "Late Period cemetery, Tomb of Harkhebit"). Excavated objects only.'}, 'subregion': {'type': 'string', 'description': 'Sub-region or site within the region (e.g., "Saqqara", "Deir el-Bahri"). Commonly populated for archaeological departments, empty elsewhere.'}, 'excavation': {'type': 'string', 'description': 'Excavation that recovered the object (e.g., "MMA excavations, 1928-29"). Excavated objects only.'}, 'geographyType': {'type': 'string', 'description': 'How the object relates to the place (e.g., "From", "Original", "Probably originally from"). Empty when the Met records no findspot.'}}, 'description': 'Findspot detail beyond the top-level country and region, which are not repeated here. Every field is an empty string when the Met records nothing; population concentrates in the archaeological departments.', 'additionalProperties': False}, 'objectURL': {'type': 'string', 'description': 'Canonical metmuseum.org page URL for human follow-up.'}, 'creditLine': {'type': 'string', 'description': 'Provenance and gift/bequest attribution.'}, 'department': {'type': 'string', 'description': 'Curatorial department (e.g., "European Paintings", "Egyptian Art").'}, 'dimensions': {'type': 'string', 'description': 'Dimensions as a formatted string (e.g., "16 x 12 1/2 in. (40.6 x 31.8 cm)").'}, 'objectDate': {'type': 'string', 'description': 'Human-readable date string (e.g., "1887", "ca. 1295â\x80\x931294 B.C.", "1700â\x80\x931800").'}, 'objectName': {'type': 'string', 'description': 'Object type or classification name (e.g., "Painting", "Statuette").'}, 'hasCC0Image': {'type': 'boolean', 'description': "True when a CC0 open-access image URL is available (primaryImage is non-empty). Distinct from met_search_collections's hasImages filter, which matches objects that have any image including copyrighted works."}, 'isHighlight': {'type': 'boolean', 'description': 'True when the Met designates this a collection highlight.'}, 'constituents': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'required': ['constituentID', 'role', 'name', 'constituentULAN_URL', 'constituentWikidata_URL', 'gender'], 'properties': {'name': {'type': 'string', 'description': 'Constituent display name.'}, 'role': {'type': 'string', 'description': 'Role in relation to the object (e.g., "Artist", "Maker", "Designer").'}, 'gender': {'type': 'string', 'description': 'Gender of the constituent. Usually empty string â\x80\x94 sparsely populated in the Met catalogue.'}, 'constituentID': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Constituent identifier for cross-referencing.'}, 'constituentULAN_URL': {'type': 'string', 'description': 'Getty ULAN (Union List of Artist Names) URL for the constituent. Empty when no ULAN record exists.'}, 'constituentWikidata_URL': {'type': 'string', 'description': 'Wikidata entity URL for the constituent. Useful for enrichment via wikidata-mcp-server. Empty when no Wikidata record exists.'}}, 'description': 'A person associated with the object.', 'additionalProperties': False}}, {'type': 'null'}], 'description': 'All persons associated with the object. Null for anonymous or unknown attribution.'}, 'measurements': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'required': ['elementName', 'elementDescription', 'elementMeasurements'], 'properties': {'elementName': {'type': 'string', 'description': 'Which part of the object was measured (e.g., "Overall", "Other", "Length").'}, 'elementDescription': {'type': 'string', 'description': 'Qualifier distinguishing this element from a sibling with the same name (e.g., "Print" vs "Negativ"). Empty when the Met records none.'}, 'elementMeasurements': {'type': 'object', 'description': 'Measured axes for this element. Which keys are present varies element to element, so read the keys rather than assuming a fixed set. Empty object when the Met records no values.', 'propertyNames': {'type': 'string', 'description': 'Measurement axis (e.g., "Height", "Width", "Depth", "Length").'}, 'additionalProperties': {'type': 'number', 'description': 'Measured value â\x80\x94 centimeters for spatial axes, kilograms for weight.'}}}, 'description': 'One measured element of the object.', 'additionalProperties': False}}, {'type': 'null'}], 'description': 'Structured element measurements â\x80\x94 the numeric counterpart to the formatted dimensions string. Null when the Met records none.'}, 'primaryImage': {'type': 'string', 'description': 'Full-resolution image URL (CC0 objects only; empty string for non-public-domain works).'}, 'GalleryNumber': {'type': 'string', 'description': 'Gallery room number at the museum. Empty string for objects not currently on display.'}, 'artistEndDate': {'type': 'string', 'description': 'Artist death year, or a firm\'s closing year, as a string (e.g., "1890"). Occasionally a full date (e.g., "1928-01-10"). Empty for a living artist, a firm still active, or an anonymous work.'}, 'objectEndDate': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, {'type': 'null'}], 'description': 'Latest date as an integer year (negative = BCE). Null under the same condition as objectBeginDate â\x80\x94 the two are null together.'}, 'classification': {'type': 'string', 'description': 'Broad classification category (e.g., "Paintings", "Ceramics").'}, 'isPublicDomain': {'type': 'boolean', 'description': 'True when the object is released under CC0 open access. Only true objects return usable image URLs.'}, 'isTimelineWork': {'type': 'boolean', 'description': "True when the work appears in the Met's art timeline."}, 'accessionNumber': {'type': 'string', 'description': "The Met's accession number for the object."}, 'artistBeginDate': {'type': 'string', 'description': 'Artist birth year, or a firm\'s founding year, as a string (e.g., "1853"). Occasionally a full date (e.g., "1928-01-10"). Empty for anonymous works.'}, 'objectBeginDate': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, {'type': 'null'}], 'description': 'Earliest date as an integer year (negative = BCE). Null when the Met has no machine-readable date for the work â\x80\x94 read objectDate for what is known instead, and do not treat null as year zero or substitute a default.'}, 'additionalImages': {'type': 'array', 'items': {'type': 'string', 'description': 'An additional image URL (detail shot or alternate view).'}, 'description': 'Additional image URLs (detail shots, alternate views). CC0 objects only.'}, 'artistDisplayBio': {'type': 'string', 'description': 'Artist biographical summary including nationality, birth/death place and year (e.g., "Dutch, Zundert 1853â\x80\x931890 Auvers-sur-Oise"). Empty for anonymous works.'}, 'artistDisplayName': {'type': 'string', 'description': 'Primary artist name as displayed (e.g., "Vincent van Gogh"). Empty for anonymous or unknown works.'}, 'artistNationality': {'type': 'string', 'description': 'Artist\'s nationality (e.g., "Dutch", "French"). Empty for anonymous works.'}, 'primaryImageSmall': {'type': 'string', 'description': 'Web-display image URL (~800px; CC0 objects only; empty string for non-public-domain works).'}, 'objectWikidata_URL': {'type': 'string', 'description': 'Wikidata entity URL for the object itself. Enables enrichment via wikidata-mcp-server.'}}, 'description': 'A fully fetched Met Museum object record.', 'additionalProperties': False}, 'description': 'Successfully fetched objects.'}, 'deferred': {'type': 'array', 'items': {'type': 'object', 'required': ['objectID', 'bytes'], 'properties': {'bytes': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Serialized structuredContent size of the withheld record â\x80\x94 the same scale the budget is measured on â\x80\x94 so a follow-up batch can be sized before it is requested.'}, 'objectID': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Object ID whose record was fetched but withheld from this response.'}}, 'description': 'A record fetched successfully but withheld to keep the response bounded.', 'additionalProperties': False}, 'description': 'Records that were fetched but did not fit the callâ\x80\x99s cumulative budget on serialized structuredContent bytes, in request order. Re-call met_get_object with these IDs to retrieve them. Absent when every fetched record fit.'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['departments']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['upstream_blocked', 'retry_deadline_exceeded'], 'description': "Machine-readable failure mode. Declared by this tool: `upstream_blocked`: The Met API's firewall refused the request with HTTP 403 â\x80\x94 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. Other values are possible when a failure originates below the handler."}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'departments': {'type': 'array', 'items': {'type': 'object', 'required': ['departmentId', 'displayName'], 'properties': {'displayName': {'type': 'string', 'description': 'Human-readable department name (e.g., "European Paintings", "Egyptian Art", "Arms and Armor").'}, 'departmentId': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Numeric department ID for the departmentId parameter of met_search_collections and met_list_objects.'}}, 'description': 'A Met curatorial department.', 'additionalProperties': False}, 'description': 'All 19 curatorial departments at The Metropolitan Museum of Art.'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'limit': {'type': 'integer', 'default': 20, 'maximum': 500, 'minimum': 1, 'description': 'Maximum number of object IDs to return in this page.'}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Zero-based index of the first ID to return (default 0); pass the nextOffset from a previous response to continue paging. IDs are in ascending order and every one is reachable; an offset at or past total returns an empty page rather than an error.'}, 'departmentId': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Restrict the list to one curatorial department. Valid IDs come from met_list_departments â\x80\x94 the Met exposes a sparse set (roughly 1â\x80\x9321, with gaps); an unrecognized ID is rejected with an invalid_department error rather than answered with an empty list.'}, 'updatedSince': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'List only objects whose record was created or revised on or after this date, the day itself included, as YYYY-MM-DD (e.g., "2026-09-01") â\x80\x94 no time part and no other date format. A date later than the newest update returns an empty list, not an error.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['total', 'objectIDs', 'returned', 'offset', 'remaining', 'truncated', 'nextOffset']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['invalid_department', 'invalid_date', 'upstream_blocked', 'retry_deadline_exceeded'], 'description': "Machine-readable failure mode. Declared by this tool: `invalid_department`: departmentId is provided but is not one of the Met department IDs. `invalid_date`: updatedSince has the YYYY-MM-DD shape but names no calendar day, such as 2026-02-30. `upstream_blocked`: The Met API's firewall refused the request with HTTP 403 â\x80\x94 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 ID list. Other values are possible when a failure originates below the handler."}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'total': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Total number of objects matching the filters. Paging reaches every one of them â\x80\x94 there is no 10,000 window here.'}, 'notice': {'type': 'string', 'description': 'Present only when total is 0: names the filters that matched nothing and how to widen the list.'}, 'offset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'The resolved offset this page was read from â\x80\x94 the offset input after its default of 0. When it is at or beyond a nonzero total, the page is empty because the offset ran past the list, not because nothing matched.'}, 'returned': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Count of object IDs in this page.'}, 'objectIDs': {'type': 'array', 'items': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'A Met object ID.'}, 'description': 'Object IDs for this page in ascending order, up to `limit` results.'}, 'remaining': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Count of IDs after this page: total minus (offset + returned), floored at 0. 0 means no further page exists.'}, 'truncated': {'type': 'boolean', 'description': 'True when IDs remain after this page (offset + returned < total); false when this page ends the list.'}, 'nextOffset': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, {'type': 'null'}], 'description': 'The offset to pass on the next call to continue paging, or null when this page ends the list (truncated is false).'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['q'], 'properties': {'q': {'type': 'string', 'minLength': 1, 'description': 'Keyword query, matched across title, artist name, culture, medium, tags, and other text fields. Broad terms return large ID sets.'}, 'limit': {'type': 'integer', 'default': 20, 'maximum': 500, 'minimum': 1, 'description': '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.'}, 'medium': {'type': 'string', 'description': 'Filter by object classification, case-sensitive and spelled as the Met spells it (e.g., "Paintings", "Drawings", "Prints", "Ceramics", "Sculpture", "Photographs", "Textiles") â\x80\x94 "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â\x80\x99s classification.'}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0, 'description': '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.'}, 'dateEnd': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Latest object date (year, inclusive). Negative integers for BCE. Requires dateBegin.'}, 'isOnView': {'type': 'boolean', 'description': '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.'}, 'dateBegin': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Earliest object date (year, inclusive). Negative integers for BCE (e.g., -500 for 500 BCE). Requires dateEnd.'}, 'hasImages': {'type': 'boolean', 'description': '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.'}, 'geoLocation': {'type': 'array', 'items': {'type': 'string', 'description': 'A country, region, or city (e.g., "France", "Egypt", "New York").'}, 'maxItems': 1, 'description': '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.'}, 'isHighlight': {'type': 'boolean', 'const': True, 'description': 'Opt-in filter, true only â\x80\x94 omit it rather than passing false, which the search ignores. Selects objects the Met has designated as highlights â\x80\x94 major works central to the collection.'}, 'departmentId': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Restrict results to one curatorial department. Valid IDs come from met_list_departments â\x80\x94 the Met exposes a sparse set (roughly 1â\x80\x9321, with gaps); an unrecognized ID is rejected with an invalid_department error rather than silently widening the search. Can be combined with other filters.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['total', 'objectIDs', 'returned', 'truncated', 'remaining', 'nextOffset', 'offset']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['no_results', 'invalid_date_range', 'invalid_filter', 'invalid_department', 'upstream_blocked', 'retry_deadline_exceeded'], 'description': "Machine-readable failure mode. Declared by this tool: `no_results`: total is 0 â\x80\x94 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 â\x80\x94 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 â\x80\x94 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."}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'total': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Total number of objects in the Met collection matching the search. Can exceed 10,000, the most that paging reaches.'}, 'notice': {'type': 'string', 'description': '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.'}, 'offset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'The resolved offset this page was read from â\x80\x94 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.'}, 'returned': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Count of object IDs in this page.'}, 'objectIDs': {'type': 'array', 'items': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'A Met object ID.'}, 'description': 'Object IDs for this page, up to `limit` results.'}, 'remaining': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': '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.'}, 'truncated': {'type': 'boolean', 'description': '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.'}, 'nextOffset': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, {'type': 'null'}], 'description': 'The offset to pass on the next call to continue paging, or null when no further page is reachable (truncated is false).'}}, 'additionalProperties': False}
Modifications récentes des outils
Serveurs MCP similaires
Social Fetch
Retrieves public content and metadata from social networks, music services, Facebook Marketplace, events, profiles, posts, commen…
Heista
Analyzes video advertising, builds brand intelligence profiles, researches markets, and generates advertising scripts and creativ…
VarynForge
Supports SEO research and content planning through niche analysis, competitor and keyword research, opportunity discovery, and wr…
Tmdb
Provides TMDB-based movie, television, and people discovery, metadata, credits, recommendations, videos, and trend-related entert…
AfterLaunch: the agentic growth marketing engine
Runs growth-marketing workflows covering SEO, AI-search visibility, competitor analysis, content planning, distribution channels,…
Setlist Fm
Provides setlist.fm concert research by artist, venue, city, country, and date, including artist records, concert histories, and …
Watchmode
Searches streaming catalogs and availability across regions, services, genres, networks, titles, and release dates.
Vimeo
Searches and retrieves public Vimeo videos, channels, categories, and related metadata.