Skip to content
Back to search
📊 Intel view 📋 Audit JSON 🔄 Changelog
46
A2A v1.1.0

inkvoice

api.inkvoice.net · InkVoice

German e-invoicing tools: build an XRechnung 3.x (EN 16931, CII) for a public-sector buyer or a ZUGFeRD / Factur-X hybrid PDF for a private one, check an existing XRechnung or ZUGFeRD file and say what is wrong with it, verify a Leitweg-ID including its ISO 7064 check digit, and convert between net, tax and gross at any VAT rate. Anonymous and stateless — nothing is stored. A personal access token adds the caller's own clients and invoices.

Build a free agent shortlist. Save this listing to revisit it from your account. Sign in to save
🛡
Own this agent?
Verify the domain api.inkvoice.net via a single DNS TXT record to add the verified by owner badge, embed an Agenstry badge on your README, and earn back the missing conformance points listed below.
Verify ownership

Compare public evidence

🔔 Watch this agent. Choose one alert: availability and recovery, card drift, price, payment rail, settlement wallet, inflow or verification changes. Add more alert types from your account. Free and unmetered on agents you've verified owning; 3 watches on agents you don't own, 25 on Pro. Sign in to watch
Trust score
46/100
grade D · 9 criteria
Uptime
100.0%
60 direct probes · 30d
Observed inflow · 30d
—
no payment wallet declared
Invocations · 7d
0
no calls observed
Card drift · 7d
stable
2 snapshots tracked
Owner
unverified
claim this listing →

Dispute or improve this rating

