Carrier vetting API quickstart for TMS and broker tools
One HTTP route per check, JSON in and out, prepaid credit or x402. Here is a five-call vetting flow with real request shapes and what it costs.
The flow
| Step | Call | Cost |
|---|---|---|
| 1. MC number to USDOT | find_carrier_by_mc | Free |
| 2. Identity screen | screen_carrier_identity | Free |
| 3. Profile: status, authority, insurance flags, safety rating and date | lookup_carrier | $0.01 |
| 4. Inspections, violations, out-of-service rates, crashes | get_inspection_crash_summary | $0.02 |
| 5. A dated, hashed record of the factors for your file | get_carrier_selection_record | $0.10 |
All five calls cost $0.13 in total. A call is charged only when it returns records: an unknown carrier, an empty search or a service error is free. See pricing for every tool.
1. Free calls first
curl "https://fmcsa-mcp-843680657471.us-central1.run.app/x402/find_carrier_by_mc?mc_number=MC12892"
curl "https://fmcsa-mcp-843680657471.us-central1.run.app/x402/screen_carrier_identity?usdot_number=2122247"
The first returns authority_holder_usdot_number, docket_status and the records' as-of date. The second returns flagged, cluster_size and counts, never another carrier's identity.
2. Paid calls with an API key
Request a free evaluation key: $5 of credit, reviewed by hand. Send it on each call.
curl -X POST "https://fmcsa-mcp-843680657471.us-central1.run.app/x402/lookup_carrier" \
-H "Authorization: Bearer fmk_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"usdot_number": 2122247}'
Each response carries x-credit-remaining-atomic, your balance in millionths of a dollar. No wallet is needed with a key. To pay with USDC through x402 instead, an unpaid call returns HTTP 402 stating the price; see For agents.
3. The record for your file
curl -X POST "https://fmcsa-mcp-843680657471.us-central1.run.app/x402/get_carrier_selection_record" \
-H "Authorization: Bearer fmk_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"usdot_number": 2122247}'
The record is dated and carries a SHA-256 hash of its own contents. GET /verify/<hash> is free and confirms we issued exactly that record, when, and for which carrier. We store only the hash and four small facts. It is a record of what the public data showed, not a score and not a recommendation; see what a carrier-selection file should show.
4. Re-checking a roster
curl -X POST "https://fmcsa-mcp-843680657471.us-central1.run.app/x402/check_roster_changes" \
-H "Authorization: Bearer fmk_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"roster_usdot_numbers": [2122247, 1234567], "since": "2026-10-01"}'
Returns which carriers on your roster changed since a date, and what changed. A roster takes 1 to 100 USDOT numbers: $0.05 plus $0.005 per entry.
What to build around
- Treat every answer as dated. Store
record_as_ofwith whatever you keep. - Handle the freshness flag. For carriers flagged
authority_status_is_legacy_li_not_motus, authority and insurance fields describe May 14, 2026. See the freeze explained. - Errors are explicit. A 400 says what to fix and includes a working example. Rate limit: 60 requests a minute per IP address.
- Machine-readable description: OpenAPI. MCP, A2A and the full tool list are in the API documentation.
Common questions
How much does a carrier vetting check cost?
From $0.01 per call. A five-call flow with MC lookup, identity screen, carrier profile, inspection and crash summary and a hashed selection record costs $0.13 in total. You are charged only when a call returns records.
Do I need a crypto wallet?
No. Request a free evaluation API key with $5 of prepaid credit and send it as a Bearer token. Wallet payment with USDC through x402 is also supported.
What data does the API use?
FMCSA public records. Every response states the date its records are current as of. Authority and insurance fields for many carriers come from an FMCSA archive that stopped updating on May 14, 2026, and those records are flagged.
Is there an OpenAPI description?
Yes, at the service host under /openapi.json, with one route per tool.