Skip to main content
Glama

FMCSA Carrier Intelligence

Server Details

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

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4/5.0

Scored across 11 tools

Disambiguation5/5

Each tool has a clearly distinct purpose, with free/paid tiers and single/batch/multi-carrier scopes explicitly called out. The identity tools (screen, check, confirm, roster screen) are carefully differentiated in their descriptions, and lookup vs search vs safety history are unambiguous.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern (check_*, get_*, lookup_carrier, screen_*, search_carriers, confirm_identity_link). Verbs are clear and used consistently across related tools.

Tool Count5/5

11 tools is well within the ideal 3-15 range for a carrier intelligence service. Each tool serves a distinct purpose: free catalog/samples, lookup, search, safety history, and a tiered identity analysis suite, with no redundant tools.

Completeness4/5

The surface covers the core workflows (lookup, search, safety history, identity screening/check/link/roster, address consistency, free samples/catalog). Minor gaps exist: no dedicated crash/inspection detail tool (only historical snapshots), and no batch USDOT lookup beyond the identity-roster tool, but agents can work around these via search and filters.

Available Tools

11 tools
check_address_consistencyBInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
usdot_numberYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries the full burden. It does disclose two genuinely useful traits: the call is paid, and it returns a single flat row rather than a graph. However, it omits auth/permission requirements, rate or cost specifics, and what the returned counts mean or how to interpret a high/low value, so behavioral coverage is only partial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short blocks: the core measurement is front-loaded, and the cost/output note is separated and terse. The nested parenthetical is slightly heavy but every sentence is informative, with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations and no output schema, the description must cover invocation and result interpretation. It does identify the source records and the mailing-address exclusion, and signals a single-row result, but leaves the sole parameter undescribed and does not explain what the counts imply for consistency judgments.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and there is a single required parameter, usdot_number, which the description never mentions. The schema supplies only type (integer) and required status, so the description should clarify what identifier is expected (USDOT number format) but adds nothing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific resource and measurement: a count of distinct business addresses and phones a carrier reports across named FMCSA record sets (census, licensing/insurance, crash records). It also distinguishes itself from sibling identity tools by noting it is cheaper and returns 'one row, no graph,' which tells an agent this is a lightweight consistency count rather than a full identity resolution.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Paid. Cheaper than either identity tool; one row, no graph' hints at when to prefer this over check_carrier_identity or screen_carrier_identity, but the guidance is comparative and cost-focused rather than a clear when-to-use statement. There is no explicit trigger condition (e.g. 'use this to spot data conflicts before paying for full identity resolution') and no stated exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_applicant_against_rosterAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
usdot_numberYes
roster_usdot_numbersYes

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and delivers: exact validation constraints (usdot must not appear in roster, non-empty, max 100 distinct entries), the failure classes and their cost (free invalid_arguments, free not_found), the metered pricing formula, and the reassurance that 'not linked' is a complete billable answer. This is unusually thorough behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and return shape are front-loaded well, and every sentence carries substance. It is somewhat long and repeats the 'still your own input, not a new disclosure' reassurance and cross-references to sibling conventions multiple times, which is slightly redundant though defensible for a metered tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-parameter tool with no output schema and no annotations, the description covers inputs, return fields, error/edge cases, cost model, and success semantics — nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and both parameters are bare integers, so the description must compensate — and it does: usdot_number is 'the applicant', roster_usdot_numbers is 'your own list, supplied by you', plus the constraint that the applicant must not appear in the roster and the roster's size cap. This adds real meaning the schema cannot convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Screens one applicant carrier against a roster of carriers') and explicitly positions itself as 'the batch generalization of confirm_identity_link', so an agent can distinguish it from siblings 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a concrete use case — catching a carrier previously cut from the network re-entering under a new USDOT number — and names the sibling it generalizes (confirm_identity_link). It stops short of an explicit 'when not to use this / use X instead for single pairs' rule, so the routing is implied rather than fully spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_carrier_identityAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
usdot_numberYes

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full burden and does so unusually well: it discloses billing behavior per outcome, the fact that flagged is FMCSA's ARCHI rule and not a fraud determination, that flagged != match_score >= 1.5, and that score_provenance.match_score_ceiling is computed per carrier and usually caps at 2.5. It also enumerates what the tool deliberately never returns (linked USDOT, legal name, hashes), which prevents an agent from misrepresenting output.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose and the cheaper alternative are well front-loaded, but the second and third paragraphs are long defensive digressions (why a linked carrier's identity is not the caller's to receive, confirmation from reading Truckin's hashing code) that do not help an agent select or invoke the tool. Substantive content, but several sentences do not earn their place for the invocation decision.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, no annotations, and a subtle domain (match scoring, flags, ceilings), the description supplies the interpretive context an agent needs: what flagged means, how it differs from the score threshold, why ceilings vary per carrier, and how billing and not_found behave. Nothing essential to calling or interpreting this tool is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single integer parameter with 0% schema description coverage, so the description must compensate. It adds behavioral meaning about the parameter's value (an unknown USDOT number yields a free not_found) but never states the expected format, validity range, or what a USDOT number actually is, leaving the semantic gap only partly filled.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (full identity-linkage detail for a carrier) and immediately distinguishes itself from the sibling screen_carrier_identity by purpose and price. An agent can tell exactly which of the two identity tools to pick 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent: 'Priced meaningfully above the free screen_carrier_identity — call that first if you only need the flag and a count.' It also gives exclusions and edge-case outcomes (a carrier with no linked carriers is a valid, billable answer; an unknown USDOT is a free not_found), which is exactly the when/when-not guidance expected.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_catalogAInspect

