Koskamo

Zovo VIN Recall Check MCP

Check recalls by VIN using public safety recall records and download an Excel workbook and CSV for a fleet recall check. It supports batch VIN decoding for up to 50 VINs and car recall lookup by year, make, and model for up to 20 vehicles.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Zovo VIN Recall Check MCP logo, by ZovoCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-01Published by Zovo
MCP endpoint (Streamable HTTP)
https://vehicle-recalls.zovo.one/mcp
Vendor documentation

What you can do with it

  • Batch VIN decoder for up to 50 VINs
  • Car recall lookup by year, make and model for up to 20 vehicles
  • Download XLSX and CSV recall reports

Source and maintenance

Community listingRegistry 1.0.0

Protocol and capabilities

Server
vehicle-recalls 1.0.0
MCP protocol
2025-06-18
Tools
2 advertised
Resources
1 advertised
Resource templates
1 advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  },
  "resources": {
    "listChanged": true
  }
}

Tools

2 advertised

check_vin_recalls — Check VIN recalls
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Use this when the user wants a vin decoder, recall check by vin, or batch vin decoder with vehicle recalls and XLSX and CSV reports from public NHTSA data. Up to 50 VINs and 40 source requests per call; campaigns apply to the year, make and model. Do not use for VIN-specific repair status or booking repairs.

