CarrierVet
Server Details
PASS/REVIEW/FAIL verdicts, risk, history, alerts, receipts. Verified against official FMCSA records.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
TDQS
Scored across 10 tools
Most tools target clearly distinct actions: lookup_carrier, batch_lookup, search_carriers, get_risk, get_history, receipts, usage, and watchlist operations are separable. There is some potential overlap between lookup_carrier and get_risk because both return verdicts and receipt IDs, and batch_lookup versus lookup_carrier could briefly confuse, but the descriptions clarify their differences.
The set overwhelmingly uses snake_case and action-oriented names such as add_to_watchlist, get_history, list_watchlist, and remove_from_watchlist. batch_lookup is a minor deviation from the verb-first pattern, but the overall convention is predictable.
Ten tools is well scoped for carrier vetting, lookup, risk, history, receipts, usage, and watchlist management. Each tool appears to earn its place without obvious redundancy or excessive surface area.
The surface covers the core lifecycle: single and batch lookups, name search, risk scoring, change history, receipts, usage, and watchlist add/list/remove. Minor gaps exist, such as no dedicated watchlist update operation, but agents can work around that by removing and re-adding a monitor.
Available Tools
10 toolsadd_to_watchlistAdd carrier to watchlistAIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| dot | Yes | USDOT number, 1-8 digits, e.g. "1234567" | |
| alert_email | No | ||
| webhook_url | No | HTTPS URL (Pro and Business) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a non-read-only, non-destructive, idempotent mutation, and the description adds value on top: plan gating, the prior-lookup prerequisite, and that webhooks are signed. It does not address what happens on duplicate watches or watchlist size limits, but the annotations carry the safety profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, zero filler, and the core effect and plan requirement are front-loaded ahead of prerequisites and parameter guidance. Nothing is repeated from the schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still explains the delivery mechanism and the entry prerequisite, which is what an agent needs to call it correctly. Missing only edge-case behavior, such as what happens if the carrier lookup does not exist or the watch already exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67% and the schema documents dot and webhook_url, but alert_email has no description. The description compensates partially by stating that alert_email and webhook_url are alternatives that can be combined ("or both"), a constraint the schema itself does not encode via anyOf.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (watch a carrier) plus the observable effect: email and/or signed webhook on FMCSA record changes. This clearly separates it from list_watchlist and remove_from_watchlist, which manage rather than create watches.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives real preconditions: paid plan required, Pro+ for webhook, and the carrier must have been looked up at least once. It also says to supply alert_email, webhook_url, or both. The only gap is that it does not explicitly contrast with batch_lookup or lookup_carrier as the prerequisite step.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_lookupBatch carrier lookupARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| identifiers | Yes | USDOT numbers and/or MC numbers like "MC123456" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing that results come from stored snapshots (not live data), that access requires Pro/Business plans, and that billing is one lookup per unique identifier — all critical for cost and freshness decisions. Annotations already cover read-only/idempotent/non-destructive, and the description adds the operational context they can't express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, each carrying distinct payload (scope, result parity, cost), with the capability and cap front-loaded. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully names the return fields (verdict, verdict_reasons, verdict_basis), and it covers the plan gate and cost model. It omits what happens to identifiers that aren't found or the snapshot's staleness window, which would matter for a batch tool prone to partial results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the format example ('MC123456') lives in the schema, so the baseline is met. The description adds real meaning by saying the cap applies per call and that cost accrues per unique identifier, implying duplicates aren't double-billed — a subtlety the schema doesn't encode.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (look up) and resource (USDOT/MC numbers) plus a hard batching bound of 500 in one call, and explicitly ties its output to lookup_carrier's verdict fields. This lets an agent distinguish it from lookup_carrier and search_carriers without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly frames the batch context and names the plan prerequisite (Pro and Business plans) that gates access, and references lookup_carrier as the single-item equivalent. It stops short of an explicit 'use lookup_carrier instead when you have one identifier' exclusion, so the alternative is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_historyCarrier change historyARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| dot | Yes | USDOT number, 1-8 digits, e.g. "1234567" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the description earns credit for adding what they cannot: result ordering (newest first), the two-part response shape, the data-coverage cutoff date, and a per-call cost. It doesn't cover pagination or result-size limits, which keeps it at 4 rather than 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action and result ordering, then adds coverage caveat and cost. Dense but mostly earned; the double-brokering sentence is a bit of an aside yet still helps the agent decide to call it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still explains what comes back (detected changes plus `fmcsa_history` entries with FMCSA date, CarrierVet sighting date, and before/after values) and warns about the historical coverage boundary. That is enough to call it and interpret the result correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single `dot` parameter already carries format and pattern guidance, so the description adds nothing parameter-specific. Baseline 3 applies when the schema does all the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: lists changes detected in a carrier's FMCSA record across named categories (address, phone, email, authority, insurance, out-of-service), plus a second component `fmcsa_history`. An agent can tell this apart from `lookup_carrier` or `get_risk` by the historical/change-tracking focus, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for use ('Recent contact changes are a common double-brokering warning sign') and a real limitation ('History starts on the date CarrierVet began recording, so older changes are not included'), plus cost ('Costs 1 lookup'). It does not name alternative tools or state when not to call it, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_receiptGet a lookup receiptARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| receipt_id | Yes | receipt_id from an earlier response, e.g. rcpt_0123abcd... |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, and the description goes well beyond them: it documents the authorization scope (any API key on the account that made the lookup), an eventual-consistency window ('saved a few seconds after the lookup'), and cost behavior ('free; does not cost a lookup'). It also discloses the salient shape of the returned payload including the SHA-256 digest, which matters for verification use cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with zero filler: identity and contents first, then access scope, then timing and cost caveats. Every clause carries information an agent would otherwise have to guess.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description discharges the burden by enumerating the returned fields including the SHA-256; it also covers auth, timing lag, and cost. For a one-parameter read tool, nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter has full schema coverage with an example format ('rcpt_0123abcd...'), so the schema carries the semantics. The description only restates that lookup is keyed by receipt_id and adds no format, provenance, or error-handling detail beyond it. Baseline 3 applies when schema coverage is 100%.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('fetch the saved copy of an earlier lookup') and enumerates exactly what the receipt contains: timestamp, endpoint, identifier, exact response, and SHA-256. This is unmistakably distinct from lookup_carrier (which performs a new lookup) and from get_history.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Establishes clear context: it retrieves a prior lookup by id, is readable by any API key on the originating account, and is free ('does not cost a lookup') — which implicitly steers the agent away from re-running lookup_carrier. It never names an alternative sibling explicitly, so the when-not guidance is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_riskCarrier risk scoreARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| mc | No | MC, FF or MX docket number, e.g. "MC123456" or "123456" | |
| dot | No | USDOT number, 1-8 digits, e.g. "1234567" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly/idempotent/openWorld), the description discloses score band boundaries, the gate mechanism and its floor of 50, per-docket authority status with mc, the PASS/REVIEW/FAIL verdict with verdict_reasons, receipt_id, and a cost of 1 lookup. That is unusually rich behavioral disclosure for a read-only tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and lookup keys are front-loaded, and the dense middle (bands, gates, verdict) is all information an agent needs. It is a single long run-on paragraph, and the sourcing constraints and cost note could be separated for scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-param read-only lookup with no output schema, the description covers return shape (score, reason codes, gates, verdict, verdict_reasons, receipt_id), edge behavior with mc, and cost. An agent can call this correctly and interpret the result without further information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds a constraint the schema does not enforce: "Pass exactly one of dot or mc" rules out passing both or neither, which the schema (additionalProperties: false, no oneOf) permits. The mc-specific note about authority status being that docket's own is also genuine added meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Get a 0-100 risk score for a carrier") plus the lookup keys, which clearly separates it from lookup_carrier or search_carriers by output type. It never names a sibling or explicitly says how it differs from a plain carrier lookup, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Informational signal for human review, not a safety rating" and "Pass exactly one of dot or mc" give real invocation context, but there is no explicit when-to-use-versus-alternative guidance and no mention of when a plain lookup would be preferable. Usage is implied by the output type rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_usageQuota and planARead-onlyIdempotentInspect
Show this API key's plan, lookups used and remaining this UTC month, monitor count and rate limit. Free; does not cost a lookup.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false. The description adds a genuinely non-obvious behavioral trait the annotations do not cover: the call is free and consumes no lookup quota, which materially affects how aggressively an agent should call it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. Every clause carries information: what is returned, the time window, and the cost profile.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no parameters, the description carries the burden of describing returns and does so by enumerating the exact fields (plan, used, remaining, monitor count, rate limit). Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so the baseline of 4 applies; the schema is an empty object with additionalProperties=false. The description correctly implies no arguments are needed and adds the meaningful scoping detail that the usage window is the current UTC month.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb ('show') and enumerates exactly what is returned: plan, lookups used/remaining for the UTC month, monitor count and rate limit. An agent can immediately distinguish this self-introspection tool from the lookup/history/watchlist siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The clause 'Free; does not cost a lookup' gives a clear conditional cue — it is safe to call at any time, e.g. to check quota before batch_lookup. It stops short of naming an explicit alternative or a when-not-to-use condition, so it is strong context rather than full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_watchlistList watchlistARead-onlyIdempotentInspect
List carriers on this account's watchlist (monitors) with alert email, webhook and last delivery status.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds real value beyond that by disclosing what each entry carries: alert email, webhook and last delivery status. Only minor gaps remain (ordering, pagination, or what happens with an empty watchlist).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence, front-loaded with the verb and resource, with the returned fields as a trailing qualifier. No filler and nothing redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters, no nested objects and no output schema, the definition needs only to say what the list contains, which it does. A brief note on result ordering or whether the list is complete versus paginated would close the remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The sentence adds useful framing about what the account-scoped result set contains.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (list) and resource (carriers on the account's watchlist) and even names the payload fields returned. It is clearly distinguishable from the add/remove siblings, though it never explicitly contrasts itself with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied — an agent can infer this is the read path for watchlist data while add_to_watchlist and remove_from_watchlist are the mutations. There is no explicit statement of when to call this versus those alternatives, and no prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_carrierLook up a motor carrierARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| mc | No | MC, FF or MX docket number, e.g. "MC123456" or "123456" | |
| dot | No | USDOT number, 1-8 digits, e.g. "1234567" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/non-destructive and openWorld, so the marginal bar is higher. The description still adds real, non-obvious behavior: the PASS/REVIEW/FAIL verdict derivation rules, the 1-lookup cost, and the receipt_id side effect allowing later retrieval via get_receipt — none of which the annotations convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the verb, resource, and inputs; supporting facts (verdict logic, mutual exclusivity, receipt, cost) follow in tight order with zero filler. The verdict sentence is a dense run-on with nested conditionals, which costs a little readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description carries the return-value burden and does: it lists profile fields, explains the verdict and verdict_reasons, and notes the receipt_id. For a 2-param read-only lookup, nothing an agent needs is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameter descriptions include examples and formats. The description nonetheless adds a constraint absent from the schema — exactly one of dot or mc must be supplied, since neither is marked required and there is no oneOf — which is genuinely useful disambiguation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (get a US motor carrier's FMCSA profile) and enumerates the exact identity inputs (USDOT number or MC/FF/MX docket) plus the payload returned. An agent can distinguish it from search_carriers or batch_lookup without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Pass exactly one of dot or mc' plus 'Costs 1 lookup' give clear invocation and cost context, and the get_receipt sentence establishes the follow-up workflow. It stops short of naming alternatives (batch_lookup for many carriers, search_carriers for name-only lookups), so the when-not branch is left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_from_watchlistRemove carrier from watchlistBDestructiveIdempotentInspect
Stop watching a carrier on this account.
| Name | Required | Description | Default |
|---|---|---|---|
| dot | Yes | USDOT number, 1-8 digits, e.g. "1234567" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, so safety and repeat-call behavior are covered structurally. The description adds only the account scoping; it does not say what is deleted (watch entry only vs. history), whether removal of a non-watched carrier errors, or that no confirmation step exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with zero filler. It is arguably too terse rather than verbose, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter mutation with annotations covering destructiveness and idempotency, the description is minimally sufficient. It omits error behavior for a non-watched carrier and what exactly is removed, which matters for a destructive operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single 'dot' parameter is fully documented with pattern and example, so the schema does the heavy lifting. The description mentions 'carrier' but adds no parameter-level meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Stop watching a carrier') and scopes it to 'this account'. The inverse relationship to the sibling add_to_watchlist is obvious, though not stated explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus alternatives; an agent must infer that this is the counterpart to add_to_watchlist and that list_watchlist is the read path. No preconditions (e.g., whether the carrier must already be watched) are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_carriersSearch carriers by nameARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Company name or part of it |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive), and the description adds real behavioral context: results are limited to carriers already stored, matching is substring on legal/DBA names, and each call costs 1 lookup. It does not describe the result shape or what happens with zero matches, and 'already stored' is in mild tension with openWorldHint=true.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with what the tool does, then the routing rule, then cost. No filler and every clause carries information the agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with full schema coverage and no output schema, this is nearly complete: scope, match semantics, result cap and cost are all present. Only the return fields / empty-result behavior are left to inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is required and documented, so the baseline is already met. The description nonetheless adds value the schema lacks: the match is a contains/substring test against legal or DBA names, not just 'company name'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (find) plus resource (carriers already stored by CarrierVet), and narrows the matching rule to legal or DBA name substring search with a 25-result cap. It also names the sibling it is not (lookup_carrier), so the tool is distinguishable without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Prefer lookup_carrier when you have a USDOT or MC number' gives an explicit alternative and the exact condition that selects it. Adding 'Costs 1 lookup' lets the agent weigh the call against budget, which is usage guidance beyond mere routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
10 tool updates
- First observed
add_to_watchlist - First observed
batch_lookup - First observed
get_history - First observed
get_receipt - First observed
get_risk - First observed
get_usage - First observed
list_watchlist - First observed
lookup_carrier - First observed
remove_from_watchlist - First observed
search_carriers
Related MCP Connectors
Vet US trucking carriers by USDOT/MC: authority, insurance, OOS, PASS/REVIEW/FAIL/INCOMPLETE.
1Check U.S. trucking carriers and freight brokers in FMCSA records: authority, insurance, notices.
FMCSA carrier vetting API + MCP: authority, insurance, OOS. Keys $19/mo; 50 free calls/day.
US carrier vetting on FMCSA data: authority, insurance, safety, identity links. Pay per call (x402)
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceProvides 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 gradedqualityDmaintenanceEnables UK haulage compliance checks including operator licence verification, tachograph auditing, drivers' hours calculations, and DVSA roadside inspection support.42 PyPIMIT
- AlicenseNot gradedqualityDmaintenanceEnables UK haulage compliance managers to audit tachographs, drivers' hours, and DVSA OCRS scores, preventing red status and generating public inquiry briefs.MIT
- AlicenseNot gradedqualityBmaintenanceProvides keyless access to US FMCSA motor-carrier registry data, enabling lookup of DOT/MC numbers, names, operating authority, and safety information.417 npm1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.