Year · make · model · 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 resolverMake facet → baseVehicleId
- 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.
requestVehicleSearchInputrequired
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.
namestringrequired
PAdb attribute name, e.g. 'Height'
tolerancenumber | nulloptional
Optional relative tolerance override for numeric comparison (default 0.01)
nullunitstring | nulloptional
Unit of the supplied value, e.g. 'mm' or 'in'
nullvaluestring | number | integerrequired
Required value; numeric values compare unit-aware
base_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
nullmakestringrequired
max_resultsintegeroptional
50min 1max 500modelstringrequired
pageinteger | nulloptional
nullpart_typestringrequired
qualifier_filtersobjectoptional
Natural qualifier names and values extracted from the request, such as Engine Base=2.0L or Drive Type=AWD. These filter returned ACES rows using the same synonym-safe comparison as exact fitment verification.
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
nullyearintegerrequired
{
"request": {
"year": 1997,
"make": "Ford",
"model": "Mustang",
"part_type": "Disc Brake Pad Set",
"qualifiers": [],
"max_results": 50
}
} brake pads for a 1997 Ford 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.
getAutoCareVehicleResultsPage make facets and resolve the requested make for the year.- Requires
- year · make
- Produces
- makeId · makeName · facet completeness
- Validation
- Exact/contained normalized ranking; ambiguity is returned, never auto-selected.
getAutoCareVehicleResultsPage base-vehicle facets for the resolved make.- Requires
- year · makeId · model
- Produces
- baseVehicleId · modelName · region
- Validation
- Exactly one base 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
nullpages_fetchedintegeroptional
0paging_modenone | page | cursor | capped | unknownoptional
"none"5 allowed valuesreturnedintegeroptional
0totalinteger | 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[]
- No first-match identity selection
- All material clarification dimensions return together
- 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.