Skip to main content
Glama

FreightGate MCP Server

Server Details

Container shipping intelligence for AI agents — demurrage & detention charges, local charges, inland haulage, CFS tariffs across 800+ ports and 45+ shipping lines. Pay-per-request with USDC via x402 protocol on Base and Solana networks. 9 tools including 3 free endpoints.

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

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.

100% free. Your data is private.
Tool DescriptionsA

Average 4.6/5 across 25 of 25 tools scored.

Server CoherenceA
Disambiguation5/5

Each tool targets a distinct aspect of shipping logistics, with clear descriptions that often reference related tools to prevent confusion. For example, shippingrates_dd_calculate and shippingrates_dd_compare are clearly separated for single vs. cross-carrier comparisons.

Naming Consistency5/5

All tool names follow a consistent 'shippingrates_' prefix with snake_case descriptors (e.g., shippingrates_dd_calculate, shippingrates_inland_haulage). This pattern makes the tool set easy to navigate and predictable.

Tool Count4/5

25 tools is on the higher end, but the server covers a broad domain (ocean freight, inland, demurrage, congestion, regulations, etc.). Each tool serves a specific need, and the richness of the data justifies the count.

Completeness5/5

The tool set is exceptionally complete for shipping intelligence, covering everything from basic port lookups to comprehensive landed cost calculations. There are no obvious gaps—the total_cost tool even aggregates multiple components.

Available Tools

25 tools
shippingrates_cfs_tariffsGet CFS Handling TariffsA
Read-onlyIdempotent
Inspect

Get Container Freight Station (CFS) handling tariffs — charges for LCL (Less than Container Load) cargo consolidation and deconsolidation at port warehouses.

Use this for LCL shipments to estimate warehouse handling costs. Returns per-unit handling rates, minimum charges, and storage fees at the specified port. Not relevant for FCL (Full Container Load) shipments.

PAID: $0.05/call via x402 (USDC on Base or Solana). Without payment, returns 402 with payment instructions.

Returns: Array of { facility, service_type, cargo_type, rate_per_unit, unit, minimum_charge, currency }.

ParametersJSON Schema
NameRequiredDescriptionDefault
portYesUN/LOCODE port code (e.g. INMAA, INMUN)
serviceNoFilter by service type
x_paymentNox402 payment proof header
cargo_typeNoFilter by cargo type
Behavior5/5

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

Beyond annotations (readOnlyHint, idempotentHint, destructiveHint), the description discloses the payment requirement ($0.05/call via x402) and the 402 error response if unpaid. This provides critical behavioral context for an AI agent.

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

Conciseness5/5

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

The description is concise (6 sentences) and well-structured: purpose, usage, return type, exclusion, payment info, and return fields. Every sentence adds value without redundancy.

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

Completeness4/5

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

Given no output schema, the description compensates by detailing the return array fields. It covers purpose, usage, payment, error handling, and exclusion. Minor gap: no explicit tie to sibling tools beyond FCL exclusion, but overall complete for the tool's scope.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description mentions 'specified port' and describes the return structure, but does not add new meaning beyond what the input schema already provides for parameters.

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

Purpose5/5

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

The description clearly states the tool retrieves CFS handling tariffs for LCL cargo consolidation/deconsolidation at port warehouses. It explicitly distinguishes from FCL shipments, differentiating it from sibling tools that likely handle other shipping rates or services.

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

Usage Guidelines4/5

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

The description specifies using this tool for LCL shipments to estimate warehouse handling costs and notes it is not relevant for FCL shipments. While it does not name alternative sibling tools for FCL, the guidance on when to use is clear and prevents misuse.

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

shippingrates_congestionPort Congestion DataA
Read-onlyIdempotent
Inspect

Get port congestion metrics — vessel waiting times, berth occupancy, and delay trends for a specific port.

Use this to assess port efficiency and anticipate detention risk. High congestion often leads to longer container dwell times and higher D&D costs. For shipping disruption news and alerts (Red Sea, Suez, chokepoints), use shippingrates_congestion_news instead.

PAID: $0.02/call via x402 (USDC on Base or Solana). Without payment, returns 402 with payment instructions.

Returns: { port, congestion_level, avg_waiting_hours, berth_occupancy_pct, vessel_count, trend, period_days }.

ParametersJSON Schema
NameRequiredDescriptionDefault
portYesUN/LOCODE port code — e.g. INNSA (Nhava Sheva), AEJEA (Jebel Ali), SGSIN (Singapore)
days_backNoDays of historical data (default: 30)
x_paymentNox402 payment proof header
Behavior5/5

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

Annotations indicate read-only, idempotent, non-destructive behavior. The description adds critical behavioral info: the tool is paid ($0.02/call) and returns a 402 error without payment. Also lists the return fields. 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.

Conciseness5/5

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

Four purposeful sentences: purpose, usage, alternative, payment. No wasted words. Return format listed clearly.

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

Completeness4/5

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

Given the low complexity (3 params, no enums, no output schema), the description covers all necessary context: what the tool does, when to use, payment requirement, and return fields. Slight improvement could include defining 'trend' more granularly, but overall complete.

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

Parameters4/5

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

Schema description coverage is 100% with clear parameter descriptions. The description adds context on the payment header parameter and the return fields, but the schema already handles most semantics well.

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

Purpose5/5

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

The description clearly specifies the action ('Get') and resource ('port congestion metrics') with specific metrics listed. It distinguishes from the sibling tool 'shippingrates_congestion_news' by stating it is for congestion data rather than disruption news.

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

Usage Guidelines5/5

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

Explicitly states when to use ('assess port efficiency and anticipate detention risk') and when not to use (for disruption news, use the sibling tool). Provides an alternative tool name.

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

shippingrates_congestion_newsShipping Disruption NewsA
Read-onlyIdempotent
Inspect

Get shipping disruption news aggregated from 7 trade press sources — with port tagging and severity classification. Covers Hormuz Strait, Red Sea/Houthi, Suez Canal, Bab el-Mandeb, port congestion, and weather events.

Use this for situational awareness — answers "are there any active disruptions affecting my route?" For quantitative port congestion metrics (waiting times, berth occupancy), use shippingrates_congestion instead. For route-level risk scoring, use shippingrates_risk_score.

