Search / com.car-gene/genealogy
CarGene
R0· no sign-inJapanese car genealogy with sources: generations, developers, and sales figures. Read-only.
v0.1.0 · active · website · descriptor JSON · versions
Search / com.car-gene/genealogy
R0· no sign-inJapanese car genealogy with sources: generations, developers, and sales figures. Read-only.
v0.1.0 · active · website · descriptor JSON · versions
{
"mcpServers": {
"genealogy": {
"type": "http",
"url": "https://api.car-gene.com/mcp"
}
}
}claude mcp add --transport http genealogy https://api.car-gene.com/mcp[mcp_servers.genealogy]
url = "https://api.car-gene.com/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"genealogy": {
"type": "remote",
"url": "https://api.car-gene.com/mcp",
"enabled": true
}
}
}{
"mcpServers": {
"genealogy": {
"type": "http",
"url": "https://api.car-gene.com/mcp"
}
},
"deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=genealogy&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vYXBpLmNhci1nZW5lLmNvbS9tY3AifQ%3D%3D"
}{
"servers": {
"genealogy": {
"type": "http",
"url": "https://api.car-gene.com/mcp"
}
}
}{
"mcpServers": {
"genealogy": {
"httpUrl": "https://api.car-gene.com/mcp"
}
}
}extensions:
"genealogy":
enabled: true
name: "genealogy"
type: streamable_http
uri: "https://api.car-gene.com/mcp"
timeout: 300
protocol.modernsupports 2026-07-28 (server/discover)protocol.statelessanswers without a sessionprotocol.transportstreamable HTTPprotocol.list_ttltool list is cacheable (ttlMs 86400000)auth.prm, auth.as_metadata, auth.cimdno remote uses OAuthauth.secret_in_urlno templated URLtools.descriptionsevery tool has a descriptiontools.description_length5 tools have descriptions over 1,024 characters, which crowds the contexttools.schemasevery tool has an object input schematools.annotations7 of 7 tools declare readOnlyHint or destructiveHinttools.directory_hintsevery tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHinttools.token_costabout 4,269 tokens to load every tooltools.api_dumptools are not a one-to-one API dumpstability.changes13 tool changes in 30 daysstability.rug_pullno tool changed its meaning under the same namedeps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI packagesearch_used_carschangeddescriptionUse this when someone wants to buy a used car in Japan, or asks for a used car that fits a budget, a model year, mileage or a manual transmission. To narrow to a specific car, first find its generation with search_vehicles and pass model_id (or series_id for any generation of a series). Returns the cars that dealers list on car-gene.com and that are on sale now: {filters, sort, total, used_cars, next_offset}. Each car has model (the generation it is, with chassis_code and its page url, or null when the dealer did not tie it to one; then read maker_name and car_name), grade, minor_change_name, total_price_yen (the total payment to drive it away, including the dealer's fees; quote this price, never price_yen alone), price_yen (the body price), first_registration_year and month, mileage_km, inspection_year and month (the vehicle inspection is valid until then), repair_history (true when the car has had frame damage repaired), transmission, shop (the dealer's name, prefecture and city) and the url of its page on car-gene.com, where the photos, details and the inquiry form are. Both prices null means the price is on request. Budget filters use total_price_yen, so cars with the price on request are left out of them. The order is sort only. Cars are cut to fit the response size; when next_offset is not null, call again with offset set to it. Empty used_cars means nothing matched among the cars listed on car-gene.com, not that no such car is for sale elsewhere.
Use this when someone wants to buy a used car in Japan, or asks for a used car that fits a budget, a model year, mileage or a manual transmission. To narrow to a specific car, first find its generation with search_vehicles and pass model_id (or series_id for any generation of a series). Returns the cars that dealers list on car-gene.com and that are on sale now: {filters, sort, total, used_cars, next_offset}. Each car has model (the generation it is, with chassis_code and its page url), grade, minor_change_name, total_price_yen (the total payment to drive it away, including the dealer's fees; quote this price, never price_yen alone), price_yen (the body price), first_registration_year and month, mileage_km, inspection_year and month (the vehicle inspection is valid until then), repair_history (true when the car has had frame damage repaired), transmission, shop (the dealer's name, prefecture and city) and the url of its page on car-gene.com, where the photos, details and the inquiry form are. Both prices null means the price is on request. Budget filters use total_price_yen, so cars with the price on request are left out of them. The order is sort only. Cars are cut to fit the response size; when next_offset is not null, call again with offset set to it. Empty used_cars means nothing matched among the cars listed on car-gene.com, not that no such car is for sale elsewhere.
search_used_carsaddedUse this when someone wants to buy a used car in Japan, or asks for a used car that fits a budget, a model year, mileage or a manual transmission. To narrow to a specific car, first find its generation with search_vehicles and pass model_id (or series_id for any generation of a series). Returns the cars that dealers list on car-gene.com and that are on sale now: {filters, sort, total, used_cars, next_offset}. Each car has model (the generation it is, with chassis_code and its page url, or null when the dealer did not tie it to one; then read maker_name and car_name), grade, minor_change_name, total_price_yen (the total payment to drive it away, including the dealer's fees; quote this price, never price_yen alone), price_yen (the body price), first_registration_year and month, mileage_km, inspection_year and month (the vehicle inspection is valid until then), repair_history (true when the car has had frame damage repaired), transmission, shop (the dealer's name, prefecture and city) and the url of its page on car-gene.com, where the photos, details and the inquiry form are. Both prices null means the price is on request. Budget filters use total_price_yen, so cars with the price on request are left out of them. The order is sort only. Cars are cut to fit the response size; when next_offset is not null, call again with offset set to it. Empty used_cars means nothing matched among the cars listed on car-gene.com, not that no such car is for sale elsewhere.
search_shopsaddedUse this when someone looks for a place in Japan to have a car service done, such as a vehicle inspection (shaken), a self-service or hand car wash, a coating, a wheel alignment, or fitting coilovers, near a city or a point. Do not use it for car history or parts; use the other skills. Returns only shops confirmed to offer the service, nearest first, within radius_km of the origin: {service: {code, name, conditions}, origin, radius_km, require, total, shops, next_offset}. Each shop has name, shop_type, address, distance_km, availability (available, or conditional when it depends on the car), price_min, price_max, price_note, confirmed (the conditions checked for this shop: a yes_no condition with available true or false, a number condition such as an inspection fee with value and unit) and the url of its public page, where the booking link and sources are. A condition missing from confirmed is not researched yet, never absent. service.conditions lists each condition with its type; pass yes_no codes in require to keep only shops confirmed to meet them. The order is distance only. Empty shops means nothing matched among the shops confirmed so far, not that no such shop exists; widen radius_km.
check_part_fitmentaddedUse this when the user asks whether an aftermarket part (wheel, coilover, muffler, brake pad, intake and so on) fits a specific car generation, or which parts are confirmed to fit it. Pass the model_id of that generation from search_vehicles. Returns {model, url, total, parts, next_offset}. parts lists only the products that a published fitment table, such as the maker's own, names as fit or conditional for this generation; products not tied to any vehicle and fitment guessed from bolt pattern or size are never included, and a size is left out at any position where the table notes it sticks out of the fender or needs bodywork. Each part has name, manufacturer, part_number, part_key, description, official_url and variants: the sizes or versions that fit, each with specification, status (fit or conditional), conditions (for conditional, the notes of the fitment table as written, such as positions, tires, production period or remarks; tell the user about them), list_price_yen (the maker's list price in yen, tax included, for one unit as the maker sells it, and the unit differs by part: one wheel for wheels, so a car takes four; the whole car's kit for suspension such as coilovers; one axle, left and right, for brake calipers and brake pads; for other parts the item as the maker lists it; null when not listed), wheel dimensions when the part is a wheel, and other attributes. url is this generation's page on car-gene.com to show the user; it is null when the generation has no confirmed fitment. The response has no seller prices and no purchase links. Narrow with part_key and query. Parts are cut to fit the response size; when next_offset is not null, call again with offset set to it. An empty parts list means nothing matched among the confirmed fitments; the part may not be researched yet for this generation, so never say it does not fit. Do not use this for the history, specs or developers of a car (use get_vehicle), or to find a garage that installs parts.
search_vehicleschangeddescriptionFind series by name, maker name, or a generation's chassis code. Series names match by normalized substring (width, case, kana), maker names by prefix, chassis codes by substring of the code as written (a slash-joined code is one string, not split). Returns {query, total, hits: [{series, maker, matched_models}], next_offset} where each series and model carries its public page url; pass the ids in the hits to the other skills. Hits are ranked and cut to fit the response size; when next_offset is not null, call again with offset set to it for the rest. Empty hits means nothing matched the query.
Find series by name, maker name, a generation's name, or a generation's chassis code. Series names match by normalized substring (width, case, kana), maker names by prefix, chassis codes by substring of the code as written (a slash-joined code is one string, not split). A generation matched by its name or chassis code is listed in matched_models. Returns {query, total, hits: [{series, maker, matched_models}], next_offset} where each series and model carries its public page url; pass the ids in the hits to the other skills. Hits are ranked and cut to fit the response size; when next_offset is not null, call again with offset set to it for the rest. Empty hits means nothing matched the query.
get_sales_figureschangedannotationsget_vehicle_relationshipschangedannotationsget_vehiclechangedannotationssearch_vehicleschangedannotationsget_sales_figureschangeddescription, input schemaGet the sales figures of a series. Returns {series_id, url, figures, cells, region_totals, coverage, lifetime}. figures are the rows as published, each with units, the source's own wording, the period, source_url and a verbatim source_excerpt. cells are the grid a figure may be summed into, one per series, country and calendar year; a null units on a cell means the sources disagree, never zero sold. region_totals sum years within one country only, so never add across countries or add a parent region to its children. coverage rows are the blanks that were checked and found empty, with the reason. lifetime rows are cumulative or per-generation totals that must not be added to the grid. A model_id narrows figures only, since allocating a year to a generation needs the whole series. An empty list means not researched yet, never zero.
Get the sales figures of a series. Without region_code it returns the overview {series_id, url, region_totals, lifetime, coverage, regions}; with region_code it returns that region year by year {series_id, url, region_code, region_totals, coverage, cells, figures, next_year_from}. region_totals sum years within one country only, so never add across countries or add a parent region to its children. lifetime rows are cumulative or per-generation totals that must not be added to the grid. With a model_id, region_totals and lifetime are those of that generation; otherwise region_totals are the series totals and lifetime is the whole series. coverage rows are the blanks that were checked and found empty, with the reason; a region with coverage rows and no figures was researched, not skipped. regions lists the region codes that have figures or checked blanks, with the first and last year; pass one of them as region_code, since any other code is an error. cells are the grid a figure may be summed into, one per series, country, calendar year and metric; a null units on a cell means the sources disagree, never zero sold. figures are the rows as published, each with units, the source's own wording, the period, source_url and a verbatim source_excerpt; match them to cells by region_code, year and metric. A model_id narrows figures to that generation, while cells stay series-wide because allocating a year to a generation needs the whole series. Years are cut to fit the response size, never splitting a year; when next_year_from is not null, call again with year_from set to it. An empty list means not researched yet, never zero.
Showing the latest 10. Full history: list_changes · trend: quality JSON.
Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.
+dns-namespace +website +reachable +uptime-96% +updated-26d-ago -no-repository
Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.
| remote | auth | reachable | uptime 30d | p50 | protocol | last ok |
|---|---|---|---|---|---|---|
https://api.car-gene.com/mcp streamable-http | none | yes | 96% | 640 ms | 2026-07-28, 2025-11-25, 2025-06-18, 2025-03-26 | 2026-10-19 |
check_part_fitmentread-only | Use this when the user asks whether an aftermarket part (wheel, coilover, muffler, brake pad, intake and so on) fits a specific car generation, or which parts are confirmed to fit it. Pass the model_id of that generation from search_vehicles. Returns {model, url, total, parts, next_offset}. parts lists only the products that a published fitment table, such as the maker's own, names as fit or conditional for this generation; products not tied to any vehicle and fitment guessed from bolt pattern or size are never included, and a size is left out at any position where the table notes it sticks out of the fender or needs bodywork. Each part has name, manufacturer, part_number, part_key, description, official_url and variants: the sizes or versions that fit, each with specification, status (fit or conditional), conditions (for conditional, the notes of the fitment table as written, such as positions, tires, production period or remarks; tell the user about them), list_price_yen (the maker's list price in yen, tax included, for one unit as the maker sells it, and the unit differs by part: one wheel for wheels, so a car takes four; the whole car's kit for suspension such as coilovers; one axle, left and right, for brake calipers and brake pads; for other parts the item as the maker lists it; null when not listed), wheel dimensions when the part is a wheel, and other attributes. url is this generation's page on car-gene.com to show the user; it is null when the generation has no confirmed fitment. The response has no seller prices and no purchase links. Narrow with part_key and query. Parts are cut to fit the response size; when next_offset is not null, call again with offset set to it. An empty parts list means nothing matched among the confirmed fitments; the part may not be researched yet for this generation, so never say it does not fit. Do not use this for the history, specs or developers of a car (use get_vehicle), or to find a garage that installs parts. |
get_sales_figuresread-only | Get the sales figures of a series. Without region_code it returns the overview {series_id, url, region_totals, lifetime, coverage, regions}; with region_code it returns that region year by year {series_id, url, region_code, region_totals, coverage, cells, figures, next_year_from}. region_totals sum years within one country only, so never add across countries or add a parent region to its children. lifetime rows are cumulative or per-generation totals that must not be added to the grid. With a model_id, region_totals and lifetime are those of that generation; otherwise region_totals are the series totals and lifetime is the whole series. coverage rows are the blanks that were checked and found empty, with the reason; a region with coverage rows and no figures was researched, not skipped. regions lists the region codes that have figures or checked blanks, with the first and last year; pass one of them as region_code, since any other code is an error. cells are the grid a figure may be summed into, one per series, country, calendar year and metric; a null units on a cell means the sources disagree, never zero sold. figures are the rows as published, each with units, the source's own wording, the period, source_url and a verbatim source_excerpt; match them to cells by region_code, year and metric. A model_id narrows figures to that generation, while cells stay series-wide because allocating a year to a generation needs the whole series. Years are cut to fit the response size, never splitting a year; when next_year_from is not null, call again with year_from set to it. An empty list means not researched yet, never zero. |
get_vehicleread-only | Get one series with the list of its generations (models) and the cited sources, and with a model_id also that generation in detail. Returns {series, maker, models, sources}, plus model when a model_id is given. Each entry in models has id, name, chassis_code, start_year, end_year (null = still on sale), description, source_url and its public page url; the list is always the whole series. model is the named generation with drivetrains, displacements (engine displacement in cc, one row per engine), and engineers (each with role_name, source_url citing the person's own career, and link_source_url citing that person's work on this very generation; a null link_source_url means not researched yet, so do not read source_url as evidence for this generation). sources are the cited references for the descriptions (url, title, publisher, accessed_on, and model_id: null for the series overview, otherwise the generation whose description it supports); a generation's own sources come only with its model_id. For the engineers or specs of several generations, call once per model_id. An empty drivetrains, displacements, engineers, or sources list means not researched yet, never none. Unknown ids are an error, not an empty result. |
get_vehicle_relationshipsread-only | Get the relationships between generations (succession, sibling, derivation, spiritual successor). A series_id returns the relations of the whole series; a model_id returns only the relations that have that generation at either end. Returns {series_id, url, total, relations, next_offset}, plus model_id when given: each relation has kind and kind_name, kind_directed, from_model and to_model (each with id, name, chassis_code, start_year, end_year, series_name and public page url), and where the source requires one, source_url with the verbatim source_excerpt; rationale is filled for spiritual successors. When kind_directed is false the two ends are interchangeable, so treat the relation as belonging to both generations. Relations are cut to fit the response size; when next_offset is not null, call again with offset set to it. An empty relations list means not researched yet, never that the car has no relatives. |
search_shopsread-only | Use this when someone looks for a place in Japan to have a car service done, such as a vehicle inspection (shaken), a self-service or hand car wash, a coating, a wheel alignment, or fitting coilovers, near a city or a point. Do not use it for car history or parts; use the other skills. Returns only shops confirmed to offer the service, nearest first, within radius_km of the origin: {service: {code, name, conditions}, origin, radius_km, require, total, shops, next_offset}. Each shop has name, shop_type, address, distance_km, availability (available, or conditional when it depends on the car), price_min, price_max, price_note, confirmed (the conditions checked for this shop: a yes_no condition with available true or false, a number condition such as an inspection fee with value and unit) and the url of its public page, where the booking link and sources are. A condition missing from confirmed is not researched yet, never absent. service.conditions lists each condition with its type; pass yes_no codes in require to keep only shops confirmed to meet them. The order is distance only. Empty shops means nothing matched among the shops confirmed so far, not that no such shop exists; widen radius_km. |
search_used_carsread-only | Use this when someone wants to buy a used car in Japan, or asks for a used car that fits a budget, a model year, mileage or a manual transmission. To narrow to a specific car, first find its generation with search_vehicles and pass model_id (or series_id for any generation of a series). Returns the cars that dealers list on car-gene.com and that are on sale now: {filters, sort, total, used_cars, next_offset}. Each car has model (the generation it is, with chassis_code and its page url), grade, minor_change_name, total_price_yen (the total payment to drive it away, including the dealer's fees; quote this price, never price_yen alone), price_yen (the body price), first_registration_year and month, mileage_km, inspection_year and month (the vehicle inspection is valid until then), repair_history (true when the car has had frame damage repaired), transmission, shop (the dealer's name, prefecture and city) and the url of its page on car-gene.com, where the photos, details and the inquiry form are. Both prices null means the price is on request. Budget filters use total_price_yen, so cars with the price on request are left out of them. The order is sort only. Cars are cut to fit the response size; when next_offset is not null, call again with offset set to it. Empty used_cars means nothing matched among the cars listed on car-gene.com, not that no such car is for sale elsewhere. |
search_vehiclesread-only | Find series by name, maker name, a generation's name, or a generation's chassis code. Series names match by normalized substring (width, case, kana), maker names by prefix, chassis codes by substring of the code as written (a slash-joined code is one string, not split). A generation matched by its name or chassis code is listed in matched_models. Returns {query, total, hits: [{series, maker, matched_models}], next_offset} where each series and model carries its public page url; pass the ids in the hits to the other skills. Hits are ranked and cut to fit the response size; when next_offset is not null, call again with offset set to it for the rest. Empty hits means nothing matched the query. |
Schemas: list_tools.
{
"name": "com.car-gene/genealogy",
"title": "CarGene",
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"remotes": [
{
"url": "https://api.car-gene.com/mcp",
"type": "streamable-http"
}
],
"version": "0.1.0",
"websiteUrl": "https://car-gene.com/",
"description": "Japanese car genealogy with sources: generations, developers, and sales figures. Read-only."
}