Free, unauthenticated dataset catalog.

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses that the call is free and unauthenticated (no credentials or paid tier required), which is the key behavioral fact for an agent deciding whether it can call it. It omits rate limits and the response shape details, but the safety profile for a discovery call is effectively covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short, front-loaded lines: identity, payload, and the imperative call-to-action. No filler, and the most decision-relevant facts (free, unauthenticated) come first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description must convey the return contents, and it does: tables, fields, pricing, freshness. Combined with the zero-parameter schema, an agent has everything needed to call it correctly; only per-field response detail is left unspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4 and there are no parameter semantics the description could or should add.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a concrete verb+resource ('Free, unauthenticated dataset catalog') and enumerates exactly what it returns: every table sold, its fields, current pricing, and freshness. It does not explicitly contrast with siblings, but the siblings (carrier/identity lookups) are unrelated domains, so no disambiguation trap exists.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Read this before paying for anything' gives an explicit triggering condition and makes the tool the correct first step of a purchase flow. It stops short of naming alternatives or stating when not to call it, but the guidance is directly actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_identity_sampleAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden and does so for the key traits: it is 'free' and 'unauthenticated,' and returns sample rather than live data. It does not mention rate limits, pagination, or error behavior, but for a zero-param read-only sample tool the cost/auth/no-write disclosure is the substantive part.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, front-loaded with the free/sample framing. Slight redundancy in restating the check_carrier_identity purchase rationale already implied by naming the sibling, but no meaningful waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple no-param sample tool with no annotations and no output schema, the description covers cost, auth, and which response shapes are demonstrated. It could be more complete by listing the fields present in the sample, but the essentials an agent needs to call it are present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters, so the schema is trivial and fully self-documenting (100% coverage). There is nothing for the description to add on parameters, making the baseline of 4 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (get identity sample) and explicitly frames it against two named siblings: it covers both screen_carrier_identity's free IdentityScreen shape and check_carrier_identity's paid IdentityAssessment shape. An agent can tell what this returns and how it relates to the identity-checking siblings 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear usage context and the deciding condition: use it to see the paid response shape and evaluate data quality 'before spending USDC on check_carrier_identity.' It names the relevant alternatives, though it doesn't explicitly say when NOT to use it (e.g., vs. the generic get_sample sibling).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_safety_historyBInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
since_dateNo
usdot_numberYes

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations at all, the description carries the full behavioral burden and does substantial work: it discloses the billing model (charged only when records return, exact-key misses free), the legitimate emptiness of changelog, and precise date-gated null semantics for eight fields. It still omits auth/rate-limit/pagination behavior, so it is strong but not exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose, pricing, and caveats are front-loaded in that order, and each sentence carries distinct information about result interpretation. The three consecutive 'null before <date>' enumerations are verbose and could be compressed, keeping it out of 5 territory.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description rightly spends its budget describing return contents (field-level null semantics, excluded contact fields, changelog exclusions), which is a real strength. But for a two-parameter tool with 0% schema coverage and a required usdot_number plus an unmentioned since_date, the parameter story is incomplete, leaving the definition only adequately complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does not: neither usdot_number nor since_date is explained, and the several hard-coded cutoff dates (2026-09-02, -06, -12) are never tied to the since_date filter an agent is choosing. The date-heavy prose is interpretable as date-window context but adds no parameter syntax or constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening line names the resource and its scope precisely: historical snapshots plus changelog entries for a single carrier, which is distinguishable from the identity/lookup siblings that return current state. It lacks an explicit verb and never names a sibling for contrast, so it falls 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: the pay-per-returned-record note and the 'exact-key miss is free' remark help an agent decide whether a call is worth making, and the empty-changelog caveat warns against misreading results. However, there is no explicit when-to-use-this-vs-lookup_carrier guidance, no prerequisites, and no explanation of when to pass since_date.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_sampleAInspect

