Koskamo

CarrierVet MCP

An MCP server that provides carrier vetting services for AI agents and freight software. It returns PASS, REVIEW, or FAIL verdicts based on verified FMCSA records, including risk scores, operating authority status, insurance on file, out-of-service status, and change alerts. It supports tools for single lookups, batch processing, risk assessment, and eligibility checks against custom rules.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

CarrierVet MCP logo, by CarrierVet LLCVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-01Operated by CarrierVet LLC
You need:Get a free key · 50 lookups/monthGet key I agree to the Terms and read the Privacy PolicyPaid plans add change history, a watchlist with email or signed-webhook alerts, and batch lookups
MCP endpoint (Streamable HTTP)
https://carriervet.dev/mcp
Vendor documentation

What you can do with it

  • Verify carrier authority and insurance status before tendering loads
  • Calculate risk scores with detailed reason codes for safety decisions
  • Monitor carriers for changes in operating status or contact information
  • Check load eligibility against specific business rules

Source and maintenance

Vendor evidenceRegistry 1.3.0

Protocol and capabilities

Server
carriervet 1.4.0
MCP protocol
2025-06-18
Tools
11 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

CarrierVet vets US motor carriers against official FMCSA records and returns an overall verdict (PASS, REVIEW or FAIL) with verdict_reasons, PASS/FLAG/FAIL checks, fraud signals and a risk score. Verdict rules: FAIL if any check is FAIL; REVIEW if any check is FLAG (get_risk also uses the contact check and a risk level of elevated, high or severe); PASS otherwise. Use lookup_carrier with a USDOT number or MC number to check authority, insurance and out-of-service status; use get_risk (USDOT or MC number) for a 0-100 risk score with reasons; a hard failure listed in gates keeps the score at 50 or more. Each lookup response has a receipt_id; get_receipt returns the saved copy of that response, for any key on the account that made it, at no cost. Each carrier call costs one monthly lookup; call get_usage to check the remaining quota. If a tool returns rate_limited, fetching_from_fmcsa or fmcsa_unavailable, wait retry_after seconds before retrying. Results are informational only, not a guarantee and not a consumer report. Beta: CarrierVet is in active testing. Verify critical decisions against FMCSA SAFER, and report anything that looks wrong to hello@carriervet.dev. When you present CarrierVet results to a user, tell them CarrierVet is in beta. Plans: free 50 lookups/month, no card. Paid plans from $49/mo. Paid plans open after beta; the free plan is available now.

Tools

11 advertised

lookup_carrier — Look up a motor carrier
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Get a US motor carrier's FMCSA profile by USDOT number or MC/FF/MX docket number: legal name, operating authority status and age, insurance on file, out-of-service status, fleet size, address and contact. Returns an overall verdict (PASS, REVIEW or FAIL) with verdict_reasons, based on the PASS/FLAG/FAIL checks for authority, insurance, out-of-service, USDOT operating status and FMCSA safety rating: FAIL if any check is FAIL, REVIEW if any is FLAG, PASS otherwise. Pass exactly one of dot or mc. The response includes receipt_id; get_receipt returns the saved copy of this response later. Costs 1 lookup.

