# org.scienceswarm/commerce-validators

> Commerce validators: live EU VAT (VIES), EORI, email/MX lookups; IBAN/ABA/GTIN checksums; VAT rates.

- name: org.scienceswarm/commerce-validators
- version: 1.1.1
- connection class: unknown (unknown)
- trust: 56/100 flags: unreachable
- quality: 79/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/org.scienceswarm%2Fcommerce-validators
- tools: https://api.protogrid.dev/v1/servers/org.scienceswarm%2Fcommerce-validators/tools

**Not classified yet.** The remote endpoints have not been probed successfully, or the listing has nothing to connect to.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "commerce-validators": {
      "type": "http",
      "url": "https://mcp.scienceswarm.org/mcp"
    }
  }
}
```


## Trust

- hygiene: 100
- liveness: 0
- freshness: 65
- provenance: 75
- drivers: +repository +dns-namespace -unreachable(4 failures) ~updated-97d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 79/100 (good)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 71 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- fail `tools.annotations`: no tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky ones
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: validate_iban (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); validate_gtin (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); validate_aba_routing (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …
- pass `tools.token_cost`: about 1,286 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: no tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 10, about 1,286 tokens to load them all
- tool set hash: 7ba4debab3e8efe22e545f38713ac5cb
- badge: [![protogrid quality](https://protogrid.dev/badge/org.scienceswarm/commerce-validators.svg)](https://protogrid.dev/servers/org.scienceswarm/commerce-validators)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Remotes

- https://mcp.scienceswarm.org/mcp (streamable-http, auth none, reachable false, uptime30d 0.4864865)

## Packages

_none_

## Tools (10)

- `check_email_domain`: Check whether a domain can actually receive email (has MX records) via a real
DNS-over-HTTPS lookup — validate a customer/supplier email's domain before sending
or invoicing. An LLM can't know current DNS; this does the live lookup.
- `payout_reconciliation`: Explain why a payout is less than sales: walk gross -> deductions -> expected,
and (if actual_deposit given) flag the unexplained gap (shortfall/surplus).
- `reorder_point`: Reorder point = lead-time demand + safety stock. If on_hand is given, returns
whether to reorder now and the days of cover remaining.
- `stripe_connect_split`: Compute the Stripe Connect three-way split for one charge.

Returns what the buyer pays, what Stripe takes, what the platform nets (its
application fee), and what the connected seller nets — plus the platform's
effective take rate. fee_bearer: 'seller' | 'platform' | 'buyer' (who absorbs the
Stripe processing fee). Rates are editable; defaults are US card standard 2.9%+$0.30.

- `validate_aba_routing`: Validate a US ABA bank routing number (9 digits) by its checksum. Catch typos
before initiating an ACH/wire payout. Pure-algorithm; nothing leaves the machine.
- `validate_eori`: Validate an EORI number (Economic Operators Registration and Identification)
against the official EU customs database (live lookup). An EORI is required for
EU imports/exports — check a trading partner's or your own EORI before customs
filings / freight bookings. Input e.g. 'DE1234567890123' (country code + number).

- `validate_eu_vat`: Validate an EU VAT number against the official EU VIES service (live government
lookup). Returns whether it is registered/valid and, if available, the registered
trader name + address. An LLM cannot know this without the real lookup — use this
before invoicing/reverse-charging an EU B2B customer. Input e.g. 'DE811569869' or
'IE6388047V' (country code + number).

- `validate_gtin`: Validate a GTIN / UPC / EAN barcode (GTIN-8/12/13/14) by its check digit.
Catches mistyped product barcodes in inventory/catalog workflows. Pure-algorithm.
- `validate_iban`: Validate an IBAN (International Bank Account Number) by structure + the ISO 7064
mod-97 checksum. Catches typos/invalid accounts before you initiate a transfer.
Pure-algorithm; no data leaves the machine.
- `vat_rate_by_country`: EU VAT rates (standard / reduced / super-reduced / parking) for a country,
from the maintained ibericode/vat-rates dataset (fetched live, cached 24h) —
including which rate set was in force on an optional 'date' (YYYY-MM-DD) and the
names of regional exceptions (e.g. Canary Islands). Input e.g. 'DE', 'FR', 'HU'.

