MCP 服务器

Origine Paris

com.origineparis/mcp
电商与零售 公开且可连接 MCP 2025-11-25

此 MCP 可以做什么

Provides information about Origine Paris and searches its jewelry catalogue, collections, products, prices, variants, and policies.

get_maison
The Maison and its founders
Describes the house Origine Paris and its two founders, one section at a time, in French or English. Sections: overview (identity, SIREN, positioning, address, contacts, official profiles, how orders are placed), founders (roles, Wikidata QIDs, short biographies), person (one founder's referenced career, roles, education, citizenship), entity_graph (sourced nodes and edges), jsonld (the site's blocks in that language), agent_context (an orientation for agents) and llms_txt (the site llms.txt). Do not use it for pieces, prices or collections: search_catalogue, get_product_detail and list_collections cover the catalogue. section defaults to overview; person is read for section person alone, where a missing or unrecognised founder yields result unknown with a notice; llms_txt is always French, and the founders list falls back to the French page, and says so, when the English page has none. Answers come from the index rebuilt by the daily synchronisation, never from a live read of the site: provenance carries source URLs and dates, freshness the hours since the last successful synchronisation against a 24 hour threshold, with an index_stale notice beyond it; that synchronisation state is cached for 60 seconds. A field the site does not publish in the requested language is not_published and a notice lists them; a value no source carries is unknown; nothing is translated or invented. Read-only, without side effects.
只读 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['lang'], 'properties': {'lang': {'enum': ['fr', 'en'], 'type': 'string', 'description': 'Language of the answer: "fr" (French) or "en" (English). Content the site does not publish in that language is reported as not_published, never translated.'}, 'person': {'type': 'string', 'description': 'For section "person" only: the founder\'s name (accent-, case-, hyphen- and apostrophe-insensitive, for example "Marie-Ann Wachtmeister" or "Olivier Richard") or Wikidata QID ("Q139900682", "Q140089338").'}, 'section': {'enum': ['overview', 'founders', 'person', 'entity_graph', 'jsonld', 'agent_context', 'llms_txt'], 'type': 'string', 'description': 'Which part of the Maison to return: overview (default), founders, person, entity_graph, jsonld, agent_context or llms_txt.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['tool', 'lang', 'section', 'data', 'provenance', 'freshness', 'canonical', 'notices'], 'properties': {'data': {'anyOf': [{'type': 'object', 'required': ['section', 'name', 'description', 'legal', 'founding_year', 'appointment_address', 'contact', 'website', 'site_home', 'same_as', 'positioning', 'key_facts', 'founders', 'store', 'commerce', 'languages'], 'properties': {'name': {'type': 'string'}, 'legal': {'type': 'object', 'required': ['siren', 'wikidata'], 'properties': {'siren': {'type': 'string'}, 'wikidata': {'type': 'string'}}, 'additionalProperties': False}, 'store': {'type': 'object', 'required': ['price_range', 'currencies_accepted', 'description'], 'properties': {'geo': {}, 'description': {'$ref': '#/properties/data/anyOf/0/properties/description'}, 'price_range': {'type': 'string'}, 'currencies_accepted': {'type': 'string'}}, 'additionalProperties': False}, 'contact': {'type': 'object', 'required': ['email', 'telephone'], 'properties': {'email': {'type': 'string'}, 'telephone': {'type': 'string'}}, 'additionalProperties': False}, 'same_as': {'type': 'array', 'items': {'type': 'string'}}, 'section': {'type': 'string', 'const': 'overview'}, 'website': {'type': 'string'}, 'commerce': {'type': 'object', 'required': ['how_to_order', 'online_ordering'], 'properties': {'how_to_order': {'$ref': '#/properties/data/anyOf/0/properties/description'}, 'online_ordering': {'$ref': '#/properties/data/anyOf/0/properties/description'}}, 'additionalProperties': False}, 'founders': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'qid', 'role', 'wikidata'], 'properties': {'qid': {'type': 'string'}, 'name': {'type': 'string'}, 'role': {'type': 'string'}, 'wikidata': {'type': 'string'}}, 'additionalProperties': False}}, 'key_facts': {'type': 'string'}, 'languages': {'type': 'array', 'items': {'enum': ['fr', 'en'], 'type': 'string'}}, 'site_home': {'type': 'string'}, 'description': {'type': 'object', 'required': ['status', 'source', 'as_of'], 'properties': {'as_of': {'type': 'string', 'description': 'ISO 8601 date the source was read.'}, 'value': {'description': 'The published value, or null.'}, 'source': {'type': 'string', 'description': 'URL of the page, feed or entity the value was read from.'}, 'status': {'enum': ['published', 'not_published', 'not_served', 'unknown'], 'type': 'string', 'description': 'published: read as is from the source; not_published: the source does not carry it in this language; not_served: this server does not relay this field for this item, see the source; unknown: the source could not be read.'}}, 'additionalProperties': False}, 'positioning': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'statement', 'evidence', 'evidence_source'], 'properties': {'key': {'type': 'string'}, 'lang': {'enum': ['fr', 'en'], 'type': 'string'}, 'evidence': {'type': 'string'}, 'statement': {'type': 'string'}, 'evidence_source': {'type': 'string'}}, 'additionalProperties': False}}, 'founding_year': {'type': 'string'}, 'appointment_address': {'type': 'object', 'required': ['street', 'locality', 'postal_code', 'country'], 'properties': {'street': {'type': 'string'}, 'country': {'type': 'string'}, 'locality': {'type': 'string'}, 'postal_code': {'type': 'string'}}, 'additionalProperties': False}}, 'additionalProperties': False}, {'type': 'object', 'required': ['section', 'founders', 'founder_list_source', 'founder_list_language'], 'properties': {'section': {'type': 'string', 'const': 'founders'}, 'founders': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'qid', 'wikidata', 'role', 'roles_wikidata', 'description', 'same_as'], 'properties': {'qid': {'type': 'string'}, 'name': {'type': 'string'}, 'role': {'$ref': '#/properties/data/anyOf/0/properties/description'}, 'same_as': {'type': 'array', 'items': {'type': 'string'}}, 'wikidata': {'type': 'string'}, 'description': {'$ref': '#/properties/data/anyOf/0/properties/description'}, 'roles_wikidata': {'type': 'array', 'items': {'type': 'object', 'required': ['role', 'since', 'references'], 'properties': {'role': {'type': 'string'}, 'since': {'type': ['string', 'null']}, 'references': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}}}, 'additionalProperties': False}}, 'founder_list_source': {'type': 'string'}, 'founder_list_language': {'enum': ['fr', 'en'], 'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['section', 'result', 'reason', 'profile'], 'properties': {'reason': {'type': ['string', 'null']}, 'result': {'enum': ['found', 'unknown'], 'type': 'string'}, 'profile': {'anyOf': [{'type': 'object', 'required': ['name', 'qid', 'wikidata', 'description', 'site', 'roles_at_origine_paris', 'founder_of', 'career', 'date_of_birth', 'citizenship', 'occupations', 'educated_at', 'spouse', 'spouse_qid', 'spouse_wikidata', 'linkedin'], 'properties': {'qid': {'type': 'string'}, 'name': {'type': 'string'}, 'site': {'anyOf': [{'type': 'object', 'required': ['role', 'description', 'same_as'], 'properties': {'role': {'$ref': '#/properties/data/anyOf/0/properties/description'}, 'same_as': {'type': 'array', 'items': {'type': 'string'}}, 'description': {'$ref': '#/properties/data/anyOf/0/properties/description'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'career': {'type': 'array', 'items': {'type': 'object', 'required': ['organisation', 'start', 'end', 'references'], 'properties': {'end': {'type': ['string', 'null']}, 'qid': {'type': 'string'}, 'start': {'type': ['string', 'null']}, 'references': {'type': 'array', 'items': {'type': 'string'}}, 'organisation': {'type': 'string'}}, 'additionalProperties': False}}, 'spouse': {'type': 'string'}, 'linkedin': {'type': 'string'}, 'wikidata': {'type': 'string'}, 'founder_of': {'type': 'array', 'items': {'type': 'object', 'required': ['organisation', 'qid', 'references'], 'properties': {'qid': {'type': 'string'}, 'references': {'type': 'array', 'items': {'type': 'string'}}, 'organisation': {'type': 'string'}}, 'additionalProperties': False}}, 'spouse_qid': {'type': 'string'}, 'citizenship': {'type': 'string'}, 'description': {'$ref': '#/properties/data/anyOf/0/properties/description'}, 'educated_at': {'type': 'array', 'items': {'type': 'string'}}, 'occupations': {'type': 'array', 'items': {'type': 'string'}}, 'date_of_birth': {'type': 'string'}, 'spouse_wikidata': {'type': 'string'}, 'roles_at_origine_paris': {'type': 'array', 'items': {'type': 'object', 'required': ['role', 'since', 'references'], 'properties': {'role': {'type': 'string'}, 'since': {'type': ['string', 'null']}, 'references': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}}}, 'additionalProperties': False}, {'type': 'null'}]}, 'section': {'type': 'string', 'const': 'person'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['section', 'nodes', 'edges'], 'properties': {'edges': {'type': 'array', 'items': {'type': 'object', 'required': ['from', 'to', 'relation', 'start', 'end', 'sources'], 'properties': {'to': {'type': 'string'}, 'end': {'type': ['string', 'null']}, 'from': {'type': 'string'}, 'start': {'type': ['string', 'null']}, 'sources': {'type': 'array', 'items': {'type': 'string'}}, 'relation': {'type': 'string'}}, 'additionalProperties': False}}, 'nodes': {'type': 'array', 'items': {'type': 'object', 'required': ['qid', 'label', 'type', 'wikidata'], 'properties': {'qid': {'type': 'string'}, 'note': {'type': 'string'}, 'type': {'enum': ['person', 'organisation'], 'type': 'string'}, 'label': {'type': 'string'}, 'website': {'type': 'string'}, 'wikidata': {'type': 'string'}}, 'additionalProperties': False}}, 'section': {'type': 'string', 'const': 'entity_graph'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['section', 'pages', 'blocks'], 'properties': {'pages': {'type': 'array', 'items': {'type': 'string'}}, 'blocks': {'type': 'array', 'items': {'type': 'object', 'required': ['types', 'found_on', 'block'], 'properties': {'block': {'type': 'object', 'additionalProperties': {}}, 'types': {'type': 'array', 'items': {'type': 'string'}}, 'found_on': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}}, 'section': {'type': 'string', 'const': 'jsonld'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['section', 'text', 'llms_txt', 'agents_md'], 'properties': {'text': {'type': 'string'}, 'section': {'type': 'string', 'const': 'agent_context'}, 'llms_txt': {'type': 'object', 'required': ['url', 'last_updated', 'language'], 'properties': {'url': {'type': 'string'}, 'language': {'type': 'string', 'const': 'fr'}, 'last_updated': {'type': 'string'}}, 'additionalProperties': False}, 'agents_md': {'type': 'object', 'required': ['url'], 'properties': {'url': {'type': 'string'}}, 'additionalProperties': False}}, 'additionalProperties': False}, {'type': 'object', 'required': ['section', 'url', 'last_updated', 'language', 'content'], 'properties': {'url': {'type': 'string'}, 'content': {'$ref': '#/properties/data/anyOf/0/properties/description'}, 'section': {'type': 'string', 'const': 'llms_txt'}, 'language': {'type': 'string', 'const': 'fr'}, 'last_updated': {'type': 'string'}}, 'additionalProperties': False}], 'description': 'Section content; the shape follows the section.'}, 'lang': {'enum': ['fr', 'en'], 'type': 'string', 'description': 'Language of every text in this response.'}, 'tool': {'type': 'string', 'const': 'get_maison'}, 'notices': {'type': 'array', 'items': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'string'}, 'message': {'type': 'string'}}, 'additionalProperties': False}}, 'section': {'enum': ['overview', 'founders', 'person', 'entity_graph', 'jsonld', 'agent_context', 'llms_txt'], 'type': 'string'}, 'canonical': {'type': 'string'}, 'freshness': {'type': 'object', 'required': ['status', 'hours_since_sync_success', 'threshold_hours'], 'properties': {'status': {'enum': ['fresh', 'stale', 'unknown'], 'type': 'string'}, 'threshold_hours': {'type': 'number'}, 'hours_since_sync_success': {'type': ['number', 'null']}}, 'additionalProperties': False}, 'provenance': {'type': 'object', 'required': ['sources', 'index_generated_at', 'sync_last_success_at'], 'properties': {'sources': {'type': 'array', 'items': {'type': 'object', 'required': ['url', 'kind', 'fetched_at'], 'properties': {'url': {'type': 'string'}, 'kind': {'enum': ['site_jsonld', 'wikidata', 'llms_txt'], 'type': 'string'}, 'fetched_at': {'type': 'string'}}, 'additionalProperties': False}}, 'index_generated_at': {'type': 'string'}, 'sync_last_success_at': {'type': 'string'}}, 'additionalProperties': False}}, 'additionalProperties': False}
get_product_detail
One piece of the catalogue
Returns the full published record of one piece of the Origine Paris catalogue, in French or English. Use it once a piece is chosen, from a search result or a product URL: the description exactly as published and never parsed, the price published on the site at the date of reading, variants and published sizes with the size guide, images, and the published statements on lead time, delivery, returns and care, each with its source URL and date. Do not use it to find or compare pieces (search_catalogue), to see the collections (list_collections) or for the house and its founders (get_maison). handle takes precedence over product_id when both are given; neither, or an unknown one, yields result unknown with a notice; size changes nothing in the record and adds a consultation block when it is not among the published sizes. Whether the piece can be bought online is read from the site, never guessed; fields the site does not publish are not_published, fields this server does not relay are not_served, nothing is invented; a bespoke piece comes with a consultation block instead of a purchase. Read-only: it sells nothing and completes no checkout.
只读 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['lang'], 'properties': {'lang': {'enum': ['fr', 'en'], 'type': 'string', 'description': 'Language of the answer: "fr" or "en". Content the site does not publish in that language is reported as not_published, never translated.'}, 'size': {'type': 'string', 'maxLength': 20, 'minLength': 1, 'description': 'Optional size the user has in mind (for example "52" or "17 cm"); when it is not among the published sizes, a consultation block is added.'}, 'handle': {'type': 'string', 'maxLength': 200, 'minLength': 2, 'description': 'Product handle, for example "daisy-light-or-rose", or the full product URL (French or English). Give handle or product_id.'}, 'product_id': {'type': 'string', 'maxLength': 80, 'minLength': 1, 'description': 'Shopify product id, numeric or as a gid ("gid://shopify/Product/15325556605258"), as returned by the Shopify storefront tools. Give handle or product_id.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['tool', 'lang', 'data', 'provenance', 'freshness', 'canonical', 'notices'], 'properties': {'data': {'anyOf': [{'type': 'object', 'required': ['section', 'result', 'identity', 'title', 'description', 'jewellery', 'collections', 'materials', 'price', 'variants', 'sizes', 'images', 'lead_time', 'delivery', 'returns', 'care_and_services', 'purchase', 'consultation', 'canonical_url'], 'properties': {'price': {'type': 'object', 'required': ['min', 'max', 'currency', 'basis', 'status', 'as_of', 'source', 'note'], 'properties': {'max': {'type': ['number', 'null']}, 'min': {'type': ['number', 'null']}, 'note': {'type': 'string'}, 'as_of': {'type': 'string'}, 'basis': {'enum': ['published', 'indicative'], 'type': 'string', 'description': 'Prices are served as published on the site at as_of; when the catalogue is bought online they are the prices payable at checkout.'}, 'source': {'type': 'string'}, 'status': {'enum': ['published', 'not_published'], 'type': 'string'}, 'currency': {'type': 'string', 'const': 'EUR'}}, 'additionalProperties': False}, 'sizes': {'type': 'object', 'required': ['option_name', 'values', 'unit', 'size_guide', 'outside_range'], 'properties': {'unit': {'type': 'string', 'const': 'not_published'}, 'values': {'type': 'array', 'items': {'type': 'string'}}, 'size_guide': {'type': 'object', 'required': ['fr', 'en'], 'properties': {'en': {'type': 'string'}, 'fr': {'type': 'string'}}, 'additionalProperties': False}, 'option_name': {'type': ['string', 'null']}, 'outside_range': {'$ref': '#/properties/data/anyOf/0/properties/title'}}, 'additionalProperties': False}, 'title': {'type': 'object', 'required': ['status', 'source', 'as_of'], 'properties': {'as_of': {'type': 'string', 'description': 'ISO 8601 date the source was read.'}, 'value': {'description': 'The published value, or null.'}, 'source': {'type': 'string', 'description': 'URL of the page, feed or entity the value was read from.'}, 'status': {'enum': ['published', 'not_published', 'not_served', 'unknown'], 'type': 'string', 'description': 'published: read as is from the source; not_published: the source does not carry it in this language; not_served: this server does not relay this field for this item, see the source; unknown: the source could not be read.'}}, 'additionalProperties': False}, 'images': {'type': 'array', 'items': {'type': 'object', 'required': ['src', 'width', 'height', 'position'], 'properties': {'src': {'type': 'string'}, 'width': {'type': 'number'}, 'height': {'type': 'number'}, 'position': {'type': 'number'}}, 'additionalProperties': False}}, 'result': {'type': 'string', 'const': 'found'}, 'returns': {'type': 'object', 'required': ['bespoke_no_withdrawal'], 'properties': {'bespoke_no_withdrawal': {'$ref': '#/properties/data/anyOf/0/properties/title'}}, 'additionalProperties': False}, 'section': {'type': 'string', 'const': 'product'}, 'delivery': {'type': 'object', 'required': ['free', 'hand_over', 'carriers', 'transit'], 'properties': {'free': {'$ref': '#/properties/data/anyOf/0/properties/title'}, 'transit': {'$ref': '#/properties/data/anyOf/0/properties/title'}, 'carriers': {'$ref': '#/properties/data/anyOf/0/properties/title'}, 'hand_over': {'$ref': '#/properties/data/anyOf/0/properties/title'}}, 'additionalProperties': False}, 'identity': {'type': 'object', 'required': ['handle', 'product_id', 'product_gid', 'url', 'created_at', 'published_at', 'updated_at'], 'properties': {'url': {'type': 'object', 'required': ['fr', 'en'], 'properties': {'en': {'type': 'string'}, 'fr': {'type': 'string'}}, 'additionalProperties': False}, 'handle': {'type': 'string'}, 'created_at': {'type': 'string'}, 'product_id': {'type': 'string'}, 'updated_at': {'type': 'string'}, 'product_gid': {'type': 'string'}, 'published_at': {'type': 'string'}}, 'additionalProperties': False}, 'purchase': {'type': 'object', 'required': ['online', 'statement', 'by_appointment', 'bespoke'], 'properties': {'online': {'enum': ['available', 'not_available', 'not_published'], 'type': 'string', 'description': 'Whether the piece can be bought at the online checkout of origineparis.com, as the site itself publishes it, never guessed. Bespoke pieces are never available. No purchase is ever possible through this server.'}, 'bespoke': {'type': 'boolean'}, 'statement': {'$ref': '#/properties/data/anyOf/0/properties/title'}, 'by_appointment': {'type': 'object', 'required': ['address', 'email', 'telephone', 'contact_url'], 'properties': {'email': {'type': 'string'}, 'address': {'type': 'string'}, 'telephone': {'type': 'string'}, 'contact_url': {'type': 'string'}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'variants': {'type': 'array', 'items': {'type': 'object', 'required': ['variant_id', 'variant_gid', 'title', 'options', 'price', 'currency', 'weight_grams', 'url'], 'properties': {'sku': {'type': 'string'}, 'url': {'type': 'string'}, 'price': {'type': 'number'}, 'title': {'type': 'string'}, 'options': {'type': 'object', 'additionalProperties': {'type': 'string'}}, 'currency': {'type': 'string', 'const': 'EUR'}, 'variant_id': {'type': 'string'}, 'variant_gid': {'type': 'string'}, 'weight_grams': {'$ref': '#/properties/data/anyOf/0/properties/title'}}, 'additionalProperties': False}}, 'jewellery': {'type': 'object', 'required': ['type', 'product_type_raw', 'subtypes', 'families'], 'properties': {'type': {'enum': ['ring', 'earrings', 'necklace', 'bracelet', 'other'], 'type': 'string'}, 'families': {'type': 'array', 'items': {'type': 'string'}}, 'subtypes': {'type': 'array', 'items': {'type': 'string'}}, 'product_type_raw': {'type': 'string'}}, 'additionalProperties': False}, 'lead_time': {'type': 'object', 'required': ['made_to_order', 'collections_and_bespoke'], 'properties': {'made_to_order': {'$ref': '#/properties/data/anyOf/0/properties/title'}, 'collections_and_bespoke': {'$ref': '#/properties/data/anyOf/0/properties/title'}}, 'additionalProperties': False}, 'materials': {'type': 'object', 'required': ['gold_colours', 'weight_grams', 'fineness', 'diamonds'], 'properties': {'diamonds': {'$ref': '#/properties/data/anyOf/0/properties/title'}, 'fineness': {'$ref': '#/properties/data/anyOf/0/properties/title'}, 'gold_colours': {'type': 'array', 'items': {'enum': ['rose', 'white', 'yellow'], 'type': 'string'}}, 'weight_grams': {'$ref': '#/properties/data/anyOf/0/properties/title'}}, 'additionalProperties': False}, 'collections': {'type': 'array', 'items': {'type': 'object', 'required': ['handle', 'title', 'url'], 'properties': {'url': {'type': 'string'}, 'title': {'type': 'string'}, 'handle': {'type': 'string'}}, 'additionalProperties': False}}, 'description': {'type': 'object', 'required': ['status', 'source', 'as_of'], 'properties': {'as_of': {'$ref': '#/properties/data/anyOf/0/properties/title/properties/as_of'}, 'value': {'$ref': '#/properties/data/anyOf/0/properties/title/properties/value'}, 'source': {'$ref': '#/properties/data/anyOf/0/properties/title/properties/source'}, 'status': {'$ref': '#/properties/data/anyOf/0/properties/title/properties/status'}}, 'description': 'The description text exactly as published by the site, never parsed; null with status not_published or not_served.', 'additionalProperties': False}, 'consultation': {'anyOf': [{'type': 'object', 'required': ['suggested', 'reason', 'message', 'statement', 'how', 'design_study', 'related_pages'], 'properties': {'how': {'type': 'object', 'required': ['appointment_url', 'address', 'email'], 'properties': {'email': {'type': 'string'}, 'address': {'type': 'string'}, 'appointment_url': {'type': 'string'}}, 'additionalProperties': False}, 'reason': {'enum': ['bespoke_piece', 'size_outside_published_range'], 'type': 'string'}, 'message': {'type': 'string'}, 'statement': {'$ref': '#/properties/data/anyOf/0/properties/title'}, 'suggested': {'type': 'boolean', 'const': True}, 'design_study': {'type': 'object', 'required': ['handle', 'url'], 'properties': {'url': {'type': 'string'}, 'handle': {'type': 'string'}}, 'additionalProperties': False}, 'related_pages': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}, {'type': 'null'}]}, 'canonical_url': {'type': 'object', 'required': ['fr', 'en'], 'properties': {'en': {'type': 'string'}, 'fr': {'type': 'string'}}, 'additionalProperties': False}, 'care_and_services': {'$ref': '#/properties/data/anyOf/0/properties/title'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['section', 'result', 'reason'], 'properties': {'reason': {'type': 'string'}, 'result': {'type': 'string', 'const': 'unknown'}, 'section': {'type': 'string', 'const': 'product'}}, 'additionalProperties': False}]}, 'lang': {'enum': ['fr', 'en'], 'type': 'string'}, 'tool': {'type': 'string', 'const': 'get_product_detail'}, 'notices': {'type': 'array', 'items': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'string'}, 'message': {'type': 'string'}}, 'additionalProperties': False}}, 'canonical': {'type': 'string'}, 'freshness': {'type': 'object', 'required': ['status', 'hours_since_sync_success', 'threshold_hours'], 'properties': {'status': {'enum': ['fresh', 'stale', 'unknown'], 'type': 'string'}, 'threshold_hours': {'type': 'number'}, 'hours_since_sync_success': {'type': ['number', 'null']}}, 'additionalProperties': False}, 'provenance': {'type': 'object', 'required': ['sources', 'index_generated_at', 'sync_last_success_at'], 'properties': {'sources': {'type': 'array', 'items': {'type': 'object', 'required': ['url', 'kind', 'fetched_at'], 'properties': {'url': {'type': 'string'}, 'kind': {'enum': ['site_jsonld', 'wikidata', 'llms_txt', 'site_products_feed', 'site_page'], 'type': 'string'}, 'fetched_at': {'type': 'string'}}, 'additionalProperties': False}}, 'index_generated_at': {'type': 'string'}, 'sync_last_success_at': {'type': 'string'}}, 'additionalProperties': False}}, 'additionalProperties': False}
list_collections
The published collections
Lists the published collections of the Origine Paris catalogue with the pieces this server serves in each, in French or English. Use it to see the catalogue by collection before searching: every visible collection carries its title, handle, page URL, number of pieces, published price range, the jewellery types it holds and the page where its description is published; the list is complete, unpaginated and alphabetical by title. Do not use it to find a piece (search_catalogue, whose collection filter takes a handle from this list), for the record of one piece (get_product_detail) or for the house and its founders (get_maison). lang selects the titles and URLs; a title the site does not publish in English is served in French and a notice names the collections concerned. Counts and prices are computed from the pieces this server serves, so a collection with no served piece is listed with a count of 0 and no price; technical collections hidden from the agentic view are not listed; the description text itself is not relayed (status not_served, see the collection page). Read-only: the list comes from the daily-refreshed index, never from a live read of the site, and nothing is invented.
只读 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['lang'], 'properties': {'lang': {'enum': ['fr', 'en'], 'type': 'string', 'description': 'Language of the titles and page URLs: "fr" or "en". A title the site does not publish in English is served in French and named in a notice.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['tool', 'lang', 'data', 'provenance', 'freshness', 'canonical', 'notices'], 'properties': {'data': {'type': 'object', 'required': ['section', 'total', 'collections'], 'properties': {'total': {'type': 'number', 'description': 'Number of collections listed.'}, 'section': {'type': 'string', 'const': 'collections'}, 'collections': {'type': 'array', 'items': {'type': 'object', 'required': ['handle', 'title', 'title_language', 'url', 'piece_count', 'price', 'jewellery_types', 'description'], 'properties': {'url': {'type': 'string', 'description': 'Collection page on origineparis.com in the requested language.'}, 'price': {'anyOf': [{'type': 'object', 'required': ['min', 'max', 'currency'], 'properties': {'max': {'type': 'number'}, 'min': {'type': 'number'}, 'currency': {'type': 'string', 'const': 'EUR'}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'Lowest and highest published prices among the served pieces; null when none is served.'}, 'title': {'type': 'string'}, 'handle': {'type': 'string', 'description': 'Collection handle, the value search_catalogue takes in its collection filter.'}, 'description': {'type': 'object', 'required': ['status', 'source', 'as_of'], 'properties': {'as_of': {'type': 'string', 'description': 'ISO 8601 date the source was read.'}, 'value': {'description': 'The published value, or null.'}, 'source': {'type': 'string', 'description': 'URL of the page, feed or entity the value was read from.'}, 'status': {'enum': ['published', 'not_published', 'not_served', 'unknown'], 'type': 'string', 'description': 'published: read as is from the source; not_published: the source does not carry it in this language; not_served: this server does not relay this field for this item, see the source; unknown: the source could not be read.'}}, 'description': 'The collection description is not relayed by this server: status not_served, the collection page as source.', 'additionalProperties': False}, 'piece_count': {'type': 'number', 'description': 'Pieces of this collection served by this server.'}, 'title_language': {'enum': ['fr', 'en'], 'type': 'string', 'description': 'Language of the title served: the requested one, or fr when the site publishes no English title.'}, 'jewellery_types': {'type': 'array', 'items': {'enum': ['ring', 'earrings', 'necklace', 'bracelet', 'other'], 'type': 'string'}, 'description': 'Jewellery types present among the served pieces, in a fixed order.'}}, 'additionalProperties': False}}}, 'additionalProperties': False}, 'lang': {'enum': ['fr', 'en'], 'type': 'string'}, 'tool': {'type': 'string', 'const': 'list_collections'}, 'notices': {'type': 'array', 'items': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'string'}, 'message': {'type': 'string'}}, 'additionalProperties': False}}, 'canonical': {'type': 'string'}, 'freshness': {'type': 'object', 'required': ['status', 'hours_since_sync_success', 'threshold_hours'], 'properties': {'status': {'enum': ['fresh', 'stale', 'unknown'], 'type': 'string'}, 'threshold_hours': {'type': 'number'}, 'hours_since_sync_success': {'type': ['number', 'null']}}, 'additionalProperties': False}, 'provenance': {'type': 'object', 'required': ['sources', 'index_generated_at', 'sync_last_success_at'], 'properties': {'sources': {'type': 'array', 'items': {'type': 'object', 'required': ['url', 'kind', 'fetched_at'], 'properties': {'url': {'type': 'string'}, 'kind': {'enum': ['site_jsonld', 'wikidata', 'llms_txt', 'site_products_feed', 'site_page'], 'type': 'string'}, 'fetched_at': {'type': 'string'}}, 'additionalProperties': False}}, 'index_generated_at': {'type': 'string'}, 'sync_last_success_at': {'type': 'string'}}, 'additionalProperties': False}}, 'additionalProperties': False}
search_catalogue
Search the published catalogue
Finds pieces in the published Origine Paris catalogue from free text, filters or both, in French or English. Every result carries its score and the reasons behind it, collections come back as facets with counts, and pages are stateless through limit (default 10, at most 50) and cursor. Parameters are hard filters, never relaxed; what the query text carries is soft: a jewellery type detected in the text is a tier, so a piece of another type never precedes one of the requested type, and the other types are served, with a notice, when nothing of that type matches; a price cap detected in the text is dropped when it would empty the results; jewellery_type and max_price given as parameters override the text. With filters and no query every piece of the pool is returned; with no criterion at all the whole catalogue is served, paginated. Do not use it for the record of one piece (get_product_detail), to list the collections with their counts and price ranges (list_collections, whose handles feed the collection filter) or for the house and its founders (get_maison). Prices are the ones published on the site and payable at its online checkout; bespoke work is not bought online, and a bespoke intent or a query with no match comes with a consultation block. Read-only: it sells nothing, holds no cart and completes no payment.
只读 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['lang'], 'properties': {'lang': {'enum': ['fr', 'en'], 'type': 'string', 'description': 'Language of the answer: "fr" or "en". Titles and collection names come from the site in that language.'}, 'limit': {'type': 'integer', 'maximum': 50, 'minimum': 1, 'description': 'Page size, 1 to 50, default 10.'}, 'query': {'type': 'string', 'maxLength': 160, 'description': 'Free text in French or English, up to 160 characters, for example "bague Daisy Light en or rose a moins de 5000 euros" or "lab-grown diamond engagement ring". Type, gold colour, price cap, family and bespoke intent are detected and returned in query_interpretation. Optional when a filter is given.'}, 'cursor': {'type': 'string', 'maxLength': 200, 'description': 'The next_cursor of a previous page of the same search.'}, 'max_price': {'type': 'number', 'minimum': 0, 'description': 'Hard filter: highest published price, in EUR (compared with the lowest variant price of each piece).'}, 'min_price': {'type': 'number', 'minimum': 0, 'description': 'Hard filter: lowest published price, in EUR.'}, 'collection': {'type': 'string', 'maxLength': 80, 'description': 'Hard filter on a site collection handle, as listed in the facets (for example "bagues-daisy-light").'}, 'gold_colour': {'enum': ['rose', 'white', 'yellow'], 'type': 'string', 'description': 'Hard filter on the published gold colour.'}, 'jewellery_type': {'enum': ['ring', 'earrings', 'necklace', 'bracelet'], 'type': 'string', 'description': 'Hard filter on the jewellery type; overrides any type detected in the query.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['tool', 'lang', 'data', 'provenance', 'freshness', 'canonical', 'notices'], 'properties': {'data': {'type': 'object', 'required': ['section', 'query', 'query_interpretation', 'filters_applied', 'relaxed', 'results', 'facets', 'total', 'limit', 'offset', 'next_cursor', 'snapshot_id', 'consultation'], 'properties': {'limit': {'type': 'number'}, 'query': {'type': 'string'}, 'total': {'type': 'number'}, 'facets': {'type': 'object', 'required': ['jewellery_type', 'collections', 'gold_colours', 'price'], 'properties': {'price': {'anyOf': [{'type': 'object', 'required': ['min', 'max', 'currency'], 'properties': {'max': {'type': 'number'}, 'min': {'type': 'number'}, 'currency': {'type': 'string', 'const': 'EUR'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'collections': {'type': 'array', 'items': {'type': 'object', 'required': ['handle', 'title', 'url', 'count'], 'properties': {'url': {'type': 'string'}, 'count': {'type': 'number'}, 'title': {'type': 'string'}, 'handle': {'type': 'string'}}, 'additionalProperties': False}}, 'gold_colours': {'type': 'object', 'additionalProperties': {'type': 'number'}}, 'jewellery_type': {'type': 'object', 'additionalProperties': {'type': 'number'}}}, 'additionalProperties': False}, 'offset': {'type': 'number'}, 'relaxed': {'type': 'array', 'items': {'type': 'string'}}, 'results': {'type': 'array', 'items': {'type': 'object', 'required': ['rank', 'handle', 'title', 'url', 'jewellery_type', 'product_type_raw', 'subtypes', 'families', 'collections', 'gold_colours', 'price', 'image', 'variant_count', 'score', 'max_possible', 'match_reasons'], 'properties': {'url': {'type': 'string'}, 'rank': {'type': 'number'}, 'image': {'anyOf': [{'type': 'object', 'required': ['src', 'width', 'height', 'position'], 'properties': {'src': {'type': 'string'}, 'width': {'type': 'number'}, 'height': {'type': 'number'}, 'position': {'type': 'number'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'price': {'type': 'object', 'required': ['min', 'max', 'currency', 'basis'], 'properties': {'max': {'type': 'number'}, 'min': {'type': 'number'}, 'basis': {'type': 'string', 'const': 'indicative'}, 'currency': {'type': 'string', 'const': 'EUR'}}, 'additionalProperties': False}, 'score': {'type': 'number'}, 'title': {'type': 'string'}, 'handle': {'type': 'string'}, 'families': {'type': 'array', 'items': {'type': 'string'}}, 'subtypes': {'type': 'array', 'items': {'type': 'string'}}, 'collections': {'type': 'array', 'items': {'type': 'string'}}, 'gold_colours': {'type': 'array', 'items': {'enum': ['rose', 'white', 'yellow'], 'type': 'string'}}, 'max_possible': {'type': 'number'}, 'match_reasons': {'type': 'array', 'items': {'type': 'string'}}, 'variant_count': {'type': 'number'}, 'jewellery_type': {'enum': ['ring', 'earrings', 'necklace', 'bracelet', 'other'], 'type': 'string'}, 'product_type_raw': {'type': 'string'}}, 'additionalProperties': False}}, 'section': {'type': 'string', 'const': 'search'}, 'next_cursor': {'type': ['string', 'null']}, 'snapshot_id': {'type': 'string'}, 'consultation': {'anyOf': [{'type': 'object', 'required': ['suggested', 'reason', 'message', 'statement', 'how', 'design_study', 'related_pages'], 'properties': {'how': {'type': 'object', 'required': ['appointment_url', 'address'], 'properties': {'address': {'type': 'string'}, 'appointment_url': {'type': 'string'}}, 'additionalProperties': False}, 'reason': {'enum': ['bespoke_intent', 'unique_piece_not_listed', 'no_match'], 'type': 'string'}, 'message': {'type': 'string'}, 'statement': {'type': 'object', 'required': ['value', 'status', 'source', 'as_of'], 'properties': {'as_of': {'type': 'string'}, 'value': {'type': ['string', 'null']}, 'source': {'type': 'string'}, 'status': {'enum': ['published', 'not_published'], 'type': 'string'}}, 'additionalProperties': False}, 'suggested': {'type': 'boolean', 'const': True}, 'design_study': {'type': 'object', 'required': ['handle', 'url'], 'properties': {'url': {'type': 'string'}, 'handle': {'type': 'string'}}, 'additionalProperties': False}, 'related_pages': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}, {'type': 'null'}]}, 'filters_applied': {'type': 'object', 'required': ['jewellery_type', 'collection', 'gold_colour', 'min_price', 'max_price'], 'properties': {'max_price': {'type': ['number', 'null']}, 'min_price': {'type': ['number', 'null']}, 'collection': {'type': ['string', 'null']}, 'gold_colour': {'anyOf': [{'enum': ['rose', 'white', 'yellow'], 'type': 'string'}, {'type': 'null'}]}, 'jewellery_type': {'anyOf': [{'enum': ['ring', 'earrings', 'necklace', 'bracelet'], 'type': 'string'}, {'type': 'null'}]}}, 'additionalProperties': False}, 'query_interpretation': {'type': 'object', 'required': ['tokens', 'detected', 'residual_tokens'], 'properties': {'tokens': {'type': 'array', 'items': {'type': 'string'}}, 'detected': {'type': 'object', 'required': ['jewellery_type', 'subtype', 'gold_colour', 'max_price', 'family_phrase', 'route', 'bespoke_intent', 'unique_piece_intent'], 'properties': {'route': {'type': ['string', 'null']}, 'subtype': {'type': ['string', 'null']}, 'max_price': {'type': ['number', 'null']}, 'gold_colour': {'anyOf': [{'enum': ['rose', 'white', 'yellow'], 'type': 'string'}, {'type': 'null'}]}, 'family_phrase': {'type': ['string', 'null']}, 'bespoke_intent': {'type': 'boolean'}, 'jewellery_type': {'anyOf': [{'enum': ['ring', 'earrings', 'necklace', 'bracelet'], 'type': 'string'}, {'type': 'null'}]}, 'unique_piece_intent': {'type': 'boolean'}}, 'additionalProperties': False}, 'residual_tokens': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'lang': {'enum': ['fr', 'en'], 'type': 'string'}, 'tool': {'type': 'string', 'const': 'search_catalogue'}, 'notices': {'type': 'array', 'items': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'string'}, 'message': {'type': 'string'}}, 'additionalProperties': False}}, 'canonical': {'type': 'string'}, 'freshness': {'type': 'object', 'required': ['status', 'hours_since_sync_success', 'threshold_hours'], 'properties': {'status': {'enum': ['fresh', 'stale', 'unknown'], 'type': 'string'}, 'threshold_hours': {'type': 'number'}, 'hours_since_sync_success': {'type': ['number', 'null']}}, 'additionalProperties': False}, 'provenance': {'type': 'object', 'required': ['sources', 'index_generated_at', 'sync_last_success_at'], 'properties': {'sources': {'type': 'array', 'items': {'type': 'object', 'required': ['url', 'kind', 'fetched_at'], 'properties': {'url': {'type': 'string'}, 'kind': {'enum': ['site_jsonld', 'wikidata', 'llms_txt', 'site_products_feed', 'site_page'], 'type': 'string'}, 'fetched_at': {'type': 'string'}}, 'additionalProperties': False}}, 'index_generated_at': {'type': 'string'}, 'sync_last_success_at': {'type': 'string'}}, 'additionalProperties': False}}, 'additionalProperties': False}
已添加
list_collections
2026年9月17日 12:36
已添加
search_catalogue
2026年9月17日 12:36
已添加
get_product_detail
2026年9月17日 12:36
已添加
get_maison
2026年9月17日 12:36