Counterfoil

Connect

Returns stored rule notes; does not validate invoice compliance.

The endpoint is free Streamable HTTP. There is no account and no API key. It quotes stored Peppol, XRechnung, and EN 16931 rule notes. Not a validator. Not tax, legal, or accounting advice.

Endpoint

Client configuration

One configuration. In Claude, open Settings, then Connectors. Choose Add, then Add custom connector, and paste the URL above. This server does not ask for a key or an OAuth screen. Those steps are the remote-connector flow in the MCP docs for protocol 2026-07-28, retrieved 2026-10-19. No other client snippet is listed here.

First task

Use Counterfoil to explain BR-DE-15. Quote the stored rule, suggested fix, and official source.

Call get_rule with these arguments:

{"id":"BR-DE-15"}

Request sequence

Protocol 2026-07-28 uses one POST. It does not call initialize. A legacy initialize still works for 2025-11-25, 2025-06-18, and 2025-03-26.

Internal check, 2026-10-19: this sequence was posted to the MCP handler on this machine. The response was HTTP 200 with MCP-Protocol-Version: 2026-07-28 and a 1314-byte JSON body. That check was not an outside caller.

{
  "jsonrpc": "2.0",
  "id": "1",
  "method": "tools/call",
  "params": {
    "name": "get_rule",
    "arguments": {"id":"BR-DE-15"},
    "_meta": {"io.modelcontextprotocol/protocolVersion": "2026-07-28"}
  }
}

Expected response excerpt

HTTP 200. result.resultType is complete. result.isError is false. result.content[0].text is:

id: BR-DE-15
statement: [BR-DE-15] Das Element "Buyer reference" (BT-10) muss übermittelt werden.
meaning: The element "Buyer reference" (BT-10) must be transmitted. The published test requires cbc:BuyerReference to contain something other than whitespace.
fix: Send a non-empty buyer reference in BT-10 (cbc:BuyerReference).
source: https://github.com/itplr-kosit/xrechnung-schematron/blob/v2.6.0/src/validation/schematron/ubl/XRechnung-UBL-validation.sch
context: /ubl:Invoice | /cn:CreditNote
test: cbc:BuyerReference[boolean(normalize-space(.))]

structuredContent carries the same statement, meaning, fix, and source_url. The meaning is the plain reading. The fix is the suggested change. The source URL is the official source.

Invoice page · Skill · MCP card · Privacy