PAID: $0.02/call via x402 (USDC on Base or Solana). Without payment, returns 402 with payment instructions.

Returns: Array of { headline, source, published_at, severity, affected_ports[], chokepoint, summary }.

ParametersJSON Schema
NameRequiredDescriptionDefault
portNoPort UN/LOCODE filter
limitNoMaximum number of results
severityNoSeverity classification filter
days_backNoDays of historical news (default: 7)
x_paymentNox402 payment proof header
Behavior4/5

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

Annotations indicate safe, idempotent read operation. Description adds behavioral details beyond annotations: payment requirement ($0.02/call, returns 402 if unpaid) and return format. 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.

Conciseness4/5

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

Description is front-loaded with purpose, followed by usage guidance, payment info, and return structure. Concise with one paragraph; slightly dense but well-organized.

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

Completeness4/5

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

No output schema, but description compensates by detailing return array structure. Covers all key aspects: purpose, usage, parameters, payment behavior, and output format. Lacks only minor details like pagination or example.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. Description does not add significant extra meaning beyond the schema; provides no examples, defaults, or dependencies. Adequate but no enhancement.

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

Purpose5/5

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

Description clearly states verb+resource: 'Get shipping disruption news aggregated from 7 trade press sources — with port tagging and severity classification.' It differentiates from siblings by specifying use for situational awareness and directing to other tools for quantitative metrics and risk scoring.

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

Usage Guidelines5/5

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

Explicitly states when to use: 'answers are there any active disruptions affecting my route?' and when not: 'For quantitative port congestion metrics... use shippingrates_congestion instead. For route-level risk scoring, use shippingrates_risk_score.' Provides clear alternatives.

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

shippingrates_dd_calculateCalculate Demurrage & Detention CostsA
Read-onlyIdempotent
Inspect

Calculate demurrage and detention (D&D) costs for one carrier in one country.

Use this when the user needs a detailed cost breakdown for a specific carrier. Returns free days, per-diem rates for each tariff slab, and total cost. This is the core tool for logistics cost analysis — it answers "how much will I pay if my container is detained X days?"

To compare D&D costs across all carriers at once, use shippingrates_dd_compare instead.

PAID: $0.10/call via x402 (USDC on Base or Solana). Without payment, returns 402 with payment instructions.

Returns: { line, country, container_type, days, free_days, slabs: [{ from, to, rate_per_day, days, cost }], total_cost, currency }

ParametersJSON Schema
NameRequiredDescriptionDefault
daysYesNumber of detention days
lineYesShipping line slug — one of: maersk, msc, cma-cgm, hapag-lloyd, one, cosco
countryYesISO 2-letter country code (e.g. IN, AE, SG)
x_paymentNox402 payment proof header (optional — required for paid access)
container_typeYesISO 6346 container type — 20DV, 40DV, 40HC, 20RF, 40RF, 20OT, 40OT, 20FR, 40FR
Behavior5/5

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

Beyond the annotations (readOnly, idempotent, non-destructive), the description adds critical behavioral details: the pay-per-call mechanism ($0.10 via x402), the 402 error response if unpaid, and a structured sample return. 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.

Conciseness5/5

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

The description is concise (3 sentences plus return type) and front-loaded: first sentence states purpose, second gives usage guidance, third covers payment, and final line shows return structure. Every sentence adds value without redundancy.

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

Completeness5/5

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

Despite lacking an output schema, the description includes a detailed sample return structure (fields like line, country, slabs, total_cost). It also covers payment requirements and error handling, making it fully self-contained for an agent to invoke correctly.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for all 5 parameters. The description does not add new param-level semantics beyond what the schema provides; it merely reiterates the container type and shipping line. Baseline of 3 is appropriate as the description adds no extra meaning.

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

Purpose5/5

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

The description begins with a clear, specific verb 'Calculate' and resource 'demurrage and detention costs' with explicit scope 'for one carrier in one country.' It distinguishes itself from the sibling tool shippingrates_dd_compare, which is clearly mentioned as an alternative for cross-carrier comparison.

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

Usage Guidelines5/5

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

The description explicitly states when to use this tool ('when the user needs a detailed cost breakdown for a specific carrier') and provides a direct alternative ('Use shippingrates_dd_compare instead'). It also frames the tool's answer in a question-answering manner, making the usage context crystal clear.

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

shippingrates_dd_compareCompare D&D Across Shipping LinesA
Read-onlyIdempotent
Inspect

Compare demurrage and detention costs across ALL available carriers for the same country, container type, and detention days.

Use this for freight procurement and carrier selection — it answers "which carrier has the cheapest D&D in this country?" Returns a side-by-side comparison with each carrier's free days, slab rates, and total cost sorted cheapest first.

For a single carrier's detailed D&D breakdown, use shippingrates_dd_calculate instead.

PAID: $0.25/call via x402 (USDC on Base or Solana). Without payment, returns 402 with payment instructions.

Returns: Array of { line, free_days, total_cost, currency, slabs } for each available carrier, sorted by total_cost ascending.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysYesNumber of detention days
countryYesISO 2-letter country code
x_paymentNox402 payment proof header
container_typeYesISO 6346 container type — 20DV, 40DV, 40HC, 20RF, 40RF, 20OT, 40OT, 20FR, 40FR
Behavior5/5

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 valuable context: payment cost ($0.25 via x402), behavior when unpaid (returns 402), and return format (array sorted by total_cost). 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.

Conciseness5/5

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

Description is concise, structured into three focused paragraphs: what tool does, when to use, payment info, return format. Every sentence adds value with no redundancy.

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

Completeness5/5

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

Despite no output schema, the description fully explains the return value (array with line, free_days, total_cost, currency, slabs sorted by total_cost). Combined with annotations, this gives the agent complete expectations.

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

Parameters3/5

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

Input schema has 100% coverage for 4 parameters, so schema already defines them. The description only mentions parameters implicitly (country, container type, days) without adding new semantic details. Fine but not better than baseline.

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

Purpose5/5

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

The description clearly states it compares D&D costs across ALL available carriers for given country, container type, and days. It explicitly identifies the use case (freight procurement/carrier selection) and distinguishes from sibling tool shippingrates_dd_calculate.

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

Usage Guidelines5/5

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

