FMCSA Carrier Intelligence

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

我該用這個嗎

品質與安全性

A
說明品質
100%
結構描述完整度
62%
命名品質
96%
汙染風險
100%
權限相符程度
100%
協定合規性
100%

根據工具定義與協定合規性的自動化分析。

上下文成本

~3,136Token(工具定義)
~740 B典型回應大小
顯著的注意力影響(128k 上下文的 2.45%)

這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。

安裝

一鍵安裝

將以下內容加入你的 `claude_desktop_config.json` 檔案:

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

遠端端點

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

它能做什麼

工具清單

工具(11)

🟢 唯讀🟡 寫入🔴 刪除⚪ 未知
🟢get_catalog

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

輸入結構描述

{
  "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.

輸入結構描述

{
  "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.

輸入結構描述

{
  "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.

輸入結構描述

{
  "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.

輸入結構描述

{
  "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.

輸入結構描述

{
  "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.

輸入結構描述

{
  "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.

輸入結構描述

{
  "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.

輸入結構描述

{
  "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.

輸入結構描述

{
  "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.

輸入結構描述

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

社群

為此伺服器評分

證據

近期觀測

已驗證未記錄版本11 個工具