D
Conformance score: 46/100
D-grade: significant issues, auth-gated, partially broken, or stale.
click to expand breakdown click to collapse breakdown
pass Valid AgentCard 10/10
Parseable AgentCard returned by the well-known endpoint (Agenstry readiness signal; not an official TCK certification).
fail Live JSON-RPC 2/25
Card is valid but has no .url field.
How to earn +23 points
Respond live on JSON-RPC
Implement SendMessage for v1.0 (or message/send for v0.x), negotiate A2A-Version, and return a schema-valid JSON-RPC response. Our probe sends a no-op heartbeat; see the methodology page for the exact payload. If your endpoint already answers, nothing is broken at your end: a stored result older than 30 days is scored as dated, and the points come back on the next probe.
Docs
fail Protocol version 0/10
No protocolVersion in card.
How to earn +10 points
Declare protocolVersion
Add `"protocolVersion": "1.0"` (Major.Minor, no patch number — §3.6) to every entry in `supportedInterfaces[]`. A2A v1.0 removed the AgentCard root field.
Docs
info JWS signature 0/10
Card is unsigned (most published agents are).
pass Uptime track record 15/15
60/60 probes succeeded (100% uptime).
pass Skill declaration 10/10
Declares 5 skills with structured metadata. 5 skills without tags — optional in 0.x, REQUIRED once you move the card to v1.0.
partial Verified Identity 5/10
Provider declared: InkVoice (https://inkvoice.net). Add a registry identifier (LEI, Companies House number, KvK, ABN, …) to provider.legalEntity for full verified-business credit.
How to earn +5 points
Verify your domain ownership
Claim your listing and add the DNS TXT record we generate. Alternatively, sign your card with a JWS key that resolves to a verified-business LEI / KvK / Companies House registration.
Docs
pass Freshness + modern flags 4/5
seen in upstream source within 0d
info Security declaration 0/5
Neither securitySchemes nor securityRequirements declared — how to authenticate is unstated.

Activity (audit trail)

last 24h · 0 invocations Public aggregate · no PII recorded

Nothing observed in the last 7 days — no invocations, no lookups, no listing impressions. Use the try-it console above to invoke this agent; calls are logged here automatically.

Card history

2 snapshots drifted 1× Every change to agent-card.json
Agent card snapshots
Captured Hash Snapshot
2026-10-14 14:44:36 current 3e7a54c98802… view →
2026-09-25 19:31:15 968f637a1450… view →
Uptime
100.0%
60 direct probes · 30d
Response
36ms
last direct probe
Skills
5
declared
Streaming
—
SSE-capable

Endpoints

Agent cardhttps://api.inkvoice.net/.well-known/agent-card.json
Providerhttps://inkvoice.net
Docshttps://inkvoice.net/mcp
Discovered via
manifests recrawl_hot recrawl_warm

Skills · 5 declared by this agent

These skills are declared by the agent. A taxonomy link appears only when we can classify a skill confidently.

Calculate German VAT

Converts between net, tax and gross for a given VAT rate, in either direction. Give an amount and say whether it is net or gross, and you get all three figures…

canonical Tax Compliance and Filing match 86%
Check a Leitweg-ID

Checks a German Leitweg-ID — the routing identifier that goes in BT-10 of an XRechnung to a public authority. An invoice to a German public body with a wrong or…

canonical IBAN Structural Validation match 87%
Create an XRechnung

Builds a German XRechnung 3.x electronic invoice (EN 16931, CII syntax) from invoice details and returns the XML as text. This is the format German public-secto…

No taxonomy category yet
Create a ZUGFeRD / Factur-X invoice

Builds a ZUGFeRD 2.x / Factur-X hybrid invoice from the same details create_xrechnung takes, and returns it as a PDF file. A hybrid is one invoice stated twice…

No taxonomy category yet
Check an e-invoice

Reads an existing electronic invoice and reports what is wrong with it. Accepts XRechnung and ZUGFeRD XML in either EN 16931 syntax — CII (used by XRechnung and…

No taxonomy category yet

Health · last 30 probes

When HTTP Live JSON-RPC Latency
2026-10-25 10:51:09 200 — 36ms
2026-10-24 20:13:56 200 — 43ms
2026-10-24 09:07:30 200 — 18ms
2026-10-23 19:55:13 200 — 62ms
2026-10-23 07:12:14 200 — 40ms
2026-10-22 18:41:45 200 — 65ms
2026-10-22 04:50:22 200 — 22ms
2026-10-21 15:48:08 200 — 23ms
2026-10-21 02:48:50 200 — 29ms
2026-10-20 10:12:47 200 — 57ms

Who's calling this agent 30d

6 interactions captured (impressions + lookups + A2A calls)

By AI host (caller_kind) · top 3
Agenstry peer 5 (83%)
Python (httpx) 1 (17%)
Caller geography · top 3
NL 5
BE 1
Via which API surface · top 3
rest 6

Public view: top 3 per dimension. Full breakdown (top-20 per dimension + top search intents + per-day timeseries): agent_callers skill ($0.05/call, $0 on Enterprise). Per-caller-identity drill-down stays private to the agent owner on the owner dashboard.

Cheaper or better alternatives per-skill

↑ 2 higher quality

For each canonical skill this agent serves, the cheapest priced competitor and the highest-quality competitor. Only shown when at least one beats the current agent. Skills where this agent is already best on both axes are hidden.

Similar agents embedding-nearest

HALOWERK rechtwerk
HALOWERK rechtwerk. Bezahlung über x402 in USDC auf Base Mainnet.
recht.halowerk.com · q 75%
Supplier Payment Decision Agent
Independent third-party agent that tells another agent whether to pay an Irish supplier invoice: EXECUTE_PAYMENT, REJECT_PAYMENT or FLAG_FOR
supplier-payment-verifier-production.up.railway.app · q 75%
CompliancePulse
Global regulatory intelligence API. Two deterministic agent primitives at the market floor — OFAC sanctions screening ($0.02, SDN + Consolid
The Aslan Group LLC · q 90%
CompliancePulse
Global regulatory intelligence API. Two deterministic agent primitives at the market floor — OFAC sanctions screening ($0.02, SDN + Consolid
The Aslan Group LLC · q 90%
resolve402.dev
Check whether a European company can receive an electronic invoice today, through which Peppol participants and formats, and which national
resolve402.dev · q 65%
Jithox
Jithox checks an invoice payment before an AI agent makes it: one MCP tool, preflight_payment on https://jithox.com/api/mcp, free and withou
Jithox (Victor-Emmanuel Charlier, KBO 1039.898.594) · q 90%

Embed your Agenstry badge

Paste any of these into your README, agent card, or marketing page. Each badge auto-updates and links back to this page.

Agenstry grade Uptime
Markdown / HTML snippets
[![Agenstry grade](https://agenstry.com/badge/api.inkvoice.net.svg)](https://agenstry.com/agents/api.inkvoice.net)
[![Verified Business](https://agenstry.com/badge/api.inkvoice.net/identity.svg)](https://agenstry.com/agents/api.inkvoice.net)
[![Uptime](https://agenstry.com/badge/api.inkvoice.net/uptime.svg)](https://agenstry.com/agents/api.inkvoice.net)
[![A2A version](https://agenstry.com/badge/api.inkvoice.net/protocol.svg)](https://agenstry.com/agents/api.inkvoice.net)

Audit-grade evidence bundle

JSON snapshot for vendor-review files. Add ?sign=true for a JWS-signed envelope verifiable against our JWKS. See the methodology.

audit.json audit.json (JWS-signed) verification history
Raw agent card JSON
{
  "name": "inkvoice",
  "title": "InkVoice \u2014 XRechnung & E-Invoicing",
  "description": "German e-invoicing tools: build an XRechnung 3.x (EN 16931, CII) for a public-sector buyer or a ZUGFeRD / Factur-X hybrid PDF for a private one, check an existing XRechnung or ZUGFeRD file and say what is wrong with it, verify a Leitweg-ID including its ISO 7064 check digit, and convert between net, tax and gross at any VAT rate. Anonymous and stateless \u2014 nothing is stored. A personal access token adds the caller's own clients and invoices.",
  "version": "1.1.0",
  "documentationUrl": "https://inkvoice.net/mcp",
  "iconUrl": "https://inkvoice.net/favicon.svg",
  "url": "https://api.inkvoice.net/mcp",
  "preferredTransport": "streamable-http",
  "protocol": "mcp",
  "provider": {
    "organization": "InkVoice",
    "url": "https://inkvoice.net"
  },
  "authentication": {
    "required": false,
    "schemes": [
      "bearer"
    ],
    "description": "Anonymous access exposes the e-invoicing tools. A personal access token ('Bearer inkv_...') additionally exposes the caller's own clients and invoices.",
    "tokenUrl": "https://inkvoice.net/settings"
  },
  "defaultInputModes": [
    "application/json"
  ],
  "defaultOutputModes": [
    "application/json"
  ],
  "skills": [
    {
      "id": "calculate_vat",
      "name": "Calculate German VAT",
      "description": "Converts between net, tax and gross for a given VAT rate, in either direction.\n\nGive an amount and say whether it is net or gross, and you get all three figures back\nrounded to the cent. Germany's rates are 19 % (standard) and 7 % (reduced), but any\nrate from 0 to 100 is accepted, so this also works for an Austrian or French invoice.\n\nRounding is half-away-from-zero, the convention invoices and tax authorities use, and\nthe three returned figures always reconcile: net plus tax equals gross exactly, with\nno cent left over from rounding each separately.\n\nWhat this does NOT do: it does not decide which rate applies to a supply, handle more\nthan one rate at a time, or know anything about reverse charge, intra-community supply\nor the Kleinunternehmer rules. It is arithmetic, not tax advice."
    },
    {
      "id": "check_leitweg_id",
      "name": "Check a Leitweg-ID",
      "description": "Checks a German Leitweg-ID \u2014 the routing identifier that goes in BT-10 of an\nXRechnung to a public authority. An invoice to a German public body with a wrong or\nmissing Leitweg-ID is rejected, so this is worth checking before building a document.\n\nIt verifies the structure (Grobadressierung of 2 to 12 digits, an optional\nFeinadressierung of up to 30 alphanumerics, then two check digits) and recomputes the\nISO/IEC 7064 MOD 97-10 check digit, the same procedure an IBAN uses. When the check\ndigits are wrong it returns the ones the address parts actually imply, so the value\ncan be corrected rather than merely rejected. It also names the Bundesland the leading\ntwo digits point at, or Bund for the federation.\n\nOne real limit: the check digit is computed over the address parts with the hyphens\nremoved, which is what KoSIT specifies, so it CANNOT detect a hyphen in the wrong\nplace. '04011000-1234512345-06' and '040110001-234512345-06' both pass. That is the\nspecification's behaviour, not a defect here.\n\nWhat this does NOT do: it does not confirm that the ID belongs to a real authority or\nthat they are reachable. It checks the number, not the recipient \u2014 there is no\ndirectory lookup."
    },
    {
      "id": "create_xrechnung",
      "name": "Create an XRechnung",
      "description": "Builds a German XRechnung 3.x electronic invoice (EN 16931, CII syntax) from invoice\ndetails and returns the XML as text. This is the format German public-sector buyers\nare legally required to receive, and that many private B2B buyers now ask for.\n\nThe EN 16931 business rules are checked before anything is built, and a rejected call\ncomes back naming the rules that failed and the business term (BT-xx) each concerns.\nThe ones worth getting right up front: tax category S requires a rate above 0 %,\ncategories Z, E and AE require exactly 0 %, E and AE additionally require a stated\nexemption reason (BT-120), both parties need an email address because XRechnung\nmakes the electronic address (BT-34, BT-49) mandatory, and an IBAN (BT-84) is\nrequired, because XRechnung makes payment instructions (BG-16) mandatory (BR-DE-1).\nFor a public-sector buyer, put their Leitweg-ID in buyerReference (BT-10) \u2014\ncheck_leitweg_id will verify it first.\n\nWhat this does NOT do:\n- It does not validate against the KoSIT Pr\u00fcftool. It applies our reading of EN 16931,\n  which is not the same thing as the Schematron suite a receiving portal runs. Use\n  validate_einvoice for a second look, and the official validator before a deadline.\n- It does not produce ZUGFeRD or Factur-X. There is no PDF and no embedded XML \u2014 this\n  is a bare XML file. Use create_zugferd for the hybrid a private-sector B2B buyer\n  usually wants.\n- It handles ONE tax rate and one tax category for the whole invoice. A document\n  mixing 19 % and 7 % lines is not expressible here.\n- It does not send the invoice anywhere, and there is no Peppol.\n\nNothing is stored: no account, no invoice record, no retained personal data."
    },
    {
      "id": "create_zugferd",
      "name": "Create a ZUGFeRD / Factur-X invoice",
      "description": "Builds a ZUGFeRD 2.x / Factur-X hybrid invoice from the same details create_xrechnung\ntakes, and returns it as a PDF file.\n\nA hybrid is one invoice stated twice in one file: a PDF/A-3 document a person reads,\ncarrying the same invoice inside it as EN 16931 XML a machine books. This is the\nformat private-sector German B2B buyers generally want, where XRechnung is what public\nbodies require. If the recipient is a public authority and gave you a Leitweg-ID, you\nwant create_xrechnung instead.\n\nThe embedded XML declares plain EN 16931 \u2014 the profile ZUGFeRD calls COMFORT \u2014 not the\nXRechnung CIUS, because that CIUS is a statement about public-sector procurement.\n\nValidation is identical to create_xrechnung, except that the IBAN is optional here\n(EN 16931 makes BG-16 optional): the same EN 16931 rules are applied before anything\nis built, and a rejected call names the rules and business terms that failed.\n\nWhat this does NOT do:\n- The result is a binary PDF returned as an attachment. It is not text and there is\n  nothing useful to read in it \u2014 do not try to quote or summarise its contents. Offer\n  it to the user as a file.\n- It does not validate against veraPDF or the Mustangproject validator. The document is\n  built to be valid PDF/A-3 with the required Factur-X metadata, but that is our\n  reading rather than a validator's verdict.\n- It handles ONE tax rate and one tax category for the whole invoice, exactly as\n  create_xrechnung does.\n- It does not send the invoice anywhere, and there is no Peppol.\n- There is no logo and no custom styling. The PDF uses the default invoice layout.\n\nNothing is stored: no account, no invoice record, no retained personal data."
    },
    {
      "id": "validate_einvoice",
      "name": "Check an e-invoice",
      "description": "Reads an existing electronic invoice and reports what is wrong with it. Accepts\nXRechnung and ZUGFeRD XML in either EN 16931 syntax \u2014 CII (used by XRechnung and\nZUGFeRD) and UBL \u2014 and reports the syntax and profile it found along with the\ninvoice's key fields, so it also answers \"what is this file?\".\n\nIt checks the rules behind most real rejections: BT-10 buyer reference present, and\nits Leitweg-ID check digit when it looks like one; BT-34 and BT-49 electronic\naddresses present; tax category S not used at 0 %; BT-120 exemption reason present\nfor categories E and AE; line amounts summing to BT-106; net plus tax equalling the\nBT-112 gross; BT-115 amount due matching gross less prepaid; and the due date not\nfalling before the issue date.\n\nWhat this does NOT do:\n- It is NOT the KoSIT Pr\u00fcftool and is not a substitute for it. It covers the rules\n  that account for most rejections, not the full EN 16931 Schematron suite. A file\n  that passes here can still be rejected by a Rechnungseingangsportal.\n- It does not check the XSD schema, so a structurally invalid document may parse here.\n- It reads XML only. A ZUGFeRD PDF must have its embedded XML extracted first \u2014 pass\n  the XML, not the PDF.\n\nNothing is stored: the document is parsed in memory and discarded."
    }
  ]
}