The description tells when to use this tool (multi-carrier comparison for cheapest D&D) and explicitly directs to shippingrates_dd_calculate for single-carrier breakdown. It also explains the payment requirement and expected response.

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

shippingrates_facilitiesIndia ICD/CFS Facility DirectoryA
Read-onlyIdempotent
Inspect

Search India's Inland Container Depot (ICD) and Container Freight Station (CFS) facility directory — GPS coordinates, rail connectivity, operator details, and capacity.

Use this to find facilities near an inland destination in India, or to check if a specific ICD/CFS has rail connectivity. Useful for inland logistics planning in combination with shippingrates_inland_haulage.

PAID: $0.02/call via x402 (USDC on Base or Solana). Without payment, returns 402 with payment instructions.

Returns: Array of { code, name, type, state, city, lat, lon, operator, rail_connected, capacity }.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeNoFacility code filter
typeNoFacility type filter
stateNoIndian state name filter
x_paymentNox402 payment proof header
rail_connectedNoRail connectivity filter — 'true' or 'false'
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive. Description adds critical behavioral details: it is a paid API ($0.02/call via x402) and returns 402 if unpaid. Also describes return shape (array of objects).

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

Conciseness5/5

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

Extremely concise: 4 sentences plus one line for return type. Front-loaded with purpose, followed by use cases and payment details. No wasted words.

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

Completeness4/5

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

Completes the picture by specifying return structure (since no output schema) and payment requirement. Mentions combination with another tool. Could be improved by noting pagination or default behavior, but adequate for the tool's simplicity.

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

Parameters3/5

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

Input schema has 100% description coverage, so baseline is 3. Description does not add significant parameter detail beyond what the schema already provides, but it implicitly suggests using filters like state or rail_connected.

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

Purpose5/5

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

Clearly states it searches India's ICD/CFS facility directory and lists the data fields returned (GPS coordinates, rail connectivity, etc.). Distinct from sibling tools which cover rates, tariffs, etc.

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

Usage Guidelines4/5

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

States when to use: find facilities near an inland destination or check rail connectivity. Suggests combination with shippingrates_inland_haulage. Does not explicitly mention exclusions, but payment info is provided as usage context.

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

shippingrates_fxCurrency Exchange RatesA
Read-onlyIdempotent
Inspect

Get current exchange rate between two currencies — useful for converting shipping costs quoted in different currencies (USD, EUR, INR, AED, SGD, CNY, etc.).

Use this to normalize costs from different carriers/countries to a common currency for comparison. Rates are updated daily.

FREE — no payment required.

Returns: { from, to, rate, timestamp }

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesTarget currency code — e.g. "INR", "AED"
fromYesSource currency code — e.g. "USD", "EUR"
Behavior4/5

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

Annotations already mark the tool as read-only and non-destructive. The description adds valuable context: 'Rates are updated daily' and 'FREE — no payment required,' which goes beyond the annotations. It does not contradict any annotations.

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

Conciseness4/5

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

The description is front-loaded with the core purpose, followed by usage context, pricing note, and return format. It is informative without being verbose, though the examples could be integrated more concisely.

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

Completeness4/5

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

Given the simple tool with two parameters, full schema coverage, and no output schema, the description adequately explains behavior and return format. It covers the necessary context for an AI agent to use the tool correctly.

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

Parameters3/5

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

Schema coverage is 100% with both parameters fully described. The description provides examples like 'e.g. USD, EUR' for 'from' and 'e.g. INR, AED' for 'to', which repeats schema content. Little additional semantic value beyond what the schema offers.

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

Purpose5/5

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

The description clearly states the tool gets the current exchange rate between two currencies, providing specific examples like USD, EUR, INR, AED. It is distinct from sibling tools which focus on shipping costs, tariffs, schedules, etc., making it easy to identify the tool's unique function.

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

Usage Guidelines4/5

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

The description explains the tool is useful for converting shipping costs quoted in different currencies to a common currency for comparison. It provides a concrete use case, but does not explicitly state when not to use it or mention alternative tools for currency conversion.

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

shippingrates_inland_compareCompare Inland Haulage RatesA
Read-onlyIdempotent
Inspect

Compare inland haulage rates across ALL available carriers for a port-to-ICD/city pair — sorted cheapest first.

Use this for carrier selection on inland legs — answers "which carrier offers the cheapest trucking/rail from port X to city Y?" For a single carrier's rates, use shippingrates_inland_haulage instead. To discover what routes exist, use shippingrates_inland_search first.

PAID: $0.08/call via x402 (USDC on Base or Solana). Without payment, returns 402 with payment instructions.

Returns: Array of { carrier, mode, container_type, rate, currency, transit_days, weight_bracket } sorted by rate ascending.

ParametersJSON Schema
NameRequiredDescriptionDefault
originYesOrigin port UN/LOCODE — e.g. INNSA (Nhava Sheva), CNSHA (Shanghai), SGSIN (Singapore)
x_paymentNox402 payment proof header
destinationYesDestination city or ICD code
container_typeNoContainer type (default: 20GP)
Behavior5/5

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

Adds critical behavioral context beyond annotations: payment requirement ($0.08/call via x402), failure mode (returns 402 without payment), and return format. Annotations already indicate read-only and idempotent, description provides operational details.

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

Conciseness5/5

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

Compact and well-structured. Front-loaded with purpose and usage. Each sentence is informative: sorting order, alternative tool, payment info, return format. No redundant phrases.

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

Completeness5/5

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

Comprehensive: covers parameters, return format, payment, and usage flow. Despite no output schema, return array is described. Prerequisite tool mentioned. Adequate for complex multi-carrier comparison tool.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. Description adds value by providing examples for origin (e.g., INNSA) and destination, and notes default for container_type (20GP). Slight improvement over schema alone.

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

Purpose5/5

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

Clearly states verb (compare), resource (inland haulage rates), scope (across all carriers for port-to-ICD/city pair, sorted cheapest first). Distinguishes from sibling tool shippingrates_inland_haulage for single carrier rates.

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

Usage Guidelines5/5

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

Explicitly states when to use (carrier selection on inland legs) and when not to use (for single carrier rates, use alternative). Also suggests prerequisite: use shippingrates_inland_search first to discover routes.

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

shippingrates_inland_haulageGet Inland Haulage RatesA
Read-onlyIdempotent
Inspect