check_vin_recalls input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "vins"
  ],
  "properties": {
    "vins": {
      "type": "array",
      "items": {
        "type": "string",
        "description": "One VIN, e.g. 1HGCV1F35JA000000. Spaces, hyphens and dots are removed before per-item validation."
      },
      "description": "VIN list to decode and check, e.g. [\"1HGCV1F35JA000000\"]. Up to 50 entries; duplicates are checked once."
    }
  }
}
check_vin_recalls output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "summary",
    "vehicles",
    "truncated",
    "source",
    "downloads"
  ],
  "properties": {
    "source": {
      "type": "string"
    },
    "summary": {
      "type": "object",
      "required": [
        "total",
        "decoded",
        "with_recalls",
        "park_it",
        "errors",
        "duplicates"
      ],
      "properties": {
        "total": {
          "type": "number"
        },
        "errors": {
          "type": "number"
        },
        "decoded": {
          "type": "number"
        },
        "park_it": {
          "type": "number"
        },
        "duplicates": {
          "type": "number"
        },
        "with_recalls": {
          "type": "number"
        }
      },
      "additionalProperties": false
    },
    "vehicles": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "row",
          "vin",
          "check_digit",
          "decode_status",
          "model_year",
          "make",
          "model",
          "trim",
          "recall_models",
          "match_type",
          "recall_count",
          "park_it_count",
          "park_outside_count",
          "newest_recall_date",
          "campaigns",
          "error",
          "note"
        ],
        "properties": {
          "row": {
            "type": "number"
          },
          "vin": {
            "type": "string"
          },
          "make": {
            "type": "string"
          },
          "note": {
            "type": "string"
          },
          "trim": {
            "type": "string"
          },
          "error": {
            "type": "string"
          },
          "model": {
            "type": "string"
          },
          "campaigns": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "match_type": {
            "type": "string"
          },
          "model_year": {
            "type": [
              "number",
              "null"
            ]
          },
          "check_digit": {
            "type": "string"
          },
          "recall_count": {
            "type": "number"
          },
          "decode_status": {
            "type": "string"
          },
          "park_it_count": {
            "type": "number"
          },
          "recall_models": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "newest_recall_date": {
            "type": "string"
          },
          "park_outside_count": {
            "type": "number"
          }
        },
        "additionalProperties": false
      }
    },
    "downloads": {
      "type": "object",
      "required": [
        "xlsx",
        "csv"
      ],
      "properties": {
        "csv": {
          "type": "string"
        },
        "xlsx": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "truncated": {
      "type": "boolean"
    }
  },
  "additionalProperties": false
}
check_vin_recalls annotations
{
  "title": "Check VIN recalls",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
find_recalls_by_vehicle — Find recalls by vehicle
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Use this when the user wants a car recall lookup, vehicle recalls, or fleet recall check by model year, make and model without a VIN, with public NHTSA data and XLSX and CSV reports. Up to 20 vehicles and 40 source requests per call. Do not use for VIN-specific repair status or booking repairs.

find_recalls_by_vehicle input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "vehicles"
  ],
  "properties": {
    "vehicles": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "model_year",
          "make",
          "model"
        ],
        "properties": {
          "make": {
            "type": "string",
            "maxLength": 40,
            "description": "Vehicle make as on its title, e.g. the make printed on the registration."
          },
          "model": {
            "type": "string",
            "maxLength": 60,
            "description": "Vehicle model as on its title, e.g. the model printed on the registration."
          },
          "model_year": {
            "type": "number",
            "description": "Whole model year from 1949 to current UTC year plus 2, e.g. 2018."
          }
        }
      },
      "description": "Vehicles to check, e.g. [{\"model_year\":2018,\"make\":\"make from title\",\"model\":\"model from title\"}]. Up to 20 entries."
    }
  }
}
find_recalls_by_vehicle output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "summary",
    "vehicles",
    "truncated",
    "source",
    "downloads"
  ],
  "properties": {
    "source": {
      "type": "string"
    },
    "summary": {
      "type": "object",
      "required": [
        "total",
        "decoded",
        "with_recalls",
        "park_it",
        "errors",
        "duplicates"
      ],
      "properties": {
        "total": {
          "type": "number"
        },
        "errors": {
          "type": "number"
        },
        "decoded": {
          "type": "number"
        },
        "park_it": {
          "type": "number"
        },
        "duplicates": {
          "type": "number"
        },
        "with_recalls": {
          "type": "number"
        }
      },
      "additionalProperties": false
    },
    "vehicles": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "row",
          "vin",
          "check_digit",
          "decode_status",
          "model_year",
          "make",
          "model",
          "trim",
          "recall_models",
          "match_type",
          "recall_count",
          "park_it_count",
          "park_outside_count",
          "newest_recall_date",
          "campaigns",
          "error",
          "note"
        ],
        "properties": {
          "row": {
            "type": "number"
          },
          "vin": {
            "type": "string"
          },
          "make": {
            "type": "string"
          },
          "note": {
            "type": "string"
          },
          "trim": {
            "type": "string"
          },
          "error": {
            "type": "string"
          },
          "model": {
            "type": "string"
          },
          "campaigns": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "match_type": {
            "type": "string"
          },
          "model_year": {
            "type": [
              "number",
              "null"
            ]
          },
          "check_digit": {
            "type": "string"
          },
          "recall_count": {
            "type": "number"
          },
          "decode_status": {
            "type": "string"
          },
          "park_it_count": {
            "type": "number"
          },
          "recall_models": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "newest_recall_date": {
            "type": "string"
          },
          "park_outside_count": {
            "type": "number"
          }
        },
        "additionalProperties": false
      }
    },
    "downloads": {
      "type": "object",
      "required": [
        "xlsx",
        "csv"
      ],
      "properties": {
        "csv": {
          "type": "string"
        },
        "xlsx": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "truncated": {
      "type": "boolean"
    }
  },
  "additionalProperties": false
}
find_recalls_by_vehicle annotations
{
  "title": "Find recalls by vehicle",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

1 advertised

vehicle-recalls-widget — Zovo VIN Recall Check view

Advertised by the server during the last successful anonymous check.

Interactive view for Zovo VIN Recall Check.

vehicle-recalls-widget URI
ui://widget/vehicle-recalls-2-1.0.0-2d2fb8c15fdc74413571ee455f8af444205a5393a6aacffcc1add8804d46f3cd.html

MIME type: text/html;profile=mcp-app

vehicle-recalls-widget-legacy — Zovo VIN Recall Check view (previous versions)

Advertised by the server during the last successful anonymous check.

vehicle-recalls-widget-legacy URI template
ui://widget/vehicle-recalls-{version}.html

MIME type: text/html;profile=mcp-app

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
624 ms
95th percentile latency
624 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 624 ms · metadata changed · 2 tool(s), 1 resource(s), 1 resource template(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http zovo-vin-recall-check-mcp https://vehicle-recalls.zovo.one/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add zovo-vin-recall-check-mcp --url https://vehicle-recalls.zovo.one/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable zovo-vin-recall-check-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "zovo-vin-recall-check-mcp": {
      "url": "https://vehicle-recalls.zovo.one/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "zovo-vin-recall-check-mcp": {
      "type": "streamableHttp",
      "url": "https://vehicle-recalls.zovo.one/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start zovo-vin-recall-check-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "zovo-vin-recall-check-mcp": {
      "type": "http",
      "url": "https://vehicle-recalls.zovo.one/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http zovo-vin-recall-check-mcp https://vehicle-recalls.zovo.one/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "zovo-vin-recall-check-mcp": {
      "url": "https://vehicle-recalls.zovo.one/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "zovo-vin-recall-check-mcp": {
      "serverUrl": "https://vehicle-recalls.zovo.one/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Zovo VIN Recall Check MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.