Local syntax and forbidden-character check
VIN decode to optional part search
Validate and decode a VIN, preserve every returned configuration detail, require selection when several vehicles resolve, and optionally bridge into the same bounded part taxonomy/search path.
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 input17-character VIN- validated evidence
02 getAutoCareVehiclesByVINVIN serviceBase vehicle(s) + configuration metadata
- validated evidence
03 gateVehicle selectionOne identity or clarification
- validated evidence
04 gateOptional bridgeStop after decode or continue to part type
- part requested
05 getAutoCareSearchResultsPart taxonomyResolve readable request
- validated evidence
06 getAutoCareSearchResultsVehicle-scoped searchPaged parts + applications
- validated evidence
07 outputDecode or candidatesVIN masked in persistence
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
nullrequestVinSearchInputrequired
attribute_filtersAttributeFilter[]optional
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
nullbrandsstring[]optional
Optional catalog brand names or codes
cursor_markstring | nulloptional
nullmax_resultsintegeroptional
200min 1max 500pageinteger | nulloptional
nullpart_typestring | nulloptional
nullqualifier_filtersobjectoptional
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
nullvinstringrequired
{
"request": {
"vin": "4T1BK1EB5GU235558",
"part_type": "Cabin Air Filter",
"max_results": 50
}
} hvac filter for VIN 4T1BK1EB5GU235558What each upstream call needs—and earns.
Conditional calls are labeled. Validation describes the exact rule that allows evidence to advance to the next stage.
getAutoCareVehiclesByVINDecode a locally validated 17-character VIN.- Requires
- VIN
- Produces
- base vehicles · region · configuration details
- Validation
- I/O/Q and length are checked locally; entitlement/unavailable/not-found remain separate outcomes.
getAutoCareSearchResultsResolve an optional readable part type in vehicle scope.- Requires
- decoded baseVehicleId · part_type
- Produces
- partTypeId · taxonomy choices
- Validation
- Ambiguity pauses the continuation instead of guessing.
getAutoCareSearchResultsRetrieve paged parts for the selected decoded vehicle.- Requires
- baseVehicleId · partTypeId
- Produces
- parts · fitments · completeness
- Validation
- No-linkage flags and truncated results remain visible.
Every important branch has a named outcome.
These are response decisions in the implemented service—not possible future behavior.
No upstream call occurs.
Return each baseVehicleId and preserve decode metadata.
Return the decoded identity only.
Taxonomy ambiguity can still pause the flow.
The VIN does not grant permission to overstate completeness.
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[]
- Invalid syntax is distinct from entitlement failure
- Multiple decoded vehicles require selection
- VIN storage is masked
- Unreturned engine/trim data is never promised
decode_vin_and_searchpoc/opticat-mcp-v2/src/opticat_mcp_v2/service.pynormalize_vin_vehiclepoc/opticat-mcp-v2/src/opticat_mcp_v2/normalizers.pyredactOperationalDatalib/safe-details.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
There is no post-decode exact engine/submodel selection
- 02
The optional part continuation does not yet use the full material-qualifier gate
Turn decoded engine, body, drive, and region evidence into a visible completeness profile.
Reuse a verified VIN-derived identity across searches without repeatedly exposing the VIN.