Get inland haulage (trucking/rail) rates for moving containers between a port and an inland location.

Use this when you know the specific origin port and destination and need rate quotes. Returns route-specific rates by container type including base rate, fuel surcharges, and estimated transit times.

To discover what routes exist first, use shippingrates_inland_search. To compare rates across all carriers for the same route, use shippingrates_inland_compare.

PAID: $0.05/call via x402 (USDC on Base or Solana). Without payment, returns 402 with payment instructions.

Returns: Array of { carrier, origin, destination, container_type, rate, fuel_surcharge, total, currency, transit_days, mode }.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoTransport mode filter (PRE or ONC)
originYesOrigin port UN/LOCODE (e.g. INNSA, INMAA)
x_paymentNox402 payment proof header
destinationYesInland destination city name (e.g. Ahmedabad, Delhi)
container_typeNoContainer type filter — e.g. 20DV, 40HC, 20RF
Behavior5/5

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 payment requirement ($0.05/call, x402) and error on non-payment (402). This exceeds annotation coverage and provides critical behavioral context.

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

Conciseness5/5

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

Description is concise (~8 lines) and front-loaded with core purpose. Every sentence is informative: use case, alternatives, payment, return structure. No fluff or repetition.

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

Completeness4/5

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

For a 5-parameter tool without output schema, description explains return format (array of objects with listed fields). It covers payment, failure behavior, and common container types. Minor gap: no mention of error codes for invalid input, but overall sufficient for selection and invocation.

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

Parameters4/5

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

Schema description coverage is 100% with all parameters described (origin UN/LOCODE, destination city name, container type enum etc.). Description adds value by listing return fields (carrier, rate, surcharge, total), which helps agents understand how parameters relate to output. Slightly above baseline 3 due to this added context.

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

Purpose5/5

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

The description clearly states the verb 'Get' and resource 'inland haulage rates' for moving containers between port and inland locations. It distinguishes itself from siblings shippingrates_inland_search and shippingrates_inland_compare by specifying its use case.

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

Usage Guidelines5/5

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

Explicitly states when to use: 'when you know the specific origin port and destination and need rate quotes.' Also provides alternatives: 'use shippingrates_inland_search' to discover routes and 'shippingrates_inland_compare' to compare carriers. This offers clear guidance on 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.

shippingrates_linesList Shipping LinesA
Read-onlyIdempotent
Inspect

List all shipping lines in the ShippingRates database with per-country record counts.

Use this to discover which carriers and countries have data before querying specific tools. Returns each carrier's name, slug, SCAC code, and a breakdown of available D&D tariff and local charge records per country.

FREE — no payment required.

Returns: Array of { line, slug, scac, countries: [{ code, name, dd_records, lc_records }] }

Related tools: Use shippingrates_stats for aggregate totals, shippingrates_search for keyword-based discovery.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior5/5

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

Annotations already provide readOnlyHint, idempotentHint, destructiveHint. Description adds value with 'FREE — no payment required' and details the return format (array with fields). No contradiction.

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

Conciseness5/5

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

Very concise: three sentences plus return type line. Front-loaded with purpose, then usage, then structure. No redundancy.

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

Completeness5/5

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

Given no parameters and no output schema, the description fully covers what the tool does, its return structure, and when to use it. Complete for its complexity.

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

Parameters4/5

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

No parameters in input schema, so baseline is 4. Description doesn't need to add parameter info. It correctly omits param details as none exist.

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

Purpose5/5

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

Clear verb 'List' with specific resource 'shipping lines in the ShippingRates database with per-country record counts'. Distinguishes from siblings by mentioning 'shippingrates_stats' and 'shippingrates_search' for different purposes.

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

Usage Guidelines5/5

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

Explicitly states when to use: 'Use this to discover which carriers and countries have data before querying specific tools.' Provides alternatives: 'Use shippingrates_stats for aggregate totals, shippingrates_search for keyword-based discovery.'

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

shippingrates_local_chargesGet Port Local ChargesA
Read-onlyIdempotent
Inspect

Get local charges at a port for a specific carrier — Terminal Handling Charges (THC), documentation fees (BL/DO), seal fees, and other port-specific charges.

Use this when calculating total shipping costs at origin or destination. Combine with shippingrates_dd_calculate for a complete port cost picture, or use shippingrates_total_cost for an all-in-one landed cost estimate.

PAID: $0.05/call via x402 (USDC on Base or Solana). Without payment, returns 402 with payment instructions.

Returns: Array of { charge_type, charge_name, amount, currency, container_type, direction } for all applicable charges at the port.

ParametersJSON Schema
NameRequiredDescriptionDefault
lineYesShipping line slug — one of: maersk, msc, cma-cgm, hapag-lloyd, one, cosco
countryYesISO 2-letter country code
port_codeNoPort code to filter (e.g. INMUN for Mumbai)
x_paymentNox402 payment proof header
Behavior5/5

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

Annotations already indicate readOnlyHint=true, idempotentHint=true, destructiveHint=false. Description adds payment requirement ($0.05/call, 402 response without payment) and return format, which are 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.

Conciseness5/5

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

Well-structured in three paragraphs with front-loaded purpose, followed by usage guidance and payment info. Every sentence is informative and there is no fluff.

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

Completeness5/5

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

Despite no output schema, description specifies the return format (array of objects with fields). Combined with full parameter schema and annotations, the tool is fully specified for correct invocation.

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

Parameters3/5

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

Input schema has 100% coverage with descriptions for all 4 parameters. Description does not add new semantic meaning beyond what the schema provides, so baseline 3 is appropriate.

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

Purpose5/5

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

The description precisely states the tool retrieves local charges at a port for a specific carrier, listing specific charge types (THC, documentation fees, seal fees). This clearly distinguishes it from sibling tools like shippingrates_rates or shippingrates_surcharges.

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

Usage Guidelines5/5

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

Explicitly advises when to use ('when calculating total shipping costs at origin or destination'), and provides specific alternatives: combine with shippingrates_dd_calculate or use shippingrates_total_cost for an all-in-one estimate.

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

shippingrates_portPort LookupA
Read-onlyIdempotent
Inspect

Look up port details by UN/LOCODE — name, country, coordinates, timezone, and terminal facilities.

Use this to validate port codes or get port metadata. If you don't know the UN/LOCODE, use shippingrates_search with the port or city name first.

