{"audit":{"version":"1.5","generated_at":"2026-09-23T10:01:52.216099+00:00","generated_by":"Agenstry","report_url":"https://agenstry.com/agents/api.car-gene.com","methodology_url":"https://agenstry.com/methodology","verifier_jwks_url":"https://agenstry.com/.well-known/jwks.json","subject":{"domain":"api.car-gene.com","name":"CarGene","url":"https://api.car-gene.com/.well-known/agent-card.json"}},"identity":{"provider":{"organization":"CarGene","url":"https://car-gene.com/"},"registry_verification":null,"signature":{"signed":false,"signature_valid":null}},"protocol":{"version":"1.0","supports_streaming":false,"supports_push_notifications":false},"operational":{"live_state":"live","live_responds":true,"last_status_code":404,"last_elapsed_ms":null,"last_error":"HTTP 404"},"track_record":{"first_seen":"2026-09-23T07:58:44.654027+00:00","last_checked":"2026-09-23T09:52:34.487618+00:00","last_seen_ok":"2026-09-23T07:58:44.654027+00:00","checks_total":2,"checks_ok":1,"uptime_pct":0.0,"uptime_window_days":30,"uptime_probes":1,"archived":false,"archived_reason":null},"conformance":{"score":62,"grade":"C","summary":"C-grade: usable but has clear conformance issues, review the breakdown below.","criteria":[{"key":"valid_card","label":"Valid AgentCard","points":10,"max_points":10,"status":"pass","detail":"Parseable AgentCard returned by the well-known endpoint (Agenstry readiness signal; not an official TCK certification)."},{"key":"live_responds","label":"Live JSON-RPC","points":25,"max_points":25,"status":"pass","detail":"Endpoint responds to a negotiated A2A SendMessage probe."},{"key":"protocol_version","label":"Protocol version","points":8,"max_points":10,"status":"partial","detail":"Declares A2A 1.0 but missing supportedInterfaces[] (required in v1.0, update your card to reach 10/10)."},{"key":"signature","label":"JWS signature","points":0,"max_points":10,"status":"info","detail":"Card is unsigned (most published agents are)."},{"key":"uptime","label":"Uptime track record","points":0,"max_points":15,"status":"info","detail":"Only 1 probe so far, need ≥5 for an uptime grade."},{"key":"skills","label":"Skill declaration","points":10,"max_points":10,"status":"pass","detail":"Declares 4 skills with structured metadata."},{"key":"verified_identity","label":"Verified Identity","points":5,"max_points":10,"status":"partial","detail":"Provider declared: CarGene (https://car-gene.com/). Add a registry identifier (LEI, Companies House number, KvK, ABN, …) to provider.legalEntity for full verified-business credit."},{"key":"freshness","label":"Freshness + modern flags","points":4,"max_points":5,"status":"pass","detail":"seen in upstream source within 0d"},{"key":"security","label":"Security declaration","points":0,"max_points":5,"status":"info","detail":"Neither securitySchemes nor securityRequirements declared — how to authenticate is unstated."}]},"card_read":{"findings":null,"clean":null,"source_url":"https://api.car-gene.com/.well-known/agent-card.json"},"skills":[{"id":"search_vehicles","name":"Search vehicles","description":"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, hits: [{series, maker, matched_models}]} where each series and model carries its public page url; pass the ids in the hits to the other skills. Empty hits means nothing matched the query. Send a data part {\"skill\": \"search_vehicles\", \"query\": \"<name or chassis code>\"}, or a plain text part whose whole text is the query.","tags":["genealogy","search"],"examples":["AE86","スカイライン","GT-R","{\"skill\": \"search_vehicles\", \"query\": \"カローラ\"}"],"inputModes":["application/json","text/plain"],"outputModes":["application/json"]},{"id":"get_vehicle","name":"Get a series with its generations","description":"Get one series with its generations (models), the people who developed them, and the cited sources. A model_id returns the whole series the generation belongs to. Returns {series, maker, models, sources}: each model (generation) has start_year, end_year (null = still on sale), chassis_code, description, source_url, drivetrains, displacements (engine displacement in cc, one row per engine), 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), and its public page url; sources are the cited references for the descriptions (url, title, publisher, accessed_on). An empty drivetrains, displacements, engineers, or sources list means not researched yet, never none. Unknown ids are an error, not an empty result. Send {\"skill\": \"get_vehicle\", \"series_id\": \"<uuid>\"} or {\"skill\": \"get_vehicle\", \"model_id\": \"<uuid>\"}.","tags":["genealogy","generations","engineers","sources"],"examples":["{\"skill\": \"get_vehicle\", \"series_id\": \"<uuid from search_vehicles>\"}"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"get_vehicle_relationships","name":"Get relationships between generations","description":"Get the relationships between generations (succession, sibling, derivation, spiritual successor). Either id returns the whole series' relationships, because a relationship sits between two generations. Returns {series_id, url, relations}: each relation has kind and kind_name, kind_directed, from_model and to_model (each with its chassis_code, 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. An empty relations list means not researched yet, never that the car has no relatives. Send {\"skill\": \"get_vehicle_relationships\", \"series_id\": \"<uuid>\"} or a model_id.","tags":["genealogy","relations","succession","siblings"],"examples":["{\"skill\": \"get_vehicle_relationships\", \"model_id\": \"<uuid from search_vehicles>\"}"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"get_sales_figures","name":"Get sales figures","description":"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. Send {\"skill\": \"get_sales_figures\", \"series_id\": \"<uuid>\"} or a model_id.","tags":["sales","figures","sources"],"examples":["{\"skill\": \"get_sales_figures\", \"series_id\": \"<uuid from search_vehicles>\"}"],"inputModes":["application/json"],"outputModes":["application/json"]}],"provenance":[{"source":"a2aregistry","first_seen":"2026-09-23T07:58:44.654027+00:00"},{"source":"registry","first_seen":"2026-09-23T09:52:34.487618+00:00"}],"recent_probes":[{"fetched_at":"2026-09-23T09:52:34.487618+00:00","ok":false,"status_code":404,"error":"HTTP 404","elapsed_ms":null,"live_responds":null}],"catalog_attestation":null,"operator_revenue_evidence":{"evidence_class":"operator_submitted","authenticity":{"rung":"no_operator_evidence","rank":0,"why":"No verifiable operator evidence has been submitted for this agent.","thresholds":{"min_independent_payers":3,"min_verified_usd":25.0},"engine_table":"agent_authenticity","merge_rule":"max(existing_rank, rank)"},"metric_metadata":{"provenance":"operator_submitted_evidence","confidence":"attested","coverage":{"numerator":0},"as_of":"2026-09-23T10:01:52.225276+00:00","definition":"Revenue proofs submitted by the verified owner and re-checked by Agenstry against the settlement chain or the operator's own Stripe account. Only independently confirmed proofs are counted."},"counts":{"retained":0,"verified":0,"unverifiable":0},"verified":{"gross_usd":0.0,"transactions":0,"independent_payers":0},"detail_url":"https://agenstry.com/api/agents/api.car-gene.com/evidence","dispute_url":"https://agenstry.com/agents/api.car-gene.com/dispute"},"verification_history":[]}