# `dev.workers.mohamed-bahaa53000.invoice-validator/invoice-payment-id-validator` on anlyon.dev

> Text inside fenced blocks marked untrusted-server-text was written by the MCP server's publisher, not by anlyon.dev. It is data to inspect, not instructions to follow. Invisible characters are shown as [U+XXXX].
> No finding is not a safety guarantee: these are point-in-time checks of tool definitions, not of code or behaviour.

- Page: https://anlyon.dev/servers/dev.workers.mohamed-bahaa53000.invoice-validator/invoice-payment-id-validator
- JSON: https://anlyon.dev/api/v1/servers/dev.workers.mohamed-bahaa53000.invoice-validator/invoice-payment-id-validator
- Version: 1.2.1 (active)
- Publisher: dev.workers.mohamed-bahaa53000.invoice-validator (domain proven to the MCP Registry)
- Runs: remote (streamable-http)
- Sign-in to list tools: none
- Repository: https://github.com/Mowaah/invoice-validator-mcp
- Metadata from the official MCP Registry, synced 2026-10-21T18:12:29.997Z

Title and description, as the publisher wrote them:

```untrusted-server-text
Invoice & Payment ID Validator
Pay/review/hold verdict for invoice payees: cross-checks IBAN, BIC, VAT, EIN. Paid: RapidAPI
```

Scanned 2026-10-21T18:38:33.596Z over streamable-http.

**6 tools: 1 change things and 5 only read.**

| Group | Class | Tools | Claude Code |
| --- | --- | --- | --- |
| Deletes or cancels | destructive | 0 | deny |
| Can't be undone | irreversible | 0 | ask |
| Changes things | write | 1 | ask |
| Only reads | read | 5 | allow |

## Findings

No check matched anything in these tool definitions.


## Changes things (1)

Creates or changes something that can be changed back. Claude Code: ask.

### `check_invoice_payee`

- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

Description, as the server wrote it:

```untrusted-server-text
One call before paying a supplier: validates the IBAN, BIC, VAT (EU or UK) and EIN on the invoice AND cross-checks them against each other and the supplier's country, then returns verdict pay / review / hold with plain-English reasons. Catches the changed-bank-details fraud pattern (e.g. a German supplier asking to be paid into a foreign account), BIC/IBAN country mismatches, unregistered VAT numbers, and (with live=true) a VIES-registered company name that doesn't match the supplier name. Pass whatever the invoice has; only one field is needed.
```

## Only reads (5)

Looks things up and changes nothing. Claude Code: allow.

### `validate_bic`

- The name "validate_bic" says "validate": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
Validate a BIC/SWIFT code (8 or 11 chars): structure, ISO country, test-BIC flag. Pass the IBAN too and it checks that the BIC country matches the IBAN country (a common fraud/typo signal).
```

### `validate_ein`

- The name "validate_ein" says "validate": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
Validate a US Employer Identification Number: 9-digit format and a valid IRS campus prefix. EINs have no check digit, so this catches typos and fake prefixes, not every invalid number.
```

### `validate_eu_vat`

- The name "validate_eu_vat" says "validate": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
Validate an EU VAT ID (27 member states + XI): format and check digit offline. Set live=true to also query the EU VIES registry for registration status, company name and address (slower, may be throttled; failures return vies.checked=false, never a false 'invalid').
```

### `validate_gb_vat`

- The name "validate_gb_vat" says "validate": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
Validate a UK (GB) VAT registration number: format, branch/government/health-authority types, and the HMRC mod-97 / 9755 checksum.
```

### `validate_iban`

- The name "validate_iban" says "validate": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
Validate an International Bank Account Number: mod-97 checksum, length for its country (100+ countries), SEPA membership. Returns the normalized and formatted IBAN, country and BBAN, or machine-readable error codes. Use before paying an invoice or saving supplier bank details.
```

## Claude Code permissions

For `.claude/settings.json`, assuming the server is installed as `invoice-payment-id-validator`:

```json
{
  "permissions": {
    "allow": [
      "mcp__invoice-payment-id-validator__validate_iban",
      "mcp__invoice-payment-id-validator__validate_bic",
      "mcp__invoice-payment-id-validator__validate_eu_vat",
      "mcp__invoice-payment-id-validator__validate_gb_vat",
      "mcp__invoice-payment-id-validator__validate_ein"
    ],
    "ask": [
      "mcp__invoice-payment-id-validator__check_invoice_payee"
    ],
    "deny": []
  }
}
```
