FMCSA Carrier Intelligence

US motor carrier safety, authority and identity-linkage checks from FMCSA data. Pay per call (x402).

Sollte ich dies verwenden

Qualität und Sicherheit

A
Qualität der Beschreibung
100%
Vollständigkeit des Schemas
62%
Qualität der Benennung
96%
Risiko der Vergiftung
100%
Übereinstimmung der Berechtigungen
100%
Einhaltung des Protokolls
100%

Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.

Kontextkosten

~3,136Tokens (Tool-Definitionen)
~740 BTypische Antwortgröße
Erhebliche Auswirkung auf die Aufmerksamkeit (2.45% von 128k Kontext)

Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.

Installieren

Installation mit einem Klick

Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:

{
  "mcpServers": {
    "fmcsa-carrier-intelligence": {
      "url": "https://fmcsa-mcp-843680657471.us-central1.run.app/mcp"
    }
  }
}

Remote-Endpunkte

https://fmcsa-mcp-843680657471.us-central1.run.app/mcpstreamable-http

Was es kann

Tool-Inventar

Tools (11)

🟢 Nur lesen🟡 Schreiben🔴 Löschen⚪ Unbekannt
🟢get_catalog

Free, unauthenticated dataset catalog. Describes every table this service sells, its fields, current pricing, and freshness. Read this before paying for anything.

Eingabe-Schema

{
  "type": "object",
  "properties": {},
  "title": "get_catalogArguments"
}
🟢get_sample

Free, unauthenticated sample of carrier_profile rows. Lets a buying agent evaluate data quality before spending USDC on the paid tools.

Eingabe-Schema

{
  "type": "object",
  "properties": {},
  "title": "get_sampleArguments"
}
🟢lookup_carrier(usdot_number, claimed_name, claimed_street, claimed_city, claimed_state, ...)

Look up a single carrier's current profile by USDOT number. Paid — you pay only when a call returns records; an exact-key miss is free. Returns every carrier_status (Active, Inactive, Pending) — check the carrier_status field, don't assume Active. Carries no contact information (legal_name, dba_name, addresses, phone, email — removed 2026-09-19, see schemas.CarrierProfile). The one legitimate use those fields served — confirming a carrier's claimed identity against records, e.g. to catch a carrier-identity-theft ("double brokering") attempt — is available instead via claimed_name (matched against legal_name OR dba_name) and claimed_street/ claimed_city/claimed_state/claimed_zip (matched against physical_address; supply any subset). Returns name_match/ physical_address_match as a boolean per claim actually supplied, `null` for a claim not supplied — never the value on file itself.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "usdot_number": {
      "title": "Usdot Number",
      "type": "integer"
    },
    "claimed_name": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Claimed Name"
    },
    "claimed_street": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Claimed Street"
    },
    "claimed_city": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Claimed City"
    },
    "claimed_state": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Claimed State"
    },
    "claimed_zip": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Claimed Zip"
    }
  },
  "required": [
    "usdot_number"
  ],
  "title": "lookup_carrierArguments"
}
🟢search_carriers(state, safety_tier, authority_status, cargo_type, include_inactive, ...)

Filtered carrier search. Paid — you pay only when a call returns records; a zero-row result is free, same as an exact-key miss. Defaults to Active carriers only — pass include_inactive=true to also see Inactive/Pending. Capped at 100 rows per response regardless of the requested limit; never a full-table dump. Carries no contact information (legal_name, dba_name, addresses, phone, email — removed 2026-09-19, see schemas.CarrierProfile) — a filterable, multi-result endpoint returning personal contact details for whoever matched a filter was the sharpest version of that risk in this product; use lookup_carrier's claimed_name/claimed_street/etc. if you need to confirm a specific carrier's claimed identity.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "state": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "State"
    },
    "safety_tier": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Safety Tier"
    },
    "authority_status": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Authority Status"
    },
    "cargo_type": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Cargo Type"
    },
    "include_inactive": {
      "default": false,
      "title": "Include Inactive",
      "type": "boolean"
    },
    "limit": {
      "default": 20,
      "title": "Limit",
      "type": "integer"
    }
  },
  "title": "search_carriersArguments"
}
🟢get_safety_history(usdot_number, since_date)

