Skip to main content
Glama
SoapyRED

FreightUtils MCP Server

ics2_check

Read-onlyIdempotent

Check any goods description against the official EU ICS2 stop-words list. Flags vague or generic terms that could cause rejection in an ENS filing, with notes on how to make them more specific.

Instructions

Check a goods description against the official EU ICS2 stop-words list — terms the European Commission deems too vague or generic for an entry summary declaration (ENS) goods-description field (data element 18 05 000 000).

Pass description=. Behavior: deterministic term matching against the in-force EU list; each flagged term carries a note (a standalone stop-word means automatic rejection, an embedded one means make the description more specific); clean=true means no listed term matched — it does NOT guarantee acceptance, and no binary accepted/rejected verdict is given. Rate-limited (anonymous use: 25 requests/day per IP): a 429 error body carries retry_after_seconds and a Retry-After header — back off and retry, or call get_subscribe_link for higher limits.

Returns: the description echo, flagged[] (term + note), clean, caveat and disclaimer under result, plus a _source citing the EU list and legal basis, plus confidence, _source and citation (the FreightUtils v1 response envelope).

Limitations: STRICTLY a reference check — not an ENS filing, not a customs-compliance determination, not legal advice; the EU list is non-exhaustive and updated periodically.

Related: hs_code_lookup (commodity codes — a different field of the ENS), uk_duty_calculator (duty/VAT, unrelated to ENS screening). Use BEFORE filing an ENS — for customs/documentation teams, brokers and agents building filing pipelines.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
descriptionYesThe goods description to check. Example: "gifts" (flagged) vs "wooden toys for retail" (specific).

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
okYes
resultYes
_sourceYes
citationYes
validityNo
warningsNo
confidenceYes
blocking_errorsNo
envelope_versionYes
normalized_inputNo

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed5 schema fields changedv2.17.2
    • addedOutput schema / properties / _source / properties / authority_current_edition
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / _source / properties / checked_at
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / _source / properties / dataset_edition
      Added value: +{
      +  "type": "string"
      +}
    • removedOutput schema / properties / envelope_version / const
      Removed value: -"1"
    • addedOutput schema / properties / envelope_version / enum
      Added value: +[
      +  "1",
      +  "1.1"
      +]
  2. Changed29 schema fields changedv2.11.0
    • changedInput schema / properties / description / description
      Previous value: -"The goods description to check against the EU ICS2 stop-words list."New value: +"The goods description to check. Example: \"gifts\" (flagged) vs \"wooden toys for retail\" (specific)."
    • removedOutput schema / properties / _source / properties / authority
      Removed value: -{
      -  "type": "string"
      -}
    • addedOutput schema / properties / _source / properties / checked
      Added value: +{
      +  "type": "string"
      +}
    • removedOutput schema / properties / _source / properties / dataset
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / _source / properties / legal_basis
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / _source / properties / licence
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / _source / properties / list_in_force
      Removed value: -{
      -  "type": "string"
      -}
    • addedOutput schema / properties / _source / properties / name
      Added value: +{
      +  "type": "string"
      +}
    • removedOutput schema / properties / _source / properties / non_exhaustive
      Removed value: -{
      -  "type": "boolean"
      -}
    • addedOutput schema / properties / _source / properties / provenance_status
      Added value: +{
      +  "enum": [
      +    "verified",
      +    "pending-verification",
      +    "computed",
      +    "live"
      +  ],
      +  "type": "string"
      +}
    • removedOutput schema / properties / _source / properties / retrieved
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / _source / properties / retrieved_via
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / _source / properties / type
      Removed value: -{
      -  "type": "string"
      -}
    • changedOutput schema / properties / _source / required
      Previous value: -[
      -  "type",
      -  "authority",
      -  "dataset",
      -  "legal_basis",
      -  "list_in_force",
      -  "source_url",
      -  "licence",
      -  "retrieved",
      -  "non_exhaustive",
      -  "retrieved_via"
      -]New value: +[
      +  "name",
      +  "checked",
      +  "provenance_status"
      +]
    • addedOutput schema / properties / blocking_errors
      Added value: +{
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "code": {
      +        "type": "string"
      +      },
      +      "message": {
      +        "type": "string"
      +      },
      +      "recovery": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "action": {
      +            "type": "string"
      +          },
      +          "params": {
      +            "additionalProperties": {},
      +            "type": "object"
      +          },
      +          "tool": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "action"
      +        ],
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "code",
      +      "message",
      +      "recovery"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • removedOutput schema / properties / caveat
      Removed value: -{
      -  "type": "string"
      -}
    • addedOutput schema / properties / citation
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "qualifier": {
      +      "type": "string"
      +    },
      +    "text": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "text"
      +  ],
      +  "type": "object"
      +}
    • removedOutput schema / properties / clean
      Removed value: -{
      -  "type": "boolean"
      -}
    • addedOutput schema / properties / confidence
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "basis": {
      +      "enum": [
      +        "deterministic",
      +        "provenance",
      +        "match_quality",
      +        "freshness"
      +      ],
      +      "type": "string"
      +    },
      +    "level": {
      +      "enum": [
      +        "high",
      +        "medium",
      +        "low"
      +      ],
      +      "type": "string"
      +    },
      +    "score": {
      +      "maximum": 1,
      +      "minimum": 0,
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "level",
      +    "basis"
      +  ],
      +  "type": "object"
      +}
    • removedOutput schema / properties / description
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / disclaimer
      Removed value: -{
      -  "type": "string"
      -}
    • addedOutput schema / properties / envelope_version
      Added value: +{
      +  "const": "1",
      +  "type": "string"
      +}
    • removedOutput schema / properties / flagged
      Removed value: -{
      -  "items": {
      -    "additionalProperties": false,
      -    "properties": {
      -      "note": {
      -        "type": "string"
      -      },
      -      "term": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "term",
      -      "note"
      -    ],
      -    "type": "object"
      -  },
      -  "type": "array"
      -}
    • addedOutput schema / properties / normalized_input
      Added value: +{
      +  "additionalProperties": {},
      +  "type": "object"
      +}
    • addedOutput schema / properties / ok
      Added value: +{
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / result
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": true,
      +      "properties": {
      +        "caveat": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "clean": {
      +          "type": [
      +            "boolean",
      +            "null"
      +          ]
      +        },
      +        "description": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "disclaimer": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "flagged": {
      +          "anyOf": [
      +            {
      +              "items": {
      +                "additionalProperties": true,
      +                "properties": {
      +                  "note": {
      +                    "type": [
      +                      "string",
      +                      "null"
      +                    ]
      +                  },
      +                  "term": {
      +                    "type": [
      +                      "string",
      +                      "null"
      +                    ]
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              "type": "array"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        }
      +      },
      +      "type": "object"
      +    },
      +    {
      +      "additionalProperties": {},
      +      "type": "object"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / validity
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "as_of": {
      +      "type": "string"
      +    },
      +    "effective_from": {
      +      "type": "string"
      +    },
      +    "effective_to": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    }
      +  },
      +  "required": [
      +    "as_of"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / warnings
      Added value: +{
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "code": {
      +        "type": "string"
      +      },
      +      "details": {
      +        "additionalProperties": {},
      +        "type": "object"
      +      },
      +      "message": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "code",
      +      "message"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "description",
      -  "flagged",
      -  "clean",
      -  "caveat",
      -  "_source",
      -  "disclaimer"
      -]New value: +[
      +  "envelope_version",
      +  "ok",
      +  "result",
      +  "confidence",
      +  "_source",
      +  "citation"
      +]
  3. Addedv2.10.0

TDQS

A4.7/5.0
Behavior5/5

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

注解已声明readOnlyHint、idempotentHint和destructiveHint,描述在此基础上补充关键行为信息:确定性匹配、无二进制接受/拒绝裁决、clean≠保证通过、限流机制(429响应含retry_after_seconds)、以及超出限制时应调用get_subscribe_link。还披露了非穷尽列表、定期更新等能力边界,远超注解能表达的内容。

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?

描述虽然较长,但每个句子都有明确的信息价值:从核心行为、返回结构、速率限制、限制条款到相关工具路由,信息密度高,没有冗余内容。关键用法说明(确定性匹配、clean含义、非保证性质)前置,限制和替代品放在后部层次清晰。

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?

对于单参数工具,描述已覆盖输入方向、输出结构(echo/flagged/clean/result/caveat/_source等)、已知行为特化、限流边界、误差与使用场景,以及相关工具链接。尽管输出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只有一个desc参数,且覆盖了100%,自带对比示例('gifts' vs 'wooden toys for retail'),因此参数语义已经由schema充分完成。描述中仅复述'Pass description=<goods description>',没有在schema示例之外增加大量新的参数语义或格式约束,按基线评分3分。

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?

描述用明确动词+宾语+范围说明工具功能:检查货物描述匹配欧盟ICS2禁止词列表,用于ENS申报。同时通过与兄弟工具hs_code_lookup和uk_duty_calculator的对比,清晰区分职责范围,代理无需打开schema即可理解工具用途。

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

Usage Guidelines5/5

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

明确说明使用场景(在提交ENS之前进行筛查)、目标用户(海关/文件团队、报关行、代理)、以及何时不使用本工具(不是提交ENS,不是合规判定,不是法律建议)。还明确指出哪些兄弟工具用于其他功能的替代选择,让代理能做出正确的路由决策。

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

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/SoapyRED/freightutils-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server