PAID: $0.01/call via x402 (USDC on Base or Solana). Without payment, returns 402 with payment instructions.

Returns: { port_code, port_name, country, country_code, lat, lon, timezone, facilities }

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesUN/LOCODE port code — e.g. "INNSA", "AEJEA", "SGSIN"
x_paymentNox402 payment proof header
Behavior5/5

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

Annotations indicate readOnlyHint=true and idempotentHint=true, but the description adds critical behavioral info: the tool is PAID ($0.01/call via x402) and without payment returns a 402 status with payment instructions. This goes beyond annotations and is essential for an agent to use the tool correctly.

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

Conciseness5/5

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

The description is concise (about 100 words), front-loads the purpose, and each sentence adds value: purpose, usage instructions, alternative tool, payment details, and return fields. No redundant or irrelevant text.

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

Completeness5/5

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

Given the tool's simple lookup nature and no output schema, the description provides all necessary context: what it does, how to use it (with code), alternative if code unknown, payment requirement, and a list of return fields. It is complete for an agent to correctly invoke the tool.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters. The description provides example UN/LOCODE values but adds no new constraints or meanings beyond what's in the schema. The payment parameter is not elaborated in the description. Adequate but not exceptional.

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

Purpose5/5

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

The description clearly states the tool's purpose: lookup port details by UN/LOCODE, listing specific data fields. It also differentiates from sibling 'shippingrates_search' by specifying that this tool requires the UN/LOCODE, not a name or city.

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

Usage Guidelines5/5

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

Explicitly states when to use this tool ('validate port codes or get port metadata') and when to use an alternative ('If you don't know the UN/LOCODE, use shippingrates_search...'). Provides clear context for choosing this tool over siblings.

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

shippingrates_ratesFreight RatesA
Read-onlyIdempotent
Inspect

Get ocean freight rates between two ports, optionally filtered by container type.

Use this to compare base freight costs across carriers for a specific trade lane. Returns current spot rates and contract rate indicators with trend data. For a complete cost picture including surcharges and local charges, use shippingrates_total_cost instead.

PAID: $0.03/call via x402 (USDC on Base or Solana). Without payment, returns 402 with payment instructions.

Returns: Array of { carrier, origin, destination, container_type, rate, currency, effective_date, trend }.

ParametersJSON Schema
NameRequiredDescriptionDefault
originYesOrigin port UN/LOCODE — e.g. INNSA (Nhava Sheva), CNSHA (Shanghai), SGSIN (Singapore)
x_paymentNox402 payment proof header
destinationYesDestination port UN/LOCODE — e.g. AEJEA (Jebel Ali), NLRTM (Rotterdam), USNYC (New York)
container_typeNoContainer type filter — e.g. 20DV, 40HC, 20RF
Behavior4/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true. Description adds that it requires payment ($0.03/call) and returns 402 without payment, plus specifies return format. 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.

Conciseness5/5

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

Three compact paragraphs each serving a distinct purpose: purpose, usage guidance, and payment/return details. No wasted words.

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

Completeness5/5

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

Given no output schema, description specifies return structure (array of fields). Payment info and alternative tool are included. Annotations cover safety. Highly complete for a read-only query tool.

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

Parameters3/5

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

Schema coverage is 100%, so baseline 3 is appropriate. Description mentions optional container type filter but does not add new semantics beyond schema descriptions.

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

Purpose5/5

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

The description starts with 'Get ocean freight rates between two ports, optionally filtered by container type.' This is a specific verb+resource+scope, clearly distinguishing the tool from siblings like shippingrates_total_cost.

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

Usage Guidelines5/5

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

Explicitly states when to use (compare base freight costs) and when not (for complete cost, use total_cost). Provides clear alternatives.

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

shippingrates_regulatoryRegulatory UpdatesA
Read-onlyIdempotent
Inspect

Get recent shipping regulatory updates and compliance requirements for a specific country — customs regulations, documentation requirements, trade restrictions, and policy changes.

Use this to stay current on regulatory changes that may affect shipments to/from a country.

PAID: $0.01/call via x402 (USDC on Base or Solana). Without payment, returns 402 with payment instructions.

Returns: Array of { title, description, effective_date, impact_level, category, country }.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default: 10)
countryYesISO 2-letter country code
x_paymentNox402 payment proof header
Behavior5/5

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

Annotations indicate safe read operations. Description adds payment requirement ($0.01/call, x402), failure behavior (402 with instructions), and return structure. No contradiction.

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

Conciseness5/5

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

Concise, purpose is first, then usage, then payment, then return. No unnecessary words.

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

Completeness5/5

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

Complete for a 3-parameter tool with no output schema: covers purpose, usage, payment, return format, and behavioral notes.

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

Parameters3/5

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

Schema coverage is 100%, so schema fully documents parameters. Description does not add extra parameter details, meeting the baseline expectation.

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

Purpose5/5

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

Description clearly states the tool retrieves regulatory updates for a specific country, listing categories. It is distinct from siblings which cover tariffs, congestion, rates, etc.

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

Usage Guidelines4/5

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

Explicitly advises using it to stay current on regulatory changes. Does not mention when not to use or alternatives, but context makes application clear.

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

shippingrates_reliabilitySchedule ReliabilityA
Read-onlyIdempotent
Inspect

Get schedule reliability metrics for a carrier — on-time performance percentage, average delay in days, and sample size.

Use this for carrier selection and benchmarking — answers "how reliable is this carrier on this trade lane?" On-time is defined as arriving within ±1 day of scheduled ETA (industry standard per Sea-Intelligence).

PAID: $0.02/call via x402 (USDC on Base or Solana). Without payment, returns 402 with payment instructions.

Returns: { line, trade_lane, on_time_pct, avg_delay_days, sample_size, period }.

ParametersJSON Schema
NameRequiredDescriptionDefault
lineYesShipping line slug — one of: maersk, msc, cma-cgm, hapag-lloyd, one, cosco
x_paymentNox402 payment proof header
trade_laneNoTrade lane filter — e.g. 'Asia-Europe', 'Transpacific', 'Asia-Middle East'
Behavior5/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so safety is clear. The description adds valuable behavioral info: payment requirement ($0.02/call via x402) and error response for non-payment, plus a precise definition of on-time performance. 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.