Historical snapshots and changelog entries for a carrier. Paid — you pay only when a call returns records; an exact-key miss is free. changelog may legitimately be empty for a carrier without two distinct-date snapshots yet — a diff needs both. authority_types, oos_orders_active, insurance_bipd_on_file, insurance_cargo_on_file, insurance_bond_on_file, has_been_revoked, and last_revocation_date are null (not false/empty) on a history row recorded before 2026-09-02 — carrier_history wasn't tracking those fields yet, so null there means "not tracked on this date," not a negative answer. Likewise has_been_suspended/last_suspension_date are null before 2026-09-06, and has_authority_reinstated/last_reinstatement_date/ has_insurance_identity_mismatch are null before 2026-09-12. Carries no contact information (legal_name, dba_name, addresses, phone, email — removed 2026-09-19, see schemas.CarrierProfile); changelog excludes field_name in {legal_name, dba_name, phone, email} for the same reason — a changed value is still the value.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "usdot_number": {
      "title": "Usdot Number",
      "type": "integer"
    },
    "since_date": {
      "anyOf": [
        {
          "format": "date",
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Since Date"
    }
  },
  "required": [
    "usdot_number"
  ],
  "title": "get_safety_historyArguments"
}
🟢screen_carrier_identity(usdot_number)

Free triage screen for a carrier: whether it's flagged under FMCSA's own chameleon-carrier methodology, how big its identity cluster is, and how many linked carriers carry a motive — with no member detail. Call check_carrier_identity (paid) for that. This is the entire discovery/sales motion in an agent-only channel, not a discount tier — free by design (Identity-API-Revision- 2026-09-06.md Section 1), so it never bills and never requires payment. By the same design, it withholds anything that identifies a linked carrier: no member USDOT number, no legal name, no link type, no identifier hash. A caller learns THAT there is something to look at here, not WHAT. confidence_caveat discloses the known ~6% artifact rate and that recall is not measurable in FMCSA's public data — read it, don't just check the flagged boolean. match_score_practical_ceiling is computed per carrier from which ARCHI terms were actually available for it, not a flat constant — most carriers cap out well below the theoretical 8.5. An unknown USDOT number returns a not_found error.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "usdot_number": {
      "title": "Usdot Number",
      "type": "integer"
    }
  },
  "required": [
    "usdot_number"
  ],
  "title": "screen_carrier_identityArguments"
}
🔴check_carrier_identity(usdot_number)

Full identity-linkage detail for a carrier: why it's flagged and how confident that is. Priced meaningfully above the free screen_carrier_identity — call that first if you only need the flag and a count. Never names or points at another carrier (redesigned 2026-09-18 — see schemas.IdentityAssessment's docstring): no linked USDOT number, legal name, or shared-identifier hash. A linked carrier's own identity was never this caller's to receive, and an unsalted hash of a low-entropy value like a phone number or address doesn't meaningfully withhold it from a determined party anyway (confirmed by reading Truckin's own hashing code). Every field here is either the subject carrier's own data or a derivative signal — a score, a match-term-type label (which *kind* of identifier matched, never the value), a count, a boolean. SSN and EIN matches carry weight 2.0 each in FMCSA's ARCHI methodology and are not present in public data; D&B is nominally weight 2.0 too but is only genuinely available for ~4% of carriers, and officer data (needed for the name x officer term) is missing for another ~15%. So score_provenance.match_score_ceiling is computed per carrier, not a flat 4.5 — most responses cap out at 2.5 or lower. It also states plainly that recall against FMCSA's own declared-predecessor label set is not measurable. flagged applies FMCSA's own ARCHI flag rule (match_score >= 1.5 AND a linked motive >= 1); it is not a fraud determination and must not be presented as one. Note flagged and match_score >= 1.5 are NOT the same condition — clustering requires 2+ independent identifier-type families to agree, so materially more carriers clear the score threshold than are ever flagged. Paid. A carrier with no linked carriers is a complete answer and bills; an unknown USDOT number is a free not_found.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "usdot_number": {
      "title": "Usdot Number",
      "type": "integer"
    }
  },
  "required": [
    "usdot_number"
  ],
  "title": "check_carrier_identityArguments"
}
🟢check_address_consistency(usdot_number)