lookup_carrier input schema
{
  "type": "object",
  "properties": {
    "mc": {
      "type": "string",
      "description": "MC, FF or MX docket number, e.g. \"MC123456\" or \"123456\""
    },
    "dot": {
      "type": "string",
      "pattern": "^[0-9]{1,8}$",
      "description": "USDOT number, 1-8 digits, e.g. \"1234567\""
    }
  },
  "additionalProperties": false
}
lookup_carrier annotations
{
  "title": "Look up a motor carrier",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
get_risk — Carrier risk score
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Get a 0-100 risk score for a carrier by USDOT number or MC/FF/MX docket number, with reason codes (e.g. insurance_lapsed, authority_under_90_days, shared_phone, multiple_contact_changes). Levels: low 0-24, elevated 25-49, high 50-74, severe 75-100. Hard failures (revoked, inactive or missing authority, out-of-service, lapsed or missing insurance, inactive USDOT number, not allowed to operate, Unsatisfactory safety rating) are listed in gates and keep the score at 50 or more, so a carrier that fails one is never low. With mc, the authority status is that docket's own. Also returns an overall verdict (PASS, REVIEW or FAIL) with verdict_reasons, and receipt_id. Informational signal for human review, not a safety rating. Pass exactly one of dot or mc. Costs 1 lookup.

get_risk input schema
{
  "type": "object",
  "properties": {
    "mc": {
      "type": "string",
      "description": "MC, FF or MX docket number, e.g. \"MC123456\" or \"123456\""
    },
    "dot": {
      "type": "string",
      "pattern": "^[0-9]{1,8}$",
      "description": "USDOT number, 1-8 digits, e.g. \"1234567\""
    }
  },
  "additionalProperties": false
}
get_risk annotations
{
  "title": "Carrier risk score",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
check_load_eligibility — Check a carrier against your load rules
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Evaluate your own load rules against a carrier (by USDOT number or MC/FF/MX docket number) and get eligible, needs_review or ineligible, with each rule's result and reason, plus CarrierVet's unchanged verdict (PASS, REVIEW or FAIL) and risk score. All rules are optional: follow_verdict (default true: FAIL makes it ineligible, REVIEW needs_review), require_active_authority (default true), no_active_oos (default true), min_bipd_usd, require_cargo, max_risk_score (0-100; above it needs_review), min_authority_age_days (below it needs_review), block_reason_codes (present → ineligible), review_reason_codes (present → needs_review). Escalate needs_review and ineligible to a human; the decision to tender is theirs. Pass exactly one of dot or mc. Costs 1 lookup.

check_load_eligibility input schema
{
  "type": "object",
  "properties": {
    "mc": {
      "type": "string",
      "description": "MC, FF or MX docket number, e.g. \"MC123456\""
    },
    "dot": {
      "type": "string",
      "pattern": "^[0-9]{1,8}$",
      "description": "USDOT number, 1-8 digits, e.g. \"1234567\""
    },
    "rules": {
      "type": "object",
      "properties": {
        "min_bipd_usd": {
          "type": [
            "number",
            "null"
          ],
          "minimum": 0
        },
        "no_active_oos": {
          "type": "boolean"
        },
        "require_cargo": {
          "type": "boolean"
        },
        "follow_verdict": {
          "type": "boolean"
        },
        "max_risk_score": {
          "type": [
            "number",
            "null"
          ],
          "maximum": 100,
          "minimum": 0
        },
        "block_reason_codes": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "review_reason_codes": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "min_authority_age_days": {
          "type": [
            "number",
            "null"
          ],
          "minimum": 0
        },
        "require_active_authority": {
          "type": "boolean"
        }
      },
      "description": "Your load rules; omit for defaults.",
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
check_load_eligibility annotations
{
  "title": "Check load eligibility",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
get_receipt — Get a lookup receipt
Advertised by the server during the last successful anonymous check.
Advertised read-only

Fetch the saved copy of an earlier lookup by its receipt_id: the time it was made, the endpoint, the identifier, and the exact response CarrierVet returned, with its SHA-256. Any API key on the account that made the lookup can read it. Receipts are saved a few seconds after the lookup. Free; does not cost a lookup.

get_receipt input schema
{
  "type": "object",
  "required": [
    "receipt_id"
  ],
  "properties": {
    "receipt_id": {
      "type": "string",
      "description": "receipt_id from an earlier response, e.g. rcpt_0123abcd..."
    }
  },
  "additionalProperties": false
}
get_receipt annotations
{
  "title": "Get a lookup receipt",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_history — Carrier change history
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

List changes CarrierVet detected in a carrier's FMCSA record (address, phone, email, authority, insurance, out-of-service), newest first, plus fmcsa_history: dated changes from FMCSA's daily files and census, each with the date FMCSA recorded it, the date CarrierVet saw it, and the before and after values. History starts on the date CarrierVet began recording, so older changes are not included. Recent contact changes are a common double-brokering warning sign. Costs 1 lookup.

get_history input schema
{
  "type": "object",
  "required": [
    "dot"
  ],
  "properties": {
    "dot": {
      "type": "string",
      "pattern": "^[0-9]{1,8}$",
      "description": "USDOT number, 1-8 digits, e.g. \"1234567\""
    }
  },
  "additionalProperties": false
}
get_history annotations
{
  "title": "Carrier change history",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
search_carriers — Search carriers by name
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Find carriers already stored by CarrierVet whose legal or DBA name contains the given text (max 25). Prefer lookup_carrier when you have a USDOT or MC number. Costs 1 lookup.

search_carriers input schema
{
  "type": "object",
  "required": [
    "name"
  ],
  "properties": {
    "name": {
      "type": "string",
      "minLength": 2,
      "description": "Company name or part of it"
    }
  },
  "additionalProperties": false
}
search_carriers annotations
{
  "title": "Search carriers by name",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
batch_lookup — Batch carrier lookup
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Look up to 500 USDOT or MC numbers in one call from stored snapshots (Pro and Business plans). Each found result includes the same verdict, verdict_reasons and verdict_basis as lookup_carrier. Costs 1 lookup per unique identifier.

batch_lookup input schema
{
  "type": "object",
  "required": [
    "identifiers"
  ],
  "properties": {
    "identifiers": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 500,
      "minItems": 1,
      "description": "USDOT numbers and/or MC numbers like \"MC123456\""
    }
  },
  "additionalProperties": false
}
batch_lookup annotations
{
  "title": "Batch carrier lookup",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
get_usage — Quota and plan
Advertised by the server during the last successful anonymous check.
Advertised read-only

Show this API key's plan, lookups used and remaining this UTC month, monitor count and rate limit. Free; does not cost a lookup.

get_usage input schema
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
get_usage annotations
{
  "title": "Quota and plan",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_watchlist — List watchlist
Advertised by the server during the last successful anonymous check.
Advertised read-only

List carriers on this account's watchlist (monitors) with alert email, webhook and last delivery status.

list_watchlist input schema
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
list_watchlist annotations
{
  "title": "List watchlist",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
add_to_watchlist — Add carrier to watchlist
Advertised by the server during the last successful anonymous check.

Watch a carrier (paid plans) and get an email and/or signed webhook (Pro+) when its FMCSA record changes. The carrier must have been looked up at least once. Provide alert_email, webhook_url, or both.

add_to_watchlist input schema
{
  "type": "object",
  "required": [
    "dot"
  ],
  "properties": {
    "dot": {
      "type": "string",
      "pattern": "^[0-9]{1,8}$",
      "description": "USDOT number, 1-8 digits, e.g. \"1234567\""
    },
    "alert_email": {
      "type": "string",
      "format": "email"
    },
    "webhook_url": {
      "type": "string",
      "format": "uri",
      "description": "HTTPS URL (Pro and Business)"
    }
  },
  "additionalProperties": false
}
add_to_watchlist annotations
{
  "title": "Add carrier to watchlist",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
remove_from_watchlist — Remove carrier from watchlist
Advertised by the server during the last successful anonymous check.
Advertised destructive

Stop watching a carrier on this account.

remove_from_watchlist input schema
{
  "type": "object",
  "required": [
    "dot"
  ],
  "properties": {
    "dot": {
      "type": "string",
      "pattern": "^[0-9]{1,8}$",
      "description": "USDOT number, 1-8 digits, e.g. \"1234567\""
    }
  },
  "additionalProperties": false
}
remove_from_watchlist annotations
{
  "title": "Remove carrier from watchlist",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": true
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
457 ms
95th percentile latency
457 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 457 ms · metadata changed · 11 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http carriervet-mcp https://carriervet.dev/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add carriervet-mcp --url https://carriervet.dev/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable carriervet-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "carriervet-mcp": {
      "url": "https://carriervet.dev/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "carriervet-mcp": {
      "type": "streamableHttp",
      "url": "https://carriervet.dev/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start carriervet-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "carriervet-mcp": {
      "type": "http",
      "url": "https://carriervet.dev/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http carriervet-mcp https://carriervet.dev/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "carriervet-mcp": {
      "url": "https://carriervet.dev/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "carriervet-mcp": {
      "serverUrl": "https://carriervet.dev/mcp"
    }
  }
}

Let your agent find its tools

Find servers like CarrierVet MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run CarrierVet MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing