FreightUtils MCP Server
Server Details
Neutral freight reference layer for AI agents: ADR, HS, airlines, UN/LOCODE, ULDs, freight math
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- SoapyRED/freightutils-mcp
- GitHub Stars
- 3
- Server Listing
- FreightUtils MCP Server
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.3/5 across 22 of 22 tools scored. Lowest: 3.7/5.
Tools are mostly distinct, with some overlap between calculators (e.g., cbm_calculator vs. ldm_calculator) but each has a specific purpose. The ADR-related tools (adr_exemption_calculator and adr_lq_eq_check) are differentiated by their calculation logic. Overall, an agent can select the right tool with clear descriptions.
All tools use snake_case and follow a pattern of either 'noun_verb' (adr_lookup, airline_lookup) or 'verb_noun' (cbm_calculator). The only outlier is 'get_subscribe_link' using a verb prefix, but otherwise the naming is consistent and predictable.
22 tools is slightly above the ideal range (3-15) but each tool serves a distinct freight utility purpose, and the count is justified by the breadth of functionalities offered (calculations, lookups, checks).
The tool set covers a comprehensive range of freight operations: volume/weight calculations, ADR compliance, emissions, duty estimation, ICS2 checks, and various lookups (HS codes, containers, ULDs, etc.). There are no obvious gaps for standard freight logistics tasks.
Available Tools
24 toolsadr_exemption_calculatorARead-onlyIdempotentInspect
Calculate ADR 1.1.3.6 exemption. Points = quantity x multiplier per transport category. Total <= 1,000 = exempt from full ADR requirements. For single substance: provide un_number + quantity. For mixed loads: provide items array.
| Name | Required | Description | Default |
|---|---|---|---|
| items | No | Array of items for mixed-load check | |
| quantity | No | Quantity in kg/L | |
| un_number | No | UN number for single check (4 digits, optionally "UN"-prefixed) |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint. The description adds value by explaining the calculation logic (points = quantity × multiplier) and the exemption threshold. It does not detail how multipliers are determined, but overall transparent.
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?
The description is two sentences: first states purpose and formula, second gives usage instructions. No wasted words, front-loaded with key information.
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?
The tool has no output schema, and the description does not specify what the tool returns (e.g., total points, exemption boolean). For a calculator, this is a gap; agents need to know output format.
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 description coverage is 100%, so the schema already documents each parameter. The description adds contextual grouping (single vs mixed) but does not provide new meaning beyond summarizing usage patterns.
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?
The description clearly states the tool calculates ADR 1.1.3.6 exemption with a specific formula and threshold. It distinguishes between single substance and mixed loads, making purpose unambiguous compared to siblings like adr_lookup.
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 description provides explicit usage scenarios (single substance vs mixed loads) and input guidance. It does not explicitly list when not to use or compare to alternatives, but the context is clear given the specialized nature.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adr_lookupARead-onlyIdempotentInspect
Look up dangerous-goods (hazmat) reference data from the ADR 2025 dataset — 2,939 entries across all 9 hazard classes. Provide exactly one of: un_number (exact lookup, returns every packing-group variant), search (case-insensitive partial match on the proper shipping name, min 2 characters), or hazard_class (all entries in that class). Returns proper shipping name, hazard class, classification code, packing group, labels, special provisions, limited/excepted quantity codes, transport category, tunnel restriction code, and hazard identification number for each match. Returns reference data only — it does not assess or certify regulatory compliance for a shipment; an empty result set means nothing matched.
| Name | Required | Description | Default |
|---|---|---|---|
| search | No | Case-insensitive partial match on the proper shipping name (min 2 characters). Example: "acetone". | |
| un_number | No | Exact UN number — 4 digits, optionally "UN"-prefixed; explosives keep their leading zero. Examples: "1203", "UN1203", "0004". | |
| hazard_class | No | Filter by ADR hazard class and its divisions. Examples: "3" (flammable liquids), "6.1" (toxic), "8" (corrosive), "1.4" (an explosives division). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds useful context: returns specific fields, covers 2,939 entries across 9 hazard classes, and states that empty result means no match. No contradictions. Adds value beyond annotations.
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?
Description is 4 sentences, well-structured, front-loaded with main function. Each sentence serves a purpose: what it does, parameters, return fields, limitations. No fluff.
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?
Despite no output schema, description details return fields, dataset size, parameter constraints, and limitations. For a read-only lookup tool, it is fully complete and leaves no ambiguity.
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 description coverage is 100%. The description elaborates on each parameter: un_number returns every packing-group variant, search requires min 2 chars and is case-insensitive, hazard_class filters by class/divisions. Provides examples. Adds significant meaning beyond 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?
The description clearly states the tool's purpose: 'Look up dangerous-goods (hazmat) reference data from the ADR 2025 dataset.' It specifies the verb 'look up' and the resource, and distinguishes from siblings by mentioning dataset size and hazard classes. No tautology.
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?
Explicitly tells when to use each parameter: 'Provide exactly one of: un_number (exact lookup), search (case-insensitive partial match), or hazard_class.' Also states what it does not do: 'does not assess or certify regulatory compliance.' Clearly guides agent on usage vs alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adr_lq_eq_checkARead-onlyIdempotentInspect
Compare quantities against the ADR 2025 Limited Quantity (LQ, Chapter 3.4) and Excepted Quantity (EQ, Chapter 3.5, codes E1–E5) reference limits for one or more UN numbers. For each item it looks up the substance's LQ/EQ value and reports whether the entered quantity is within_limit, exceeds_limit, or not_permitted, with the limit and a plain-language reason; EQ mode also checks the per-outer total via inner_packaging_qty. Returns an overall_status (qualifies / partial / does_not_qualify) plus a per-item breakdown. This is a reference-data comparison against published LQ/EQ limits, not a certification that a shipment is compliant — use it to pre-screen small-quantity consignments before formal classification.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | Check mode: 'lq' (Limited Quantity, ADR 3.4) or 'eq' (Excepted Quantity, ADR 3.5) | |
| items | Yes | Items to check (1–20 per call). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, destructiveHint. The description adds transparency about the tool's scope (reference-data comparison, not certification), the specific checks per item, and the per-outer limit for EQ mode. No contradictions with annotations.
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?
Description is compact and front-loaded with core functionality. It uses plain language and avoids unnecessary repetition. A minor redundancy ('reference-data comparison' appears twice) prevents a perfect 5.
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?
Given no output schema, the description adequately covers return values (overall_status, per-item breakdown with limit, reason, flags). It also addresses edge cases (EQ mode, not a certification). The description is complete for the tool's complexity.
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%, baseline 3. The description adds meaning beyond schema by explaining the role of 'inner_packaging_qty' for EQ mode's per-outer check, and the unit and quantity usage. This helps agents understand parameter interplay.
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?
Clearly states it compares quantities against ADR 2025 LQ/EQ reference limits for UN numbers. Describes output flags (within_limit, exceeds_limit, not_permitted) and overall status. Differentiates from siblings like 'adr_exemption_calculator' and 'adr_lookup' by specifying it's for pre-screening before formal classification.
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?
Explicitly says to use it to 'pre-screen small-quantity consignments before formal classification' and clarifies it's a reference-data comparison, not a certification. Provides context for when to use but does not explicitly name alternatives or state when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
airline_lookupARead-onlyIdempotentInspect
Search 6,352 airlines by name, IATA/ICAO code, AWB prefix, or country. AWB prefixes are 3-digit codes on air waybills identifying the carrier (e.g., 176 = Emirates).
| Name | Required | Description | Default |
|---|---|---|---|
| iata | No | Exact IATA code (2 alphanumeric chars) | |
| icao | No | Exact ICAO code (3 letters) | |
| query | No | General search (name, code, prefix or country — min 2 chars) | |
| prefix | No | AWB prefix (3 digits) | |
| country | No | Filter by country name (min 2 chars) |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the tool's safety profile is clear. The description adds value by explaining what AWB prefixes are ('3-digit codes on air waybills identifying the carrier'), which helps the agent understand search criteria. It does not contradict annotations.
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?
The description is two sentences long, front-loaded with the core functionality, and every word earns its place. It is concise, clear, and free of unnecessary information.
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?
Given the tool's simplicity, full parameter schema, and annotations covering safety, the description is mostly complete. It explains the search domain and one key concept (AWB prefixes). It does not detail return format, but for a lookup tool this is acceptable. A score of 4 reflects minor room for improvement (e.g., mentioning output structure).
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 description coverage is 100% with each parameter having a clear description (e.g., 'Exact IATA code (2 alphanumeric chars)'). The description adds overarching context about AWB prefixes but does not provide additional parameter-level details beyond the schema. Baseline 3 is appropriate as the schema already carries the burden.
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?
The description clearly states the tool's purpose: 'Search 6,352 airlines by name, IATA/ICAO code, AWB prefix, or country.' It uses a specific verb ('Search') and specifies the resource ('airlines') and search criteria. This distinguishes it from sibling tools (e.g., hs_code_lookup, container_lookup) which are for other domains.
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 description implies usage context: when you need to find airline information by various identifiers. It does not explicitly state when not to use it or suggest alternatives, but the context is clear given the sibling tools are distinct (e.g., adr_lookup, incoterms_lookup). A score of 4 is appropriate as it provides clear context without exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
airport_lookupAirport Code LookupARead-onlyIdempotentInspect
Look up an airport by IATA code (3 letters, e.g. "LHR"), ICAO code (4 chars, e.g. "EGLL"), or free-text name / city search (e.g. "heathrow", "chicago"). Returns the full record: IATA + ICAO, name, type (large/medium/small/heliport/closed/seaplane), municipality, region, country, latitude/longitude and elevation. Optional type filter; ambiguous name searches return ranked candidates (exact codes first, then larger airports). Covers 85,555 airports worldwide (OurAirports, public domain, cross-checked vs OpenFlights + Wikidata). Use when an agent has an airport code or name and needs the airport's identity, location or codes. Distinct from airline_lookup (which searches CARRIERS / AWB prefixes, not airports) and unlocode_lookup (general UN/LOCODE transport locations — ports, rail, road — of which airports are only one function). Reference data only — not for navigation; verify current codes with IATA / ICAO.
| Name | Required | Description | Default |
|---|---|---|---|
| iata | No | Exact IATA code (3 letters) | |
| icao | No | Exact ICAO / ident (4 chars) | |
| type | No | Optional filter by airport type | |
| query | No | Name / city / municipality search (min 2 chars) |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| _source | Yes | Provenance envelope (OurAirports, cross-checked) |
| results | Yes | Matching airports (single exact match for iata/icao; ranked candidates for name search) |
| disclaimer | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds valuable context: ambiguous name searches return ranked candidates (exact codes first, then larger airports), covers 85,555 airports worldwide, and notes data sources and cross-checking. No contradiction with annotations.
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?
The description is verbose but well-structured: first sentence defines the main functionality, then details input options, output contents, search behavior, coverage, and usage guidance. Every sentence adds value, though some details (e.g., 'public domain', 'cross-checked') could be considered extraneous for an AI agent.
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?
Given the output schema exists, the description need not explain return values, but it does list them. It covers input parameters, output fields, search behavior, data source, limitations ('not for navigation'), and distinctions from siblings. The tool has moderate complexity with 4 optional parameters, and the description is thoroughly complete.
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 covers 100% of parameters with descriptions. The description adds behavioral context for the 'query' parameter (min 2 chars, ranked results) and notes optional type filter, which improves beyond schema. However, the schema already adequately describes each parameter's purpose.
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?
The description clearly states the tool looks up airports by IATA code, ICAO code, or free-text name/city search, and enumerates the returned fields. It explicitly distinguishes from sibling tools (airline_lookup, unlocode_lookup) by specifying what each sibling does.
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 description states exactly when to use this tool: 'when an agent has an airport code or name and needs the airport's identity, location or codes.' It also warns against using for navigation and mentions alternatives, providing clear guidance on when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cbm_calculatorARead-onlyIdempotentInspect
Calculate cubic metres (CBM) for a shipment. CBM is the standard volume unit in international shipping. 1 CBM = 1m x 1m x 1m = 1,000 litres. Ocean freight carriers price per "freight tonne" (1 CBM or 1,000 kg, whichever is greater).
| Name | Required | Description | Default |
|---|---|---|---|
| pieces | No | Number of identical pieces (default: 1) | |
| width_cm | Yes | Width in centimetres | |
| height_cm | Yes | Height in centimetres | |
| length_cm | Yes | Length in centimetres |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, making the tool's safety clear. The description adds value by explaining that CBM is used for ocean freight pricing and the relationship to 'freight tonne', which is useful behavioral context beyond annotations.
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?
The description is three sentences, each providing essential information: the tool's purpose, a definition of CBM, and a shipping context note. No filler; all sentences earn their place.
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?
Given there is no output schema and parameters are well-covered, the description explains the calculation purpose and shipping pricing rule. It lacks detail on output format (e.g., return value), but as a calculator with good annotations, it is largely complete.
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%, with clear descriptions for each parameter (length_cm, width_cm, height_cm, pieces). The description does not add additional parameter semantics beyond the schema, but it explains the overall calculation context. Baseline 3 is appropriate.
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?
The description clearly states 'Calculate cubic metres (CBM) for a shipment', using a specific verb and resource. It distinguishes itself from siblings like 'ldm_calculator' and 'pallet_fitting_calculator' by focusing on CBM for shipping.
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 description provides context for when to use this tool (shipping volume calculation) and defines the unit. However, it does not explicitly state when not to use it or mention alternatives like 'ldm_calculator', leaving some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chargeable_weight_calculatorARead-onlyIdempotentInspect
Calculate air freight chargeable weight (volumetric vs actual). Airlines charge the greater of actual weight or volumetric weight. IATA standard factor: 6,000 (1 CBM = 166.67 kg). A ratio > 1.0 means volumetric (light for its size).
| Name | Required | Description | Default |
|---|---|---|---|
| factor | No | Volumetric divisor (default: 6000) | |
| pieces | No | Number of identical pieces (default: 1) | |
| width_cm | Yes | Width in centimetres | |
| height_cm | Yes | Height in centimetres | |
| length_cm | Yes | Length in centimetres | |
| gross_weight_kg | Yes | Actual gross weight in kilograms |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint and idempotentHint, so the description doesn't need to restate that. It adds value by explaining the IATA factor and the interpretation of the ratio, which goes beyond annotations.
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?
The description is three sentences, each with a distinct purpose: function, standard, and interpretation. It is front-loaded with the main purpose and includes no fluff.
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?
Given the complexity (6 parameters, no output schema), the description covers the key calculation logic and standard. However, it could mention output format or units, but the score is still high due to clear explanation.
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 input schema has 100% coverage with descriptions for parameters. The description mentions the factor and pieces defaults indirectly, but does not add new semantics beyond what the schema already provides.
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?
The description clearly states the tool calculates air freight chargeable weight by comparing volumetric and actual weight. It distinguishes itself from siblings like cbm_calculator and ldm_calculator by focusing on the specific air freight concept of chargeable weight.
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 description explains when to use the tool (to determine the greater of actual vs volumetric weight) and provides the IATA standard factor. However, it does not explicitly state when not to use it or compare with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consignment_calculatorARead-onlyIdempotentInspect
Calculate total CBM, loading metres (LDM), volumetric and mode-specific chargeable weight for a multi-item mixed consignment — per-line and grand totals, plus objective advisory flags.
Provide a transport mode (sea | air | road) and either "lines" (canonical: each line has quantity, dims {l,w,h,unit}, weight {value,unit}, and optional description / hs_code / un_number / stackable) or the legacy flat "items" array (dimensions in cm, weight in kg). Air uses an IATA volumetric divisor (default 6000, settable via options.air_volumetric_divisor). Optionally pass options.container_number / options.awb_number for a check-digit sanity flag.
Flags are advisory only — implausible density, mode/option mismatch, dangerous-goods presence by UN number against the ADR 2025 reference, and container/AWB check-digit validity. They never state that a shipment is permitted or compliant. Best-effort deterministic calculation and reference data only. Verify all inputs. Not regulatory, customs, or dangerous-goods compliance advice — you remain responsible for classification, documentation, and carrier acceptance.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Transport mode: sea | air | road (default road). Selects the chargeable-weight basis. | |
| items | No | Deprecated flat alias — dimensions in cm, weight in kg. Prefer "lines". Provide lines OR items. | |
| lines | No | Canonical consignment lines (preferred). Each: { quantity, dims:{l,w,h,unit}, weight:{value,unit}, optional description / hs_code / un_number / stackable }. | |
| options | No | Optional: { air_volumetric_divisor, container_number, awb_number }. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds critical context: flags are advisory only, not compliance advice, and the tool uses best-effort deterministic calculation. It warns about verification and disclaims regulatory responsibility, which goes well beyond the annotations.
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?
The description is well-structured: first sentence provides an overview, then explains input format, then details flags and disclaimers. It is front-loaded with the main purpose. Slightly verbose with the disclaimer section, but every sentence adds value.
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?
Despite no output schema, the description explains the tool calculates per-line and grand totals plus advisory flags. It covers input details, mode selection, and the nature of flags. This is sufficient for an agent to understand inputs and expected outputs.
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 baseline is 3. The description summarizes input structure (lines vs items, dims, weight, options) but does not add significant meaning beyond the schema's own field descriptions. It does not clarify edge cases or provide additional semantic hints.
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?
The description clearly states the verb 'Calculate' and the specific resources: total CBM, loading metres, volumetric and chargeable weight, plus advisory flags. It distinguishes from siblings like cbm_calculator and ldm_calculator by emphasizing multi-item mixed consignment and advisory flags.
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 description provides clear instructions on providing a transport mode and either 'lines' or legacy 'items' arrays, and mentions configurable options like air_volumetric_divisor. However, it does not explicitly state when to use this tool over the more specific sibling calculators (e.g., cbm_calculator), lacking exclusionary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
container_lookupARead-onlyIdempotentInspect
Get ISO shipping container specs (10 types: 20ft, 40ft, 40ft HC, reefer, open-top, flat-rack, 45ft). Returns dimensions, capacity, weight limits, and pallet counts.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Container slug (e.g., "20ft-standard", "40ft-high-cube"). Omit to list all. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the description doesn't need to repeat safety. It adds value by listing the output fields (dimensions, capacity, weight, pallet counts) and mentioning the number of container types.
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?
Single sentence covering purpose and output. Listing 7 of the 10 container types is somewhat redundant with the schema examples, but overall efficient and front-loaded.
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?
Given the simplicity (one optional parameter), the description adequately explains what the tool returns and the scope (growing container types). No output schema exists, so describing return fields is sufficient.
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 parameter description in the input schema is detailed. The tool description adds examples of container types but does not significantly enhance the schema-provided semantics.
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?
The description clearly states the action ('Get') and the resource ('ISO shipping container specs'), listing specific container types and what data is returned (dimensions, capacity, weight, pallet counts). It distinguishes from sibling lookup tools (e.g., vehicle_lookup, uld_lookup) by focusing on shipping container specs.
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 explicit when-to-use or alternatives, but the purpose is clear: use it when you need container specifications. Sibling tools like calculators indicate it's for lookups, not calculations. Could mention it's for ISO containers specifically.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
emissions_calculatorFreight Emissions CalculatorARead-onlyIdempotentInspect
Estimate freight transport greenhouse-gas emissions (kgCO2e) for a shipment leg, per ISO 14083:2023 / GLEC Framework v3.2: emissions = mass × distance × a published emission-intensity factor (kgCO2e/tonne-km). Provide mass + distance_km + mode (road | rail | sea | air | inland_waterway); optionally choose sub_mode, region/authority (uk = DEFRA, us = EPA, fr = ADEME) and basis (wtw default, or ttw). Returns well-to-wheel AND tank-to-wheel emissions where the factor has both, the exact factor used (value, authority, edition), the tonne-km activity, and a _source citing BOTH the ISO method and the specific open factor. Use when an agent needs a carbon estimate for a known shipment whose mass and distance are already determined. Distinct from cbm_calculator / ldm_calculator / chargeable_weight_calculator (those size or bill a shipment; this one estimates its CO2e). Distance must be provided — this tool does NOT route, geocode, or compute distances. Best-effort reference estimate from open factors (DEFRA / EPA / ADEME) — NOT a verified or audited carbon report. IMPORTANT: pass ACTUAL GROSS MASS, not chargeable/volumetric weight (a common air-freight mistake — see mass_basis). The fleet-average factor already includes average empty running (see empty_running) — do NOT add your own empty-return leg. Sea and air are low-representativeness generic defaults: real emissions vary materially by vessel/aircraft type, load factor and routing (see representativeness + the result summary). An unknown mode/sub_mode/region returns available:false with the covered options, never a fabricated factor.
| Name | Required | Description | Default |
|---|---|---|---|
| mass | Yes | Shipment mass, expressed in mass_unit. Example: 1000 | |
| mode | Yes | Transport mode | |
| basis | No | Emissions basis: wtw = well-to-wheel incl. upstream energy (default), ttw = tank-to-wheel / operation only | |
| region | No | Factor source/region: uk = DEFRA, us = EPA, fr = ADEME. Default is per-mode. | |
| sub_mode | No | Optional sub-mode / vehicle class (e.g. "articulated", "container ship", "long-haul"). Omit for the representative default; an unknown value returns available:false with the covered list. | |
| mass_unit | No | Unit for mass (default: kg) | |
| distance_km | Yes | Transport distance in kilometres — you provide it; the tool does not route or compute distance |
Output Schema
| Name | Required | Description |
|---|---|---|
| factor | No | The exact emission-intensity factor used |
| inputs | No | Echo of the resolved inputs (incl. defaults applied) |
| _source | No | Citability envelope: ISO method + the specific open factor used (authority, edition, value, basis, last_verified date, source, licence) |
| message | No | Present when available:false — why no factor matched |
| summary | No | Primary human-readable one-line result — carries the empty-running + actual-gross-mass notes and, for sea/air, a high-variance warning. Surface this to the user, do not drop it. |
| tonne_km | No | Transport activity = mass (tonnes) × distance (km) |
| available | Yes | True if a factor matched and emissions were computed; false if the combination is not covered |
| emissions | No | Computed emissions: WTW + TTW where available, plus the primary value per basis |
| confidence | No | Human-readable confidence label for representativeness |
| disclaimer | Yes | Best-effort estimate; not a verified carbon report |
| mass_basis | No | Mass basis the factor expects: always "actual_gross_mass" — NOT chargeable/volumetric weight (a common air-freight mistake) |
| methodology | Yes | ISO 14083:2023 / GLEC Framework v3.2 |
| available_for | No | Present when available:false — the covered modes/regions/sub-modes |
| empty_running | No | Whether the fleet-average factor already embeds average empty running ("sector_average_included" → do NOT add your own empty-return leg) or the source does not state it ("see_source") |
| representativeness | No | How representative the generic default factor is: "low" for sea/air (varies materially by vessel/aircraft type, load, routing), "medium" for road/rail/inland |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint, idempotentHint, destructiveHint), the description adds critical behavioral context: it's a best-effort reference estimate, not audited; sea/air are low-representativeness defaults; it does not compute distances; and unknown inputs return no factor. No contradiction with annotations.
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?
The description is dense and well-structured with front-loaded formula and required inputs. Every sentence adds value, though some consolidation could improve conciseness without losing meaning.
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?
Given 7 parameters, output schema, and annotations, the description is comprehensive. It covers input constraints, behavioral caveats, return format (emissions breakdown, factor details, source citations), and edge cases (unknown sub_mode/region).
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?
Despite 100% schema coverage, the description adds essential context beyond the schema: mass must be actual gross mass (not chargeable), distance must be provided, and sub_mode behavior (unknown returns available:false). It also warns against common air-freight mistakes.
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?
The description clearly states the tool estimates freight transport GHG emissions per ISO/GLEC, with a specific formula. It distinguishes from sibling tools like cbm_calculator and chargeable_weight_calculator by explicitly naming them and stating its unique purpose.
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 description explicitly states when to use (known shipment with determined mass and distance) and what not to do (do not route, do not pass chargeable weight, do not add empty-return leg). It also explains behavior for unknown values (returns available:false).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_subscribe_linkARead-onlyIdempotentInspect
Get the URL where the user can subscribe to FreightUtils Pro for higher API limits. Use this when the user asks how to upgrade, hits a rate limit, or asks about pricing. Returns the URL where the user can subscribe via web — agents must NOT attempt to complete the subscription themselves.
| Name | Required | Description | Default |
|---|---|---|---|
| tier | No | Tier to surface (only "pro" supported today) |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds that the tool returns a URL and that agents must not process the subscription themselves, which is a key behavioral constraint not covered by annotations.
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, no redundancy, front-loaded with the core purpose, and every sentence adds necessary information.
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?
Given the simple nature of the tool (one optional parameter, no output schema, full schema coverage, and thorough annotations), the description is complete. It covers purpose, usage, and behavioral constraints without needing more.
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 enum parameter is fully documented in the schema. The description adds that only 'pro' is supported, which is already listed in the enum, so it adds minimal value 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?
The description explicitly states the tool retrieves a URL for subscribing to FreightUtils Pro, using specific verb-noun phrasing. It clearly distinguishes itself from sibling tools, which are all unrelated calculators or lookups.
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 description explicitly states when to use the tool (user asks to upgrade, hits rate limit, asks about pricing) and when not to (agents must not complete subscription). This provides clear decision criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hs_code_lookupARead-onlyIdempotentInspect
Search 6,940 Harmonized System tariff codes. HS codes are 6-digit international product classification codes used for customs. Provide a search term or exact code.
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | Exact HS code (2-6 digits) | |
| query | No | Search by product description (min 2 chars) | |
| section | No | Browse by section (Roman numeral I–XXI) |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds context about the code system but no additional behavioral traits. It is consistent with annotations, no contradictions.
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?
Two sentences, zero wasted words. The first sentence states the core function, the second provides essential background and usage. Perfectly front-loaded and efficient.
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 simple lookup tool with 3 optional parameters and no output schema, the description provides sufficient context: what it does, how many codes, and what HS codes are. It lacks details on return format, but that is acceptable given tool simplicity and annotation coverage.
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 description coverage is 100% with each parameter already described. The description adds only a general usage hint ('Provide a search term or exact code'), which does not significantly enhance 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?
The description clearly states the tool searches HS tariff codes, specifies the number of codes (6,940), and explains what HS codes are. It distinguishes from sibling lookup tools by targeting a specific domain.
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 description instructs to 'Provide a search term or exact code,' which is clear usage guidance. However, it does not specify when to use this tool over alternatives like adr_lookup or container_lookup, nor does it mention any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ics2_checkICS2 Stop-Words CheckerARead-onlyIdempotentInspect
Check a goods description against the official EU ICS2 stop-words list — terms the European Commission deems too vague/generic to be accepted in an entry summary declaration (ENS) goods-description field (data element 18 05 000 000). Pass description=; returns the flagged terms (each with a note on whether it is the standalone description = automatic rejection, or embedded = make the description more specific), a clean boolean, a caveat, and a _source citing the EU list + legal basis. Use to QA a goods description BEFORE filing an ENS — for customs/documentation teams, brokers, forwarders' documentation side, and agents building ENS/filing pipelines. STRICTLY a reference check: NOT an ENS filing, NOT a customs-compliance determination, NOT legal advice. The list is non-exhaustive and updated periodically; clean does NOT guarantee acceptance (the description must still be specific enough to identify the goods). No binary accepted/rejected verdict is returned. Distinct from hs_code_lookup (commodity codes) and uk_duty_calculator (duty/VAT).
| Name | Required | Description | Default |
|---|---|---|---|
| description | Yes | The goods description to check against the EU ICS2 stop-words list. |
Output Schema
| Name | Required | Description |
|---|---|---|
| clean | Yes | True if no listed stop-word was found — NOT a guarantee of acceptance |
| caveat | Yes | Non-exhaustive-list caveat: clean does not mean accepted |
| _source | Yes | Citability envelope: EU ICS2 list + legal basis + provenance |
| flagged | Yes | Listed stop-words found (empty if none) |
| disclaimer | Yes | Reference-only disclaimer |
| description | Yes | Echo of the submitted description |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, indicating safe read operation. Description adds details about return values (flagged terms, clean boolean, caveat, source), and discloses limitations (non-exhaustive list, clean not a guarantee). No contradictions.
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?
The description is comprehensive but somewhat lengthy; however, each sentence adds value. It is well-structured with clear sections and front-loaded with the core purpose.
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?
Given the single parameter and existence of output schema, the description is complete: it explains input, output (flagged terms, clean boolean, etc.), usage context, limitations, and legal basis. Meets all needs for an AI agent.
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?
Single 'description' parameter with schema coverage 100%. The description adds context that it is a goods description to check against stop-words, which is necessary and adds value beyond the schema's minimal description.
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?
The description clearly states the tool checks a goods description against the EU ICS2 stop-words list, with specific verb 'check', resource 'goods description', and explicit scope before filing ENS. It distinguishes from siblings like hs_code_lookup and uk_duty_calculator.
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?
Provides explicit when to use (before filing ENS), what it does not do (not ENS filing, not legal advice), target users (customs/documentation teams, brokers, etc.), and mentions the list is non-exhaustive. Clear exclusions and alternatives given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
incoterms_lookupARead-onlyIdempotentInspect
Look up Incoterms 2020 trade rules. 11 rules defining transport, insurance, customs responsibilities. 7 for any mode (EXW, FCA, CPT, CIP, DAP, DPU, DDP), 4 sea-only (FAS, FOB, CFR, CIF).
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | Incoterm code (3 letters, e.g., "FOB", "CIF") | |
| category | No | Filter by mode |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool as read-only and idempotent. The description adds useful context about the content (Incoterms 2020, transport/insurance/customs responsibilities, mode categories) without contradicting annotations.
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?
Two concise sentences with no superfluous information. The first sentence states the purpose, the second provides key details.
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?
Given no output schema, the description explains the domain and categories but does not explicitly describe the response format. However, the input schema and description together allow an agent to reasonably infer expected output.
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% with both parameters described. The description adds value by listing example codes for each category, making it easier to understand valid inputs beyond the schema pattern.
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?
The description clearly states the tool looks up Incoterms 2020 trade rules, listing the 11 rules and their categorization. This distinguishes it from sibling lookup tools like hs_code_lookup or unlocode_lookup.
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 description implicitly indicates usage for retrieving incoterms information, but provides no explicit guidance on when to use this tool versus alternatives, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ldm_calculatorARead-onlyIdempotentInspect
Calculate loading metres (LDM) for road freight. LDM measures trailer utilisation. European trailers are 13.6m long, 2.4m wide. Supports pallet presets (euro, uk, half, quarter) and vehicles (artic, rigid10, rigid75, luton).
| Name | Required | Description | Default |
|---|---|---|---|
| pallet | No | Pallet preset | |
| vehicle | No | Vehicle type | |
| quantity | No | Number of pallets (default: 1) | |
| width_mm | No | Custom pallet width in mm | |
| length_mm | No | Custom pallet length in mm | |
| stackable | No | Can pallets be stacked? | |
| weight_kg | No | Weight per pallet in kg | |
| stack_height | No | Stack height 2 or 3 | |
| vehicle_length_m | No | Custom vehicle length in m |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint, idempotentHint, and no destructiveness, so the tool is a safe calculation. The description adds context about trailer utilisation and defaults (e.g., 13.6m length, 2.4m width), which informs behavior beyond annotations. It does not contradict annotations.
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?
The description is concise (two sentences) and front-loads the key purpose. It includes useful details without verbosity. Minor improvement could be to use bullet points for clarity.
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?
Given the tool's low complexity (read-only calculator), no output schema, and complete parameter documentation, the description adequately covers purpose and scope. It could mention typical return format or units, but is sufficient for correct use.
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 description coverage is 100%, so the schema already documents all parameters. The description adds context about pallet presets and vehicle types (e.g., listing specific values) but does not explain relationships between parameters or calculation logic. Baseline 3 is appropriate.
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?
The description clearly states the tool calculates loading metres for road freight, specifies trailer dimensions, and lists supported pallet presets and vehicle types. It distinguishes itself from siblings like cbm_calculator and pallet_fitting_calculator by focusing on LDM specifically.
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 description implies usage for road freight LDM calculation and mentions European trailer standards, but does not explicitly state when to use this versus other calculators like cbm_calculator or pallet_fitting_calculator. No exclusion criteria or alternatives are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nearest_airportNearest AirportARead-onlyIdempotentInspect
Find the airports nearest to a caller-provided latitude/longitude, sorted by great-circle (haversine) distance with distance_km on each result. Inputs: latitude, longitude (required), optional radius_km, max_results (1–50, default 10) and type filter (e.g. large_airport only). Coordinates are INPUT only — nothing is stored or logged. Searches 85,555 airports (OurAirports, public domain). Use when an agent already has a coordinate (a port, warehouse, city centre, or the user's location) and needs the closest airport(s). This tool does NOT geocode place names and does NOT compute routes — pass coordinates you already hold. Distinct from airport_lookup (exact code / name lookup, no distance) and unlocode_lookup (named transport-location search).
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Optional filter by airport type | |
| latitude | Yes | Latitude in decimal degrees (-90 to 90) | |
| longitude | Yes | Longitude in decimal degrees (-180 to 180) | |
| radius_km | No | Optional maximum distance in kilometres | |
| max_results | No | Max results to return (1–50, default 10) |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| _source | Yes | Provenance envelope (OurAirports, cross-checked) |
| results | Yes | Nearest airports, ascending by distance_km |
| disclaimer | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint, idempotentHint, destructiveHint. Description adds that coordinates are input-only, not stored/logged, and lists data source (85,555 airports from OurAirports). No contradictions.
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?
Every sentence serves a purpose: core function, inputs, behavioral notes, usage guidelines, sibling differentiation. Efficient and well-structured.
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?
Covers purpose, usage, parameters, behavior, and discrimination. Output schema exists, so return values are not needed. Fully complete for the tool's complexity.
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 has 100% description coverage, but description adds value: explains radius_km and max_results defaults, type filter with example. This enhances understanding beyond 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?
The description clearly states the tool finds airports nearest to coordinates, sorted by distance, using specific verb and resource. It distinguishes from sibling tools like airport_lookup and unlocode_lookup.
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?
Explicitly states when to use (when coordinates are already available) and what not to use (no geocoding, no routes). Names alternative tools for different scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pallet_fitting_calculatorARead-onlyIdempotentInspect
Calculate how many boxes fit on a pallet with layers, rotation, and weight limits. Determines optimal arrangement and volume utilisation.
| Name | Required | Description | Default |
|---|---|---|---|
| box_width_cm | Yes | Box width in cm | |
| box_height_cm | Yes | Box height in cm | |
| box_length_cm | Yes | Box length in cm | |
| box_weight_kg | No | Box weight in kg | |
| allow_rotation | No | Allow 90-degree rotation (default: true) | |
| max_payload_kg | No | Max pallet payload in kg | |
| pallet_width_cm | Yes | Pallet width in cm | |
| pallet_length_cm | Yes | Pallet length in cm | |
| pallet_max_height_cm | Yes | Max stack height in cm | |
| pallet_deck_height_cm | No | Pallet deck height (default: 15cm) |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true and idempotentHint=true, which the description aligns with. The description adds that the tool determines optimal arrangements and volume utilization, which is useful context beyond annotations.
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?
The description is a single sentence that efficiently conveys the core function and constraints. No unnecessary words.
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?
Given the input schema's rich descriptions and annotations, the description covers the main purpose. It does not mention return values or output format, but there is no output schema, so some expectation is set. Could mention that it returns a number or arrangement details.
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?
All parameters are described in the input schema (100% coverage). The description does not add additional meaning beyond what the schema provides, so a baseline score of 3 is appropriate.
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?
The description clearly identifies the tool's purpose: calculating how many boxes fit on a pallet, with layers, rotation, and weight limits. It specifies the output (optimal arrangement and volume utilization) and distinguishes itself from other logistic calculators like cbm_calculator or ldm_calculator.
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 description implies use cases by mentioning key constraints (layers, rotation, weight limits) but does not explicitly state when to use this tool versus alternatives or when not to use it. However, the context of sibling tools suggests it is for pallet fitting specifically.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shipment_summaryARead-onlyIdempotentInspect
Composite shipment summary — chains CBM, weight, LDM/volumetric/W&M, ADR compliance, and UK duty estimation into one response. Accepts multiple items with a transport mode (road/air/sea/multimodal). Returns per-mode calculations, DG compliance flags, and customs estimates.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | Transport mode | |
| items | Yes | Array of shipment items with dimensions, weight, and optional HS/UN codes | |
| origin | No | Origin location — ISO country code and optional UN/LOCODE | |
| incoterm | No | Incoterms 2020 three-letter code (e.g. 'DAP', 'EXW', 'FOB') | |
| destination | No | Destination location — ISO country code and optional UN/LOCODE | |
| freight_cost | No | Optional freight cost in GBP for duty calculation | |
| insurance_cost | No | Optional insurance cost in GBP for duty calculation |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, covering safety. The description adds that it returns per-mode calculations, DG compliance flags, and customs estimates, which is useful behavioral context. But it does not disclose any potential performance implications or internal tool calls.
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?
Two concise sentences. The first sentence introduces the composite nature and lists key components. The second sentence clarifies inputs and outputs. No unnecessary words, and the most important information is front-loaded.
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?
Description covers main output types (per-mode calculations, DG flags, customs estimates) and inputs (items, mode). However, it does not mention the optional input fields (origin, destination, incoterm, freight/insurance costs) that influence the customs estimate, nor does it explain acronyms like 'W&M'. With no output schema, more detail on return value structure would be helpful.
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% with descriptions for all parameters. The description adds minimal beyond 'Accepts multiple items with a transport mode', which is already in the schema. No additional meaning or clarification provided for any parameter.
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?
The description explicitly states it's a composite shipment summary that chains multiple calculations (CBM, weight, LDM, ADR, duty) into one response. It clearly identifies the specific verb ('composite summary') and resource, and distinguishes from sibling tools which are individual calculators.
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 description implies usage when a combined summary is needed by stating it 'chains' multiple calculations. It lists the included components, but does not explicitly state when to use this tool vs individual calculators. However, the composite nature is clear, and siblings are single-purpose, so the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
uk_duty_calculatorARead-onlyIdempotentInspect
Estimate UK import duty and VAT for a commodity code and origin country. Uses live GOV.UK Trade Tariff data. Returns CIF value, duty rate/amount, VAT rate/amount, total import taxes, and total landed cost. Flags preferential rates and import restrictions.
| Name | Required | Description | Default |
|---|---|---|---|
| incoterm | No | Incoterm basis | |
| freight_cost | No | Freight cost in GBP (default 0) | |
| customs_value | Yes | Customs value in GBP | |
| commodity_code | Yes | UK tariff commodity code (6-10 digits) | |
| insurance_cost | No | Insurance cost in GBP (default 0) | |
| origin_country | Yes | ISO 2-letter country of origin (e.g. "CN", "US") |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds valuable behavioral context: it uses live GOV.UK Trade Tariff data (implying results may change over time) and flags preferential rates and import restrictions. No contradictions.
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?
The description is a single, well-structured paragraph that front-loads purpose, then data source, outputs, and additional features. Every sentence adds value; there is no redundancy or unnecessary detail.
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?
Given the complexity (6 parameters, 3 required, no output schema), the description explains what the tool returns (CIF value, duty/VAT rates/amounts, total taxes, landed cost) and mentions a flag for preferential rates/restrictions. It is fairly complete for a calculator but could mention error handling or data recency limitations.
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 description coverage is 100%, with each parameter having a clear description and constraints (e.g., pattern, enumeration). The overall description does not add significant meaning beyond what the schema provides, though it lists outputs that help infer parameter purpose. Baseline 3 is appropriate.
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?
The description uses specific verbs ('Estimate', 'Uses', 'Returns', 'Flags') and clearly identifies the resource (UK import duty and VAT for a commodity code and origin country). It differentiates from sibling tools like hs_code_lookup and incoterms_lookup by focusing on duty/VAT calculation rather than classification or term lookup.
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 description implies usage for import duty and VAT estimation with a given commodity code and origin country. It mentions live government data and output fields, which sets context, but does not explicitly state when not to use it or compare to sibling calculators (e.g., cbm_calculator for volume or chargeable_weight_calculator).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
uld_lookupARead-onlyIdempotentInspect
Look up air freight ULD (Unit Load Device) specs. 16 types including AKE (LD3), PMC, PLA, and special units. Returns dimensions, weights, volume, aircraft compatibility, and deck position.
| Name | Required | Description | Default |
|---|---|---|---|
| deck | No | Filter by deck position | |
| type | No | ULD code (e.g., "AKE", "PMC") or slug (e.g., "ake-ld3"). Omit to list all. | |
| category | No | Filter by ULD category |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds specific behavioral context beyond the annotations by listing the returned data: dimensions, weights, volume, aircraft compatibility, and deck position. Annotations already indicate it's read-only and idempotent. The description does not contradict annotations and provides useful output details.
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?
The description is extremely concise: two sentences that front-load the purpose and immediately follow with the output. Every sentence earns its place without any wasted words.
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?
Given the tool's simplicity, the description is complete. It explains what the tool does, what parameters are available (via schema), and what the output contains. No output schema exists, but the description compensates by listing the return values. For a read-only lookup, this is sufficient.
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 schema already documents parameters well. The description adds value by providing example ULD codes (AKE, PMC, PLA) and noting that 16 types are available, which helps understand the 'type' parameter. It also mentions the output, which indirectly relates to parameter usage.
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?
The description clearly states the tool's purpose: 'Look up air freight ULD specs.' It specifies the number of types and examples, and it distinguishes itself from sibling lookup tools like container_lookup by focusing on air freight ULDs specifically.
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 description implies usage through its clear domain, but it does not explicitly state when to use this tool versus alternative lookup tools (e.g., container_lookup) or provide any 'when not to use' guidance. The context is implied but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unit_converterARead-onlyIdempotentInspect
Convert between freight units. Weight: kg, lbs, oz, tonnes, short_tons, long_tons. Volume: cbm, cuft, cuin, litres, gal_us, gal_uk. Length: cm, inches, m, feet, mm. Freight: cbm→chargeable_kg, cbm→freight_tonnes.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Target unit — any source unit, plus the freight targets chargeable_kg and freight_tonnes (only valid from cbm) | |
| from | Yes | Source unit — weight (kg, lbs, oz, tonnes, short_tons, long_tons), volume (cbm, cuft, cuin, litres, gal_us, gal_uk) or length (cm, inches, m, feet, mm) | |
| value | Yes | Value to convert |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the behavioral safety profile is clear. The description adds contextual information about unit categories but no additional behavioral traits, which is acceptable given the annotation coverage.
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?
The description is extremely concise: two sentences. The first sentence states the purpose, the second lists unit categories. No wasted words, front-loaded with the core functionality.
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 converter tool with 3 parameters and no output schema, the description covers the input units and special freight conversions well. It lacks explanation of the return format (e.g., converted number) but that is typical for converters. Overall, adequate for an agent.
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% with detailed descriptions for each parameter, including enum values. The description lists unit categories but does not add significant meaning beyond what the schema already provides. Baseline 3 is appropriate.
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?
The description clearly states 'Convert between freight units' and lists specific unit categories (weight, volume, length) and special freight conversions. The verb 'Convert' and resource 'units' are precise, and it distinguishes itself from sibling tools like cbm_calculator or chargeable_weight_calculator by being a general converter.
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 description provides clear context for when to use the tool (converting among the listed units), but it does not explicitly mention when not to use it or direct users to specific sibling tools for specialized conversions, which would make it a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unlocode_lookupARead-onlyIdempotentInspect
Search 116,129 UN/LOCODE transport locations worldwide. Covers seaports, airports, rail terminals, road terminals, inland clearance depots, and border crossings. Search by location name, code (e.g. GBLHR), country, or function type.
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | Exact UN/LOCODE lookup (e.g. "GBLHR", "NLRTM") | |
| limit | No | Max results (default 20) | |
| query | No | Search by name or code (e.g. "Rotterdam", "GBLHR", "LHR") | |
| country | No | ISO 2-letter country code filter (e.g. "GB", "NL") | |
| function_type | No | Filter by location function |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds behavioral context: the tool searches a specific dataset of 116,129 locations covering various transport functions. No contradictions; it supplements the safety profile with scope details.
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?
Description is two concise sentences: first states the scope and data size, second lists coverage and search methods. Every sentence adds value; no unnecessary words.
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 is provided, but the description covers the tool's purpose, data sources, and search methods. It does not describe the return format or pagination behavior, which would be helpful for completeness given no output schema. Still, it is fairly comprehensive for a lookup tool.
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 description coverage is 100%, so the schema already documents each parameter. The description restates the search dimensions (name, code, country, function type) but does not add new meaning beyond summarizing. Baseline 3 is appropriate.
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?
Description clearly states the tool searches UN/LOCODE transport locations worldwide, specifying the count (116,129) and covering specific types (seaports, airports, etc.). It explicitly distinguishes from sibling tools which are mostly calculators and other lookups.
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 description mentions search methods (by name, code, country, function type) but does not explicitly say when to use this tool vs alternatives. Given sibling tools are distinct (e.g., container_lookup, airline_lookup), it's clear this is the UN/LOCODE tool, so guidance is implicit but could be stronger.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validateFreight Identifier ValidatorARead-onlyIdempotentInspect
Find and validate every freight identifier inside an arbitrary string (e.g. a booking line or email) — or validate a single identifier by type — using the public check-digit algorithms for shipping container numbers (ISO 6346), air waybill (AWB) numbers (IATA modulus-7) and IMO ship identification numbers. Two modes: pass text= to find and validate every identifier in it (parse mode), OR pass value=&type=<container|awb|imo> to validate one. Returns, per identifier found: type, the normalised form, valid (check-digit pass/fail), the expected vs actual check digit, and details (container → owner prefix + equipment category; AWB → airline prefix + the airline, resolved from the AWB-prefix dataset; IMO → the 7-digit number). Use when an agent needs to confirm a container/AWB/IMO number is well-formed, or to extract identifiers from a freeform string. STRUCTURAL ONLY — a valid check digit means well-formed, NOT that the container/shipment/vessel exists or is active; this is not a registry/tracking lookup. Distinct from container_lookup (that returns container TYPE dimensions/specs) and airline_lookup (that searches airlines); this checks an identifier's check digit and, for an AWB, names the operating airline.
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | Arbitrary string to scan for container / AWB / IMO identifiers (parse mode). Provide this OR value+type. | |
| type | No | Identifier type for value: container = ISO 6346, awb = IATA Air Waybill, imo = IMO ship number. | |
| value | No | A single identifier to validate (typed mode). Requires type. |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | Present when nothing was found |
| found | Yes | Every identifier found + validated (ordered by position in the input) |
| disclaimer | Yes | Structural-validation-only disclaimer |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds valuable context: uses public check-digit algorithms, returns normalized form and validity, and explicitly states the structural-only nature (not existence). No contradiction with annotations.
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?
The description is moderately long but well-structured: starts with main purpose, explains modes, then output details, then caveats. Every sentence adds value, though it could be slightly more concise without losing information.
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?
Given the tool's complexity (three identifier types, two modes, output schema exists but not shown), the description covers all necessary aspects: input constraints, mode selection, output details per type, and structural-only limitation. No obvious gaps.
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% with descriptions. The description adds meaning by explaining parse mode vs. typed mode, the three type enum values, and what details are returned per type (e.g., owner prefix for container, airline for AWB). This goes beyond the schema's simple descriptions.
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?
The description uses specific verbs ('Find and validate') and clearly identifies the resources (freight identifiers: container, AWB, IMO). It distinguishes itself from sibling tools container_lookup and airline_lookup, which are mentioned as doing different things.
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?
Explicitly states when to use (confirm well-formedness, extract from freeform string) and when not to (this is not a registry/tracking lookup). Also distinguishes from container_lookup and airline_lookup, providing clear alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vehicle_lookupARead-onlyIdempotentInspect
Look up road freight vehicle and trailer specs. 17 types: curtainsiders, rigids, vans, US trailers. Returns internal dimensions, payload limits, pallet capacity, and features.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | No | Vehicle slug (e.g., "standard-curtainsider"). Omit to list all. | |
| region | No | Filter by region | |
| category | No | Filter by category |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, and non-destructive behavior. The description adds value by specifying the kind of data returned (dimensions, payload, etc.) and noting 17 vehicle types. There is no contradiction with annotations.
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?
The description is a single, well-structured sentence that front-loads the action and scope. Every word is informative, with no redundancy.
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?
Given the tool's simplicity (3 optional params, no output schema), the description adequately explains what the tool does and what it returns. It could be more detailed about exactly which fields are in the output, but it is sufficient for a lookup tool.
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?
Input schema has 100% coverage with clear descriptions for each parameter (slug, region, category). The tool description does not add additional meaning beyond the schema, such as explaining how parameters interact. Baseline score of 3 is appropriate.
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?
The description clearly states the tool's purpose: to look up road freight vehicle and trailer specs. It lists specific vehicle types (curtainsiders, rigids, vans, US trailers) and details what is returned (internal dimensions, payload limits, pallet capacity, features). This differentiates it well from sibling tools, which are calculators and other lookups.
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 description implicitly indicates when to use the tool (when vehicle specs are needed). However, it does not explicitly state when not to use it or point to alternatives. Since the sibling tools are distinct, the lack of explicit guidance is a minor gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Your Connectors
Sign in to create a connector for this server.