How many distinct business addresses and phones this carrier reports across FMCSA's independent records of it (census registration, licensing and insurance filings, and its own self-reported crash records). Mailing addresses are excluded — differing from the physical address there is normal. Paid. Cheaper than either identity tool; one row, no graph.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "usdot_number": {
      "title": "Usdot Number",
      "type": "integer"
    }
  },
  "required": [
    "usdot_number"
  ],
  "title": "check_address_consistencyArguments"
}
🟢confirm_identity_link(usdot_number_a, usdot_number_b)

Confirms or denies that two carriers YOU ALREADY SUSPECT are linked in fact share an identity cluster — the lower-risk alternative to check_carrier_identity's removed linked_carriers field (see schemas.IdentityAssessment's docstring for why that was removed 2026-09-18). This never discloses a carrier's identity to a caller who didn't already have it: both usdot_number_a and usdot_number_b are supplied by you. It only ever answers "do these two specific carriers share a cluster?", never "who is linked to this carrier?" — call check_carrier_identity for that, which stops at a score and a count for exactly this reason. cluster_id is returned only when linked is true, and isn't new information even then — you could obtain the same value directly from either carrier's own check_carrier_identity or screen_carrier_identity response. usdot_number_a and usdot_number_b must differ (invalid_arguments, free — there is no comparison to make). Either number failing to resolve in carrier_identity_cluster is a free not_found, same as check_carrier_identity. Paid — pricier than check_carrier_identity, since it resolves two carriers' clusters per call, not one. A "not linked" result is a complete, valuable answer and bills the same as "linked", same reasoning as check_carrier_identity's cluster_size == 1.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "usdot_number_a": {
      "title": "Usdot Number A",
      "type": "integer"
    },
    "usdot_number_b": {
      "title": "Usdot Number B",
      "type": "integer"
    }
  },
  "required": [
    "usdot_number_a",
    "usdot_number_b"
  ],
  "title": "confirm_identity_linkArguments"
}
🟢check_applicant_against_roster(usdot_number, roster_usdot_numbers)

Screens one applicant carrier against a roster of carriers you already do business with (or are vetting) — the batch generalization of confirm_identity_link, for the real-world case of catching a carrier that was previously cut from your network (revoked, suspended, or otherwise let go) trying to re-enter under a new USDOT number. usdot_number is the applicant; roster_usdot_numbers is your own list, supplied by you. Returns linked (true if the applicant shares an identity cluster with ANY roster member) and matched_roster_usdot_numbers (which ones, always a subset of what you supplied — never a carrier you didn't already name). roster_not_found lists any roster entries that simply don't resolve to a known carrier (still your own input, not a new disclosure). usdot_number's own cluster_id is always included, same as check_carrier_identity's convention — it's the applicant's own data, not something withheld pending a match. usdot_number must not also appear in roster_usdot_numbers, and roster_usdot_numbers must be a non-empty list of at most settings.roster_screen_max_size distinct entries (currently 100) — either violation is a free invalid_arguments; split a larger roster into multiple calls rather than expecting it to be truncated for you. An unresolved usdot_number (the applicant itself) is a free not_found, same as confirm_identity_link/check_carrier_identity. Paid, metered: price = price_check_applicant_against_roster_base + price_check_applicant_against_roster_per_entry * (the deduped roster size) — see get_catalog for current rates. A "not linked to anything on your roster" result is a complete, valuable answer and bills the same as a match, same reasoning as check_carrier_identity's cluster_size == 1.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "usdot_number": {
      "title": "Usdot Number",
      "type": "integer"
    },
    "roster_usdot_numbers": {
      "items": {
        "type": "integer"
      },
      "title": "Roster Usdot Numbers",
      "type": "array"
    }
  },
  "required": [
    "usdot_number",
    "roster_usdot_numbers"
  ],
  "title": "check_applicant_against_rosterArguments"
}
🟢get_identity_sample

Free, unauthenticated sample of identity/fraud responses, covering both screen_carrier_identity's free IdentityScreen shape and check_carrier_identity's paid IdentityAssessment shape. Lets a buying agent see the paid response shape and evaluate data quality before spending USDC on check_carrier_identity.

Eingabe-Schema

{
  "type": "object",
  "properties": {},
  "title": "get_identity_sampleArguments"
}

Community

Diesen Server bewerten

Nachweis

Aktuelle Beobachtungen

verifiziertVersion nicht aufgezeichnet11 Tools