Conciseness5/5

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

The description is concise (four sentences) and well-structured: function and outputs, use case and definition, payment info, return format. Every sentence is necessary and no fluff.

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

Completeness5/5

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

Given no output schema, the description explicitly lists return fields. It covers special behavior (payment), usage context, and metric definition. All necessary information is present for an agent to use the tool correctly.

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

Parameters3/5

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

Schema coverage is 100%, with all parameters described. The description does not add new parameter-level details beyond the schema, but it provides broader context about output structure and definition. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'Get' and the resource 'schedule reliability metrics for a carrier', specifying outputs like on-time performance percentage, average delay, and sample size. It distinguishes from sibling tools by focusing on reliability metrics, a unique aspect among the many shipping tools.

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

Usage Guidelines4/5

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

The description explicitly recommends use for carrier selection and benchmarking, and defines 'on-time' with industry standard. However, it does not provide explicit when-not-to-use or alternative tools, though the context is clear.

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

shippingrates_risk_scoreRoute Risk AssessmentA
Read-onlyIdempotent
Inspect

Get a composite risk score (0-100) for a shipping route — combines port congestion, active disruption news, and chokepoint impact analysis (Hormuz, Suez, Bab el-Mandeb, Panama Canal).

Use this for route risk screening — answers "how risky is this trade lane right now?" Scores above 70 indicate elevated risk. For detailed congestion metrics, use shippingrates_congestion. For news detail, use shippingrates_congestion_news.

PAID: $0.10/call via x402 (USDC on Base or Solana). Without payment, returns 402 with payment instructions.

Returns: { origin, destination, risk_score, risk_level, congestion_factor, disruption_factor, chokepoints_affected[], recommendation }.

ParametersJSON Schema
NameRequiredDescriptionDefault
originYesOrigin port UN/LOCODE — e.g. INNSA (Nhava Sheva), CNSHA (Shanghai), SGSIN (Singapore)
x_paymentNox402 payment proof header
destinationYesDestination port UN/LOCODE — e.g. AEJEA (Jebel Ali), NLRTM (Rotterdam), USNYC (New York)
Behavior5/5

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

Annotations declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. Description adds payment requirement and explains without payment returns 402 with instructions. 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.

Conciseness5/5

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

Concise, front-loaded with purpose, then usage guidance, payment info, return format. Each sentence adds value with no waste.

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

Completeness4/5

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

Covers purpose, usage guidance, payment, and return fields. Lacks example call or deeper calculation details, but sufficient for a tool with good schema coverage.

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

Parameters4/5

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

Schema coverage 100% with detailed descriptions. Description does not add param-specific info beyond schema but compensates by describing return structure, which is missing from output schema.

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

Purpose5/5

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

Clearly states it provides a composite risk score (0-100) for a shipping route, combining port congestion, disruption news, and chokepoint impact. Differentiates from siblings by naming specific alternatives for congestion and news.

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

Usage Guidelines5/5

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

Explicitly says when to use ('for route risk screening') and when not ('for detailed congestion metrics, use shippingrates_congestion. For news detail, use shippingrates_congestion_news'). Provides a threshold (scores above 70 indicate elevated risk).

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

shippingrates_statsShippingRates Database StatisticsA
Read-onlyIdempotent
Inspect

Get current statistics for the ShippingRates shipping intelligence database.

Use this as a starting point to understand what data is available before calling other tools. Returns record counts for D&D tariffs, local charges, transit schedules, freight rates, surcharges, ports, shipping lines, countries, and the last data refresh timestamp.

FREE — no payment required.

Returns: { tariff_records, ports, transit_schedules, freight_rates, local_charges, shipping_lines, countries, last_scrape (ISO datetime) }

Related tools: Use shippingrates_lines for per-carrier breakdowns, shippingrates_search for keyword discovery.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

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

Annotations already indicate read-only, idempotent, non-destructive nature. The description adds behaviorally relevant details: claims it's FREE, returns a specific object with fields like last_scrape (ISO datetime), and positions as a statistics gathering tool.

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

Conciseness5/5

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

Three sentences: purpose, usage guidance, return fields. Front-loaded with purpose, no fluff. Each sentence adds value.

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

Completeness5/5

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

Given no parameters, no output schema, and good annotations, the description fully explains the tool's role, return format, and when to use it relative to siblings. Complete for a start-point statistics tool.

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

Parameters4/5

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

No parameters exist, and schema coverage is 100%. With zero parameters, baseline is 4. The description doesn't need to add parameter info, and it doesn't mislead.

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

Purpose5/5

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

The description clearly states it gets current statistics for the ShippingRates database, listing specific data categories like tariffs, charges, schedules, etc. It distinguishes from sibling tools by positioning itself as a starting point.

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

Usage Guidelines5/5

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

Explicitly says to use it as a starting point before other tools, and mentions related tools (shippingrates_lines, shippingrates_search) as alternatives for per-carrier breakdowns and keyword discovery.

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

shippingrates_surchargesShipping SurchargesA
Read-onlyIdempotent
Inspect

Get carrier-specific surcharges — BAF (Bunker Adjustment Factor), CAF (Currency Adjustment Factor), PSS (Peak Season Surcharge), EBS (Emergency Bunker Surcharge), and more.

Use this to understand surcharge exposure for a carrier in a specific country/direction. These are charges added on top of base freight rates. For a complete cost breakdown, use shippingrates_total_cost which includes surcharges automatically.

PAID: $0.02/call via x402 (USDC on Base or Solana). Without payment, returns 402 with payment instructions.

Returns: Array of { surcharge_type, surcharge_name, amount, currency, per_unit, effective_from, effective_to, direction }.

ParametersJSON Schema
NameRequiredDescriptionDefault
lineYesShipping line slug — one of: maersk, msc, cma-cgm, hapag-lloyd, one, cosco
countryNoISO 2-letter country code
directionNoTrade direction — 'import' or 'export'
x_paymentNox402 payment proof header
Behavior4/5

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

Annotations already indicate readOnly, idempotent, non-destructive. Description adds payment requirement ('PAID: $0.02/call', returns 402 without payment) and return format, which are 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.

Conciseness5/5

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

Three well-structured paragraphs: first lists surcharges, second gives usage and alternative, third mentions payment and return format. Every sentence is valuable and front-loaded.

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