Free, unauthenticated sample of carrier_profile rows.

Lets a buying agent evaluate data quality before spending USDC on the paid tools.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It usefully discloses two key traits, that the call is free and unauthenticated, but says nothing about sample size, rate limits, or the shape/content of the returned rows, so the behavioral picture is only half drawn.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with zero filler; the core trait (free, unauthenticated sample) is front-loaded and the rationale follows immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter tool with no output schema, the description covers cost and auth but leaves the returned content unspecified beyond 'carrier_profile rows', and does not resolve the overlap with get_identity_sample. Adequate, but missing context an agent would benefit from before calling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so per the rubric the baseline is 4. There is nothing about parameters for the description to clarify or omit.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('sample of carrier_profile rows'), which is far more concrete than a tautology like 'gets a sample'. However, it does not distinguish itself from the near-twin sibling get_identity_sample, so an agent cannot tell from the description alone why both exist or how they differ.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly states the context of use: evaluate data quality before spending USDC on the paid tools. This effectively signals when to reach for this tool over the paid ones, though it never names a specific paid sibling or states a when-not condition.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lookup_carrierAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
claimed_zipNo
claimed_cityNo
claimed_nameNo
usdot_numberYes
claimed_stateNo
claimed_streetNo

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so well: it discloses the paid pricing model ('you pay only when a call returns records; an exact-key miss is free'), warns against assuming Active by enumerating carrier_status values, and specifies that match fields return boolean/null rather than the value on file. It also flags a schema change (removed 2026-09-19).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and pricing are front-loaded, and every paragraph earns its place by conveying matching or return-value behavior. It is on the long side and the dated removal note adds minor bulk, but density of useful detail justifies it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-annotation, no-output-schema tool with 0% schema coverage, the description supplies pricing behavior, return-field warnings, and full claimed_* semantics. It stops short of describing pagination or the full profile's field list, but the identity-verification path an agent needs is complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate, and it explains the five claimed_* parameters' matching semantics (claimed_name against legal_name OR dba_name; address fields against physical_address; any subset allowed) plus the name_match/physical_address_match return convention. Only usdot_number is left implicit, which is self-evident.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('look up a single carrier's current profile by USDOT number') and pins the scope to one carrier, which distinguishes it from the sibling search_carriers. The agent can tell what it returns and on what key without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear condition under which the claimed_* fields should be used (confirming a carrier's claimed identity, e.g. catching double brokering), which is strong contextual guidance. It does not, however, explicitly name or route away from the sibling identity tools (check_carrier_identity, screen_carrier_identity, confirm_identity_link), leaving the agent to infer boundaries.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

