API and MCP
Before you book a load, onboard a carrier or pay an invoice, ask whether the carrier is current. The answer comes from FMCSA open data and says when it was read. It is read-only.
Try it without a key
curl -s https://www.haul10.com/api/v1/carriers/1234567/status
The answer has the USDOT status, each operating authority with liability insurance on file against the required minimum, the MCS-150 deadline and state, the UCR bracket and fee, and a signals object for yes/no checks. It is a reading of public data on the day it names, not a legal determination. UCR payment is not public and comes back as paymentVisibleInPublicData: false.
Keyless requests are limited to 30 an hour per address. A free API key from Settings allows 200 calls a day, and 5000 a day once your account has a Pro carrier.
MCP
Streamable HTTP, JSON responses. Add it to any MCP client. Every tool is read-only.
claude mcp add --transport http haul10 https://www.haul10.com/api/mcp \ --header "Authorization: Bearer h10_live_..."
carrier_status: is this USDOT number current (no key)ucr_fee: the UCR bracket and fee for a vehicle count (no key)mcs150_schedule: the MCS-150 month, year parity and next deadline (no key)my_carriers: the carriers on your account and what is due (key)
REST endpoints
| Method and path | What it does | Key |
|---|---|---|
| GET /api/v1/carriers/{usdot}/status | Filing status of a carrier | Optional |
| GET /api/v1/ucr/fee | UCR bracket and fee | None |
| GET /api/v1/me/carriers | Carriers tracked by the key's account, and what is due | Required |
The full description is at /openapi.json, and a plain-text map for language models is at /llms.txt. Errors are JSON with a sentence in error and a stable code: invalid, not_found, unavailable (safe to retry), rate_limited, unauthorized.
Not built yet: asking for a filing over the API or MCP. Filing is done in the app, where the carrier signs the authorisation.