Skip to main content
Glama
Panda Federation Tools

Panda Federation Tools

VIN Decoder + Recalls: Bulk NHTSA Specs & Safety Recalls

vin_decoder_recalls
Read-only

Decode VINs in bulk using NHTSA data and attach recall campaigns plus complaint counts to each model year, so dealers, fleets, insurers, and repair shops can check specs and open safety recalls.

Instructions

Bulk-decode vehicle identification numbers with the official NHTSA vPIC API and attach NHTSA recall campaigns and complaint counts for each model year in the same run (year, make, model, trim, body, engine, fuel, drivetrain, plant, safety features). Unlike product_recall_monitor (FDA/CPSC product recalls) and company_website_enricher (firmographics), this is VIN-level vehicle data. Use when dealers, fleets, insurers, marketplaces or repair shops need specs plus open safety recalls for many VINs. Do not use for consumer product or drug recalls (use product_recall_monitor) or for title/lien history. Parameters: vins (list; duplicates removed; up to 10,000); includeRecalls and includeComplaints default true; includeInvalid keeps undecodable VINs as free skipped rows; maxResults caps billed decodes. Undecodable VINs are skipped for free. Returns per item: agentSummary, vin, valid, modelYear, make, model, trim, bodyClass, vehicleType, driveType, engine, fuel, manufacturer, plant, safetyFeatures, recallCount, parkItRecall, recalls, complaintCount, nhtsaRecallUrl; plus VINS_XLSX (Vehicles + Recalls sheets)/CSV.

Behavior: read-only; runs the Apify Actor pandadad0214/vin-decoder-recalls (https://apify.com/pandadad0214/vin-decoder-recalls) on your own Apify account. Price: $0.001 per vin decoded. Runs that find nothing are not charged per result, and spending is capped per call by run_max_charge_usd (default $0.50). run_max_items (default 50) limits items returned and fills maxResults when you leave it unset, so it also limits what is billed; setting maxResults higher can bill more than is returned. Most calls finish in 5-15 s for a few inputs; large inputs or crawls can take minutes, so raise run_timeout_secs (max 300) or shrink the input after a timeout error. Returns JSON {actor, count, items}; long text output is trimmed to whole items, with all items in structuredContent.

Input Schema

NameRequiredDescriptionDefault
vinsNoVINs. Up to 10,000 17-character VINs. Spaces and dashes are removed, duplicates dropped.
maxResultsNoMaximum results. You pay per VIN returned, so this also caps the cost. Default 1000.
run_max_itemsNoOptional. Most results to return from this call (default from PANDA_MAX_ITEMS, 50). Also limits how many results the Actor produces and charges for, unless you set its own max field.
includeInvalidNoReturn VINs that do not decode. On = every VIN gets a row (with the decode note) and is charged. Off = VINs NHTSA cannot decode at all are skipped for free.
includeRecallsNoAdd NHTSA recall campaigns. Recall campaigns for each make/model/year, with component, summary, remedy and park-it warnings (no extra charge).
run_timeout_secsNoOptional. Seconds to wait for results (default from PANDA_TIMEOUT_SECS, 120; max 300).
includeComplaintsNoAdd complaint counts. Number of NHTSA owner complaints for the model year (no extra charge).
run_max_charge_usdNoOptional. Hard spending cap for this call in USD (default from PANDA_MAX_CHARGE_USD, 0.50).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv1.5.0

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, open-world, non-idempotent, non-destructive, but the description adds the operationally decisive facts annotations cannot carry: it runs the named Apify Actor on the caller's own account, costs $0.001 per VIN decoded, undecodable VINs are skipped free, run_max_charge_usd caps spend, and setting maxResults above run_max_items can bill more than is returned. It also discloses timing (5-15 s typical, 300 s max) and the remedy for a timeout error.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and sibling routing are front-loaded in the first two sentences, which is right. However the definition is dense to the point of redundancy: the vehicle attribute list appears twice (once as a spec parenthetical, once inside the Returns enumeration), and the Parameters sentence largely duplicates what the 100%-covered schema already says, so several clauses do not earn their place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter tool with no output schema, the description covers what the schema cannot: it enumerates the returned fields including recallCount, parkItRecall, complaintCount and the XLSX/CSV artifacts, and states the envelope shape ({actor, count, items}) plus the structuredContent/trimming behavior. Cost model, timeout recovery, and invalid-VIN handling are all addressed, leaving no material gap for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3 and the description mostly restates parameter intent (vins deduped, includeInvalid skipping, maxResults as a cost cap) rather than adding to it. It earns the bump for one genuine cross-parameter interaction the schema never states: run_max_items fills maxResults when unset and therefore bounds billing, while a higher maxResults can bill more than is returned.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Bulk-decode vehicle identification numbers with the official NHTSA vPIC API and attach NHTSA recall campaigns and complaint counts" gives a specific verb (decode), a specific resource (VINs/vehicle specs), and a compound scope (specs + recalls). It then explicitly separates itself from product_recall_monitor (FDA/CPSC product recalls) and company_website_enricher (firmographics), so an agent can disambiguate without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names positive personas and use cases (dealers, fleets, insurers, marketplaces, repair shops needing specs plus open recalls for many VINs) and gives explicit exclusions with the correct alternative named for each (product/drug recalls -> product_recall_monitor; title/lien history -> neither this nor any sibling). This is a full when/when-not/alternatives routing statement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.