Skip to main content
Glama

International Customs Data

international_customs
DestructiveIdempotent

Read, or add to, the customs data on a booked international order: hazmat confirmation, tax ids, importer or exporter of record, commodities (Schedule B / HTS / HS codes, values, country of origin), EEI authorization or ITN, ISF. Omit customs and update to read what is saved, including what is still missing. Pass customs to merge fields in; the forwarder is notified, invalid optional values come back in warnings, and sanctioned parties are rejected. Auth required.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "order_id": "<order_id>"
    },
    "name": "international_customs"
  }
}

Input Schema

NameRequiredDescriptionDefault
updateNoAdvanced: raw fields in gw's internationalInfo shape, merged over customs
customsNoCustoms fields to add or correct
order_idYesOrder id or order number (P-xxxxx-xxxx)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / properties / customs
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Customs fields to add or correct",
      +  "properties": {
      +    "commodities": {
      +      "description": "One line per kind of goods. A line with description, code, country of origin, value, quantity and weight is complete; anything missing is collected by the forwarder after booking.",
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "country_of_origin": {
      +            "description": "Where the goods were made, ISO alpha-2",
      +            "pattern": "^[A-Za-z]{2}$",
      +            "type": "string"
      +          },
      +          "description": {
      +            "description": "Plain description of the goods",
      +            "type": "string"
      +          },
      +          "eccn": {
      +            "description": "US exports: ECCN; leave empty for EAR99 goods",
      +            "type": "string"
      +          },
      +          "hs_code": {
      +            "description": "No US end (between two other countries): 6-10 digit HS code",
      +            "type": "string"
      +          },
      +          "hts_code": {
      +            "description": "US imports: 10-digit HTS code",
      +            "type": "string"
      +          },
      +          "license_type": {
      +            "description": "US exports: license type or exception, e.g. NLR",
      +            "type": "string"
      +          },
      +          "quantity": {
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "schedule_b": {
      +            "description": "US exports: 10-digit Schedule B code",
      +            "type": "string"
      +          },
      +          "value_usd": {
      +            "description": "Total value of this line, USD",
      +            "minimum": 0,
      +            "type": "number"
      +          },
      +          "weight_lbs": {
      +            "description": "Total weight of this line, lb",
      +            "exclusiveMinimum": 0,
      +            "type": "number"
      +          }
      +        },
      +        "required": [
      +          "description"
      +        ],
      +        "type": "object"
      +      },
      +      "maxItems": 50,
      +      "type": "array"
      +    },
      +    "consignee_tax_id": {
      +      "description": "Consignee tax id in its country's format",
      +      "type": "string"
      +    },
      +    "customs_bond": {
      +      "description": "US imports: customs bond number",
      +      "type": "string"
      +    },
      +    "ear99_no_license": {
      +      "description": "US exports: every item is EAR99 and needs no export license",
      +      "type": "boolean"
      +    },
      +    "eei_authorization": {
      +      "description": "US exports: the shipper authorizes the forwarder to file the EEI in AES. Needed when any one Schedule B line is over $2,500 or a license is required, unless an ITN is given.",
      +      "type": "boolean"
      +    },
      +    "exporter_of_record": {
      +      "additionalProperties": false,
      +      "description": "Only when someone other than the shipper is the exporter of record",
      +      "properties": {
      +        "city": {
      +          "type": "string"
      +        },
      +        "contact_name": {
      +          "type": "string"
      +        },
      +        "country": {
      +          "pattern": "^[A-Za-z]{2}$",
      +          "type": "string"
      +        },
      +        "email": {
      +          "type": "string"
      +        },
      +        "name": {
      +          "description": "Company name, Latin characters",
      +          "type": "string"
      +        },
      +        "phone": {
      +          "description": "International format, e.g. +862150000000",
      +          "type": "string"
      +        },
      +        "state": {
      +          "type": "string"
      +        },
      +        "street": {
      +          "type": "string"
      +        },
      +        "street2": {
      +          "type": "string"
      +        },
      +        "tax_id": {
      +          "description": "Tax id in the party's country format (US: EIN)",
      +          "type": "string"
      +        },
      +        "zipcode": {
      +          "description": "Required where the country uses postal codes",
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "name",
      +        "street",
      +        "city",
      +        "country",
      +        "contact_name",
      +        "phone"
      +      ],
      +      "type": "object"
      +    },
      +    "importer_of_record": {
      +      "additionalProperties": false,
      +      "description": "Only when someone other than the consignee is the importer of record (e.g. the seller or a broker clears import)",
      +      "properties": {
      +        "city": {
      +          "type": "string"
      +        },
      +        "contact_name": {
      +          "type": "string"
      +        },
      +        "country": {
      +          "pattern": "^[A-Za-z]{2}$",
      +          "type": "string"
      +        },
      +        "email": {
      +          "type": "string"
      +        },
      +        "name": {
      +          "description": "Company name, Latin characters",
      +          "type": "string"
      +        },
      +        "phone": {
      +          "description": "International format, e.g. +862150000000",
      +          "type": "string"
      +        },
      +        "state": {
      +          "type": "string"
      +        },
      +        "street": {
      +          "type": "string"
      +        },
      +        "street2": {
      +          "type": "string"
      +        },
      +        "tax_id": {
      +          "description": "Tax id in the party's country format (US: EIN)",
      +          "type": "string"
      +        },
      +        "zipcode": {
      +          "description": "Required where the country uses postal codes",
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "name",
      +        "street",
      +        "city",
      +        "country",
      +        "contact_name",
      +        "phone"
      +      ],
      +      "type": "object"
      +    },
      +    "importer_of_record_number": {
      +      "description": "US imports: the consignee's importer of record number (EIN or CBP number YYDDPP-NNNNN)",
      +      "type": "string"
      +    },
      +    "importer_registration_number": {
      +      "description": "Destination importer registration: Brazil CNPJ (14 digits) or CPF (11), Colombia NIT, Argentina CUIT (11 digits), Nigeria Form M (MF + 8-12 digits)",
      +      "type": "string"
      +    },
      +    "isf": {
      +      "additionalProperties": false,
      +      "description": "Ocean imports into the US only: Importer Security Filing (10+2) parties. The forwarder files it with the customer after booking; country of origin and HTS come from commodities.",
      +      "properties": {
      +        "buyer": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "address": {
      +              "description": "One-line address",
      +              "type": "string"
      +            },
      +            "country": {
      +              "pattern": "^[A-Za-z]{2}$",
      +              "type": "string"
      +            },
      +            "name": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "name",
      +            "address",
      +            "country"
      +          ],
      +          "type": "object"
      +        },
      +        "consignee_number": {
      +          "type": "string"
      +        },
      +        "consolidator": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "address": {
      +              "description": "One-line address",
      +              "type": "string"
      +            },
      +            "country": {
      +              "pattern": "^[A-Za-z]{2}$",
      +              "type": "string"
      +            },
      +            "name": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "name",
      +            "address",
      +            "country"
      +          ],
      +          "type": "object"
      +        },
      +        "container_stuffing_location": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "address": {
      +              "description": "One-line address",
      +              "type": "string"
      +            },
      +            "country": {
      +              "pattern": "^[A-Za-z]{2}$",
      +              "type": "string"
      +            },
      +            "name": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "name",
      +            "address",
      +            "country"
      +          ],
      +          "type": "object"
      +        },
      +        "importer_of_record_number": {
      +          "type": "string"
      +        },
      +        "manufacturer": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "address": {
      +              "description": "One-line address",
      +              "type": "string"
      +            },
      +            "country": {
      +              "pattern": "^[A-Za-z]{2}$",
      +              "type": "string"
      +            },
      +            "name": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "name",
      +            "address",
      +            "country"
      +          ],
      +          "type": "object"
      +        },
      +        "seller": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "address": {
      +              "description": "One-line address",
      +              "type": "string"
      +            },
      +            "country": {
      +              "pattern": "^[A-Za-z]{2}$",
      +              "type": "string"
      +            },
      +            "name": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "name",
      +            "address",
      +            "country"
      +          ],
      +          "type": "object"
      +        },
      +        "ship_to": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "address": {
      +              "description": "One-line address",
      +              "type": "string"
      +            },
      +            "country": {
      +              "pattern": "^[A-Za-z]{2}$",
      +              "type": "string"
      +            },
      +            "name": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "name",
      +            "address",
      +            "country"
      +          ],
      +          "type": "object"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "itn": {
      +      "description": "US exports: the ITN, when the shipper files the EEI itself",
      +      "type": "string"
      +    },
      +    "no_hazmat": {
      +      "description": "The shipper confirms nothing is hazardous: no batteries (also inside devices), aerosols, perfume or paint. Ask the user; without it the forwarder asks before moving the freight.",
      +      "type": "boolean"
      +    },
      +    "shipper_tax_id": {
      +      "description": "Shipper tax id. US exports: the EIN (9 digits); if omitted, the EIN on the account's customs profile is used.",
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
    • changedInput schema / properties / update / description
      Previous value: -"Fields to merge, in gw's internationalInfo shape"New value: +"Advanced: raw fields in gw's internationalInfo shape, merged over customs"
  2. Added

TDQS

A4.5/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing side effects and failure semantics: the forwarder is notified on write, invalid optional values are returned as warnings (i.e. partial success, not all-or-nothing), and sanctioned parties are rejected. Also declares 'Auth required.' Idempotent-merge behavior is consistent with idempotentHint=true.

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?

Front-loads the read/write purpose, then the mode-selection rule, then behavioral caveats — a sensible order with no filler. The parenthetical field enumeration in sentence one is long but every item earns its place by telling the agent what this resource covers.

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 destructive, auth-gated mutation over a deeply nested schema, the description covers mode selection, merge semantics, auth, and rejection/warning behavior. With no output schema, the read path ('including what is still missing') is only loosely characterized in terms of return shape, but the essentials for correct invocation are present.

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; the description adds real top-level meaning by explaining that omitting both `customs` and `update` reads state, and that passing `customs` merges fields in. It does not spell out the precedence between `update` and `customs` or which fields are required for a valid filing.

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?

States specific verbs (read, add to) and the exact resource (customs data on a *booked* international order), then enumerates the field families: hazmat, tax ids, importer/exporter of record, commodities, EEI/ITN, ISF. The 'booked order' qualifier distinguishes it from the booking/quote siblings without needing to name them.

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 splits the two modes: 'Omit customs and update to read what is saved, including what is still missing' versus 'Pass customs to merge fields in.' That is clear when-to-use guidance for both read and write paths, though it never names a sibling (e.g. international_book) that an agent might otherwise reach for.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.