Server definition
- Hash
- sha256:dfd30ec82bab4e63ae9ee6000feaa61a369bf801b82e32e8a3f348ab80d9b3e5
- What it is
- What a remote MCP server returned when asked what it offers: 7 tools
The blob, as servednamed by its sha256
{
"instructions": "Read-only automotive parts catalogue for iParts EE (iparts.ee). Supports Estonian, Russian, English (pass \"language\"; default Estonian); prices in EUR include VAT. Use search_parts when a manufacturer, OEM, or trade number is known. Use find_part_categories for natural-language part names. It may return several real iParts catalogue categories. Do not assume the first category is always the intended one; select one or more only when the user's intent makes the choice clear, otherwise ask for clarification. Use find_vehicle to resolve the user's car (make/model/year/engine or licence plate); when it returns several variants, narrow down or ask — never pick one silently. After selecting a vehicle with find_vehicle and categories with find_part_categories, use find_parts_for_vehicle (several categories per call are allowed). find_parts_for_vehicle can return public refinements such as axle, side, dimensions, brake system or brand when several fitment variants exist. If the user's original request already identifies a returned refinement (e.g. \"front\" → \"Front Axle\"), apply that filter_ref in a second call; otherwise ask the user when variant_selection_required is true. Each call's filter_refs is the complete desired filter set for that category (the server keeps no filter state): to change the axle send the new axle option instead of the old one, to remove a filter omit it, to clear all send []. Options of one refinement combine as OR, different refinements as AND (fitting position subgroups axle/side/direction: AND between subgroups, OR inside). Never reuse filter_refs of another vehicle or category. \"Show more\" = continue the current list with its next_cursor (same request otherwise); a cursor_expired error means the list changed — start from the first page. Use get_part for the full product card and check_fitment to verify a specific part on a specific vehicle. Before finally recommending a specific part for a vehicle, obtain check_fitment (or get_part with the current vehicle_ref) and read status, variant_selection_required and vehicle_specific_criteria: \"applicable\" is a catalogue link to the vehicle variant, not a guarantee that every restriction of the user's car (PR code, engine number, production date, equipment) is met; variant_selection_required=false does not certify the part. On unknown or unresolved restrictions state the uncertainty and ask; never present a not_applicable part as fitting; universal means \"no vehicle link\", not \"fits every car\". Candidates may be shown before verification, but mark them as unverified. Never invent a catalogue category, filter, vehicle or compatibility result; only use references (vehicle_ref, category_ref, filter_ref) returned by this server. Availability is a supplier inventory snapshot, not realtime stock. No VIN lookup, no EAN search, no cart, checkout, orders or account data.",
"tools": [
{
"description": "Check whether a specific part (brand + article number) fits a selected vehicle (vehicle_ref from find_vehicle) and return fitment restrictions or variant ambiguity when the user must choose. status: applicable (the catalogue links the part to this vehicle), universal (part linked only to \"UNIVERSAL\"), not_applicable, unknown (no catalogue data). IMPORTANT: \"applicable\" = the catalogue links the part to the selected vehicle variant; it is NOT a guarantee that every restriction of the user's actual car is met. Always check vehicle_specific_criteria (PR codes, engine numbers, production dates, equipment) and the variant criteria: several diameters/sizes/systems can exist for one vehicle. variant_selection_required=false only means the storefront check found no conflicting variants — it does not certify the part. When variant_selection_required is true, or variant_check is not_available and criteria_variation is not empty, ask the user to confirm the variant instead of choosing silently. Never recommend a not_applicable part as fitting; treat universal as \"no vehicle link\", not as \"fits every car\"; on unknown say that compatibility cannot be confirmed. Call this tool (or get_part with vehicle_ref) before any final recommendation of a specific part for a vehicle. Optional language (et/ru/en) for criterion names and labels.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"article": {
"description": "Manufacturer part number, e.g. \"0986424815\".",
"maxLength": 100,
"minLength": 1,
"type": "string"
},
"brand": {
"description": "Part brand, e.g. \"BOSCH\".",
"maxLength": 100,
"minLength": 1,
"type": "string"
},
"language": {
"anyOf": [
{
"maxLength": 5,
"minLength": 2,
"type": "string"
},
{
"type": "null"
}
],
"description": "Response language for names, categories, refinements, specifications, labels and URLs. Supported on iparts.ee: et, ru, en. Default: et. Machine enums (status, availability, match_type) are never translated."
},
"vehicle_ref": {
"description": "Opaque vehicle reference exactly as returned by find_vehicle (vehicle_ref).",
"maxLength": 2048,
"minLength": 8,
"type": "string"
}
},
"required": [
"vehicle_ref",
"brand",
"article"
],
"type": "object"
},
"name": "check_fitment",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"article": {
"additionalProperties": false,
"properties": {
"article": {
"type": "string"
},
"brand": {
"type": "string"
},
"category": {
"type": [
"string",
"null"
]
},
"mpn": {
"type": "string"
}
},
"required": [
"brand",
"article",
"mpn",
"category"
],
"type": "object"
},
"article_criteria": {
"description": "The checked part's own values of those criteria and its own fitting position (not copied into other axles).",
"items": {
"additionalProperties": false,
"properties": {
"axle": {
"description": "The part's own fitting position (axle/side) in the response language, or null when the catalogue gives none — then the values cannot be attributed to an axle; ask the user or check the product page.",
"type": [
"string",
"null"
]
},
"name": {
"description": "Criterion name in the response language (same criteria as `criteria`).",
"type": "string"
},
"unit": {
"type": [
"string",
"null"
]
},
"values": {
"description": "The checked part's own values of this criterion (from its catalogue characteristics).",
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"name",
"unit",
"values",
"axle"
],
"type": "object"
},
"type": "array"
},
"criteria": {
"description": "Storefront variant criteria per axle/position (e.g. brake disc diameter per axle) among ALL fitting parts with offers.",
"items": {
"additionalProperties": false,
"properties": {
"axle": {
"description": "Axle/position the values belong to, in the response language, or null.",
"type": [
"string",
"null"
]
},
"name": {
"description": "Criterion name in the response language.",
"type": "string"
},
"possible_values": {
"description": "All values present among fitting parts with offers.",
"items": {
"type": "string"
},
"type": "array"
},
"this_article_values": {
"description": "Values of the checked part that belong to THIS axle/position group only. Empty when the part belongs to another group or its fitting position is unknown — see article_criteria for the part's own values.",
"items": {
"type": "string"
},
"type": "array"
},
"unit": {
"type": [
"string",
"null"
]
}
},
"required": [
"name",
"unit",
"axle",
"possible_values",
"this_article_values"
],
"type": "object"
},
"type": "array"
},
"criteria_variation": {
"description": "Criteria that differ among fitting parts when no storefront check exists.",
"items": {
"additionalProperties": false,
"properties": {
"distinct_count": {
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"type": "integer"
},
"distinct_values": {
"items": {
"type": "string"
},
"type": "array"
},
"name": {
"type": "string"
},
"unit": {
"type": [
"string",
"null"
]
}
},
"required": [
"name",
"unit",
"distinct_values",
"distinct_count"
],
"type": "object"
},
"type": "array"
},
"hint": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"text": {
"type": "string"
},
"title": {
"type": "string"
}
},
"required": [
"title",
"text"
],
"type": "object"
},
{
"type": "null"
}
],
"description": "Storefront warning text in the response language, when the storefront shows one."
},
"language": {
"description": "Language of the localizable texts in this response (ISO 639-1).",
"type": "string"
},
"market": {
"description": "Market code of this deployment, e.g. \"EE\".",
"type": "string"
},
"source": {
"description": "Storefront host the data comes from, e.g. \"iparts.ee\".",
"type": "string"
},
"status": {
"description": "applicable = catalogue links the part to this vehicle; universal = linked only to \"UNIVERSAL\"; not_applicable = linked to other vehicles only; unknown = no catalogue data.",
"enum": [
"applicable",
"universal",
"not_applicable",
"unknown"
],
"type": "string"
},
"variant_check": {
"description": "checked = the storefront variant check ran for this category; not_available = the storefront has no automatic check for this category (see criteria_variation); not_applicable = the part does not fit.",
"enum": [
"checked",
"not_available",
"not_applicable"
],
"type": "string"
},
"variant_selection_required": {
"description": "true = several variants of this category fit the vehicle (storefront size warning or differing criteria) — ask the user, never choose silently.",
"type": "boolean"
},
"vehicle": {
"additionalProperties": false,
"properties": {
"engine_codes": {
"items": {
"type": "string"
},
"type": "array"
},
"fuel": {
"type": [
"string",
"null"
]
},
"hp": {
"anyOf": [
{
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"type": "integer"
},
{
"type": "null"
}
]
},
"kw": {
"anyOf": [
{
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"type": "integer"
},
{
"type": "null"
}
]
},
"make": {
"type": "string"
},
"model": {
"type": [
"string",
"null"
]
},
"url": {
"description": "Public vehicle page URL, or null when the storefront has no slug-based page for this vehicle (its fallback page URL would expose raw catalogue ids, which the MCP does not publish).",
"type": [
"string",
"null"
]
},
"variant": {
"description": "Engine/body variant as on the storefront, e.g. \"D4\", \"2.0 TDI 16V\".",
"type": "string"
},
"vehicle_ref": {
"description": "Opaque vehicle reference — pass it to find_parts_for_vehicle / check_fitment / get_part.",
"type": "string"
},
"year_from": {
"type": [
"string",
"null"
]
},
"year_to": {
"type": [
"string",
"null"
]
}
},
"required": [
"vehicle_ref",
"make",
"model",
"variant",
"year_from",
"year_to",
"kw",
"hp",
"engine_codes",
"fuel",
"url"
],
"type": "object"
},
"vehicle_specific_criteria": {
"description": "Restrictions of this part on this vehicle (production dates, chassis numbers, equipment codes, engine numbers). \"applicable\" means a catalogue link to the vehicle variant; these restrictions still apply and must be confirmed with the user when relevant.",
"items": {
"additionalProperties": false,
"properties": {
"name": {
"type": "string"
},
"unit": {
"type": [
"string",
"null"
]
},
"value": {
"type": "string"
}
},
"required": [
"name",
"value",
"unit"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"market",
"language",
"source",
"status",
"variant_selection_required",
"variant_check",
"hint",
"criteria",
"article_criteria",
"criteria_variation",
"vehicle_specific_criteria"
],
"type": "object"
}
},
{
"description": "The storefront's car-products catalogue (engine / gearbox / power-steering / transmission / hydraulic oil, brake fluid, batteries …) — separate from the parts catalogue of find_parts_for_vehicle; use it for oils and fluids. Without category_ref: the categories (with the vehicle's requirements when vehicle_ref is given; vehicle_specific=false marks generic lists — tyres, motorcycle/boat/agricultural oils, moto/truck batteries — that are not selected by vehicle). With category_ref: the products — selected by the vehicle's requirements (e.g. oil specification \"BMW LL-04\") only when match_mode = spec_matched; for no_spec_data / spec_no_match the list is the WHOLE category and NOT a selection for the vehicle: say so, and point to manual_request (a form on the storefront page; the user submits it there). Prices include VAT (EUR). Optional language (et/ru/en).",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"category_ref": {
"anyOf": [
{
"maxLength": 2048,
"minLength": 8,
"type": "string"
},
{
"type": "null"
}
],
"description": "Car-products category reference (cpc_v1_…) exactly as returned by a previous call without it (e.g. engine oil). Omit to list the categories. Never invent a value."
},
"cursor": {
"anyOf": [
{
"maxLength": 2048,
"minLength": 8,
"type": "string"
},
{
"type": "null"
}
],
"description": "ONLY for the next page: the exact next_cursor of the previous page of the SAME request. Never invent a value."
},
"language": {
"anyOf": [
{
"maxLength": 5,
"minLength": 2,
"type": "string"
},
{
"type": "null"
}
],
"description": "Response language for names, categories, refinements, specifications, labels and URLs. Supported on iparts.ee: et, ru, en. Default: et. Machine enums (status, availability, match_type) are never translated."
},
"limit": {
"default": 6,
"description": "Products per page (1-20, default 6).",
"maximum": 20,
"minimum": 1,
"type": "integer"
},
"vehicle_ref": {
"anyOf": [
{
"description": "Opaque vehicle reference exactly as returned by find_vehicle (vehicle_ref).",
"maxLength": 2048,
"minLength": 8,
"type": "string"
},
{
"type": "null"
}
],
"description": "Optional vehicle (vehicle_ref from find_vehicle): the list is then selected by the vehicle's requirements (e.g. oil specification). Never invent a value."
}
},
"type": "object"
},
"name": "find_car_products",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"categories": {
"anyOf": [
{
"items": {
"additionalProperties": false,
"properties": {
"category_ref": {
"description": "Opaque car-products category reference — pass it to find_car_products.",
"type": "string"
},
"group": {
"description": "Group, e.g. \"Oils\", \"Batteries\".",
"type": "string"
},
"name": {
"type": "string"
},
"url": {
"description": "Storefront page of this category (for the vehicle when one was given).",
"type": "string"
},
"vehicle_requirements": {
"description": "Requirements of the vehicle for this category from the catalogue (e.g. \"BMW LL-04\", \"DOT 4 Class 6\"); empty = the catalogue has none for this vehicle.",
"items": {
"type": "string"
},
"type": "array"
},
"vehicle_specific": {
"description": "true = the catalogue selects this category by vehicle (it holds requirements per vehicle: engine / gearbox / power-steering / transmission oil, brake fluid, car batteries); false = a generic list no vehicle selects (tyres, motorcycle / boat / agricultural / 2-stroke oils, moto and truck batteries) — do not offer it as \"for this vehicle\".",
"type": "boolean"
}
},
"required": [
"category_ref",
"name",
"group",
"url",
"vehicle_specific",
"vehicle_requirements"
],
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"description": "Without category_ref: the visible car-products categories of this market and language. Otherwise null."
},
"category": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"category_ref": {
"type": "string"
},
"fill_volume": {
"description": "Fill volume from the catalogue (litres), e.g. \"7,00\" or \"0,90 – 1,20\".",
"type": [
"string",
"null"
]
},
"group": {
"type": "string"
},
"manual_request": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"note": {
"type": "string"
},
"page_url": {
"type": "string"
}
},
"required": [
"page_url",
"note"
],
"type": "object"
},
{
"type": "null"
}
],
"description": "When the list is not a selection for the vehicle: the storefront page has a request form (the shop selects manually). The user fills it on the site (reCAPTCHA) — never claim a request was sent."
},
"match_mode": {
"description": "spec_matched = products matching the vehicle requirements; no_vehicle = whole category (no vehicle given); no_spec_data = the catalogue has no requirements for this vehicle → WHOLE category, NOT selected for the vehicle; spec_no_match = requirements known but no product matches them → WHOLE category, NOT selected for the vehicle. Only spec_matched is a selection for the vehicle.",
"enum": [
"spec_matched",
"no_vehicle",
"no_spec_data",
"spec_no_match"
],
"type": "string"
},
"name": {
"type": "string"
},
"next_cursor": {
"type": [
"string",
"null"
]
},
"preview": {
"description": "Up to 6 products with a photo spread over the whole list (cheapest → most expensive).",
"items": {
"additionalProperties": false,
"properties": {
"article": {
"type": "string"
},
"brand": {
"type": "string"
},
"image": {
"type": "string"
},
"price": {
"type": [
"number",
"null"
]
},
"url": {
"type": "string"
}
},
"required": [
"brand",
"article",
"image",
"url",
"price"
],
"type": "object"
},
"type": "array"
},
"price_range": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"max": {
"type": "number"
},
"min": {
"type": "number"
}
},
"required": [
"min",
"max"
],
"type": "object"
},
{
"type": "null"
}
]
},
"products": {
"items": {
"additionalProperties": false,
"properties": {
"available": {
"type": "boolean"
},
"brand": {
"type": [
"string",
"null"
]
},
"characteristics": {
"items": {
"additionalProperties": false,
"properties": {
"name": {
"type": "string"
},
"value": {
"type": "string"
}
},
"required": [
"name",
"value"
],
"type": "object"
},
"type": "array"
},
"currency": {
"type": "string"
},
"delivery": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"delivery_label": {
"description": "Storefront delivery label, e.g. \"~28.09\".",
"type": "string"
},
"estimated_delivery": {
"description": "YYYY-MM-DD, business days after ship date.",
"type": "string"
},
"order_before_hour": {
"anyOf": [
{
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"type": "integer"
},
{
"type": "null"
}
],
"description": "Cut-off hour (local time) while ordering today still keeps this ship date; null when not applicable."
},
"ship_date": {
"description": "YYYY-MM-DD",
"type": "string"
},
"ships": {
"enum": [
"today",
"tomorrow",
"date"
],
"type": "string"
},
"ships_label": {
"description": "Storefront shipping label in the response language.",
"type": "string"
}
},
"required": [
"ships",
"ships_label",
"ship_date",
"estimated_delivery",
"delivery_label",
"order_before_hour"
],
"type": "object"
},
{
"type": "null"
}
],
"description": "Delivery of the cheapest offer (same shape as in find_parts_for_vehicle)."
},
"image": {
"type": [
"string",
"null"
]
},
"name": {
"type": "string"
},
"price": {
"type": [
"number",
"null"
]
},
"url": {
"type": "string"
}
},
"required": [
"name",
"brand",
"url",
"image",
"price",
"currency",
"available",
"delivery",
"characteristics"
],
"type": "object"
},
"type": "array"
},
"requirement_name": {
"description": "Display name of the requirement, e.g. \"Engine oil\".",
"type": [
"string",
"null"
]
},
"total_found": {
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"type": "integer"
},
"url": {
"description": "Storefront page of this list (for the vehicle).",
"type": "string"
},
"vehicle_requirements": {
"items": {
"type": "string"
},
"type": "array"
},
"vehicle_specific": {
"type": "boolean"
}
},
"required": [
"category_ref",
"name",
"group",
"url",
"vehicle_specific",
"vehicle_requirements",
"requirement_name",
"fill_volume",
"match_mode",
"manual_request",
"products",
"total_found",
"price_range",
"preview",
"next_cursor"
],
"type": "object"
},
{
"type": "null"
}
]
},
"currency": {
"type": "string"
},
"language": {
"description": "Language of the localizable texts in this response (ISO 639-1).",
"type": "string"
},
"market": {
"description": "Market code of this deployment, e.g. \"EE\".",
"type": "string"
},
"source": {
"description": "Storefront host the data comes from, e.g. \"iparts.ee\".",
"type": "string"
},
"vehicle": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"engine_codes": {
"items": {
"type": "string"
},
"type": "array"
},
"fuel": {
"type": [
"string",
"null"
]
},
"hp": {
"anyOf": [
{
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"type": "integer"
},
{
"type": "null"
}
]
},
"kw": {
"anyOf": [
{
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"type": "integer"
},
{
"type": "null"
}
]
},
"make": {
"type": "string"
},
"model": {
"type": [
"string",
"null"
]
},
"url": {
"description": "Public vehicle page URL, or null when the storefront has no slug-based page for this vehicle (its fallback page URL would expose raw catalogue ids, which the MCP does not publish).",
"type": [
"string",
"null"
]
},
"variant": {
"description": "Engine/body variant as on the storefront, e.g. \"D4\", \"2.0 TDI 16V\".",
"type": "string"
},
"vehicle_ref": {
"description": "Opaque vehicle reference — pass it to find_parts_for_vehicle / check_fitment / get_part.",
"type": "string"
},
"year_from": {
"type": [
"string",
"null"
]
},
"year_to": {
"type": [
"string",
"null"
]
}
},
"required": [
"vehicle_ref",
"make",
"model",
"variant",
"year_from",
"year_to",
"kw",
"hp",
"engine_codes",
"fuel",
"url"
],
"type": "object"
},
{
"type": "null"
}
]
}
},
"required": [
"market",
"language",
"source",
"currency",
"vehicle",
"categories",
"category"
],
"type": "object"
}
},
{
"description": "Resolve a natural-language automotive part request (et/ru/en) into one or more real public iParts catalogue categories using the store's existing multilingual synonym database and Meilisearch. The tool intentionally returns multiple plausible categories (e.g. standard / economy / high-performance brake discs, or brake disc / clutch disc for \"disc\") instead of silently selecting the first search result. Select one or more categories only when the user's intent makes the choice clear, otherwise ask the user. Words like front/rear/left/right are not category criteria here — keep them for the refinements of find_parts_for_vehicle. Vehicle-independent. Use the returned opaque category_ref with find_parts_for_vehicle. Not for part numbers (use search_parts). Paging: has_more/next_cursor continue the SAME candidate list (pass cursor with the same query and language); search_limited=true means the store's search window was full and paging cannot reveal more — ask for a more specific part name. status is decided on the complete candidate list, not on the page.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"cursor": {
"anyOf": [
{
"maxLength": 2048,
"minLength": 8,
"type": "string"
},
{
"type": "null"
}
],
"description": "ONLY for the next page: the exact next_cursor string returned by the previous page of the SAME query and language. For the first page send null or omit the field — never invent a value. Expired or changed lists give cursor_expired → start again with null."
},
"language": {
"anyOf": [
{
"maxLength": 5,
"minLength": 2,
"type": "string"
},
{
"type": "null"
}
],
"description": "Response language for names, categories, refinements, specifications, labels and URLs. Supported on iparts.ee: et, ru, en. Default: et. Machine enums (status, availability, match_type) are never translated."
},
"limit": {
"default": 10,
"description": "Maximum categories per page (1-10).",
"maximum": 10,
"minimum": 1,
"type": "integer"
},
"query": {
"description": "Natural-language part or category name in one of the supported languages, e.g. \"передний тормозной диск\", \"piduriklotsid\", \"oil filter\", \"filters\". Not a part number (use search_parts for numbers).",
"maxLength": 150,
"minLength": 2,
"type": "string"
},
"scope": {
"description": "Optional channel: \"vehicle\" = only the categories that have priced products for the vehicle (vehicle_ref required); \"universal\" = only universal categories (tools, workshop equipment, chemicals, accessories), no vehicle. Omitted = both, as before.",
"enum": [
"vehicle",
"universal"
],
"type": "string"
},
"vehicle_ref": {
"anyOf": [
{
"description": "Opaque vehicle reference exactly as returned by find_vehicle (vehicle_ref).",
"maxLength": 2048,
"minLength": 8,
"type": "string"
},
{
"type": "null"
}
],
"description": "Optional vehicle (vehicle_ref from find_vehicle): the whole candidate list is then checked and only categories with priced products are returned — vehicle-linked ones for this vehicle first, then universal ones (tools, chemicals …) — each with products_for_vehicle; if nothing is purchasable, the first candidates come back with 0. Pass it whenever the vehicle is known. Never invent a value."
}
},
"required": [
"query"
],
"type": "object"
},
"name": "find_part_categories",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"categories": {
"description": "Real catalogue categories in storefront search order (vehicle categories first, then universal). Never assume the first one is the intended one.",
"items": {
"additionalProperties": false,
"properties": {
"category_ref": {
"description": "Opaque category reference — pass it to find_parts_for_vehicle.",
"type": "string"
},
"found_by_meaning": {
"const": true,
"description": "Present when only the meaning search (embeddings) found this category — none of the query words are in its name or synonyms (e.g. \"подкрылок\" → \"Колесная ниша\"). A suggestion by meaning: check it fits what the user asked.",
"type": "boolean"
},
"matched_synonym": {
"description": "Present when the category was reached through the store's synonym table or a wording rewrite rather than its name: the wording that matched (e.g. \"гофра глушителя\", \"задние фары\") — the user named this category in their own words.",
"type": "string"
},
"name": {
"description": "Catalogue category name in the response language.",
"type": "string"
},
"path": {
"description": "Assembly group → category, in the response language.",
"items": {
"type": "string"
},
"type": "array"
},
"products_for_vehicle": {
"anyOf": [
{
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"type": "integer"
},
{
"type": "null"
}
],
"description": "Only when find_part_categories got a vehicle_ref: priced products of this category for that vehicle (universal categories: their universal products). 0 = nothing purchasable for this vehicle."
},
"section_path": {
"description": "The storefront section of the category (localized, root → leaf) in the tree of the request — the vehicle's tree when vehicle_ref is given, else the universal tree for universal categories. Use it to tell same-name categories apart.",
"items": {
"type": "string"
},
"type": "array"
},
"universal": {
"description": "true = universal (not vehicle-specific) category.",
"type": "boolean"
},
"url": {
"description": "Public category page URL.",
"type": "string"
},
"vehicle_types": {
"description": "Vehicle-type catalogue trees this category belongs to. The catalogue keeps separate same-name categories for passenger cars and commercial vehicles (e.g. two \"Brake Disc\" entries): pick the one matching the vehicle_type of the resolved vehicle. Empty = not in any tree.",
"items": {
"enum": [
"car",
"commercial",
"universal"
],
"type": "string"
},
"type": "array"
}
},
"required": [
"category_ref",
"name",
"path",
"url",
"universal",
"vehicle_types"
],
"type": "object"
},
"type": "array"
},
"has_more": {
"description": "true = a further page of the same candidate list is available via next_cursor.",
"type": "boolean"
},
"language": {
"description": "Language of the localizable texts in this response (ISO 639-1).",
"type": "string"
},
"market": {
"description": "Market code of this deployment, e.g. \"EE\".",
"type": "string"
},
"next_cursor": {
"description": "Opaque cursor for the next page (same query and language); null = no further page. Cursors expire after ~15 minutes or when the result list changes (error cursor_expired → start from the first page).",
"type": [
"string",
"null"
]
},
"query": {
"type": "string"
},
"search_limited": {
"description": "true = the store's search window was full, so the candidate list is bounded by the storefront search and is not an exhaustive catalogue listing — paging will not reveal more; use a more specific query.",
"type": "boolean"
},
"source": {
"description": "Storefront host the data comes from, e.g. \"iparts.ee\".",
"type": "string"
},
"status": {
"description": "resolved = exactly one category; multiple_matches = several real categories, the agent selects or asks; not_found = nothing.",
"enum": [
"resolved",
"multiple_matches",
"not_found"
],
"type": "string"
}
},
"required": [
"market",
"language",
"source",
"status",
"query",
"categories",
"has_more",
"next_cursor",
"search_limited"
],
"type": "object"
}
},
{
"description": "List purchasable parts for a previously selected vehicle (vehicle_ref from find_vehicle) and one or more resolved iParts catalogue categories (category_ref from find_part_categories; up to 5 per call, products grouped per category). Returns public product data with current retail offers (EUR, VAT included), availability and delivery, ordered like the storefront, plus public refinements such as fitting position (axle/side), dimensions, brake system or brand when several fitment variants exist. Apply returned filter references in a subsequent call (selections[].filter_refs) when the user's intent identifies a specific variant (e.g. the user said \"front\" and a \"Front Axle\" option is offered); when variant_selection_required is true and the user gave no such information, ask the user instead of choosing. Universal categories (category.universal = true: tools, workshop equipment, chemicals …) have no vehicle links: they are listed like the storefront's universal pages, with or without vehicle_ref, and their products are not vehicle-checked. Filter references are bound to the vehicle and category they were returned for. Optional language (et/ru/en).",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"language": {
"anyOf": [
{
"maxLength": 5,
"minLength": 2,
"type": "string"
},
{
"type": "null"
}
],
"description": "Response language for names, categories, refinements, specifications, labels and URLs. Supported on iparts.ee: et, ru, en. Default: et. Machine enums (status, availability, match_type) are never translated."
},
"limit": {
"default": 10,
"description": "Maximum products per category (1-20, default 10).",
"maximum": 20,
"minimum": 1,
"type": "integer"
},
"selections": {
"description": "One entry per selected category (max 5); products are returned grouped per category.",
"items": {
"properties": {
"category_ref": {
"description": "Opaque category reference exactly as returned by find_part_categories (category_ref).",
"maxLength": 2048,
"minLength": 8,
"type": "string"
},
"cursor": {
"anyOf": [
{
"maxLength": 2048,
"minLength": 8,
"type": "string"
},
{
"type": "null"
}
],
"description": "ONLY for the next page of this category: the exact next_cursor string returned for it by the previous call with the SAME vehicle, category, filters and language. For the first page send null or omit the field — never invent a value; changing filters or vehicle restarts from the first page."
},
"filter_refs": {
"default": [],
"description": "The FULL set of filters to apply to this category (max 10); nothing is accumulated on the server, an empty array = no filters. Semantics = the storefront: options of the same refinement are OR (front + rear = both axles), different refinements are AND (front + left = front-left, brand + diameter = both), except fitting position where its subgroups (axle / side / direction) are AND between them and OR inside. A filter sent twice counts once. Only filter_refs returned for this vehicle and category are accepted; after a vehicle change request new ones.",
"items": {
"description": "Opaque filter reference exactly as returned in refinements[].options[].filter_ref of a previous find_parts_for_vehicle call for the same vehicle and category.",
"maxLength": 2048,
"minLength": 8,
"type": "string"
},
"maxItems": 10,
"type": "array"
}
},
"required": [
"category_ref"
],
"type": "object"
},
"maxItems": 5,
"minItems": 1,
"type": "array"
},
"vehicle_ref": {
"anyOf": [
{
"description": "Opaque vehicle reference exactly as returned by find_vehicle (vehicle_ref).",
"maxLength": 2048,
"minLength": 8,
"type": "string"
},
{
"type": "null"
}
],
"description": "Opaque vehicle reference exactly as returned by find_vehicle. Required for vehicle-specific categories. Universal categories (category.universal = true / vehicle_types [\"universal\"]: tools, workshop equipment, chemicals …) have no vehicle links and are listed without it — like the storefront's universal pages; a given vehicle does not narrow them. Never invent a value: send null or omit it when no vehicle was resolved."
}
},
"required": [
"selections"
],
"type": "object"
},
"name": "find_parts_for_vehicle",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"categories": {
"description": "One entry per selected category, in request order; products are never mixed across categories.",
"items": {
"additionalProperties": false,
"properties": {
"applied_filter_options": {
"description": "The applied options themselves, reported even when their refinement is no longer shown after filtering. filter_refs of a request are the FULL desired filter set of that category (no server-side accumulation); an empty array removes all filters.",
"items": {
"additionalProperties": false,
"properties": {
"code": {
"description": "Fitting Position only: code of the applied value (front_axle, left, …).",
"type": [
"string",
"null"
]
},
"filter_ref": {
"description": "The applied opaque filter reference (as sent).",
"type": "string"
},
"label": {
"description": "Public label of the applied option (e.g. \"Front Axle\", \"300 - 302\", \"ATE\").",
"type": "string"
},
"name": {
"description": "Refinement name in the response language (e.g. \"Fitting Position\", \"Brand\").",
"type": "string"
},
"subgroup": {
"anyOf": [
{
"enum": [
"axle",
"direction",
"side",
"vertical",
"other"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Fitting Position only: subgroup of the applied value."
},
"unit": {
"type": [
"string",
"null"
]
}
},
"required": [
"filter_ref",
"name",
"label",
"unit"
],
"type": "object"
},
"type": "array"
},
"applied_filters": {
"description": "Number of DISTINCT filter options applied to this category (a filter sent twice counts once).",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"type": "integer"
},
"category": {
"additionalProperties": false,
"properties": {
"category_ref": {
"description": "Opaque category reference — pass it to find_parts_for_vehicle.",
"type": "string"
},
"found_by_meaning": {
"const": true,
"description": "Present when only the meaning search (embeddings) found this category — none of the query words are in its name or synonyms (e.g. \"подкрылок\" → \"Колесная ниша\"). A suggestion by meaning: check it fits what the user asked.",
"type": "boolean"
},
"matched_synonym": {
"description": "Present when the category was reached through the store's synonym table or a wording rewrite rather than its name: the wording that matched (e.g. \"гофра глушителя\", \"задние фары\") — the user named this category in their own words.",
"type": "string"
},
"name": {
"description": "Catalogue category name in the response language.",
"type": "string"
},
"path": {
"description": "Assembly group → category, in the response language.",
"items": {
"type": "string"
},
"type": "array"
},
"products_for_vehicle": {
"anyOf": [
{
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"type": "integer"
},
{
"type": "null"
}
],
"description": "Only when find_part_categories got a vehicle_ref: priced products of this category for that vehicle (universal categories: their universal products). 0 = nothing purchasable for this vehicle."
},
"section_path": {
"description": "The storefront section of the category (localized, root → leaf) in the tree of the request — the vehicle's tree when vehicle_ref is given, else the universal tree for universal categories. Use it to tell same-name categories apart.",
"items": {
"type": "string"
},
"type": "array"
},
"universal": {
"description": "true = universal (not vehicle-specific) category.",
"type": "boolean"
},
"url": {
"description": "Public category page URL.",
"type": "string"
},
"vehicle_types": {
"description": "Vehicle-type catalogue trees this category belongs to. The catalogue keeps separate same-name categories for passenger cars and commercial vehicles (e.g. two \"Brake Disc\" entries): pick the one matching the vehicle_type of the resolved vehicle. Empty = not in any tree.",
"items": {
"enum": [
"car",
"commercial",
"universal"
],
"type": "string"
},
"type": "array"
}
},
"required": [
"category_ref",
"name",
"path",
"url",
"universal",
"vehicle_types"
],
"type": "object"
},
"has_more": {
"description": "true = a further page of the same product list is available via next_cursor.",
"type": "boolean"
},
"hint": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"text": {
"type": "string"
},
"title": {
"type": "string"
}
},
"required": [
"title",
"text"
],
"type": "object"
},
{
"type": "null"
}
],
"description": "Storefront warning text in the response language, when the storefront shows one."
},
"next_cursor": {
"description": "Opaque cursor for the next page of THIS category (same vehicle, category, filters, language) — pass it as selections[].cursor. null = last page. Expires after ~15 minutes or when the product set changes (cursor_expired → start from the first page). refinements, total_found and variant warnings always describe the whole set.",
"type": [
"string",
"null"
]
},
"preview": {
"description": "Up to 6 products with a photo spread evenly over the whole filtered list, from the cheapest to the most expensive — to show what the category holds (not a recommendation).",
"items": {
"additionalProperties": false,
"properties": {
"article": {
"type": "string"
},
"brand": {
"type": "string"
},
"image": {
"type": "string"
},
"price": {
"type": [
"number",
"null"
]
},
"url": {
"type": "string"
}
},
"required": [
"brand",
"article",
"image",
"url",
"price"
],
"type": "object"
},
"type": "array"
},
"price_range": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"max": {
"type": "number"
},
"min": {
"type": "number"
}
},
"required": [
"min",
"max"
],
"type": "object"
},
{
"type": "null"
}
],
"description": "Lowest and highest product price (price_from, VAT included, top-level currency) over the whole filtered set — not only this page; null when nothing is priced."
},
"products": {
"description": "Fitting products with a current offer, storefront order (lowest price first).",
"items": {
"additionalProperties": false,
"properties": {
"article": {
"type": "string"
},
"availability": {
"enum": [
"in_stock",
"on_request",
"unavailable"
],
"type": "string"
},
"availability_label": {
"type": [
"string",
"null"
]
},
"brand": {
"type": "string"
},
"currency": {
"type": "string"
},
"delivery": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"delivery_label": {
"description": "Storefront delivery label, e.g. \"~28.09\".",
"type": "string"
},
"estimated_delivery": {
"description": "YYYY-MM-DD, business days after ship date.",
"type": "string"
},
"order_before_hour": {
"anyOf": [
{
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"type": "integer"
},
{
"type": "null"
}
],
"description": "Cut-off hour (local time) while ordering today still keeps this ship date; null when not applicable."
},
"ship_date": {
"description": "YYYY-MM-DD",
"type": "string"
},
"ships": {
"enum": [
"today",
"tomorrow",
"date"
],
"type": "string"
},
"ships_label": {
"description": "Storefront shipping label in the response language.",
"type": "string"
}
},
"required": [
"ships",
"ships_label",
"ship_date",
"estimated_delivery",
"delivery_label",
"order_before_hour"
],
"type": "object"
},
{
"type": "null"
}
],
"description": "Delivery of the cheapest offer; get_part lists all offers."
},
"image": {
"type": [
"string",
"null"
]
},
"mpn": {
"type": "string"
},
"name": {
"type": [
"string",
"null"
]
},
"price": {
"description": "Lowest visible retail price, VAT included.",
"type": [
"number",
"null"
]
},
"specifications": {
"description": "Important characteristics incl. fitting position (axle/side) and dimensions.",
"items": {
"additionalProperties": false,
"properties": {
"name": {
"type": "string"
},
"unit": {
"type": [
"string",
"null"
]
},
"value": {
"type": "string"
}
},
"required": [
"name",
"value",
"unit"
],
"type": "object"
},
"type": "array"
},
"url": {
"type": "string"
}
},
"required": [
"brand",
"article",
"mpn",
"name",
"price",
"currency",
"availability",
"availability_label",
"delivery",
"image",
"url",
"specifications"
],
"type": "object"
},
"type": "array"
},
"refinements": {
"description": "Public filters available for this vehicle + category (storefront facets). Apply an option by passing its filter_ref in selections[].filter_refs.",
"items": {
"additionalProperties": false,
"properties": {
"name": {
"description": "Criterion name in the response language, e.g. \"Fitting Position\", \"Outer diameter\", \"Brand\".",
"type": "string"
},
"options": {
"items": {
"additionalProperties": false,
"properties": {
"code": {
"description": "Fitting Position only: language-independent code of the value — front_axle, rear_axle, front, rear, left, right, upper, lower, inner, outer, centre, … .",
"type": [
"string",
"null"
]
},
"count": {
"description": "Products matching this option (as shown on the storefront).",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"type": "integer"
},
"filter_ref": {
"description": "Opaque filter reference, valid only for this vehicle and category.",
"type": "string"
},
"label": {
"description": "Value in the response language (or a value range as the storefront groups it).",
"type": "string"
},
"subgroup": {
"anyOf": [
{
"enum": [
"axle",
"direction",
"side",
"vertical",
"other"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Fitting Position only: the storefront's subgroup of the value (its quick filter shows the position as one row per subgroup; filters combine with AND between subgroups and OR inside one)."
}
},
"required": [
"filter_ref",
"label",
"count"
],
"type": "object"
},
"type": "array"
},
"products_with_value": {
"description": "How many products of this list state this characteristic at all (the rest have no value for it).",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"type": "integer"
},
"role": {
"description": "primary = the storefront's main filters (fitting position, brand, and the size characteristics of its \"several sizes\" hint): narrow the list by these. reference = other characteristics that not every manufacturer states: filtering by one silently drops the products that do not state it, so do NOT narrow by them on your own — mention them as something the buyer should compare (apply only if the user explicitly asks for that exact value).",
"enum": [
"primary",
"reference"
],
"type": "string"
},
"unit": {
"type": [
"string",
"null"
]
}
},
"required": [
"name",
"unit",
"role",
"products_with_value",
"options"
],
"type": "object"
},
"type": "array"
},
"required_characteristics": {
"items": {
"additionalProperties": false,
"properties": {
"axle": {
"type": [
"string",
"null"
]
},
"name": {
"type": "string"
},
"possible_values": {
"items": {
"type": "string"
},
"type": "array"
},
"unit": {
"type": [
"string",
"null"
]
}
},
"required": [
"name",
"unit",
"axle",
"possible_values"
],
"type": "object"
},
"type": "array"
},
"section_path": {
"description": "The storefront section of this list, localized, root → leaf (e.g. \"Тормозная система\", \"Барабанный тормозной механизм\", \"Тормозная колодка-накладка\"). Tells same-name categories apart: \"Комплект тормозных колодок\" under a drum-brake section is the parking-brake shoe set, not disc pads. [] when unknown.",
"items": {
"type": "string"
},
"type": "array"
},
"status": {
"enum": [
"products",
"variant_selection_required",
"no_products"
],
"type": "string"
},
"storefront_url": {
"description": "The same list on the iParts storefront — the section page of this vehicle with this category and the applied filters pre-selected — where the user compares and buys. null when it cannot be built (then use category.url).",
"type": [
"string",
"null"
]
},
"total_found": {
"description": "Products in the whole filtered fitting set of this category (not just this page; capped at the storefront's 400-product scan).",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"type": "integer"
},
"variant_selection_required": {
"description": "true = the storefront warns that several incompatible variants fit this vehicle; use refinements / ask the user before choosing.",
"type": "boolean"
}
},
"required": [
"category",
"status",
"refinements",
"applied_filters",
"applied_filter_options",
"variant_selection_required",
"required_characteristics",
"hint",
"products",
"total_found",
"price_range",
"preview",
"storefront_url",
"section_path",
"has_more",
"next_cursor"
],
"type": "object"
},
"type": "array"
},
"currency": {
"type": "string"
},
"language": {
"description": "Language of the localizable texts in this response (ISO 639-1).",
"type": "string"
},
"market": {
"description": "Market code of this deployment, e.g. \"EE\".",
"type": "string"
},
"source": {
"description": "Storefront host the data comes from, e.g. \"iparts.ee\".",
"type": "string"
},
"vehicle": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"engine_codes": {
"items": {
"type": "string"
},
"type": "array"
},
"fuel": {
"type": [
"string",
"null"
]
},
"hp": {
"anyOf": [
{
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"type": "integer"
},
{
"type": "null"
}
]
},
"kw": {
"anyOf": [
{
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"type": "integer"
},
{
"type": "null"
}
]
},
"make": {
"type": "string"
},
"model": {
"type": [
"string",
"null"
]
},
"url": {
"description": "Public vehicle page URL, or null when the storefront has no slug-based page for this vehicle (its fallback page URL would expose raw catalogue ids, which the MCP does not publish).",
"type": [
"string",
"null"
]
},
"variant": {
"description": "Engine/body variant as on the storefront, e.g. \"D4\", \"2.0 TDI 16V\".",
"type": "string"
},
"vehicle_ref": {
"description": "Opaque vehicle reference — pass it to find_parts_for_vehicle / check_fitment / get_part.",
"type": "string"
},
"year_from": {
"type": [
"string",
"null"
]
},
"year_to": {
"type": [
"string",
"null"
]
}
},
"required": [
"vehicle_ref",
"make",
"model",
"variant",
"year_from",
"year_to",
"kw",
"hp",
"engine_codes",
"fuel",
"url"
],
"type": "object"
},
{
"type": "null"
}
],
"description": "The vehicle of vehicle_ref; null when the call listed universal categories without a vehicle."
}
},
"required": [
"market",
"language",
"source",
"currency",
"vehicle",
"categories"
],
"type": "object"
}
},
{
"description": "Resolve the user's vehicle to an exact catalogue vehicle variant of iParts EE using make, model, year and engine details, step by step: make → models → variants. A EE licence plate (\"plate\") is resolved through the storefront's own plate lookup (cache first, then external registries; the first lookup of a plate may take up to a minute). A vehicle the user already chose on the storefront (garage / active car) is resolved exactly by its public vehicle page URL (\"vehicle_url\"). Returns an opaque vehicle_ref for each matching variant — pass it to find_parts_for_vehicle, check_fitment or get_part. Returns several candidates with needs_selection=true when the vehicle cannot be resolved safely — never picks one automatically; narrow with year, engine code, kW or fuel, or ask the user. Each match includes model, variant name, production years, engine codes, fuel, kW/hp, displacement and the vehicle page URL. Optional language (et/ru/en). VIN lookup is not available.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"anyOf": [
{
"not": {
"anyOf": [
{
"required": [
"plate"
]
},
{
"required": [
"vehicle_url"
]
}
]
},
"required": [
"make"
]
},
{
"not": {
"anyOf": [
{
"required": [
"make"
]
},
{
"required": [
"model"
]
},
{
"required": [
"year"
]
},
{
"required": [
"engine"
]
},
{
"required": [
"vehicle_url"
]
}
]
},
"required": [
"plate"
]
},
{
"not": {
"anyOf": [
{
"required": [
"make"
]
},
{
"required": [
"model"
]
},
{
"required": [
"year"
]
},
{
"required": [
"engine"
]
},
{
"required": [
"plate"
]
}
]
},
"required": [
"vehicle_url"
]
}
],
"properties": {
"engine": {
"anyOf": [
{
"maxLength": 40,
"minLength": 1,
"type": "string"
},
{
"type": "null"
}
],
"description": "Engine code (e.g. \"D4204T\", \"BKD\") or engine text as in the variant name (e.g. \"2.0 TDI\", \"D4\")."
},
"fuel": {
"anyOf": [
{
"maxLength": 30,
"minLength": 1,
"type": "string"
},
{
"type": "null"
}
],
"description": "Fuel filter in the response language or English, e.g. \"Diesel\", \"Bensiin\"."
},
"hp": {
"anyOf": [
{
"maximum": 3000,
"minimum": 1,
"type": "integer"
},
{
"type": "null"
}
],
"description": "Engine power in hp (exact match on the variant)."
},
"kw": {
"anyOf": [
{
"maximum": 2000,
"minimum": 1,
"type": "integer"
},
{
"type": "null"
}
],
"description": "Engine power in kW (exact match on the variant)."
},
"language": {
"anyOf": [
{
"maxLength": 5,
"minLength": 2,
"type": "string"
},
{
"type": "null"
}
],
"description": "Response language for names, categories, refinements, specifications, labels and URLs. Supported on iparts.ee: et, ru, en. Default: et. Machine enums (status, availability, match_type) are never translated."
},
"limit": {
"default": 20,
"description": "Maximum vehicle variants to return (1-50, default 20).",
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"make": {
"description": "Vehicle make, e.g. \"VOLVO\", \"VW\", \"Mercedes-Benz\". Required in the description mode; omit it (do not send null) with \"plate\" or \"vehicle_url\".",
"maxLength": 60,
"minLength": 1,
"type": "string"
},
"model": {
"anyOf": [
{
"maxLength": 60,
"minLength": 1,
"type": "string"
},
{
"type": "null"
}
],
"description": "Model text as on the site, e.g. \"V70\", \"Golf V\", \"3 (E90)\". Optional; without it the models of the make are listed."
},
"plate": {
"description": "EE licence plate (registration number), e.g. \"123ABC\". Resolved through the storefront's own plate lookup (may take up to a minute on the first lookup of a plate). Send EITHER plate OR the make/model/year/engine description — both together are rejected (invalid_input) so that a plate answer is never mixed with a description.",
"maxLength": 12,
"minLength": 2,
"type": "string"
},
"vehicle_type": {
"default": "car",
"description": "Catalogue section: passenger car (default), commercial vehicle, or motorcycle.",
"enum": [
"car",
"commercial",
"motorcycle"
],
"type": "string"
},
"vehicle_url": {
"description": "Public vehicle page URL of this storefront (e.g. \"https://iparts.ee/parts/volvo/v70-iii-135/d4-133kw-2013\", with or without language prefix) — for a vehicle the user already selected on the site (garage / active car). Resolves to exactly that variant. Send it alone (not with plate or a description).",
"maxLength": 400,
"minLength": 8,
"type": "string"
},
"year": {
"anyOf": [
{
"maximum": 2035,
"minimum": 1950,
"type": "integer"
},
{
"type": "null"
}
],
"description": "Model year (production year) to narrow models/variants."
}
},
"type": "object"
},
"name": "find_vehicle",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"has_more": {
"type": "boolean"
},
"language": {
"description": "Language of the localizable texts in this response (ISO 639-1).",
"type": "string"
},
"make": {
"type": [
"string",
"null"
]
},
"make_candidates": {
"items": {
"type": "string"
},
"type": "array"
},
"market": {
"description": "Market code of this deployment, e.g. \"EE\".",
"type": "string"
},
"matches": {
"items": {
"additionalProperties": false,
"properties": {
"body": {
"type": [
"string",
"null"
]
},
"ccm": {
"anyOf": [
{
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"type": "integer"
},
{
"type": "null"
}
]
},
"cylinders": {
"anyOf": [
{
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"type": "integer"
},
{
"type": "null"
}
]
},
"drive": {
"type": [
"string",
"null"
]
},
"engine_codes": {
"items": {
"type": "string"
},
"type": "array"
},
"fuel": {
"type": [
"string",
"null"
]
},
"hp": {
"anyOf": [
{
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"type": "integer"
},
{
"type": "null"
}
]
},
"kw": {
"anyOf": [
{
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"type": "integer"
},
{
"type": "null"
}
]
},
"make": {
"type": "string"
},
"model": {
"type": "string"
},
"url": {
"description": "Public vehicle page URL, or null when the storefront has no slug-based page for this vehicle (its fallback page URL would expose raw catalogue ids, which the MCP does not publish).",
"type": [
"string",
"null"
]
},
"variant": {
"description": "Engine/body variant name as on the storefront.",
"type": "string"
},
"vehicle_ref": {
"description": "Opaque vehicle reference for the other tools.",
"type": "string"
},
"vehicle_type": {
"enum": [
"car",
"commercial",
"motorcycle"
],
"type": "string"
},
"year_from": {
"description": "YYYY-MM",
"type": [
"string",
"null"
]
},
"year_to": {
"description": "YYYY-MM or null when still produced.",
"type": [
"string",
"null"
]
}
},
"required": [
"vehicle_ref",
"make",
"model",
"variant",
"year_from",
"year_to",
"engine_codes",
"fuel",
"body",
"drive",
"kw",
"hp",
"ccm",
"cylinders",
"vehicle_type",
"url"
],
"type": "object"
},
"type": "array"
},
"models": {
"description": "Models of the requested vehicle_type (default car). Pass the exact model name back as \"model\".",
"items": {
"additionalProperties": false,
"properties": {
"name": {
"type": "string"
},
"year_from": {
"type": [
"string",
"null"
]
},
"year_to": {
"type": [
"string",
"null"
]
}
},
"required": [
"name",
"year_from",
"year_to"
],
"type": "object"
},
"type": "array"
},
"needs_selection": {
"description": "true = several candidates; ask the user or narrow the input, never pick silently.",
"type": "boolean"
},
"selection_level": {
"enum": [
"make",
"model",
"variant",
"none"
],
"type": "string"
},
"source": {
"description": "Storefront host the data comes from, e.g. \"iparts.ee\".",
"type": "string"
},
"status": {
"enum": [
"resolved",
"needs_selection",
"not_found"
],
"type": "string"
},
"total_matches": {
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"type": "integer"
},
"vehicle_types": {
"description": "Vehicle types of this make in the catalogue with their model counts. When there are several and the user did not say which (e.g. Volvo cars and trucks), ask — then pass vehicle_type.",
"items": {
"additionalProperties": false,
"properties": {
"models": {
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"type": "integer"
},
"vehicle_type": {
"enum": [
"car",
"commercial",
"motorcycle"
],
"type": "string"
}
},
"required": [
"vehicle_type",
"models"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"market",
"language",
"source",
"status",
"needs_selection",
"selection_level",
"make",
"make_candidates",
"models",
"vehicle_types",
"matches",
"total_matches",
"has_more"
],
"type": "object"
}
},
{
"description": "Get the public product card of one part identified by brand and article number from iParts EE (iparts.ee): name, category, EAN codes, OEM numbers (max 20), trade numbers, technical specifications (name/value/unit), images, product page URL, current retail offers (price in EUR incl. VAT, quantity, ship date, estimated delivery, order-before cut-off), availability and deposit. Pass vehicle_ref (from find_vehicle) to include a fitment check with variant-ambiguity detection and vehicle-specific criteria (required before recommending this part for that vehicle; \"applicable\" is a catalogue link, not a guarantee that all restrictions of the user's car are met). Optional language (et/ru/en). Availability is based on the latest supplier inventory snapshot and may change before checkout. No supplier identities or purchase prices are exposed.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"article": {
"description": "Manufacturer part number, e.g. \"0986424815\" or \"0 986 424 815\".",
"maxLength": 100,
"minLength": 1,
"type": "string"
},
"brand": {
"description": "Part brand, e.g. \"BOSCH\".",
"maxLength": 100,
"minLength": 1,
"type": "string"
},
"include_alternatives": {
"default": false,
"description": "Also return up to 20 alternative parts (cross references, storefront order). Slower; default false.",
"type": "boolean"
},
"language": {
"anyOf": [
{
"maxLength": 5,
"minLength": 2,
"type": "string"
},
{
"type": "null"
}
],
"description": "Response language for names, categories, refinements, specifications, labels and URLs. Supported on iparts.ee: et, ru, en. Default: et. Machine enums (status, availability, match_type) are never translated."
},
"vehicle_ref": {
"anyOf": [
{
"description": "Opaque vehicle reference exactly as returned by find_vehicle (vehicle_ref).",
"maxLength": 2048,
"minLength": 8,
"type": "string"
},
{
"type": "null"
}
],
"description": "Optional vehicle reference (from find_vehicle) to include a fitment check and vehicle-specific criteria. No vehicle: omit it or send null — never a placeholder string."
}
},
"required": [
"brand",
"article"
],
"type": "object"
},
"name": "get_part",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"alternatives": {
"anyOf": [
{
"items": {
"additionalProperties": false,
"properties": {
"article": {
"description": "Article number as printed (with spaces/dots).",
"type": "string"
},
"available": {
"description": "At least one current offer exists (supplier inventory snapshot).",
"type": "boolean"
},
"brand": {
"description": "Part brand as spelled in the catalogue.",
"type": "string"
},
"currency": {
"type": "string"
},
"match_type": {
"description": "direct = the searched number is the article number; trade_number = the searched number is a trade/usage number of the article; oem = the article is a cross reference of the searched OEM number; cross_reference = aftermarket cross reference.",
"enum": [
"direct",
"trade_number",
"oem",
"cross_reference"
],
"type": "string"
},
"mpn": {
"description": "Normalised number (letters and digits only) — pass it as \"article\" to get_part / check_fitment.",
"type": "string"
},
"name": {
"description": "Product name in the response language.",
"type": [
"string",
"null"
]
},
"price_from": {
"description": "Lowest visible retail price, VAT included.",
"type": [
"number",
"null"
]
},
"url": {
"description": "Public product page URL (language-specific).",
"type": "string"
}
},
"required": [
"brand",
"article",
"mpn",
"name",
"match_type",
"url",
"available",
"price_from",
"currency"
],
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
]
},
"available": {
"type": "boolean"
},
"currency": {
"type": "string"
},
"deposit": {
"description": "Core charge added by the storefront, VAT included, or null.",
"type": [
"number",
"null"
]
},
"fitment": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"article": {
"additionalProperties": false,
"properties": {
"article": {
"type": "string"
},
"brand": {
"type": "string"
},
"category": {
"type": [
"string",
"null"
]
},
"mpn": {
"type": "string"
}
},
"required": [
"brand",
"article",
"mpn",
"category"
],
"type": "object"
},
"article_criteria": {
"description": "The checked part's own values of those criteria and its own fitting position (not copied into other axles).",
"items": {
"additionalProperties": false,
"properties": {
"axle": {
"description": "The part's own fitting position (axle/side) in the response language, or null when the catalogue gives none — then the values cannot be attributed to an axle; ask the user or check the product page.",
"type": [
"string",
"null"
]
},
"name": {
"description": "Criterion name in the response language (same criteria as `criteria`).",
"type": "string"
},
"unit": {
"type": [
"string",
"null"
]
},
"values": {
"description": "The checked part's own values of this criterion (from its catalogue characteristics).",
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"name",
"unit",
"values",
"axle"
],
"type": "object"
},
"type": "array"
},
"criteria": {
"description": "Storefront variant criteria per axle/position (e.g. brake disc diameter per axle) among ALL fitting parts with offers.",
"items": {
"additionalProperties": false,
"properties": {
"axle": {
"description": "Axle/position the values belong to, in the response language, or null.",
"type": [
"string",
"null"
]
},
"name": {
"description": "Criterion name in the response language.",
"type": "string"
},
"possible_values": {
"description": "All values present among fitting parts with offers.",
"items": {
"type": "string"
},
"type": "array"
},
"this_article_values": {
"description": "Values of the checked part that belong to THIS axle/position group only. Empty when the part belongs to another group or its fitting position is unknown — see article_criteria for the part's own values.",
"items": {
"type": "string"
},
"type": "array"
},
"unit": {
"type": [
"string",
"null"
]
}
},
"required": [
"name",
"unit",
"axle",
"possible_values",
"this_article_values"
],
"type": "object"
},
"type": "array"
},
"criteria_variation": {
"description": "Criteria that differ among fitting parts when no storefront check exists.",
"items": {
"additionalProperties": false,
"properties": {
"distinct_count": {
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"type": "integer"
},
"distinct_values": {
"items": {
"type": "string"
},
"type": "array"
},
"name": {
"type": "string"
},
"unit": {
"type": [
"string",
"null"
]
}
},
"required": [
"name",
"unit",
"distinct_values",
"distinct_count"
],
"type": "object"
},
"type": "array"
},
"hint": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"text": {
"type": "string"
},
"title": {
"type": "string"
}
},
"required": [
"title",
"text"
],
"type": "object"
},
{
"type": "null"
}
],
"description": "Storefront warning text in the response language, when the storefront shows one."
},
"language": {
"description": "Language of the localizable texts in this response (ISO 639-1).",
"type": "string"
},
"market": {
"description": "Market code of this deployment, e.g. \"EE\".",
"type": "string"
},
"source": {
"description": "Storefront host the data comes from, e.g. \"iparts.ee\".",
"type": "string"
},
"status": {
"description": "applicable = catalogue links the part to this vehicle; universal = linked only to \"UNIVERSAL\"; not_applicable = linked to other vehicles only; unknown = no catalogue data.",
"enum": [
"applicable",
"universal",
"not_applicable",
"unknown"
],
"type": "string"
},
"variant_check": {
"description": "checked = the storefront variant check ran for this category; not_available = the storefront has no automatic check for this category (see criteria_variation); not_applicable = the part does not fit.",
"enum": [
"checked",
"not_available",
"not_applicable"
],
"type": "string"
},
"variant_selection_required": {
"description": "true = several variants of this category fit the vehicle (storefront size warning or differing criteria) — ask the user, never choose silently.",
"type": "boolean"
},
"vehicle": {
"additionalProperties": false,
"properties": {
"engine_codes": {
"items": {
"type": "string"
},
"type": "array"
},
"fuel": {
"type": [
"string",
"null"
]
},
"hp": {
"anyOf": [
{
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"type": "integer"
},
{
"type": "null"
}
]
},
"kw": {
"anyOf": [
{
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"type": "integer"
},
{
"type": "null"
}
]
},
"make": {
"type": "string"
},
"model": {
"type": [
"string",
"null"
]
},
"url": {
"description": "Public vehicle page URL, or null when the storefront has no slug-based page for this vehicle (its fallback page URL would expose raw catalogue ids, which the MCP does not publish).",
"type": [
"string",
"null"
]
},
"variant": {
"description": "Engine/body variant as on the storefront, e.g. \"D4\", \"2.0 TDI 16V\".",
"type": "string"
},
"vehicle_ref": {
"description": "Opaque vehicle reference — pass it to find_parts_for_vehicle / check_fitment / get_part.",
"type": "string"
},
"year_from": {
"type": [
"string",
"null"
]
},
"year_to": {
"type": [
"string",
"null"
]
}
},
"required": [
"vehicle_ref",
"make",
"model",
"variant",
"year_from",
"year_to",
"kw",
"hp",
"engine_codes",
"fuel",
"url"
],
"type": "object"
},
"vehicle_specific_criteria": {
"description": "Restrictions of this part on this vehicle (production dates, chassis numbers, equipment codes, engine numbers). \"applicable\" means a catalogue link to the vehicle variant; these restrictions still apply and must be confirmed with the user when relevant.",
"items": {
"additionalProperties": false,
"properties": {
"name": {
"type": "string"
},
"unit": {
"type": [
"string",
"null"
]
},
"value": {
"type": "string"
}
},
"required": [
"name",
"value",
"unit"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"market",
"language",
"source",
"status",
"variant_selection_required",
"variant_check",
"hint",
"criteria",
"article_criteria",
"criteria_variation",
"vehicle_specific_criteria"
],
"type": "object"
},
{
"type": "null"
}
]
},
"language": {
"description": "Language of the localizable texts in this response (ISO 639-1).",
"type": "string"
},
"market": {
"description": "Market code of this deployment, e.g. \"EE\".",
"type": "string"
},
"offers": {
"description": "Storefront offers (delivery options), cheapest first; never individual suppliers.",
"items": {
"additionalProperties": false,
"properties": {
"availability": {
"description": "in_stock = deliverable from the supplier inventory snapshot; on_request = price inquiry only.",
"enum": [
"in_stock",
"on_request"
],
"type": "string"
},
"availability_label": {
"description": "Storefront label in the response language.",
"type": "string"
},
"badge_labels": {
"description": "Badge texts in the response language.",
"items": {
"type": "string"
},
"type": "array"
},
"badges": {
"description": "Storefront badges.",
"items": {
"enum": [
"fastest",
"best_price",
"recommended"
],
"type": "string"
},
"type": "array"
},
"currency": {
"type": "string"
},
"delivery": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"delivery_label": {
"description": "Storefront delivery label, e.g. \"~28.09\".",
"type": "string"
},
"estimated_delivery": {
"description": "YYYY-MM-DD, business days after ship date.",
"type": "string"
},
"order_before_hour": {
"anyOf": [
{
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"type": "integer"
},
{
"type": "null"
}
],
"description": "Cut-off hour (local time) while ordering today still keeps this ship date; null when not applicable."
},
"ship_date": {
"description": "YYYY-MM-DD",
"type": "string"
},
"ships": {
"enum": [
"today",
"tomorrow",
"date"
],
"type": "string"
},
"ships_label": {
"description": "Storefront shipping label in the response language.",
"type": "string"
}
},
"required": [
"ships",
"ships_label",
"ship_date",
"estimated_delivery",
"delivery_label",
"order_before_hour"
],
"type": "object"
},
{
"type": "null"
}
]
},
"price": {
"description": "Retail price, VAT included.",
"type": "number"
},
"quantity": {
"description": "Quantity printed on the storefront for this offer (supplier snapshot; may change before checkout).",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"type": "integer"
}
},
"required": [
"price",
"currency",
"availability",
"availability_label",
"quantity",
"delivery",
"badges",
"badge_labels"
],
"type": "object"
},
"type": "array"
},
"price_from": {
"type": [
"number",
"null"
]
},
"product": {
"additionalProperties": false,
"properties": {
"article": {
"type": "string"
},
"brand": {
"type": "string"
},
"category": {
"description": "Catalogue category name in the response language.",
"type": [
"string",
"null"
]
},
"ean": {
"items": {
"type": "string"
},
"type": "array"
},
"images": {
"items": {
"type": "string"
},
"type": "array"
},
"min_order_quantity": {
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"type": "integer"
},
"mpn": {
"description": "Normalised number.",
"type": "string"
},
"name": {
"type": [
"string",
"null"
]
},
"oem_numbers": {
"description": "Max 20.",
"items": {
"additionalProperties": false,
"properties": {
"brand": {
"type": "string"
},
"number": {
"type": "string"
}
},
"required": [
"brand",
"number"
],
"type": "object"
},
"type": "array"
},
"oem_numbers_total": {
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"type": "integer"
},
"specifications": {
"description": "Storefront order; with vehicle_ref the vehicle-specific values are included.",
"items": {
"additionalProperties": false,
"properties": {
"name": {
"description": "Criterion name in the response language.",
"type": "string"
},
"unit": {
"type": [
"string",
"null"
]
},
"value": {
"description": "Display value (several values joined with \" / \").",
"type": "string"
},
"values": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"name",
"value",
"values",
"unit"
],
"type": "object"
},
"type": "array"
},
"trade_numbers": {
"items": {
"type": "string"
},
"type": "array"
},
"url": {
"type": "string"
}
},
"required": [
"brand",
"article",
"mpn",
"name",
"category",
"ean",
"oem_numbers",
"oem_numbers_total",
"trade_numbers",
"specifications",
"images",
"url",
"min_order_quantity"
],
"type": "object"
},
"source": {
"description": "Storefront host the data comes from, e.g. \"iparts.ee\".",
"type": "string"
},
"status": {
"const": "found",
"type": "string"
}
},
"required": [
"market",
"language",
"source",
"currency",
"status",
"product",
"offers",
"available",
"price_from",
"deposit",
"fitment",
"alternatives"
],
"type": "object"
}
},
{
"description": "Search the public iParts EE (iparts.ee) automotive parts catalogue by a NUMBER: manufacturer part number, OEM number, trade number, or brand + article number. Use it when the user already has a number. For a part described in words use find_part_categories (and then find_vehicle → find_parts_for_vehicle) instead. Returns matching articles with match_type (direct, trade_number, oem, cross_reference), the public product URL, whether an offer exists and the lowest current retail price in EUR (VAT included), in storefront order. Only articles with a current offer are listed, exactly as on the storefront. Optional language (et/ru/en) selects the language of names and URLs. VIN and EAN search are not supported. Availability is based on the latest supplier inventory snapshot and may change before checkout.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"brand": {
"anyOf": [
{
"maxLength": 100,
"minLength": 1,
"type": "string"
},
{
"type": "null"
}
],
"description": "Optional part brand filter, e.g. \"BOSCH\", \"MANN-FILTER\", \"LEMFÖRDER\". Spelling variants are normalised; ambiguous input returns candidates."
},
"language": {
"anyOf": [
{
"maxLength": 5,
"minLength": 2,
"type": "string"
},
{
"type": "null"
}
],
"description": "Response language for names, categories, refinements, specifications, labels and URLs. Supported on iparts.ee: et, ru, en. Default: et. Machine enums (status, availability, match_type) are never translated."
},
"limit": {
"default": 10,
"description": "Maximum number of results (1-20, default 10).",
"maximum": 20,
"minimum": 1,
"type": "integer"
},
"query": {
"description": "Manufacturer part number, OEM number or trade number (spaces, dots and dashes are ignored, e.g. \"0 986 424 815\" == \"0986424815\"). VIN and EAN are NOT supported. Not for part names — use find_part_categories for natural language.",
"maxLength": 100,
"minLength": 1,
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "search_parts",
"outputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"brand": {
"description": "Resolved brand filter (canonical spelling) or null.",
"type": [
"string",
"null"
]
},
"currency": {
"type": "string"
},
"has_more": {
"type": "boolean"
},
"language": {
"description": "Language of the localizable texts in this response (ISO 639-1).",
"type": "string"
},
"market": {
"description": "Market code of this deployment, e.g. \"EE\".",
"type": "string"
},
"query": {
"type": "string"
},
"results": {
"description": "Storefront order: exact number first, then cross references by lowest price. Only articles with a current offer.",
"items": {
"additionalProperties": false,
"properties": {
"article": {
"description": "Article number as printed (with spaces/dots).",
"type": "string"
},
"available": {
"description": "At least one current offer exists (supplier inventory snapshot).",
"type": "boolean"
},
"brand": {
"description": "Part brand as spelled in the catalogue.",
"type": "string"
},
"currency": {
"type": "string"
},
"match_type": {
"description": "direct = the searched number is the article number; trade_number = the searched number is a trade/usage number of the article; oem = the article is a cross reference of the searched OEM number; cross_reference = aftermarket cross reference.",
"enum": [
"direct",
"trade_number",
"oem",
"cross_reference"
],
"type": "string"
},
"mpn": {
"description": "Normalised number (letters and digits only) — pass it as \"article\" to get_part / check_fitment.",
"type": "string"
},
"name": {
"description": "Product name in the response language.",
"type": [
"string",
"null"
]
},
"price_from": {
"description": "Lowest visible retail price, VAT included.",
"type": [
"number",
"null"
]
},
"url": {
"description": "Public product page URL (language-specific).",
"type": "string"
}
},
"required": [
"brand",
"article",
"mpn",
"name",
"match_type",
"url",
"available",
"price_from",
"currency"
],
"type": "object"
},
"type": "array"
},
"source": {
"description": "Storefront host the data comes from, e.g. \"iparts.ee\".",
"type": "string"
},
"status": {
"enum": [
"found",
"not_found"
],
"type": "string"
},
"storefront_url": {
"description": "The storefront number-search page for this query (all matches, with photos and offers) — the link to give the user.",
"type": "string"
},
"total_found": {
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"type": "integer"
}
},
"required": [
"market",
"language",
"source",
"currency",
"status",
"query",
"brand",
"results",
"storefront_url",
"total_found",
"has_more"
],
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:dfd30ec82bab4e63ae9ee6000feaa61a369bf801b82e32e8a3f348ab80d9b3e5 | sha256sum