# CarrierVet

> Vet US motor carriers by USDOT or MC number: PASS/REVIEW/FAIL verdict, authority, insurance, OOS.

- name: dev.carriervet/carriervet
- version: 1.4.1
- connection class: R1 (autonomous)
- trust: 82/100 flags: no-repository
- quality: 91/100 (strong)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/dev.carriervet%2Fcarriervet
- tools: https://api.protogrid.dev/v1/servers/dev.carriervet%2Fcarriervet/tools

**An agent can connect on its own if it already holds `CARRIERVET_TOKEN`.** Remote endpoint behind a static API key or header. The registry never sees the value; the agent fills the placeholder.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "carriervet": {
      "type": "http",
      "url": "https://carriervet.dev/mcp",
      "headers": {
        "Authorization": "Bearer ${CARRIERVET_TOKEN}"
      }
    }
  }
}
```

Placeholders to fill: `${CARRIERVET_TOKEN}`.

## Trust

- hygiene: 80
- liveness: 98
- freshness: 100
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-95% +updated-5d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 91/100 (strong)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-06-18; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 100 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 11 of 11 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 2,025 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: 1 tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 11, about 2,025 tokens to load them all
- tool set hash: a382c669babe375723a0edb84ec7a9a5
- tools last changed: 2026-11-01T02:22:15.931Z
- badge: [![protogrid quality](https://protogrid.dev/badge/dev.carriervet/carriervet.svg)](https://protogrid.dev/servers/dev.carriervet/carriervet)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-11-01 `check_load_eligibility` added
  - 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.

Full history: https://api.protogrid.dev/v1/servers/dev.carriervet%2Fcarriervet/changes

## Remotes

- https://carriervet.dev/mcp (streamable-http, auth api_key ${CARRIERVET_TOKEN}, reachable true, uptime30d 0.94736844)

## Packages

_none_

## Tools (11)

- `add_to_watchlist`: 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.
- `batch_lookup`: 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.
- `check_load_eligibility`: 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.
- `get_history`: 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_receipt`: 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_risk`: 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_usage`: Show this API key's plan, lookups used and remaining this UTC month, monitor count and rate limit. Free; does not cost a lookup.
- `list_watchlist`: List carriers on this account's watchlist (monitors) with alert email, webhook and last delivery status.
- `lookup_carrier`: 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.
- `remove_from_watchlist`: Stop watching a carrier on this account.
- `search_carriers`: 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.