Completeness4/5

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

No output schema, but description provides return format (array of objects with specific fields). Covers payment, alternative tool, and structure. Could mention pagination or error states, but it's fairly complete.

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

Parameters3/5

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

Schema coverage is 100% with parameter descriptions. Description does not add significant meaning beyond schema; it mentions 'carrier-specific' and 'country/direction' but these are already in schema. Baseline 3 is appropriate.

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

Purpose5/5

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

Description clearly states: 'Get carrier-specific surcharges' with examples (BAF, CAF, PSS, EBS) and specifies they are on top of base freight rates. Distinguishes from sibling tool shippingrates_total_cost.

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

Usage Guidelines5/5

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

Explicitly says 'Use this to understand surcharge exposure for a carrier in a specific country/direction' and provides alternative: 'For a complete cost breakdown, use shippingrates_total_cost which includes surcharges automatically.'

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

shippingrates_total_costFull Landed Cost CalculatorA
Read-onlyIdempotent
Inspect

Calculate the full landed cost of shipping a container — combines freight rates, surcharges, local charges (origin + destination), demurrage/detention estimates, and transit time into one comprehensive estimate.

This is the most comprehensive tool — a single call replaces 5-6 individual queries. Use this when the user needs an all-in cost estimate for a specific shipment. For individual cost components, use the dedicated tools: shippingrates_rates (freight), shippingrates_surcharges, shippingrates_local_charges, shippingrates_dd_calculate (detention).

PAID: $0.15/call via x402 (USDC on Base or Solana). Without payment, returns 402 with payment instructions.

Returns: { freight: { rate, currency }, surcharges: { total, items[] }, local_charges: { origin: { total, items[] }, destination: { total, items[] } }, detention: { days, cost, currency }, transit: { days, service }, total_landed_cost, currency }

ParametersJSON Schema
NameRequiredDescriptionDefault
lineYesShipping line slug — one of: maersk, msc, cma-cgm, hapag-lloyd, one, cosco
originYesOrigin port UN/LOCODE — e.g. INNSA (Nhava Sheva), CNSHA (Shanghai), SGSIN (Singapore)
x_paymentNox402 payment proof header
destinationYesDestination port or inland location
container_typeYesISO 6346 container type — 20DV, 40DV, 40HC, 20RF, 40RF, 20OT, 40OT, 20FR, 40FR
detention_daysNoExpected detention days (default: 0)
Behavior5/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint. Description adds paid nature ($0.15/call), payment failure behavior (402), and fully specifies return structure, going 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.

Conciseness5/5

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

Concise and well-structured: starts with purpose, then usage guidance, payment, and output format. Every sentence adds value without redundancy.

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

Completeness5/5

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

Given 6 parameters, no output schema, the description compensates by detailing the output structure, payment context, and usage boundaries. No gaps for an agent to use the tool correctly.

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

Parameters3/5

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

Input schema has 100% description coverage, so the description adds little extra meaning beyond what's already in the schema. The description mentions payment instruction but not as a parameter detail.

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

Purpose5/5

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

The description clearly states it calculates the full landed cost of shipping a container, combines multiple cost components, and explicitly distinguishes from sibling tools by noting it replaces 5-6 individual queries.

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

Usage Guidelines5/5

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

Explicitly states when to use (all-in cost estimate) and when not to (for individual components, use dedicated tools). Also mentions payment requirement.

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

shippingrates_transitTransit Time LookupA
Read-onlyIdempotent
Inspect

Get estimated ocean transit times between two ports across all available carriers.

Use this for quick transit time comparison between ports — answers "how long does it take to ship from A to B?" Returns carrier-specific transit durations, service types, and frequencies.

For detailed routing with transhipment ports and service codes, use shippingrates_transit_schedules instead.

PAID: $0.02/call via x402 (USDC on Base or Solana). Without payment, returns 402 with payment instructions.

Returns: Array of { carrier, transit_days, service_type, frequency, direct_or_transhipment }.

ParametersJSON Schema
NameRequiredDescriptionDefault
originYesOrigin port UN/LOCODE — e.g. INNSA (Nhava Sheva), CNSHA (Shanghai), SGSIN (Singapore)
x_paymentNox402 payment proof header
destinationYesDestination port UN/LOCODE — e.g. AEJEA (Jebel Ali), NLRTM (Rotterdam), USNYC (New York)
Behavior5/5

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

Annotations (readOnlyHint, idempotentHint, destructiveHint) indicate a safe, read-only tool. The description adds critical context about payment requirement: 'PAID: $0.02/call via x402... Without payment, returns 402 with payment instructions.' It also describes the return format. 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.

Conciseness5/5

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

Five concise sentences, each adding value: purpose, primary use case, sibling alternative, payment info, and return format. Front-loaded with main purpose. No fluff.

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

Completeness5/5

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

Despite no output schema, the description lists fields returned (carrier, transit_days, etc.). It covers payment behavior, usage guidance, and parameter meaning. Complete for a tool with simple inputs and well-annotated schema.

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

Parameters3/5

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

Schema description coverage is 100% with clear parameter descriptions. The description does not add substantial new meaning beyond reinforcing the purpose of origin and destination. Baseline 3 is appropriate as schema does the heavy lifting.

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

Purpose5/5

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

The description clearly states 'Get estimated ocean transit times between two ports across all available carriers', providing a specific verb and resource. It distinguishes itself from the sibling shippingrates_transit_schedules by noting it is for quick comparison while the sibling handles detailed routing.

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

Usage Guidelines5/5

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

Explicitly tells when to use: 'Use this for quick transit time comparison between ports — answers "how long does it take to ship from A to B?"' and when not to: 'For detailed routing with transhipment ports and service codes, use shippingrates_transit_schedules instead.'

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

shippingrates_transit_schedulesTransit Schedules by CarrierA
Read-onlyIdempotent
Inspect

Get detailed transit schedules for a specific carrier — service codes, routing via transhipment ports, transit days, and sailing frequency.

Use this when you need routing details beyond just transit time — e.g., which transhipment ports are used, what service string applies, or weekly frequency. For a quick transit time comparison across all carriers, use shippingrates_transit instead.

PAID: $0.03/call via x402 (USDC on Base or Solana). Without payment, returns 402 with payment instructions.

