carrierscore
Server Details
FMCSA motor-carrier risk scores, monitoring, and carrier-selection evidence reports for AI agents.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- csprout3/carrierscore-mcp
- GitHub Stars
- 0
- Server Listing
- CarrierScore MCP Server
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Score is being calculated. Check back soon.
Available Tools
6 toolscarrier_lookupLook Up Carrier IdentityRead-onlyIdempotentInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| dot_number | Yes | US DOT number of the carrier, digits only (e.g. "1234567") |
Output Schema
| Name | Required | Description |
|---|---|---|
| phy_zip | No | |
| add_date | No | Date added to the FMCSA census (YYYY-MM-DD) |
| dba_name | No | Doing-business-as name, if any |
| phy_city | No | |
| phy_state | No | |
| dot_number | Yes | US DOT number |
| legal_name | No | Registered legal name |
| phy_street | No | |
| mcs150_date | No | Latest MCS-150 filing date (YYYY-MM-DD) |
| power_units | No | Fleet size: number of power units |
| status_code | No | FMCSA operating status code (e.g. "A" = active) |
| safety_rating | No | FMCSA safety rating code (e.g. "S" = satisfactory) |
| total_drivers | No | Total drivers reported |
carrier_scoreGet Carrier Risk ScoreRead-onlyIdempotentInspect
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: { : { 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.
| Name | Required | Description | Default |
|---|---|---|---|
| dot_number | Yes | US DOT number of the carrier, digits only (e.g. "1234567") |
Output Schema
| Name | Required | Description |
|---|---|---|
| flags | Yes | Hard flags (OOS order, no insurance, reincarnation link) |
| surcharge | No | Additional points from hard flags |
| base_score | No | Score before hard-flag surcharges |
| components | Yes | Score components keyed by component name |
| disclaimer | No | Methodology disclaimer — relay verbatim |
| dot_number | Yes | US DOT number |
| legal_name | No | |
| scored_as_of | No | Date of the scoring run (YYYY-MM-DD) |
| carrier_score | No | CarrierScore 0-100, higher = riskier |
| data_sufficiency | No | 0-1: share of the score resting on observed vs neutral-imputed data |
list_alertsGet Alerts for a Saved Carrier ListRead-onlyIdempotentInspect
Retrieve the alert history for a saved carrier list (see save_carrier_list), newest first. Requires the same paid API key that saved the list.
Each alert records one change detected between consecutive daily scoring runs for one carrier: type (oos_order_activated, authority_lost, insurance_lapsed, status_changed, score_jump, reincarnation_link), severity (critical / high / medium), the field that changed with its before/after values, the DOT and legal name, and the scoring dates compared. Use it to answer "did anything change on my carrier list?" — critical alerts (new OOS order, authority lost) mean the carrier should not be dispatched until verified; follow up with carrier_score or montgomery_file for the full picture.
Args:
list_id: the lst_... id returned by save_carrier_list
since (optional): YYYY-MM-DD; only alerts from scoring runs on/after this date
Returns JSON: { list_id, since, count, alerts: [{ ts, as_of, prev_as_of, list_id, list_name, dot, legal_name, type, severity, field, before, after }] }. An empty alerts array means no monitored change since the given date (alerts only exist once two daily scoring runs have happened).
Errors: 403 without a paid key; 404 if the list id is unknown for this key; 400 if since is not YYYY-MM-DD.
| Name | Required | Description | Default |
|---|---|---|---|
| since | No | Only alerts from scoring runs on/after this date (YYYY-MM-DD) | |
| list_id | Yes | Saved list id from save_carrier_list |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | Number of alerts returned |
| since | No | Lower bound applied (YYYY-MM-DD) or null |
| alerts | Yes | Alert history, newest first |
| list_id | Yes |
monitor_carriersMonitor Carrier ListRead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| dot_numbers | Yes | US DOT numbers to check, 1-100 per call |
Output Schema
| Name | Required | Description |
|---|---|---|
| found | Yes | How many were found in the scored population |
| carriers | Yes | Score summary per found carrier |
| not_found | Yes | Requested DOTs absent from the scored population |
| requested | Yes | How many DOT numbers were requested |
| disclaimer | No | Methodology disclaimer — relay verbatim |
| scored_as_of | No | Date of the scoring run (YYYY-MM-DD) |
montgomery_fileGenerate Montgomery Evidence FileRead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | "text" = filing-ready report (free tier); "json" = structured fields (requires API key) | text |
| dot_number | Yes | US DOT number of the carrier, digits only (e.g. "1234567") |
Output Schema
| Name | Required | Description |
|---|---|---|
| flags | No | |
| report | No | Report title line (format="json") |
| dba_name | No | |
| generated | No | Report generation date (YYYY-MM-DD) |
| surcharge | No | |
| base_score | No | |
| components | No | |
| disclaimer | No | |
| dot_number | No | |
| legal_name | No | |
| power_units | No | |
| report_text | No | Filing-ready plain-text evidence report (format="text") |
| status_code | No | |
| scored_as_of | No | |
| carrier_score | No | CarrierScore 0-100, higher = riskier |
| safety_rating | No | |
| data_sufficiency | No |
save_carrier_listSave Carrier List for Daily MonitoringInspect
Save a named list of carriers (by US DOT number) for continuous monitoring. Requires a paid API key (CARRIERSCORE_API_KEY on the Monitor or Compliance tier) — the free tier gets a 403 with an upgrade link.
Once saved, CarrierScore diffs every carrier on the list against the previous day's scoring run after each daily run and records alerts: new out-of-service order (critical), operating authority lost (critical), insurance filing lapsed (high), operating status leaving Active (high), risk score up 10+ points (medium), high-confidence reincarnated-carrier link appearing (medium). Alerts are always retrievable with list_alerts; optionally they are also pushed to a webhook (JSON POST, HMAC-signed via the X-CarrierScore-Signature header with the per-key secret from GET /v1/lists) and/or summarized in one daily digest email.
Use this when a broker asks to "watch" or "keep an eye on" their carrier roster. Caps: 500 DOTs total across all lists on the Monitor tier, 5000 on Compliance; up to 50 lists per key. Saving the same DOT twice in one list is deduped.
Args:
name: short label for the list (1-100 chars)
dot_numbers: array of DOT number strings (1-8 digits each)
webhook_url (optional): https URL to POST new alerts to
email (optional): address for the daily digest
Returns JSON: { list_id, name, dots, created, updated, webhook_url?, email? }. Keep list_id — list_alerts needs it.
Errors: 403 without a paid key; 400 on invalid DOTs, empty list, or exceeding the tier cap (message says which); 401 bad key.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | List name, e.g. "Active roster Q3" | |
| No | Optional daily digest email | ||
| dot_numbers | Yes | US DOT numbers to monitor | |
| webhook_url | No | Optional https URL to receive alert POSTs |
Output Schema
| Name | Required | Description |
|---|---|---|
| dots | Yes | US DOT numbers on the list (deduped) |
| name | Yes | List name |
| No | Daily digest email, if configured | |
| created | No | Creation timestamp (ISO 8601 UTC) |
| list_id | Yes | Saved list id (lst_...) — use with list_alerts |
| updated | No | Last update timestamp (ISO 8601 UTC) |
| webhook_url | No | Alert webhook URL, if configured |
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Servers
- Alicense-qualityCmaintenanceProvides keyless access to US FMCSA motor-carrier registry data, enabling lookup of DOT/MC numbers, names, operating authority, and safety information.11MIT
- Flicense-qualityCmaintenanceAn MCP server for freight dispatchers that takes natural language orders, selects vehicles, checks regulations via RAG, and prepares documents for clients and drivers.
- Alicense-qualityDmaintenanceOcean container shipping intelligence for AI agents — D\&D tariffs, freight rates, vessel schedules, port congestion, inland haulage across 6 major carriers. 24 MCP tools.MIT
- AlicenseAqualityCmaintenanceReal-time LTL freight fuel surcharge rates for 9 US carriers and US state ABC liquor license compliance lookups (CA, TX, NY, FL). Every response includes a verifiability block with extraction confidence and source URL so agents can assess data quality before acting.61MIT
Your Connectors
Sign in to create a connector for this server.