# Supplier Payment Decision Agent (Ireland) (remote · supplier-payment-verifier-production.up.railway.app)

Free daily IBAN, VIES VAT and CRO checks; paid invoice decisions. x402. Never moves invoice money.

- Trust score: 63/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-10-18

## Components

- remote · `supplier-payment-verifier-production.up.railway.app`: 63/100 (this document), [markdown](https://verifymcp.io/servers/lkennedyshare-supplier-payment-verifier/supplier-payment-verifier-production.md), [page](https://verifymcp.io/servers/lkennedyshare-supplier-payment-verifier/supplier-payment-verifier-production)

## Channel facts

- Endpoint: `https://supplier-payment-verifier-production.up.railway.app/mcp/`
- Transports: `streamable-http`
- Auth: `none`
- Version: `0.6.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-10-18.

- **Endpoint Security**: 57/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 8 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 65/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 1726 tokens (~215/item across 8 items; 8 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 13/100
  - Stability observed for 4 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 88/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 63% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 8 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 9 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the Supplier Payment Decision Agent (Ireland) MCP server?

Supplier Payment Decision Agent (Ireland) is a hosted endpoint at https://supplier-payment-verifier-production.up.railway.app/mcp/, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http lkennedyshare-supplier-payment-verifier 'https://supplier-payment-verifier-production.up.railway.app/mcp/'
```

### Cursor

```json
{
  "mcpServers": {
    "lkennedyshare-supplier-payment-verifier": {
      "url": "https://supplier-payment-verifier-production.up.railway.app/mcp/"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "lkennedyshare-supplier-payment-verifier": {
      "type": "http",
      "url": "https://supplier-payment-verifier-production.up.railway.app/mcp/"
    }
  }
}
```

### Codex

```toml
[mcp_servers.lkennedyshare-supplier-payment-verifier]
url = "https://supplier-payment-verifier-production.up.railway.app/mcp/"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "lkennedyshare-supplier-payment-verifier": {
      "type": "remote",
      "url": "https://supplier-payment-verifier-production.up.railway.app/mcp/",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add lkennedyshare-supplier-payment-verifier --url 'https://supplier-payment-verifier-production.up.railway.app/mcp/' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  lkennedyshare-supplier-payment-verifier:
    url: "https://supplier-payment-verifier-production.up.railway.app/mcp/"
```

### Netclaw

```json
{
  "McpServers": {
    "lkennedyshare-supplier-payment-verifier": {
      "Transport": "http",
      "Url": "https://supplier-payment-verifier-production.up.railway.app/mcp/"
    }
  }
}
```

### Vellum

```bash
assistant mcp add lkennedyshare-supplier-payment-verifier -t streamable-http -u 'https://supplier-payment-verifier-production.up.railway.app/mcp/'
```

### Other

```json
{
  "mcpServers": {
    "lkennedyshare-supplier-payment-verifier": {
      "type": "http",
      "url": "https://supplier-payment-verifier-production.up.railway.app/mcp/"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-10-17 (score 63, +3)

- [security] The server rewrote its instructions, which are the text every model session reads
- [security] Tool “check_three_way_match” rewrote its description, which is the text the model reads
- [security] Tool “decide_supplier_payment” rewrote its description, which is the text the model reads
- [security] Tool “get_verification” rewrote its description, which is the text the model reads
- [security] Tool “register_signing_key” rewrote its description, which is the text the model reads
- [security] Tool “verify_supplier_payment” rewrote its description, which is the text the model reads
- [security] Tool “check_company” rewrote its description, which is the text the model reads
- [security] Tool “check_iban” rewrote its description, which is the text the model reads
- [security] Tool “check_vat” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: 91 → 110
- [functional regression] Schema quality: pass → fail
- [functional improvement] Tool coverage: 0% → 63%
- [functional] Schema quality: fair → excellent
- [cosmetic] “check_company” reworded the description of “request”
- [cosmetic] “check_iban” reworded the description of “request”
- [cosmetic] “check_three_way_match” reworded the description of “request”
- [cosmetic] “check_vat” reworded the description of “request”
- [cosmetic] “decide_supplier_payment” reworded the description of “payment_request”
- [cosmetic] “get_verification” reworded the description of “verification_id”
- [cosmetic] “register_signing_key” reworded the description of “key_id”
- [cosmetic] “register_signing_key” reworded the description of “public_key_pem”
- [cosmetic] “verify_supplier_payment” reworded the description of “policy_id”
- [cosmetic] “verify_supplier_payment” reworded the description of “request_id”
- [cosmetic] “verify_supplier_payment” reworded the description of “schema_version”
- [cosmetic] “verify_supplier_payment” reworded the description of “supplier”

### 2026-10-16 (score 60, +1)

- [security] Tool “check_three_way_match” rewrote its description, which is the text the model reads
- [security] Tool “decide_supplier_payment” rewrote its description, which is the text the model reads

### 2026-10-15 (score 59, 0)

- [security] The server rewrote its instructions, which are the text every model session reads
- [security] The server changed its declared name: Trusted Supplier Payment Verifier → Supplier Payment Decision Agent
- [functional improvement] Schema quality: 107 → 83
- [functional improvement] Stability: unverified → 0.03
- [functional] New tool “check_company”
- [functional] New tool “check_iban”
- [functional] New tool “check_three_way_match”
- [functional] New tool “check_vat”
- [functional] New tool “decide_supplier_payment”
- [functional] New tool “register_signing_key”

### 2026-10-14 (score 59)

First indexed and scored.

## MCP tools (8)

### `verify_supplier_payment` (~296 tokens)

Use for supplier identity and VAT reconciliation, not the full signed five-gate invoice decision. Reconciles the claimed legal name, company registration number and VAT number against the Irish Companies Registration Office (IE) and the EU VIES VAT service, and returns an advisory RELEASE, REVIEW, BLOCK or INSUFFICIENT_EVIDENCE decision with per-check results and reason codes plus verification_id. Use decide_supplier_payment for the signed invoice/PO/GRN workflow, individual check tools for one check, and get_verification only to retrieve this stored result. This creates a verification and may call external sources; it never executes or authorises a bank payment. Requires explicit x402 service-fee approval or an authorized bearer token; do not automatically retry paid calls.

Input parameters:

- `callback`
- `customer_assertions`
- `evidence`
- `metadata`
- `payment_destination`
- `policy_id` (string, required): Verification policy identifier; always eu-b2b-payment-v1.
- `request_id` (string, required): Caller-generated unique request UUID used for idempotency. This is not the returned verification_id used for retrieval.
- `requested_at`
- `schema_version` (string, required): Request schema version; always the literal string 1.0.
- `supplier` (required): Claimed supplier identity and Irish identifiers to reconcile with CRO/VIES; not the signed invoice-decision supplier object.
- `transaction`

### `get_verification` (~219 tokens)

Read an existing identity/VAT verification created by verify_supplier_payment (POST /v1/verifications). Supply its returned verification_id UUID, not a request_id, transaction_id, invoice number or A2A task ID. Returns the stored RELEASE/REVIEW/BLOCK/INSUFFICIENT_EVIDENCE result without rerunning registry checks. The same authenticated tenant must own the result: use the original paying wallet for x402, or an authorized bearer token with verification.read scope. Missing or other-tenant IDs return not found. This does not retrieve decide_supplier_payment decisions and does not create a verification. Retrieval has its own service fee; inspect terms and obtain spending approval before paying. Do not retry payment automatically or infer invoice-payment authorization from a stored advisory result.

Input parameters:

- `verification_id` (string, required): UUID returned as verification_id by verify_supplier_payment or POST /v1/verifications. Use a result owned by the same tenant/original paying wallet; do not supply request_id, transaction_id, an invoi…

### `check_iban` (~166 tokens)

Cheapest call. Validates an IBAN (ISO 13616 mod-97 checksum, length and country) before you pay it. Returns PASSED or FAILED with a reason code. Irish (IE) IBANs pass by default. Use only for bank-account identifier syntax/country checks, not account ownership, bank Confirmation of Payee or supplier identity. Use check_vat for VAT registration, check_company for CRO status, and decide_supplier_payment for the complete signed invoice decision. No bank transfer occurs. Free: 10 attempts per UTC day per IP, shared REST/MCP; failures count. Then 0.005 USDC with explicit approval.

Input parameters:

- `request` (required): Validate an IBAN: supply this structured object using the nested schema, not a JSON-encoded string.

### `check_vat` (~166 tokens)

Validates the Irish VAT number format and check letter, then confirms registration live with EU VIES. Returns PASSED, FAILED or UNAVAILABLE (VIES outage) with a reason code and available consultation/audit evidence. Use for one VAT number, not company-name matching or invoice approval. check_company checks CRO status; verify_supplier_payment reconciles claimed supplier identity and VAT; decide_supplier_payment runs the full signed invoice workflow. An outage is uncertainty, not invalid registration; do not auto-pay to retry. Free: 10 attempts per UTC day per IP, shared REST/MCP; failures count. Then 0.01 USDC with explicit approval.

Input parameters:

- `request` (required): Check an Irish VAT number: supply this structured object using the nested schema, not a JSON-encoded string.

### `check_company` (~167 tokens)

Looks up an Irish company by CRO number in the Companies Registration Office open data. PASSED only if the company status is NORMAL; dissolved, liquidated or unknown companies FAIL. Returns the registered name. Use a CRO company number, not a company name or VAT number. Source uncertainty returns UNAVAILABLE, not a pass. Use check_vat for VIES registration, verify_supplier_payment for claimed-name/identity reconciliation, or decide_supplier_payment for a complete signed invoice decision. No invoice is approved here. Free: 10 attempts per UTC day per IP, shared REST/MCP; failures count. Then 0.01 USDC with explicit approval.

Input parameters:

- `request` (required): Check an Irish company status (CRO): supply this structured object using the nested schema, not a JSON-encoded string.

### `check_three_way_match` (~144 tokens)

Checks that a purchase order, goods receipt and invoice agree on supplier, currency, amount, line items, unit prices and quantities received. Stateless; you attach the documents. Checks caller-supplied documents, not independently verified ERP records. Returns PASSED or FAILED and a reason code; no CRO/VIES lookup, signature validation or bank transfer is performed by this tool. Use decide_supplier_payment when document matching must be combined with supplier identity, VAT, payee and signature checks. Requires an explicitly approved service fee.

Input parameters:

- `request` (required): 3-way match PO, goods receipt and invoice: supply this structured object using the nested schema, not a JSON-encoded string.

### `decide_supplier_payment` (~248 tokens)

Flagship. Independent third-party decision for an Irish supplier invoice. Runs five gates (CRO status NORMAL, EU VIES VAT, payee-name and IBAN check, PO/GRN/invoice 3-way match, RSA signature) and returns exactly one of EXECUTE_PAYMENT, REJECT_PAYMENT or FLAG_FOR_HUMAN_REVIEW with per-check results, reason codes and a confidence score. The legacy CONFIRMATION_OF_PAYEE result means a payee-name comparison with the CRO legal name and IBAN validation, not bank Confirmation of Payee. ERP_THREE_WAY_MATCH compares caller-supplied documents, not independently verified ERP records. Decides only; never moves money. Register a signing key first via /v1/agent-keys. Use this for the complete signed invoice/PO/GRN workflow, not verify_supplier_payment's separate identity/VAT contract or get_verification retrieval. Provider uncertainty requires review, not execution; retain independent payment approval. Supply a stable transaction_id for retries and never automatically repay.

Input parameters:

- `payment_request` (required): Decide: pay this supplier invoice or not: supply this structured object using the nested schema, not a JSON-encoded string.

### `register_signing_key` (~178 tokens)

Registers an RSA public key (2048-bit or larger, PEM) used to sign payment-decision requests. Keys are immutable per tenant; rotate by registering a new key_id. Returns key_id and registered=true. Use before decide_supplier_payment and use the same tenant/paying wallet for registration and decision. This is not a supplier check, API-key creation or payment authorization. Keep the RSA private key local; a conflicting existing key_id returns a conflict. Inspect and approve the registration fee before calling.

Input parameters:

- `key_id` (string, required): Caller-chosen RSA public-key identifier, unique within your tenant. Reuse it in signature.key_id; rotate with a new ID.
- `public_key_pem` (string, required): PEM-encoded RSA public key, at least 2048 bits. Never send a private key, wallet key or certificate.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/lkennedyshare-supplier-payment-verifier/supplier-payment-verifier-production#diagnostics

## Score history

- 2026-10-18: 63
- 2026-10-17: 63
- 2026-10-16: 60
- 2026-10-15: 59
- 2026-10-14: 59

## Common questions

### What is the Supplier Payment Decision Agent (Ireland) MCP server?

Supplier Payment Decision Agent (Ireland) is an MCP server listed in the public MCP registry as io.github.LKennedyShare/supplier-payment-verifier. Free daily IBAN, VIES VAT and CRO checks; paid invoice decisions. x402. Never moves invoice money. This page covers its hosted endpoint (https://supplier-payment-verifier-production.up.railway.app/mcp/).

### Is the Supplier Payment Decision Agent (Ireland) MCP server safe to use?

Supplier Payment Decision Agent (Ireland) scores 63 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Supplier Payment Decision Agent (Ireland) MCP server expose?

Supplier Payment Decision Agent (Ireland) exposes 8 tools: verify_supplier_payment, get_verification, check_iban, check_vat, check_company, and 3 more. Their descriptions and schemas cost roughly 1,584 tokens of context every time the server is loaded.

### Does the Supplier Payment Decision Agent (Ireland) MCP server require authentication?

No. We connected to Supplier Payment Decision Agent (Ireland) without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the Supplier Payment Decision Agent (Ireland) MCP server still maintained?

Supplier Payment Decision Agent (Ireland) is still listed as active in the MCP registry. We last reached this channel on 18 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://supplier-payment-verifier-production.up.railway.app/mcp/
- Website: https://github.com/LKennedyShare/supplier-payment-assistant
- Changelog RSS feed: https://verifymcp.io/servers/lkennedyshare-supplier-payment-verifier/supplier-payment-verifier-production.xml
- Changelog JSON feed: https://verifymcp.io/servers/lkennedyshare-supplier-payment-verifier/supplier-payment-verifier-production.json
- HTML version of this page: https://verifymcp.io/servers/lkennedyshare-supplier-payment-verifier/supplier-payment-verifier-production
