FreightProof API Reference
Integration Guide for TMS, Dispatch Systems, and AI Agents
FreightProof is API-first. Every capability available on the website is available through REST endpoints and MCP tools. One API call at dispatch time creates a signed vetting record.
Quick Start
Vet a carrier (one call)
``bash
curl -X POST https://freight.rootz.global/api/vet \
-H "Content-Type: application/json" \
-d '{"dot_number": "123456", "broker_id": "YOUR_COMPANY"}'
`
Response:
`json
{
"vetting_id": "VET-a1b2c3d4-...",
"dot_number": 123456,
"carrier": "EXAMPLE TRUCKING LLC",
"risk_score": 18,
"risk_level": "LOW",
"recommendation": "APPROVE",
"red_flags": [],
"data_hash": "a3f8b2c1d4e5...(SHA-256)",
"vetting_date": "2026-06-17T14:30:00.000Z",
"basics": { "unsafe_driving": 42, "crash_indicator": 28, ... },
"snapshot_available": true
}
`
That's it. One POST, one signed record, courtroom-ready.
REST API Endpoints
Carrier Intelligence
| Method | Endpoint | Description |
|---|---|---|
GET | /api/carriers?name=ACME | Search carriers by name, DOT, MC, or state |
GET | /api/safety?dot=123456 | BASIC safety scores (7 categories) |
GET | /api/crashes?dot=123456 | Crash history (fatalities, injuries, VINs) |
GET | /api/crashes?vin=1HGBH41J... | Crash history by vehicle VIN |
GET | /api/inspections?dot=123456 | Inspection/violation history with OOS rates |
GET | /api/enforcement?dot=123456 | Enforcement cases + out-of-service orders |
Vetting (The Montgomery Defense)
| Method | Endpoint | Description |
|---|---|---|
POST | /api/vet | Run full vetting — live FMCSA data + risk score + SHA-256 proof |
POST | /api/vet-preview | Quick preview from local DB (no signed record) |
GET | /api/vetting?dot=123456 | Vetting history for a carrier |
GET | /api/vetting?id=VET-xxx | Retrieve specific vetting record |
POST | /api/batch-vet | Batch vet multiple carriers (array of DOTs) |
Proof of Good Care
| Method | Endpoint | Description |
|---|---|---|
POST | /api/care | Create a new care document (shipment + parties) |
POST | /api/care/:id/event | Append custody event (tender, pickup, delivery) |
GET | /api/care | List recent care documents |
GET | /api/care/:id | View care document (HTML or JSON with .json) |
GET | /api/care/:id/verify | Verify hash chain (pure SHA-256, no auth needed) |
System
| Method | Endpoint | Description |
|---|---|---|
GET | /api/status | Database statistics (record counts, version) |
GET | /api/attestation | Root hash + table hashes + provenance chain |
GET | /.well-known/ai | AI discovery (MCP tools, endpoint, capabilities) |
MCP Tools (for AI Agents)
FreightProof exposes 12 MCP tools via HTTP transport at POST /mcp (JSON-RPC 2.0).
Any AI agent that supports MCP can call these tools directly:
| Tool | Parameters | What It Returns |
|---|---|---|
freight_carrier_lookup | dot_number or mc_number or name | Carrier profile from 4.4M records |
freight_carrier_safety | dot_number | 7 BASIC scores with percentiles and threshold flags |
freight_carrier_vet | dot_number, optional broker_id | Full vetting: risk score, recommendation, SHA-256 hash |
freight_crash_history | dot_number, optional limit | Crash records with fatality/injury counts |
freight_inspection_history | dot_number, optional limit | Inspections with OOS violation rates |
freight_enforcement_history | dot_number | Enforcement cases + out-of-service orders |
freight_vetting_history | dot_number or vetting_id | Past vetting records (audit trail) |
freight_compare_carriers | dot_numbers (array) | Side-by-side comparison of 2+ carriers |
freight_red_flag_search | state, min_risk, safety_rating | Find high-risk carriers matching criteria |
freight_crash_by_vin | vin | Vehicle-level crash lookup |
freight_status | none | Database record counts and version |
freight_attestation | none | Root hash, table hashes, data provenance |
MCP Configuration
Add to your AI agent's MCP configuration:
`json
{
"mcpServers": {
"freight": {
"url": "https://freight.rootz.global/mcp",
"transport": "http"
}
}
}
`
Integration Patterns
Pattern 1: Dispatch-Time Vetting (Recommended)
Call /api/vet at the moment of dispatch. Store the vetting_id and data_hash with the load record.
`javascript
// At dispatch time
const response = await fetch('https://freight.rootz.global/api/vet', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
dot_number: carrier.dotNumber,
broker_id: 'YOUR_COMPANY'
})
});
const vetting = await response.json();
if (vetting.recommendation === 'REJECT') { // Do not dispatch — document the rejection return { dispatched: false, reason: vetting.red_flags }; }
// Store proof with the load
load.vetting_id = vetting.vetting_id;
load.vetting_hash = vetting.data_hash;
load.vetting_score = vetting.risk_score;
`
Pattern 2: Batch Daily Vetting
Vet your entire active carrier list daily. Flag changes.
`javascript
const response = await fetch('https://freight.rootz.global/api/batch-vet', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
dot_numbers: [123456, 234567, 345678, ...],
broker_id: 'YOUR_COMPANY'
})
});
`
Pattern 3: Proof of Good Care (Full Lifecycle)
Create a care document at dispatch, append events through the shipment lifecycle.
`javascript
// 1. Create document at dispatch
const care = await fetch('https://freight.rootz.global/api/care', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
shipment: { ref: 'SHIP-001', commodity: 'Electronics', value_usd: 50000 },
parties: { broker: 'YOUR_CO', carrier: 'CARRIER_CO' },
vetting_id: 'VET-xxx' // Links to the dispatch vetting record
})
});
// 2. Append pickup event
await fetch(https://freight.rootz.global/api/care/${care.document_id}/event, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
stage: 'PICKUP_HANDOFF',
actor: 'Driver: John Smith',
evidence: { condition: 'good', seal_number: 'SEAL-12345', pieces: 24 }
})
});
// 3. Verify the document at any time
const verify = await fetch(
https://freight.rootz.global/api/care/${care.document_id}/verify
);
// Returns: { valid: true, events_verified: 3, problems: [] }
`
Pattern 4: AI Agent Integration
Your AI dispatch agent uses MCP tools to vet carriers automatically:
`
Agent: "Vet carrier DOT 123456 for a load from Chicago to Miami"
→ Calls freight_carrier_vet(dot_number: 123456, broker_id: "AGENT_DISPATCH")
→ Returns: risk_score: 32, recommendation: "CAUTION", red_flags: ["BASIC Unsafe Driving at 72nd percentile"]
Agent: "Risk is medium. Flagging for human review before dispatch."
`
Verification (No Auth Required)
Any vetting record can be independently verified:
`bash
Get the vetting record
curl https://freight.rootz.global/api/vetting?id=VET-xxx
The response includes snapshot_json and data_hash
Verify: SHA-256(snapshot_json) should equal data_hash
echo -n "$SNAPSHOT_JSON" | sha256sum
Should match the data_hash field
`Care documents verify the same way:
`bash
curl https://freight.rootz.global/api/care/POGC-xxx/verify
Returns: { valid: true, events_verified: N, problems: [] }
``Data Behind the API
| Source | Records | Updated |
|---|---|---|
| FMCSA Carrier Census | 4,437,486 | Bulk quarterly + live API |
| FMCSA Crash File | 3,575,222 | Bulk quarterly |
| FMCSA Inspection File | 4,850,003 | Bulk quarterly |
| FMCSA BASIC Scores | On-demand | Live via QCMobile API |
| FMCSA Enforcement | Schema ready | Pending source access |
| FMCSA OOS Orders | Schema ready | Pending source access |
Rate Limits & Pricing
No subscriptions. No monthly fees. Credit-based access.
| Lookups | Vettings | Batch size | |
|---|---|---|---|
| Free (30 credits on signup) | Unlimited | 30 credits included | 10 |
| Pay As You Go ($10/record) | Unlimited | Buy 1–99 credits | 100 |
| 100-Pack ($900 = $9/record) | Unlimited | 100 credits | 100 |
| 500-Pack ($4,000 = $8/record) | Unlimited | 500 credits | 500 |
| Enterprise | Unlimited | Volume pricing | Unlimited |
Credits never expire. Each vetting record consumes one credit.
freight.rootz.global · Rootz Corp · steven@sprague.com