Year · model · optional make · part type
Vehicle to verified part candidates
Resolve readable vehicle and part-type language to catalog identities, apply optional brand and attribute constraints, and return paged candidates without hiding fitment qualifiers.
Follow the implementation from request to evidence.
Every node corresponds to a real resolver, operation, validation boundary, or response surface in the current code.
01 inputHuman request- validated evidence
02 getAutoCareVehicleResultsVehicle resolverAI hint validated · catalog decides
- one vehicle
03 getAutoCareSearchResultsPart-type resolverExact → contains → fuzzy choices
- validated evidence
04 getAutoCareSearchResultsScoped filtersBrands · attributes · qualifiers
- validated evidence
05 getAutoCareSearchResultsPaged part searchParts + ACES application evidence
- validated evidence
06 gateMaterial qualifier gateReturn every open dimension
- validated evidence
07 outputVerified candidatesParts + choices + completeness
The exact arguments the MCP server accepts.
This schema is generated from the registered Python tool. Required fields, defaults, nested models, and constraints are not maintained by hand.
interactionInteractionContext | nulloptional
nullrequestVehicleSearchInputrequired
attribute_filtersAttributeFilter[]optional
Filter returned parts by PIES product attributes (unit-aware, applied in-process over the retrieved result set). Parts with no attribute data are excluded and disclosed in metadata.attribute_filter_report, never returned as exact matches.
include_maximumbooleanoptional
trueinclude_minimumbooleanoptional
truemaximumnumber | nulloptional
nullminimumnumber | nulloptional
nullnamestringrequired
Catalog attribute name, resolved through PAdb evidence
operatoreq | approx | range | gt | gte | lt | lteoptional
"approx"7 allowed valuessource_textstring | nulloptional
Original customer wording; not catalog evidence
nulltolerancenumber | nulloptional
Relative tolerance for approximate equality only; default 0.01, disclosed in the result
nullunitstring | nulloptional
nullvaluestring | number | integer | nulloptional
nullbase_vehicle_idinteger | nulloptional
nullbase_vehicle_region_idinteger | nulloptional
nullbrandstring | nulloptional
Optional catalog brand name or code
nullbrandsstring[]optional
Optional brand names or codes. Matching brands are resolved against the vehicle-filtered brand facet and passed upstream as brandCodes; a requested brand absent from the facet returns a grounded not_found naming the brands that do exist.
cursor_markstring | nulloptional
nullmakestring | nulloptional
Vehicle make explicitly supplied by the customer. May be omitted when year and model are known.
nullmake_hintstring | nulloptional
Optional non-authoritative make recommendation from the calling AI. The MCP validates it against OptiCat before use and falls back to catalog vehicle resolution when it does not match.
nullmax_resultsintegeroptional
Bounded records to retrieve across pages before comparing application qualifiers. Remaining results expose continuation.
200min 1max 500modelstring | nulloptional
Vehicle model explicitly supplied by the customer.
nullmodel_hintstring | nulloptional
Optional non-authoritative model recommendation; validated with make/year/submodel before use.
nullpageinteger | nulloptional
nullpart_typestringrequired
qualifier_filtersobjectoptional
Natural qualifier names and values extracted from the request, such as Engine Base=2.0L or Drive Type=AWD. Unique catalog facet values are applied as typed upstream filters; unresolved values use conservative application-row validation.
qualifiersQualifierSelection[]optional
typestringrequired
ACES attribute type name or API type token, such as EngineBaseId or PositionId
value_idinteger | stringrequired
ACES attribute value ID returned by a prior clarification
value_namestring | nulloptional
Optional readable label retained for answer assembly
nullsubmodelstring | nulloptional
Customer-supplied trim, badge, or VCdb submodel, such as King Ranch or Denali.
nullyearintegerrequired
year_abbreviatedbooleanoptional
false{
"request": {
"year": 1997,
"make": null,
"make_hint": "Ford",
"model": "Mustang",
"part_type": "Disc Brake Pad Set",
"qualifiers": [],
"max_results": 50
}
} brake pads for a 97 MustangWhat each upstream call needs—and earns.
Conditional calls are labeled. Validation describes the exact rule that allows evidence to advance to the next stage.
getAutoCareVehicleResultsValidate an explicit make or advisory AI make hint for the year.- Requires
- year · optional make or make_hint
- Produces
- makeId · makeName · facet completeness
- Validation
- Hints are recommendations only; they must resolve in the catalog before use.
getAutoCareVehicleResultsResolve the model to one base vehicle, across makes when necessary.- Requires
- year · model · optional makeId
- Produces
- baseVehicleId · makeName · modelName · region
- Validation
- Exactly one complete catalog identity must resolve or the user receives choices.
getAutoCareSearchResultsResolve the readable part type from paged facets with fuzzy suggestions.- Requires
- part_type · vehicle scope
- Produces
- partTypeId · partTypeName · did_you_mean
- Validation
- Exact, contained, then bounded fuzzy ranking; ambiguous taxonomy pauses the search.
getAutoCareSearchResultsResolve requested brands against the vehicle/type brand facet.- Requires
- baseVehicleId · partTypeId · optional brands
- Produces
- brandCodes · available_brands
- Validation
- A missing requested brand can become a grounded negative only from the scoped facet.
getAutoCareSearchResultsRetrieve parts, per-part fitments, paging state, and ACES qualifier facets.- Requires
- baseVehicleId · partTypeId · optional brandCodes/qualifiers
- Produces
- parts · fitments · total · continuation · qualifier facets
- Validation
- Truncation, no-linkage flags, open qualifiers, and in-process attribute-filter limits stay visible.
Every important branch has a named outcome.
These are response decisions in the implemented service—not possible future behavior.
Return typed catalog choices instead of choosing the first match.
Candidates are visible but cannot be promoted to verified fitment.
Expose total, returned, paging mode, cursor, and a no-negative warning.
A negative is permitted only after the scoped search is complete.
Return grounded candidates and per-part evidence.
One shared schema, highlighted for this tool.
Bright fields are populated by this path. Dimmed fields remain part of CatalogResponse but are not a normal output of this tool.
statusResultStatusrequired
summarystringrequired
reason_codeReasonCode | null
queryobject
metadataobject
completenessCompleteness
next_cursorstring | nulloptional
nullnext_pageinteger | nulloptional
nullpages_fetchedintegeroptional
0paging_modenone | page | cursor | capped | unknownoptional
"none"5 allowed valuesreturnedintegeroptional
0source_end_reachedbooleanoptional
This response reached the known end of the source query, even when earlier pages were returned separately.
falsetotalinteger | nulloptional
nulltruncatedbooleanoptional
falsevehiclesVehicleIdentity[]
partsPartRecord[]
relationshipsRelationshipRecord[]
relationship_outcomeRelationshipOutcome | null
fitmentFitmentDecision | null
interchange_validationsInterchangeValidation[]
clarificationClarification | null
pending_clarificationsClarification[]
Every open clarification dimension in one round (clarification stays = the first). Ask them together instead of one round trip per dimension.
warningsstring[]
errorCatalogError | null
evidenceEvidenceRecord[]
- AI make hints are catalog-validated
- No first-match identity selection
- Incomplete model facets ask for the make
- Partial results cannot support brand-negative claims
- No-linkage parts are explicitly disclosed
search_parts_for_vehiclepoc/opticat-mcp-v2/src/opticat_mcp_v2/service.pyVehicleResolver / PartTypeResolverpoc/opticat-mcp-v2/src/opticat_mcp_v2/resolvers.pymcpToolForPlan · vehicle_to_partlib/mcp.tsWhat is known, and what could become possible.
Current gaps stay separate from product concepts so the visual never implies that an idea has already shipped.
- 01
Deep paging still depends on account entitlement
- 02
The material qualifier gate uses facets from the final fetched page
- 03
Vehicle-scoped brand aliases need broader live validation
Show which engine, trim, position, and drive combinations are covered before selection.
Compose several verified part types into a service job while preserving evidence per item.