screen_carrier_identityAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
usdot_numberYes

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so generously: it discloses that the tool never bills or requires payment, that it deliberately withholds member-identifying fields (USDOT, legal name, link type, hash), that unknown USDOT numbers produce a not_found error, and it flags the ~6% artifact rate in confidence_caveat plus the per-carrier nature of match_score_practical_ceiling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose and the paid-triage routing are front-loaded well, but the middle paragraph is meta-rationale about the 'discovery/sales motion in an agent-only channel' and repeats that it never bills and never requires payment. That rationale is padding an agent does not need to invoke the tool, diluting an otherwise efficient definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema and no annotations, yet the description qualitatively covers the return surface (flagged boolean, cluster size, linked-carrier count, confidence_caveat, practical match ceiling) and the failure mode, which is what an agent needs before calling. Only the exact response shape and field naming remain unstated, which is a minor gap for a one-parameter screen.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single usdot_number parameter, and the description adds only indirect semantics: that the value is a USDOT number and that an unknown one yields not_found. It conveys the error behavior but no format, validity, or source guidance for the identifier.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource ('free triage screen for a carrier') and enumerates exactly what it returns: FMCSA chameleon-carrier flag, identity cluster size, and count of linked carriers with a motive. It explicitly positions itself against the sibling check_carrier_identity (paid, member detail), so an agent can route without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly frames itself as the free first-step triage and names the alternative ('Call check_carrier_identity (paid) for that'), giving an explicit condition that selects the paid sibling. It stops short of stating when this screen is unnecessary or inappropriate (e.g., carriers already known to be clean), so it is clear context without full exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_carriersAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
stateNo
cargo_typeNo
safety_tierNo
authority_statusNo
include_inactiveNo

TDQS

A4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations to lean on, the description carries the full behavioral burden and does so well: pricing behavior (paid only on non-empty results, zero-row free), default filtering to Active carriers, a hard 100-row cap, an explicit "never a full-table dump" guarantee, and a disclosure that contact fields were removed from the output. These are exactly the non-obvious traits an agent cannot infer from the empty schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Key operational facts (pricing, defaults, row cap, missing contact fields, alternative tool) are front-loaded and efficient. However, the aside about how a filterable multi-result endpoint returning contact details "was the sharpest version of that risk in this product" is editorial rationale that does not help an agent invoke the tool and dilutes the block.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema and no annotations, so the description must shoulder everything; it covers output shape (no contact info) and result-size limits well. The remaining gap is filter semantics: four of six input parameters are left undefined, which is a meaningful hole for a search endpoint whose whole value is filtering.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% across 6 parameters, so the description must compensate and largely does not. It explains include_inactive's default and effect and gives context for the limit cap, but state, cargo_type, safety_tier, and authority_status receive no meaning, valid values, or format guidance anywhere in the definition.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ("Filtered carrier search") and immediately delineates scope: multi-result, filterable, contact-information-free, capped at 100 rows. It explicitly contrasts itself with lookup_carrier for single-carrier identity confirmation, so an agent can distinguish it from that sibling without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names a concrete alternative (lookup_carrier's claimed_name/claimed_street) with the condition that selects it (confirming a specific carrier's claimed identity), and gives the include_inactive condition for widening the result set. It stops short of marking when search_carriers is the wrong choice versus the screening/roster siblings, so it is clear but not fully exhaustive.

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.

  1. 11 tool updates
    • First observedcheck_address_consistency
    • First observedcheck_applicant_against_roster
    • First observedcheck_carrier_identity
    • First observedconfirm_identity_link
    • First observedget_catalog
    • First observedget_identity_sample
    • First observedget_safety_history
    • First observedget_sample
    • First observedlookup_carrier
    • First observedscreen_carrier_identity
    • First observedsearch_carriers

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources