Grounded AI proposals
Resolve what the customer means
Confirm partial vehicle, manufacturer, category and part identities before a product lookup.
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 inputCustomer meaning- validated evidence
02 resolverCatalog resolutionIndependent scoped resolvers
- validated evidence
03 outputResolved detailsValues, choices and unknowns
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
nullrequestCatalogResolveInputrequired
brandstring | nulloptional
nulldomainsvehicle | brand | part | part_type[] | nulloptional
nullmakestring | nulloptional
nullmake_hintstring | nulloptional
nullmodelstring | nulloptional
nullmodel_hintstring | nulloptional
nullpart_numberstring | nulloptional
nullpart_typestring | nulloptional
nullsubmodelstring | nulloptional
nullyearinteger | nulloptional
nullyear_abbreviatedbooleanoptional
false{
"request": {
"year": 2017,
"model": "Jetta",
"make_hint": "Volkswagen",
"part_type": "brake pads"
}
} Brake pads for a 2017 JettaWhat 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 proposed vehicle identities.- Requires
- year · model or model hint
- Produces
- base vehicle · choices
- Validation
- Explicit make wins over AI hints.
getAutoCareSearchResultsResolve brands, categories and exact parts.- Requires
- supplied entity text
- Produces
- catalog identities · choices
- Validation
- No product availability or fitment conclusion.
Every important branch has a named outcome.
These are response decisions in the implemented service—not possible future behavior.
Preserve successful resolutions and ask only for the missing identity.
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[]
- Hints require catalog confirmation
- Missing years are never invented
- Resolution is not fitment verification
resolve_catalog_entitiespoc/opticat-mcp-v2/src/opticat_mcp_v2/resolver_api.pyreadCatalogLanguagelib/catalog-language-resolver.tsresolveCatalogRequestlib/catalog-resolver.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
A genuinely absent year or ambiguous model still needs customer input
Compare language latency with catalog validation latency.