Skip to main content
Glama

search_carriers

Read-onlyIdempotent

Filtered carrier search. Paid — you pay only when a call returns records; a zero-row result is free, same as an exact-key miss.

safety_tier filters on safety_tier_derived: 1 = inspected with zero BASIC alerts, up to 6 = all five BASICs alerted. Carriers with no tier (never inspected, or not in SMS) never match a tier filter.

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.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "search_carriers"
  }
}

Input Schema

NameRequiredDescriptionDefault
limitNoMaximum rows to return; default 20, capped at 100.
stateNoTwo-letter US state code of the carrier's physical address, e.g. TX.
cargo_typeNoCargo type the carrier is authorized to haul, e.g. General Freight.
safety_tierNoDerived safety tier filter; 1 means inspected with zero alerts. See get_catalog for allowed values.
authority_statusNoAuthority status filter, e.g. Active. See get_catalog for allowed values.
include_inactiveNoInclude Inactive and Pending carriers; default false returns Active only.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changed
    • addedInput schema / properties / authority_status / description
      Added value: +"Authority status filter, e.g. Active. See get_catalog for allowed values."
    • addedInput schema / properties / cargo_type / description
      Added value: +"Cargo type the carrier is authorized to haul, e.g. General Freight."
    • addedInput schema / properties / include_inactive / description
      Added value: +"Include Inactive and Pending carriers; default false returns Active only."
    • addedInput schema / properties / limit / description
      Added value: +"Maximum rows to return; default 20, capped at 100."
    • addedInput schema / properties / safety_tier / description
      Added value: +"Derived safety tier filter; 1 means inspected with zero alerts. See get_catalog for allowed values."
    • addedInput schema / properties / state / description
      Added value: +"Two-letter US state code of the carrier's physical address, e.g. TX."
  2. First observed

TDQS

A4.2/5.0
Behavior5/5

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

Goes well past the readOnly/idempotent/non-destructive annotations: it discloses the pricing model (charged only when rows return, zero-row results free), the hard 100-row cap regardless of requested limit, the Active-only default, the PII removal with a date and schema reference, and the null-tier never-matches rule. That is exactly the kind of operational context annotations cannot carry.

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?

The most decision-relevant facts — what it is, pricing, cap, default scope, missing contact fields — are front-loaded, and the parenthetical rationale for the PII removal is contained. The clause about 'the sharpest version of that risk in this product' is editorial justification rather than agent-facing guidance and could be trimmed. Still efficient overall for the amount of useful content.

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 six-parameter read-only search with 100% schema coverage and no output schema, the description covers scope, cost, limits, defaults, and the notable absence of contact fields, and it points to schemas.CarrierProfile for the row shape. What an agent receives per row is only implied by negation rather than positively described, which is the remaining gap.

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 100%, so the baseline is 3, and the description still adds real meaning: safety_tier is derived from safety_tier_derived with 1 = inspected with zero BASIC alerts up to 6 = all five BASICs alerted, and carriers with no tier never match a tier filter. It also restates the include_inactive default, which the schema already covers. It doesn't add anything for state or cargo_type.

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 sentence names a specific verb and resource (filtered carrier search) and the body clarifies it is a multi-result, filterable endpoint capped at 100 rows rather than a full dump. It also explicitly points at lookup_carrier (claimed_name/claimed_street) for single-carrier identity confirmation, which separates it from at least one sibling. It doesn't distinguish itself from other search-like siblings such as find_carrier_by_mc, keeping it 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 Guidelines4/5

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

Concrete routing guidance is given: use this for filtered multi-result queries, and use lookup_carrier's claimed_* fields if you need to confirm a specific carrier's claimed identity. It also states the default scope (Active only) and how to widen it with include_inactive=true. No explicit statement of when-not-to-use for enumeration-style lookups beyond the 'never a full-table dump' remark.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.