Returns: Array of { carrier, service_code, origin, destination, transit_days, transhipment_ports[], frequency, direct }.

ParametersJSON Schema
NameRequiredDescriptionDefault
originNoOrigin port UN/LOCODE filter
carrierYesCarrier SCAC code or slug
max_daysNoMaximum transit days filter
x_paymentNox402 payment proof header
destinationNoDestination port UN/LOCODE filter
Behavior4/5

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

Annotations already indicate read-only and idempotent. Description adds payment requirement ($0.03/call via x402) and behavior if unpaid (returns 402 with instructions), plus the return structure. This provides valuable 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.

Conciseness5/5

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

Four sentences, each with a distinct purpose: purpose statement, usage guidance, payment info, and return format. No redundant or unnecessary content.

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

Completeness5/5

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

For a tool with 5 parameters, 100% schema coverage, and no output schema, the description provides the return structure, usage context, payment details, and clear purpose. It covers all necessary aspects for an agent to decide and invoke correctly.

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

Parameters3/5

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

Schema coverage is 100% with parameter descriptions already present. The description repeats that origin and destination are UN/LOCODE filters and carrier is SCAC code/slug, but adds no new semantic details beyond the schema.

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

Purpose5/5

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

Description clearly states the tool returns detailed transit schedules including service codes, transhipment ports, transit days, and frequency. It uses specific verb 'Get' and distinctively lists the detailed fields, differentiating from the sibling tool shippingrates_transit for quick transit time comparison.

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

Usage Guidelines5/5

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

Explicitly states when to use this tool ('when you need routing details beyond just transit time') and when not to ('for a quick transit time comparison across all carriers, use shippingrates_transit instead'), providing a clear alternative.

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

shippingrates_vessel_scheduleVessel ScheduleA
Read-onlyIdempotent
Inspect

Get upcoming vessel arrivals and departures at a specific port.

Use this to check what vessels are expected at a port — useful for booking planning and tracking. Returns vessel names, carriers, ETAs/ETDs, and service routes.

For transit time estimates between two ports, use shippingrates_transit. For detailed service-level routing, use shippingrates_transit_schedules.

PAID: $0.02/call via x402 (USDC on Base or Solana). Without payment, returns 402 with payment instructions.

Returns: Array of { vessel_name, carrier, voyage, eta, etd, service, from_port, to_port }.

ParametersJSON Schema
NameRequiredDescriptionDefault
portYesUN/LOCODE port code — e.g. INNSA (Nhava Sheva), AEJEA (Jebel Ali), SGSIN (Singapore)
x_paymentNox402 payment proof header
days_aheadNoDays to look ahead (default: 14)
Behavior5/5

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

Discloses payment requirement ($0.02/call, unpaid returns 402 with instructions) and return structure (array of objects with fields), adding value beyond annotations which already indicate read-only and idempotent.

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

Conciseness5/5

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

Concise, front-loaded with main purpose, then usage, alternatives, payment, return format. No redundant sentences; all information earned its place.

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

Completeness5/5

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

Given no output schema, description provides return structure. Covers purpose, usage, payment, error handling, and parameter context. Complete for a 3-parameter tool with complex domain.

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

Parameters4/5

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

Schema coverage is 100% with descriptions for all parameters. Description adds port code examples (INNSA, AEJEA, SGSIN) and reinforces default for days_ahead, providing helpful context beyond schema.

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

Purpose5/5

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

Clearly states it gets vessel arrivals/departures at a port. Distinguishes from siblings by explicitly naming shippingrates_transit and shippingrates_transit_schedules for alternative use cases.

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

Usage Guidelines5/5

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

Explicitly says when to use (booking planning/tracking) and when not to (transit time estimates → use shippingrates_transit; detailed routing → use shippingrates_transit_schedules).

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

shippingrates_vessel_schedule_optionsVessel Schedule Options With CutoffsA
Read-onlyIdempotent
Inspect

Get carrier vessel/voyage schedule options between an origin and destination, including operational cutoff deadlines when the carrier source publishes them.

Use this for booking planning questions that need vessel details, voyage number, transshipment ports, ETA/ETD, and port/SI/VGM cutoffs. Missing cutoff fields remain null or absent; ShippingRates does not infer unpublished deadlines.

For port-call monitoring without cutoff details, use shippingrates_vessel_schedule.

PAID: $0.03/call via x402 (USDC on Base or Solana). Without payment, returns 402 with payment instructions.

Returns: { origin, destination, options: Array<{ carrier, vessel_name, vessel_imo, voyage_number, etd, eta, transshipment_ports, cutoffs, source_url }>, coverage }.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum schedule options to return (default: 50)
originYesOrigin UN/LOCODE — e.g. CNSHA, INNSA, SGSIN
carrierNoOptional carrier filter — e.g. cmacgm, hapag, maersk
x_paymentNox402 payment proof header
days_aheadNoDays to look ahead (default: 90)
destinationYesDestination UN/LOCODE — e.g. USLAX, DEHAM, AEJEA
Behavior5/5

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

Discloses that missing cutoff fields remain null, that it does not infer unpublished deadlines, and the payment behavior (returns 402 without payment). Annotations already indicate read-only, non-destructive, idempotent, but description adds operational constraints.

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

Conciseness5/5

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

Description is front-loaded with purpose, followed by usage guidance, payment info, and return structure. Every sentence adds value with no redundancy.

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

Completeness5/5

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

Given complexity (6 params, no output schema, many siblings), the description provides comprehensive context: purpose, when to use, payment, alternative tool, and return format. Annotations further support.

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

Parameters3/5

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

Schema coverage is 100% with good descriptions for all 6 parameters. The description adds minimal extra semantics beyond what the schema already provides, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states it gets carrier vessel/voyage schedule options between an origin and destination, including cutoff deadlines. It distinguishes from sibling shippingrates_vessel_schedule by specifying the inclusion of cutoffs.

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

Usage Guidelines5/5

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

Explicitly tells when to use (booking planning needing vessel details and cutoffs) and when not (port-call monitoring without cutoffs, pointing to sibling). Also mentions payment requirement and cost.

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

Discussions

No comments yet. Be the first to start the discussion!

Try in Browser

Your Connectors

Sign in to create a connector for this server.

Resources