MCP server exposing 14 customs / trade capabilities (declarations, ship info, tariff, dual-use screening, AI document maker, ...) as standard Model Context Protocol tools. Built for Claude Desktop / Claude Code / Cursor / Windsurf / Trae / Codex and any MCP-compatible AI client.
14 tools with complete input schemas and descriptions. Naming follows verb_noun pattern consistently (customs_*). Descriptions are adequate (100-200 chars typical) but lack LLM-optimized guidance on WHEN to use each tool vs alternatives. Parameters are well-typed with enums for constrained fields (ieFlag, transportType, decStatus). Critical gap: no output schemas documented, LLMs cannot predict response structure for downstream chaining. Error handling present but generic. Identity override pattern (_identity param) is non-standard and adds cognitive load. No tool annotations (readOnlyHint/destructiveHint) despite clear risk classification.
Query the status of an AI-maker submission by decId. Returns finished status, status code, description, and optional error message.
Submit one or more declaration source documents to AI-powered customs declaration generation. Returns a decId immediately (no-wait mode). The AI agent should periodically poll customs_ai_maker_status until finished: true, typically 3-10 minutes.
Query detailed information about a customs declaration by decId, entryId, customsNo, or seqNo
Query a list of customs declarations with optional filtering by status, IE flag, keyword, and date range
Query the status of a customs declaration by entryId or seqNo
Query dual-use item screening using AI-backed analysis. This is a slow query that can take several minutes.
No output schemas documented. LLMs cannot predict response structure, breaking tool chaining. customs_declaration_list returns paginated results but response format is undocumented, agent cannot extract seqNo for follow-up customs_declaration_detail calls.
Non-standard _identity parameter pattern. Every tool accepts optional _identity override (platform, externalUserId, externalCorpId, channel) but this is not documented in descriptions. LLMs will not discover or use this feature without explicit guidance.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2026-07-28+ | v2 |
Query full process tracking information by ieFlag, billNo, or customsNo
Query import/export status by ieFlag, entryId, or billNo
Query generic manifest arrival information (sea + air) with optional declaration identifiers to trigger local DecHead.hasCd/hasYd sync
Create an order draft with pre-check validation. Note: currently in PRECHECK-ONLY mode on the backend — validates payload and writes an audit row, but does NOT persist a new order.
Query ship information and container tracking by bill of lading, with optional ship name and voyage. Performs client-side I→E fallback when ieFlag is omitted.
Query sea-specific manifest box information with optional declaration identifiers to trigger DecHead.hasCd sync
Query container ship plan associated with a transport vessel by ieFlag, shipName, and voyage
Query tariff information by HS code or HS name
Missing tool annotations. customs_order_create_draft and customs_ai_maker_submit are WRITE operations but lack destructiveHint annotation. customs_declaration_* tools are READ_ONLY but lack readOnlyHint. Agents cannot infer safety/idempotency without annotations.
Descriptions lack WHEN-to-use guidance. customs_declaration_detail vs customs_declaration_list both retrieve declarations but distinction is unclear. No guidance on which to call first or when one is preferred over the other.
customs_ai_maker_submit returns decId immediately (no-wait mode) but description does not explain polling strategy. Agent must infer that customs_ai_maker_status should be called in a loop, no guidance on retry interval or timeout.