Customs-Bridge
Server Details
Deterministic HS6/TARIC customs resolution engine and bilingual FTS5 nomenclature API for AI agents (UNE Node 04)
- Status
- Healthy
- Uptime
- 99.5% over 21 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2024-11-05
- URL
TDQS
Scored across 6 tools
Most tools have clearly distinct purposes, but resolve_hs_code and search_customs_nomenclature both concern looking up HS/TARIC codes, and calculate_customs_duties overlaps somewhat with resolve_cbam_and_antidumping on duty calculation. These boundaries are mostly clarified by descriptions but could still cause occasional misselection.
All six tools use consistent snake_case verb_noun-style naming (calculate_, check_, provision_, resolve_, search_), with no mixing of conventions. The pattern is predictable and readable.
Six tools is well-scoped for a focused EU customs compliance server; each tool covers a distinct capability without obvious redundancy. The API-key provisioning tool is slightly meta but does not bloat the set.
The surface covers core customs calculations, restrictions, HS/TARIC lookup, CBAM, and anti-dumping. Minor gaps exist for preferential origin, tariff quotas, or export controls, but agents can likely work around them.
Available Tools
6 toolscalculate_customs_dutiesAInspect
Calculates official EU customs duties (Common Customs Tariff / MFN) and import VAT for a given HS code and CIF customs value in EUR.
| Name | Required | Description | Default |
|---|---|---|---|
| hs_code | Yes | HS or TARIC code (e.g. 760421, 640411) | |
| origin_country | No | ISO-2 origin country code (default: CN) | |
| customs_value_eur | Yes | CIF customs value in EUR |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden. It usefully names the tariff regime (CCT/MFN) so the agent knows preferential treatment is not applied, but it omits whether the operation is read-only, whether any auth is needed, and whether results are advisory or binding. Some behavioral context, but clearly incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the tariff basis and input units are stated immediately and nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotations, so the description should ideally describe what is returned (duty rate, duty amount, VAT) and any caveats. The calculation scope is clear, but the return shape and operational details are left unspecified.
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 three parameters including defaults and formats. The description only restates hs_code and customs_value_eur at a high level and adds nothing about the optional origin_country's effect on the result (e.g. preferential rates), so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (calculates) and resource (official EU customs duties under Common Customs Tariff/MFN plus import VAT), and scopes the required inputs (HS code, CIF value in EUR). This is clearly distinguishable from siblings like resolve_hs_code or check_import_restrictions, which resolve codes or restrictions rather than computing duty amounts.
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 mention of 'EU' and 'MFN' implies the applicable context (EU imports, non-preferential rates), but there is no explicit when-to-use guidance and no routing to or away from sibling tools such as resolve_cbam_and_antidumping. Usage must be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_import_restrictionsCInspect
Checks mandatory EU import restrictions, document codes (CE, REACH, CBAM, CHED), and compliance directives.
| Name | Required | Description | Default |
|---|---|---|---|
| taric_code | Yes | HS or TARIC code | |
| origin_country | No | ISO-2 country code (default: CN) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. 'Checks' implies a read-only lookup, but nothing is said about authentication (a sibling provisions an API key), rate limits, whether results are point-in-time or cached, or how multiple restriction types are returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence naming the action and the categories of output, with no filler. It is slightly terse for a compliance-lookup tool but wastes nothing.
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 two-parameter read-only check with no output schema, the description covers what is being evaluated. It still omits when to use it, how origin_country (default CN) affects results, and what the caller should expect back.
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 both taric_code and origin_country are already documented in the schema. The description adds domain context about what is checked but no syntax or format detail beyond the schema, so the baseline 3 applies.
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 states a specific verb ('Checks') and resource ('EU import restrictions, document codes, compliance directives'), with concrete examples (CE, REACH, CBAM, CHED). It does not, however, differentiate itself from siblings like resolve_cbam_and_antidumping, which overlaps on the CBAM topic.
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?
There is no guidance on when to run this check versus calculate_customs_duties or resolve_cbam_and_antidumping, nor any stated prerequisites (e.g. needing a resolved TARIC code first). Usage is only implied by the domain wording.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
provision_free_api_keyBInspect
Provisions a free sandbox API key (50 credits) for agents to unlock advanced CBAM carbon calculations and factory-specific anti-dumping duty codes.
| Name | Required | Description | Default |
|---|---|---|---|
| use_case | No | Brief description of the intended usage | |
| developer_email | Yes | Business or developer email address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the sandbox nature and 50-credit grant, which is useful, but says nothing about whether an account is created, whether email verification or a confirmation step is required, rate limits, idempotency, or how/where the key is delivered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that leads with the action and resource. It is efficient, though the trailing benefit clause ('unlock advanced CBAM carbon calculations and factory-specific anti-dumping duty codes') is somewhat promotional rather than operational.
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?
This is a provisioning/mutation-style tool with no annotations and no output schema, so the description must explain the side effects and result. It omits what the caller receives (the key itself), whether state is created server-side, and any preconditions — leaving real gaps for an agent deciding whether to call it.
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% and both parameters are documented in the schema, so the baseline is 3. The description adds no syntax or format detail beyond the schema (e.g., no guidance on what a valid developer_email or a useful use_case looks like).
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 states a specific verb+resource ('Provisions a free sandbox API key') and adds scope detail (50 credits, what it unlocks). It is clearly distinguishable from the sibling calculation/lookup tools, though it never names or contrasts them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the phrase 'for agents to unlock advanced CBAM carbon calculations and factory-specific anti-dumping duty codes' suggests when you'd want it, but there is no explicit when-to-use/when-not-to-use guidance, no statement of prerequisites, and no mention of alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_cbam_and_antidumpingCInspect
Computes definitive EU anti-dumping duties and CBAM carbon financial obligations for steel, aluminium, and sensitive imports.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | No | UNE Developer or Enterprise API Key | |
| hs_code | Yes | HS or TARIC code (e.g. 7604, 7318, 7208) | |
| weight_kg | No | Net mass in kilograms (aliases: weight_net_kg, mass_kg) | |
| cif_value_eur | Yes | CIF customs value in EUR | |
| origin_country | No | ISO-2 origin country code (default: CN) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It conveys that duties computed are 'definitive' (a meaningful legal distinction) but says nothing about authentication (an api_key parameter exists), whether results are binding/estimates, rate limits, or failure behavior for unlisted codes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with zero filler, front-loading both outputs (duties and CBAM obligations) before the material scope. Nothing is repeated from the schema or wasted on preamble.
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?
This is a 5-parameter financial computation tool with no output schema and no annotations, so the description should explain what comes back (per-line duty amounts, CBAM cost breakdown, currency, totals). It instead stops at stating the domain, leaving the agent unable to anticipate the response or the auth flow.
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% (5/5 parameters documented, including the api_key and origin_country default), so the schema already does the heavy lifting. The description adds no parameter-level meaning such as accepted code formats or what omitting weight_kg does for CBAM calculation, so the baseline of 3 applies.
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 gives a specific verb (computes) and two concrete resources (EU anti-dumping duties and CBAM carbon financial obligations), plus the covered commodity scope (steel, aluminium, sensitive imports). An agent can tell this apart from the generic 'calculate_customs_duties' sibling by domain, though it never explicitly names or contrasts that sibling.
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?
There is no when-to-use guidance: nothing says when this tool should be chosen over calculate_customs_duties or check_import_restrictions, nor any preconditions (valid TARIC code, origin country required). Usage must be inferred entirely from the commodity scope in the sentence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_hs_codeBInspect
Resout l arborescence hierarchique et la designation officielle d un code SH6 ou TARIC.
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | Alias pour hs_code | |
| hs_code | No | Code SH ou TARIC |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose the useful behavioral fact that the tool returns a hierarchical path plus the official designation rather than a flat match, but it omits whether this is a read-only lookup, whether it requires auth, and error behavior for invalid codes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the verb and scope come first. It is terse enough that nothing is wasted, though there is no room for the usage details that are missing.
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?
This is a lookup tool with no output schema, so the description must sketch the return shape. It names the two returns (hierarchy, official designation) but gives no structure for them, and with no annotations there is nothing else covering behavior.
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 both the hs_code and its code alias. The description's mention of 'code SH6 ou TARIC' narrows the accepted value types slightly but adds no format, syntax, or precedence guidance for the alias.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (resolves) and two concrete outputs (hierarchical tree and official designation) for a specific resource (HS6 or TARIC code). It is distinguishable from siblings like search_customs_nomenclature or calculate_customs_duties, though it never names or contrasts with them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus the alternatives (search_customs_nomenclature, resolve_cbam_and_antidumping), nor any precondition or scenario guidance. Usage can only be inferred from the verb 'resolve'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_customs_nomenclatureCInspect
Recherche textuelle bilingue (FR/EN) dans la nomenclature TARIC via indexation FTS5.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | fr | |
| limit | No | ||
| query | Yes | Terme de recherche |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, yet it only names the search backend (FTS5) and the bilingual scope. It says nothing about matching semantics (stemming, partial words, ranking), result ordering, or how the default limit of 5 behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; scope (bilingual FR/EN, TARIC) comes first. The FTS5 detail is arguably implementation trivia, but it does not bloat the definition.
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?
A three-parameter search tool with no annotations, no output schema, and only one documented parameter leaves the agent guessing about result shape, ranking, and pagination behavior. Given the missing structured coverage, the description should say considerably 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 33%; only 'query' is documented, and 'limit' is entirely unexplained in both schema and description. The FR/EN mention implicitly informs the 'lang' enum, but the description adds no syntax, matching, or count semantics beyond that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: textual search in the TARIC nomenclature. It is clearly distinguishable in kind from calculate_customs_duties or check_import_restrictions, but never names or contrasts with the closest sibling, resolve_hs_code, so an agent must infer which lookup path to take.
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 when-to-use guidance at all: nothing says to prefer this for fuzzy/keyword lookups versus resolve_hs_code for exact code resolution, and no prerequisites or exclusions are given. The agent only learns what the tool is, not when to reach for it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Changed
resolve_cbam_and_antidumping3 fields changed- changed
Input schema / properties / api_key / descriptionPrevious value: -"UNE Developer or Enterprise API Key (leave empty for trial tier)"New value: +"UNE Developer or Enterprise API Key" - added
Input schema / properties / weight_kgAdded value: +{ + "description": "Net mass in kilograms (aliases: weight_net_kg, mass_kg)", + "type": "number" +} - removed
Input schema / properties / weight_net_kgRemoved value: -{ - "description": "Net mass in kilograms (required for CBAM carbon computation)", - "type": "number" -}
6 tool updates
- Changed
calculate_customs_duties3 fields changed- changed
Input schema / properties / customs_value_eur / descriptionPrevious value: -"Customs CIF value in EUR (cost + insurance + freight to EU border)"New value: +"CIF customs value in EUR" - changed
Input schema / properties / hs_code / descriptionPrevious value: -"HS code or TARIC code (2, 4, 6 or 10 digits, e.g. 640411 or 6404110000)"New value: +"HS or TARIC code (e.g. 760421, 640411)" - changed
Input schema / properties / origin_country / descriptionPrevious value: -"ISO-2 country code of export/origin (e.g. CN, US, VN). Default: third country (MFN rate)"New value: +"ISO-2 origin country code (default: CN)"
- Changed
check_import_restrictions2 fields changed- changed
Input schema / properties / origin_country / descriptionPrevious value: -"Two-letter ISO country code of origin (e.g., CN, US, JP). Default: CN"New value: +"ISO-2 country code (default: CN)" - changed
Input schema / properties / taric_code / descriptionPrevious value: -"6-digit HS code or 10-digit TARIC code (e.g., 8504403000, 7208, 8541)"New value: +"HS or TARIC code"
- Added
provision_free_api_key - Added
resolve_cbam_and_antidumping - Changed
resolve_hs_code1 field changed- changed
Input schema / properties / hs_code / descriptionPrevious value: -"Code SH (6 chiffres) ou TARIC (10 chiffres) a analyser (ex: 854143, 8501710000)"New value: +"Code SH ou TARIC"
- Changed
search_customs_nomenclature3 fields changed- removed
Input schema / properties / lang / descriptionRemoved value: -"Langue de recherche" - removed
Input schema / properties / limit / descriptionRemoved value: -"Nombre maximal de resultats" - changed
Input schema / properties / query / descriptionPrevious value: -"Terme de recherche en francais ou anglais (ex: photovoltaic, cafe, aluminium, lithium)"New value: +"Terme de recherche"
2 tool updates
- Changed
resolve_hs_code1 field changed- changed
Input schema / properties / hs_code / descriptionPrevious value: -"Code SH (6 chiffres) ou TARIC (10 chiffres) à analyser (ex: \"854143\", \"8501710000\")"New value: +"Code SH (6 chiffres) ou TARIC (10 chiffres) a analyser (ex: 854143, 8501710000)"
- Changed
search_customs_nomenclature2 fields changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Nombre maximal de résultats"New value: +"Nombre maximal de resultats" - changed
Input schema / properties / query / descriptionPrevious value: -"Terme de recherche en français ou anglais (ex: \"photovoltaic\", \"café\", \"aluminium\", \"lithium\")"New value: +"Terme de recherche en francais ou anglais (ex: photovoltaic, cafe, aluminium, lithium)"
1 tool update
- Added
check_import_restrictions
1 tool update
- Added
calculate_customs_duties
2 tool updates
- Changed
resolve_hs_code2 fields changed- added
Input schema / properties / codeAdded value: +{ + "description": "Alias pour hs_code", + "type": "string" +} - removed
Input schema / requiredRemoved value: -[ - "hs_code" -]
- Changed
search_customs_nomenclature1 field changed- changed
Input schema / properties / lang / descriptionPrevious value: -"Langue de la recherche"New value: +"Langue de recherche"
2 tool updates
- Changed
resolve_hs_code3 fields changed- removed
Input schema / properties / codeRemoved value: -{ - "description": "Code numérique à résoudre (ex: \"850440\" pour convertisseurs statiques, \"841290\")", - "type": "string" -} - added
Input schema / properties / hs_codeAdded value: +{ + "description": "Code SH (6 chiffres) ou TARIC (10 chiffres) à analyser (ex: \"854143\", \"8501710000\")", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "code" -]New value: +[ + "hs_code" +]
- Changed
search_customs_nomenclature4 fields changed- added
Input schema / properties / langAdded value: +{ + "default": "fr", + "description": "Langue de la recherche", + "enum": [ + "fr", + "en" + ], + "type": "string" +} - added
Input schema / properties / limit / defaultAdded value: +5 - changed
Input schema / properties / limit / descriptionPrevious value: -"Nombre maximal de résultats (défaut: 5)"New value: +"Nombre maximal de résultats" - changed
Input schema / properties / query / descriptionPrevious value: -"Mots-clés décrivant la marchandise (ex: \"moteurs électriques\", \"lithium cells\", \"drones\")"New value: +"Terme de recherche en français ou anglais (ex: \"photovoltaic\", \"café\", \"aluminium\", \"lithium\")"
2 tool updates
- First observed
resolve_hs_code - First observed
search_customs_nomenclature
Related MCP Servers
- AlicenseNot gradedqualityBmaintenancePerplexity for social: ask what competitors are running across social and get answers grounded in real ad and creative data, not guesses.2Apache 2.0
- AlicenseCqualityBmaintenanceCompetitor Monitor AI - MCP server providing AI-powered tools and automation by MEOK AI Labs119 npm54 PyPIMIT
- AlicenseAqualityCmaintenanceEnables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.1611 npm1MIT

industrylens-mcpofficial
AlicenseNot gradedqualityBmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.