protogrid

Search / com.car-gene/genealogy

CarGene

R0· no sign-in

Japanese car genealogy with sources: generations, developers, and sales figures. Read-only.

v0.1.0 · active · website · descriptor JSON · versions

An agent can connect right now, no human step.Remote endpoint, no authentication, reachable on the last probe.
Quality92strong
Trust82of 100
Uptime, 30 days96%
Latency p50640 ms

Connect

8 clients · secrets stay placeholders
{
  "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

Quality 92 / 100strong

protocol100 · weight 25
  • pass
    protocol.modernsupports 2026-07-28 (server/discover)
  • pass
    protocol.statelessanswers without a session
  • pass
    protocol.transportstreamable HTTP
  • pass
    protocol.list_ttltool list is cacheable (ttlMs 86400000)
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene93 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • warn
    tools.description_length5 tools have descriptions over 1,024 characters, which crowds the context
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations7 of 7 tools declare readOnlyHint or destructiveHint
  • pass
    tools.directory_hintsevery tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
  • pass
    tools.token_costabout 4,269 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stability75 · weight 15
  • warn
    stability.changes13 tool changes in 30 days
  • pass
    stability.rug_pullno tool changed its meaning under the same name
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

7 tools, about 4,269 tokens to load them all · tool set caa51101fb77 · tools last changed 2026-10-18 · checked 2026-10-19 13:05 UTC

Tool changes

  • search_used_carschangeddescription
    before

    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, 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.

    after · 96% of words in common

    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_carsadded

    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, 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_shopsadded

    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.

  • check_part_fitmentadded

    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.

  • search_vehicleschangeddescription
    before

    Find 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.

    after · 99% of words in common

    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_figureschangedannotations
  • get_vehicle_relationshipschangedannotations
  • get_vehiclechangedannotations
  • search_vehicleschangedannotations
  • get_sales_figureschangeddescription, input schema
    before

    Get 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.

    after · 69% of words in common

    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.

Trust 82 / 100

no-repository
provenance55
liveness98
freshness100
hygiene80

+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.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://api.car-gene.com/mcp streamable-httpnoneyes96%640 ms2026-07-28, 2025-11-25, 2025-06-18, 2025-03-262026-10-19

Tools (7)

check_part_fitmentread-onlyUse 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-onlyGet 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-onlyGet 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-onlyGet 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-onlyUse 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-onlyUse 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-onlyFind 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.

Similar MCP servers

Official server.json
{
  "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."
}