CarrierScore
FMCSA motor-carrier risk scores, monitoring, and Montgomery carrier-selection evidence reports for freight brokers and AI booking agents.
What it can do
- Carrier Lookup: Look up an FMCSA-registered motor carrier's identity by US DOT number: legal name, DBA, operating status, FMCSA safety rating, fleet size (power units, drivers), physical address, and
- Carrier Score: Get the CarrierScore risk score (0-100, HIGHER = RISKIER) for a carrier by US DOT number, with a full component breakdown. This is the core "is this carrier safe to book?" signal for AI
- Montgomery File: Generate a timestamped Montgomery file — a carrier-selection evidence report — for a carrier by US DOT number. Since Montgomery v. Caribe Transport II (SCOTUS, May 2026), freight brok
What data it sees
Do you need an account
No: the server works without sign-in
FMCSA motor-carrier risk scores, monitoring, and Montgomery carrier-selection evidence reports for freight brokers and AI booking agents. Free tier available; scores are documented-methodology statistical indicators, not safety determinations.
How to connect
How to connect CarrierScore to Claude
The server address to paste into Claude settings:
https://carrier-score--personal-4wjq.run.tools
- Open Claude (claude.ai or the desktop app).
- Go to Settings → Connectors.
- Click Add custom connector.
- Paste the server address copied below into Remote MCP server URL and click Add.
- In a chat, click + → Connectors and switch the new connector on.
Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.
Authorization
After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.
How to connect CarrierScore to ChatGPT
The server address to paste into ChatGPT settings:
https://carrier-score--personal-4wjq.run.tools
- Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
- Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
- Open Settings → Connectors and click Create.
- Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
- Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
- In a new chat open + → Apps/Connectors and enable the connector.
OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.
Authorization
On first use ChatGPT opens the service's sign-in window. Sign in and approve access.
How to connect CarrierScore to Cursor
The server address to paste into Cursor settings:
https://carrier-score--personal-4wjq.run.tools
Fastest: click Open in Cursor below and confirm the prompt.
Manually:
- In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
- Paste the JSON copied below into
~/.cursor/mcp.json(per project:.cursor/mcp.jsonin the repo root). - Save the file. The server appears in the MCP list; authorize it there if asked.
Authorization
If the service needs sign-in, an authorize button appears next to the server in the MCP list.
Server tool list (4)
Raw names from tools/list. Only developers need these.
| carrier_lookup | Look up an FMCSA-registered motor carrier's identity by US DOT number: legal name, DBA, operating status, FMCSA safety rating, fleet size (power units, drivers), physical address, and registration dates. Use this first when a booking/dispatch agent needs to confirm WHO a carrier is — that a DOT number is real, active, and matches the company name on a rate confirmation. It does not return a risk score (use carrier_score for that). Returns JSON: { dot_number, legal_name, dba_name, status_code, safety_rating, power_units, total_drivers, phy_street, phy_city, phy_state, phy_zip, add_date, mcs150_date }. Errors: 404 if the DOT is not in the FMCSA census (likely a typo or a fraudulent/never-registered carrier — treat as a red flag for booking). |
| carrier_score | Get the CarrierScore risk score (0-100, HIGHER = RISKIER) for a carrier by US DOT number, with a full component breakdown. This is the core "is this carrier safe to book?" signal for AI booking agents. The score is population-relative and built from public FMCSA data: out-of-service rates, violation trends (acute vs chronic), exposure-normalized crash rates, insurance churn, and operation age. Hard flags (active out-of-service order, no active insurance, high-confidence reincarnated-carrier link) add explicit surcharges — a carrier with any flag deserves extra scrutiny regardless of score. Returns JSON: { dot_number, legal_name, carrier_score, base_score, surcharge, components: { <name>: { label, value, percentile, weight } }, flags: string[], data_sufficiency (0-1, how much of the score rests on observed vs neutral-imputed data), scored_as_of, disclaimer }. Interpreting for booking decisions: treat the score as documented decision-support evidence, not an approve/deny verdict. Low data_sufficiency means limited inspection history — common for new carriers, itself a risk signal. Always relay the disclaimer when presenting the score. Errors: 404 if the DOT is not in the scored population; 503 if scores have not been computed yet. |
| montgomery_file | Generate a timestamped Montgomery file — a carrier-selection evidence report — for a carrier by US DOT number. Since Montgomery v. Caribe Transport II (SCOTUS, May 2026), freight brokers are exposed to state-law negligent-selection claims and need documented, timestamped, safety-data-based carrier selection. This report is that artifact: score, component percentiles, hard flags, FMCSA safety rating, and the methodology disclaimer, dated as of the scoring run. A booking agent should generate and retain this file at the moment a carrier is selected for a load. Args: - dot_number: US DOT number, digits only - format: "text" (default; the filing-ready plain-text report, available on the free tier) or "json" (structured fields; requires an API key on the monitor or compliance tier) Returns: format="text" gives the plain-text report (structured field report_text); format="json" gives structured fields { report, generated, dot_number, legal_name, dba_name, safety_rating, status_code, power_units, carrier_score, components, flags, data_sufficiency, scored_as_of, disclaimer }. Every report embeds the disclaimer verbatim — keep it when storing or quoting the report. Errors: 403 if format=json without an API key; 404 unknown DOT; 503 if scores are not computed yet. |
| monitor_carriers | Batch risk check for a list of carriers by US DOT number (max 100 per call): score summary and hard flags for each. Use when an agent is screening multiple candidate carriers for a load, or re-checking a broker's active carrier roster ("did any of my carriers pick up an out-of-service order or drop insurance?"). For a full breakdown of any single carrier that looks risky here, follow up with carrier_score or montgomery_file. Args: - dot_numbers: array of DOT number strings, 1-100 entries Returns JSON: { scored_as_of, requested, found, carriers: [{ dot_number, legal_name, carrier_score (0-100, higher = riskier), data_sufficiency, flags: string[] }], not_found: string[], disclaimer }. DOTs in not_found are absent from the scored population — verify them with carrier_lookup; an unknown DOT on your roster is itself a red flag. Errors: 400 if the list is empty or exceeds 100 (split into batches); 503 if scores are not computed yet. |