{
  "name": "vindex",
  "description": "Vehicle Intelligence for AI agents. Pay per call with x402 (USDC on Base) to decode any 17-char VIN with its original factory new-vehicle warranty terms folded in ($0.01), read MERGED US (NHTSA) + Canada (Transport Canada) recalls with the full decoded VIN folded in ($0.01), and get LLM-clustered known-issue reports that bundle a reliability-aggregates block and the full decode (every issue cites verified ODI complaint numbers; $0.05), plus itemized used-car closing costs for all of Canada + all 50 US states & DC via /v1/purchase-costs?country=CA|US ($0.02). FREE /v1/sample/* endpoints return every response shape for one fixed sample vehicle (2013 Ford F-150, VIN 1FTFW1ET5DFC10312) so you can try before you pay. Every JSON object response carries a legal `disclaimer` field. Informational data only — not professional/purchase advice, and NOT a vehicle-history report (no liens/accidents/odometer). Contains information licensed under the Open Government Licence – Canada.",
  "url": "https://api.vindexapi.dev/a2a",
  "preferredTransport": "JSONRPC",
  "protocolVersion": "0.3.0",
  "provider": {
    "organization": "Vindex API",
    "url": "https://api.vindexapi.dev"
  },
  "version": "0.2.1",
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "stateTransitionHistory": false,
    "extensions": [
      {
        "uri": "https://github.com/google-a2a/a2a-x402/v0.1",
        "description": "Paid endpoints settle via the x402 protocol (on-chain USDC). On an unpaid paid-route request the server returns HTTP 402 whose accepts[] lists one exact USDC rail per network; sign one rail and retry with PAYMENT-SIGNATURE (x402 V2) or X-PAYMENT (legacy). Free endpoints need no payment.",
        "required": false,
        "params": {
          "x402Version": 2,
          "networks": [
            "eip155:8453"
          ],
          "asset": "USDC",
          "scheme": "exact"
        }
      }
    ]
  },
  "defaultInputModes": [
    "application/json"
  ],
  "defaultOutputModes": [
    "application/json"
  ],
  "endpoints": [
    {
      "method": "GET",
      "path": "/v1/decode",
      "params": [
        "vin"
      ],
      "priceUsd": 0.01,
      "description": "Paid ($0.01 USDC via x402). Decodes a 17-char VIN through NHTSA vPIC and returns the normalized decoded vehicle (make/model/year/engine/body/…) with fetch provenance, PLUS a `warranty` block giving the ORIGINAL factory new-vehicle warranty terms (basic/powertrain/corrosion/roadside/EV-battery) keyed off the decoded make + model-year. Warranty terms are the manufacturer's original coverage as sold — NOT warranty-remaining, and NOT extended-warranty campaigns, recalls, or emissions warranties. The cheapest call when you only need the decode — the same `vehicle` object is also folded into /v1/recalls and /v1/known-issues. Compute-first / settle-after. Free fixed-sample preview of this exact shape: GET /v1/sample/decode."
    },
    {
      "method": "GET",
      "path": "/v1/recalls",
      "params": [
        "vin"
      ],
      "priceUsd": 0.01,
      "description": "Paid ($0.01 USDC via x402). Decodes the VIN and returns the FULL decoded vehicle (the same payload as /v1/decode is folded in here), then merges NHTSA (US) and Transport Canada (CA) recalls into one response — the only API combining both. 24h cache per source; stale served on failure. Canadian detail capped at the 25 most-recent recalls. OGL–Canada attribution. Compute-first / settle-after. Free fixed-sample preview of this exact shape: GET /v1/sample/recalls."
    },
    {
      "method": "GET",
      "path": "/v1/known-issues",
      "params": [
        "vin"
      ],
      "priceUsd": 0.05,
      "description": "Paid ($0.05 USDC via x402). Clusters NHTSA owner complaints into named failure modes; EVERY cited ODI number is programmatically validated against the input complaint set (hallucination-gated) and every issue carries ≥2 verified citations. Severity signals per issue are summed from the CITED complaints only. The response also bundles a `reliability` aggregates block (top components, severity signals, US/Canada recall counts incl. Canadian units affected — reliability was merged into known-issues on 2026-07-07), the full decoded `vehicle` (same payload as /v1/decode), and `complaintsAnalyzed`, the size of the recent-weighted stratified sample the LLM actually saw (vs `complaintCount`, the total). Refuses UNCHARGED below 15 complaints (returns 200 status:insufficient_data) — but still returns the decode + reliability block for free. 90-day cache. Compute-first / settle-after. Free fixed-sample preview of this exact shape: GET /v1/sample/known-issues."
    },
    {
      "method": "GET",
      "path": "/v1/purchase-costs",
      "params": [
        "country",
        "price",
        "sale_type",
        "province",
        "state",
        "family_gift",
        "buyer_has_plates",
        "trade_in",
        "local_rate"
      ],
      "priceUsd": 0.02,
      "description": "Paid ($0.02 USDC via x402). Government-imposed closing costs of buying a used passenger vehicle, unified across both countries via `country=CA|US`. CA: any of Canada's 10 provinces + 3 territories (BC, AB, SK, MB, ON, QC, NB, NS, PE, NL, YT, NT, NU) — provincial/territorial sales tax (PST/RST/QST/HST or GST-only) plus transfer/registration/plate fees and inspection; tax is flat on the whole price at the highest bracket whose threshold the price meets (BC private 12% → 15% ≥ $125,000 → 20% ≥ $150,000); Alberta + the three territories levy no private-sale tax; dealer sales add 5% GST except in HST provinces (ON/NB/NS/PE/NL). US: any of the 50 states or DC — sales/use/excise tax, title, first-year registration, inspection, and (for dealer sales) a dealer documentation fee; special regimes handled automatically (DC tiered title-excise range, IL flat RUT-50 private-party table, SC 5% IMF capped at $500, and AK/AZ/HI/MT/NV/NH/OR no private-party sales tax). Each line carries a source URL and confidence. Figures verified 2026-07-04. Compute-first / settle-after. Free fixed-sample preview of this exact shape: GET /v1/sample/purchase-costs."
    },
    {
      "method": "GET",
      "path": "/v1/prepurchase",
      "params": [
        "vin",
        "country"
      ],
      "priceUsd": 0.25,
      "description": "Whole-job bundle for agents advising a vehicle purchase. One payment returns the normalized VIN decode, safety recalls, known-issue/reliability summary, and CA/US purchase+ownership cost estimate for the decoded vehicle. Equivalent to 4 separate paid calls. Composed in-process from the same data as /v1/decode, /v1/recalls, /v1/known-issues and /v1/purchase-costs (no extra upstream fan-out beyond those). The decode is computed FIRST — an invalid VIN or decode failure returns UNCHARGED (no settle). The response then settles only if the decode succeeded AND at least 2 of the 3 secondary sections (recalls, known-issues, purchase-costs) are available; otherwise it returns UNCHARGED { error: 'insufficient_sections', sections: {…} }. A section that failed but was still charged appears as sections.<name>:'unavailable' with the rest of the report intact. The cost section is a jurisdiction-level estimate (the bundle takes no price/province/state) — call GET /v1/purchase-costs for an exact itemized figure. Compute-first / settle-after. Each section carries its own fetch provenance."
    },
    {
      "method": "GET",
      "path": "/.well-known/hexanon",
      "params": [],
      "priceUsd": 0,
      "description": "Catalog of all products in the Hexanon family (x402 data & intelligence APIs for AI agents) — names, taglines, API base URLs, docs, MCP packages. Same catalog on every Hexanon product; canonical copy at https://api.moltalyzer.xyz/.well-known/hexanon."
    },
    {
      "method": "GET",
      "path": "/v1/sample/decode",
      "params": [],
      "priceUsd": 0,
      "description": "Free, no payment. Normalized NHTSA vPIC decode for the fixed sample vehicle. Same shape as paid GET /v1/decode plus `sample: true` and `note`."
    },
    {
      "method": "GET",
      "path": "/v1/sample/recalls",
      "params": [],
      "priceUsd": 0,
      "description": "Free, no payment. Merged NHTSA (US) + Transport Canada (CA) recalls + full decoded vehicle for the fixed sample vehicle. Same shape as paid GET /v1/recalls plus `sample: true` and `note`."
    },
    {
      "method": "GET",
      "path": "/v1/sample/known-issues",
      "params": [],
      "priceUsd": 0,
      "description": "Free, no payment. LLM-clustered known-issues + reliability-aggregates block + full decoded vehicle for the fixed sample vehicle. Same shape as paid GET /v1/known-issues plus `sample: true` and `note`. A non-'ok' synthesis status is served as-is with 200 (samples never 503), still carrying the decode + reliability block."
    },
    {
      "method": "GET",
      "path": "/v1/sample/purchase-costs",
      "params": [],
      "priceUsd": 0,
      "description": "Free, no payment. Returns `{ sample: true, note, ca, us }`: `ca` is the Ontario $25,000-private result (same shape as paid GET /v1/purchase-costs?country=CA) and `us` is the California $25,000-private result (same shape as paid GET /v1/purchase-costs?country=US)."
    }
  ],
  "x402": {
    "version": 2,
    "networks": [
      "eip155:8453"
    ],
    "assets": [
      "USDC"
    ]
  },
  "skills": [
    {
      "id": "decode",
      "name": "Normalized NHTSA vPIC VIN decode",
      "description": "Paid ($0.01 USDC via x402). Decodes a 17-char VIN through NHTSA vPIC and returns the normalized decoded vehicle (make/model/year/engine/body/…) with fetch provenance, PLUS a `warranty` block giving the ORIGINAL factory new-vehicle warranty terms (basic/powertrain/corrosion/roadside/EV-battery) keyed off the decoded make + model-year. Warranty terms are the manufacturer's original coverage as sold — NOT warranty-remaining, and NOT extended-warranty campaigns, recalls, or emissions warranties. The cheapest call when you only need the decode — the same `vehicle` object is also folded into /v1/recalls and /v1/known-issues. Compute-first / settle-after. Free fixed-sample preview of this exact shape: GET /v1/sample/decode.",
      "priceUsd": 0.01,
      "tags": [
        "vindex",
        "decode"
      ]
    },
    {
      "id": "recalls",
      "name": "Merged US (NHTSA) + Canada (Transport Canada) recalls + full decoded vehicle",
      "description": "Paid ($0.01 USDC via x402). Decodes the VIN and returns the FULL decoded vehicle (the same payload as /v1/decode is folded in here), then merges NHTSA (US) and Transport Canada (CA) recalls into one response — the only API combining both. 24h cache per source; stale served on failure. Canadian detail capped at the 25 most-recent recalls. OGL–Canada attribution. Compute-first / settle-after. Free fixed-sample preview of this exact shape: GET /v1/sample/recalls.",
      "priceUsd": 0.01,
      "tags": [
        "vindex",
        "recalls"
      ]
    },
    {
      "id": "known-issues",
      "name": "LLM-clustered named failure modes with verified ODI citations + reliability block + full decode",
      "description": "Paid ($0.05 USDC via x402). Clusters NHTSA owner complaints into named failure modes; EVERY cited ODI number is programmatically validated against the input complaint set (hallucination-gated) and every issue carries ≥2 verified citations. Severity signals per issue are summed from the CITED complaints only. The response also bundles a `reliability` aggregates block (top components, severity signals, US/Canada recall counts incl. Canadian units affected — reliability was merged into known-issues on 2026-07-07), the full decoded `vehicle` (same payload as /v1/decode), and `complaintsAnalyzed`, the size of the recent-weighted stratified sample the LLM actually saw (vs `complaintCount`, the total). Refuses UNCHARGED below 15 complaints (returns 200 status:insufficient_data) — but still returns the decode + reliability block for free. 90-day cache. Compute-first / settle-after. Free fixed-sample preview of this exact shape: GET /v1/sample/known-issues.",
      "priceUsd": 0.05,
      "tags": [
        "vindex",
        "known-issues"
      ]
    },
    {
      "id": "purchase-costs",
      "name": "Itemized US + Canada used-vehicle closing costs (country=CA|US)",
      "description": "Paid ($0.02 USDC via x402). Government-imposed closing costs of buying a used passenger vehicle, unified across both countries via `country=CA|US`. CA: any of Canada's 10 provinces + 3 territories (BC, AB, SK, MB, ON, QC, NB, NS, PE, NL, YT, NT, NU) — provincial/territorial sales tax (PST/RST/QST/HST or GST-only) plus transfer/registration/plate fees and inspection; tax is flat on the whole price at the highest bracket whose threshold the price meets (BC private 12% → 15% ≥ $125,000 → 20% ≥ $150,000); Alberta + the three territories levy no private-sale tax; dealer sales add 5% GST except in HST provinces (ON/NB/NS/PE/NL). US: any of the 50 states or DC — sales/use/excise tax, title, first-year registration, inspection, and (for dealer sales) a dealer documentation fee; special regimes handled automatically (DC tiered title-excise range, IL flat RUT-50 private-party table, SC 5% IMF capped at $500, and AK/AZ/HI/MT/NV/NH/OR no private-party sales tax). Each line carries a source URL and confidence. Figures verified 2026-07-04. Compute-first / settle-after. Free fixed-sample preview of this exact shape: GET /v1/sample/purchase-costs.",
      "priceUsd": 0.02,
      "tags": [
        "vindex",
        "purchase-costs"
      ]
    },
    {
      "id": "prepurchase",
      "name": "Pre-purchase report: decode + recalls + known issues + ownership costs in one call",
      "description": "Whole-job bundle for agents advising a vehicle purchase. One payment returns the normalized VIN decode, safety recalls, known-issue/reliability summary, and CA/US purchase+ownership cost estimate for the decoded vehicle. Equivalent to 4 separate paid calls. Composed in-process from the same data as /v1/decode, /v1/recalls, /v1/known-issues and /v1/purchase-costs (no extra upstream fan-out beyond those). The decode is computed FIRST — an invalid VIN or decode failure returns UNCHARGED (no settle). The response then settles only if the decode succeeded AND at least 2 of the 3 secondary sections (recalls, known-issues, purchase-costs) are available; otherwise it returns UNCHARGED { error: 'insufficient_sections', sections: {…} }. A section that failed but was still charged appears as sections.<name>:'unavailable' with the rest of the report intact. The cost section is a jurisdiction-level estimate (the bundle takes no price/province/state) — call GET /v1/purchase-costs for an exact itemized figure. Compute-first / settle-after. Each section carries its own fetch provenance.",
      "priceUsd": 0.25,
      "tags": [
        "vindex",
        "prepurchase"
      ]
    }
  ],
  "authentication": {
    "schemes": [
      "none",
      "x402"
    ],
    "description": "Free endpoints need no auth. Paid endpoints use the x402 V2 HTTP-402 flow: on an unpaid request the server returns a 402 whose accepts[] lists an exact USDC rail per network. Sign one rail and retry with the PAYMENT-SIGNATURE header (x402 V2) or legacy X-PAYMENT header. Per-call pricing."
  },
  "documentationUrl": "https://api.vindexapi.dev/llms.txt",
  "openApiUrl": "https://api.vindexapi.dev/openapi.json",
  "termsOfService": "https://api.vindexapi.dev/terms.txt"
}
