TruckerFetch MCP
OfficialClick on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@TruckerFetch MCPshow me 10 Texas motor carriers with their USDOT numbers"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
TruckerFetch MCP
Connect assistants to published U.S. motor carrier research. Choose the hosted OAuth server or this local stdio bridge. Both use the same TruckerFetch account permissions and require active Pro access.
Documentation: https://truckerfetch.com/docs
REST contract: https://truckerfetch.com/api/v1/openapi.json
API examples: https://github.com/truckerfetch/truckerfetch-api-examples
Workflow skills: https://github.com/truckerfetch/truckerfetch-agent-skills
Hosted connection
Remote endpoint: https://truckerfetch.com/api/mcp (Streamable HTTP).
Use your client's OAuth connection flow with no client secret and the registered client ID:
Client | Registered client ID | Acceptance status |
ChatGPT |
| OAuth, refresh and authority research verified in the native host |
Claude |
| Registered; native end-to-end acceptance remains unverified |
Cursor |
| Registered; native end-to-end acceptance remains unverified |
The statuses describe the application's recorded acceptance, not a marketplace listing or a guarantee for every client version. See config/hosted-cursor.json for the registered Cursor configuration. Clients must support static OAuth client IDs; there is no advertised dynamic registration endpoint.
Start with data:read. Discovery is at https://truckerfetch.com/.well-known/oauth-protected-resource/api/mcp and https://truckerfetch.com/.well-known/oauth-authorization-server. The server uses authorization code + S256 PKCE, resource binding and rotating refresh tokens. Exact registered callbacks are required. Review/revoke grants in Connected apps.
Do not paste REST keys or OAuth tokens into chat prompts. Hosted MCP uses its own OAuth grant; a REST tf_ key does not authenticate the hosted endpoint.
Related MCP server: CarrierScore MCP Server
Local stdio bridge
Requires Node.js 24+. This repository is source-distributed; no npm publication is claimed.
git clone https://github.com/truckerfetch/truckerfetch-mcp.git
cd truckerfetch-mcp
npm ci --ignore-scripts
# Load TRUCKERFETCH_API_KEY securely into the process environment.
npm startCreate a narrowly scoped REST key at API keys. The bridge uses TRUCKERFETCH_API_KEY (tf_…) to call REST at https://truckerfetch.com/api/v1. It does not perform hosted MCP OAuth. See config/stdio.json; substitute an absolute checkout path and configure the secret in your client's secure environment. Never commit a real key in client JSON.
Standard output belongs exclusively to the MCP protocol. Run the bridge from an MCP host, or use npm test to exercise it with the SDK. Network requests use a 30-second deadline, reject redirects and restrict destinations to the official HTTPS origins. Loopback HTTP is available only through an explicit TRUCKERFETCH_ALLOW_LOCAL_TEST=1 opt-in for local fixtures; leave this unset in normal use.
Tools and permissions
The 22 tools and their input schemas are in tools.json, generated from the application's registry. Operations cover edition/catalog research, carrier profiles, authority and insurance observations, evidence, changes, owned watchlists, export jobs and deliberate archive unlocks. Reference resources expose field definitions and filter schemas.
Workflow | Permissions |
Published carrier/edition/evidence research |
|
Reported contact fields | Add |
Insurance observations and renewal research |
|
Owned watchlists |
|
Export creation |
|
Export status |
|
Historical unlock |
|
Scopes supplement subscription, ownership and data availability checks. Do not request all scopes by default. Insurance date bases are distinct; an estimated anniversary does not prove policy expiration.
Begin with a bounded read:
{
"name": "search_carriers",
"arguments": { "filters": { "states": ["TX"] }, "limit": 10 }
}Return data and source dates together. USDOT identifiers remain strings. Start with 10 rows for assistant calls; larger pages can exceed the bounded model response limit. The local bridge and hosted server do not place CSV bytes in tool results; use an authenticated application/download workflow outside model context.
Mutations and confirmation
The local bridge adds confirm_action: true to seven mutation tool schemas: create/add/remove/update watchlist operations, request_export and unlock_edition. Set it only after the user approves the exact target/selection. It is a local safety field and is removed before REST dispatch.
Exports through this bridge use REST semantics: once the exact selection is approved and the saved idempotency key supplied, the server may enqueue the job without a second browser approval. Hosted MCP exports require the separate signed-in TruckerFetch approval flow. Both surfaces require the browser approval flow for historical unlocks. On confirmation_required, review the returned trusted TruckerFetch URL and repeat the exact request with the same key after approval.
Use a saved 8–128-character idempotency_key for mutations whose schema requires one. Do not generate a different key after a timeout or retry with changed selection. The bridge performs no automatic mutation retries. Handle 429 using the returned retry interval and shared account request budget. Additional keys/grants do not create additional account allowance.
The latest edition may be null before publication. Listing metadata does not spend an archive unlock; both edition metadata tools can catch up already-due publications and their normal notifications, so their annotations do not claim strict read-only behavior. Expired historical dates return archive_expired; a saved grant does not override the rolling 90 Eastern-date window.
Development
npm ci --ignore-scripts
npm test
# Maintainers with the application checkout:
TRUCKERFETCH_SOURCE=/absolute/path/to/truckerfetch-com npm run manifest:check
TRUCKERFETCH_SOURCE=/absolute/path/to/truckerfetch-com npm run manifest:generateThe exporter reads the single application registry and produces tools.json, operations.json, resources.json and public source hashes in manifest-source.json. It copies contract metadata only. Review the diff and rerun tests whenever the application registry changes. Public CI validates the snapshot and exercises actual stdio SDK traffic with a loopback fixture; it does not require access to private server source or real credentials.
The SDK is pinned to 1.32.2 and dependencies are locked. Tests cover schema/operation consistency, wire initialization and tool execution, denied mutations, redirect/origin restrictions, bounded payloads, trusted approval links and sanitized failures. No live carrier requests are made by tests.
License
MIT applies to the client code in this repository. It does not license TruckerFetch customer data, trademarks or the hosted service. See SECURITY.md for reporting issues.
Available Tools
22 toolsadd_authority_watch_targetA
Follow one evidence-backed authority in an owned watchlist. Confirm the docket and authority type with the user first. The local REST bridge additionally requires confirm_action=true after user approval.
Inputs: usdot (required), watchlist_id (required), docket_number (required), authority_type (required), +3 more.
add_watch_targetB
Add a carrier to an owned watchlist. The local REST bridge additionally requires confirm_action=true after user approval.
Inputs: usdots (required), watchlist_id (required), confirm_action (required), idempotency_key (required).
create_watchlistB
Create a named watchlist for the current owner. Confirm the requested name with the user before invoking. The local REST bridge additionally requires confirm_action=true after user approval.
Inputs: name (required), confirm_action (required), idempotency_key (required).
get_carrierBRead-only
Read an authorized carrier's published profile by USDOT.
Inputs: usdot (required), edition_id.
get_evidenceCRead-only
Read the redacted source reference for an authorized fact.
Inputs: evidence_id (required).
get_exportCRead-only
Read the state of your own export.
Inputs: export_id (required).
get_latest_editionA
Get the latest published carrier edition and its source date. May publish already-due daily editions and queue their normal opt-in notifications using the server clock (at most 32 dates per call).
Inputs: no named parameters.
get_watchlistBRead-only
Read an owned watchlist and its visible carrier IDs.
Inputs: watchlist_id (required).
list_authoritiesCRead-only
List published operating authorities for one carrier.
Inputs: usdot (required), limit, cursor.
list_authority_watch_targetsBRead-only
List the exact resolved authorities followed by this watchlist.
Inputs: watchlist_id (required), limit, cursor.
list_changesCRead-only
Read published material changes for one visible carrier.
Inputs: limit, since, usdot, cursor, +2 more.
list_editionsB
List published editions in the rolling 90 Eastern calendar dates, plus the latest during a source delay, without spending an archive unlock. May publish already-due daily editions and queue their normal opt-in notifications using the server clock (at most 32 dates per call).
Inputs: limit, cursor.
list_insurance_filingsCRead-only
List observed insurance filings and independently supported dates.
Inputs: usdot (required), limit, cursor.
list_watch_eventsCRead-only
Read published events matching the watch targets and current permissions.
Inputs: watchlist_id (required), limit, cursor.
list_watchlistsARead-only
List your own carrier watchlists.
Inputs: no named parameters.
remove_authority_watch_targetADestructive
Remove a specific authority target from an owned watchlist after confirming the target with the user. The local REST bridge additionally requires confirm_action=true after user approval.
Inputs: target_id (required), watchlist_id (required), confirm_action (required).
request_exportA
Request a pinned CSV export. Follow the owner approval link and repeat with the same key. The local REST bridge additionally requires confirm_action=true after user approval.
Inputs: selection (required), confirm_action (required), idempotency_key (required).
search_carriersBRead-only
Search the published carrier catalog with state, classification and fleet filters.
Inputs: limit, cursor, filters.
search_editionBRead-only
Search the latest edition or a previously unlocked edition still within the rolling 90 Eastern calendar dates. Expired editions return archive_expired.
Inputs: edition_id (required), limit, cursor, filters.
search_renewalsCRead-only
Search approved policy evidence by the requested date basis.
Inputs: date_basis (required), window_days (required), limit, cursor, +1 more.
unlock_editionA
Request explicit owner confirmation to open a date within the rolling 90 Eastern calendar dates. The latest published edition is included; an expired date cannot be reopened. The local REST bridge additionally requires confirm_action=true after user approval.
Inputs: edition_id (required), confirm_action (required), idempotency_key (required), confirm_edition_date_et (required).
update_watch_rulesBDestructive
Pause or resume an owned watchlist or change its future matched event types. Confirm the change with the user. The local REST bridge additionally requires confirm_action=true after user approval.
Inputs: watchlist_id (required), confirm_action (required), paused, event_types.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
TDQS
Scored across 22 tools
Most tools map to a distinct resource+action, but several pairs blur: `list_authorities` (authorities for one carrier) vs `list_authority_watch_targets` (resolved watch targets), `add_watch_target` (carrier) vs `add_authority_watch_target` (authority docket), and `get_latest_edition` vs `list_editions`, which both may publish due editions and queue notifications. The descriptions do disambiguate these, but the near-identical naming forces careful reading rather than instant selection.
Every tool is snake_case verb_noun (get_/list_/search_/create_/add_/remove_/update_/request_/unlock_), including the export and watchlist families. The verb prefixes are used semantically consistently: get_ for single-object reads, list_ for collections, search_ for filtered queries.
22 tools is on the heavy side for this domain; the editions, carriers/evidence, exports and watchlist families each legitimately need several operations, but the watchlist area alone carries seven tools. Some pruning (e.g. separate carrier-target vs authority-target addition, list_authority_watch_targets) would tighten the surface.
Core lifecycle is largely covered: editions (latest/list/unlock/search), carriers (search/profile/changes/authorities/insurance/renewals/evidence), exports (request/get state), and watchlists (create/get/list/rules/events). Gaps exist but are workable: no way to remove a plain carrier target from a watchlist (only authority targets have a remove_), no delete/rename watchlist, and no cancel for a pending export.
Maintenance
Related MCP Connectors
Vet US motor carriers by USDOT or MC number: PASS/REVIEW/FAIL verdict, authority, insurance, OOS.
Verified U.S. logistics provider search with canonical profiles, freshness, and read-only tools.
Freight carrier intel: new FMCSA authority feed, carrier lookup by DOT/MC, safety screen (CSA/SMS).
FMCSA carrier vetting API + MCP: authority, insurance, OOS. Keys $19/mo; 50 free calls/day.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceProvides keyless access to US FMCSA motor-carrier registry data, enabling lookup of DOT/MC numbers, names, operating authority, and safety information.311 npm1MIT
- AlicenseNot gradedqualityDmaintenanceProvides FMCSA motor-carrier risk intelligence over MCP, with tools for carrier lookup, risk scoring, and timestamped evidence reports for AI agents and freight brokers.MIT
- AlicenseNot gradedqualityBmaintenanceProvides real-time freight tracking and load visibility for logistics and AI agents: create loads, get live GPS positions, trip stats, and confirm deliveries via geofenced statuses.1MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to read and write Brazilian carrier transportation management data, including fiscal documents (CT-e, MDF-e, NF-e), financial records, fleet and maintenance, trip control, and people registries via MCP over HTTP.MIT