Exact number + optional brand/type
Lifecycle and replacement lineage
Resolve a starting product and traverse only replaces/replaced-by evidence through a bounded, cycle-safe chain while keeping interchange fallbacks distinctly labeled.
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 inputStarting part- validated evidence
02 getAutoCareSearchResultsIdentity rootDirect or reverse relationship evidence
- validated evidence
03 getAutoCarePartDetailsLifecycle nodePIES status + typed relationships
- validated evidence
04 gateCycle / hop guardVisited set · max 10 · API budget
- new replacement
05 getAutoCarePartDetailsReplacement edgeREPLACES or REPLACED_BY only
06 outputBounded lineageExplicit chain + labeled fallback
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.
max_hopsintegeroptional
Maximum replacement records to retrieve
10min 1max 10requestPartLookupInputrequired
brandstring | nulloptional
nullpart_numberstringrequired
part_typestring | nulloptional
Optional readable part-type hint (e.g. 'Engine Oil Filter'). Used to prefer the intended category when a part number exists in multiple unrelated categories; best effort, never erases evidence.
nullpart_type_idinteger | nulloptional
null{
"request": {
"part_number": "19210284",
"brand": "GM"
},
"max_hops": 10
} What supersedes GM 19210284?What each upstream call needs—and earns.
Conditional calls are labeled. Validation describes the exact rule that allows evidence to advance to the next stage.
getAutoCareSearchResultsResolve the starting product or explicit reverse relationship evidence.- Requires
- part_number · optional brand/type
- Produces
- starting identity · reverse replacements · possible decoys
- Validation
- A lifecycle query cannot proceed from an assumed same-number identity.
getAutoCarePartDetailsBreadth-first traversal of lifecycle and replacement edges.- Requires
- identity at each node · max_hops
- Produces
- lifecycle · REPLACES · REPLACED_BY · interchange fallback
- Validation
- Visited identities prevent cycles; only replacement kinds extend the chain; budget/hop stops are disclosed.
Every important branch has a named outcome.
These are response decisions in the implemented service—not possible future behavior.
Return directed lineage and lifecycle records.
Return the collected chain with a capped completeness state.
Never report active; possible same-brand matches remain candidates only.
Show them separately and never relabel them as replacement.
Only after exact identity and returned details are evaluated.
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[]
- Interchange never becomes supersession
- Traversal is breadth-first and cycle-safe
- A missing successor does not imply an active part
lookup_part_supersessionpoc/opticat-mcp-v2/src/opticat_mcp_v2/service.pynormalize_relationshipspoc/opticat-mcp-v2/src/opticat_mcp_v2/normalizers.pymcpToolForPlan · supersessionlib/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
There is no live-verified positive chain
- 02
Brand-scope limitations can hide OE relationships
- 03
The client still needs three positive and three negative ground-truth chains
Explore bidirectional replacement history with lifecycle state and stop reasons on every node.
Maintain client-approved positive and negative lineages as executable production anchors.