Install Jentic One Beta
Jentic One is a self-hosted execution layer for AI agents. It lets your agent call the invowerk, or any other public or private API you need. You set the rules, the agent never sees your credentials, and every call is logged.
Two steps, two machines. Install the instance in a safe environment, then register your agent from wherever it runs.
Step 1: Jentic One Host machine
# On the machine that will host your Jentic One instance:
curl -fsSL "https://jentic.com/install.sh?src=apis&api=%2Fapis%2Finvowerk.dev%2Finvowerk" | shStep 2: Agent machine
# On the machine where your agent runs (keep this separate from the instance):
curl -fsSL "https://jentic.com/install.sh?src=apis&api=%2Fapis%2Finvowerk.dev%2Finvowerk" | sh
jentic register # connects your agent to your Jentic One instanceJentic One is in public beta. The setup above keeps your agent separate from the instance, which is what you want before using real credentials: an agent running as the same OS user as Jentic One can read its stored keys directly. Just evaluating? A single local install is fine to start. See the secure deployment guide for the tiers.
What an agent can do with invowerk API.
Validate a ZUGFeRD, Factur-X, XRechnung, or UBL/CII e-invoice against EN 16931 and German rules
Explain a validation rule code in German or English with the cause and the fix
Read an XML or ZUGFeRD PDF e-invoice into JSON keyed on EN 16931 Business Terms
Convert an e-invoice between UBL and CII with target_syntax, optionally to the xrechnung flavor
Generate an EN 16931 or XRechnung e-invoice from JSON with seller, buyer, lines, tax_breakdown, and totals
GET STARTED
Render an XML e-invoice as a readable HTML page
Patterns agents use invowerk API for, with concrete tasks.
★ AI bookkeeping agent checking incoming e-invoices
A developer's agent connected through Jentic finds the invowerk validate operation by intent and calls it with the X-API-Key injected at execution time. It submits each incoming XRechnung or ZUGFeRD file, asks for explained findings, and reports which invoices fail EN 16931 or German rules and why, without the key entering the agent's context.
POST /v1/validate with an XRechnung XML file as the body, explain true, and lang 'en', then list each failed rule with its fix
Fixing a rejected invoice
When a public-sector portal rejects an invoice, the rejection carries rule codes that are hard to read. The explain operation returns, for each code, the title, what the rule requires, common causes, how to fix the invoice, and the affected Business Terms, and the parse operation returns the invoice as JSON that can be edited and sent back through generate.
GET /v1/explain with code 'BR-DE-15' and lang 'en', then POST /v1/parse on the invoice, add the missing field, and POST /v1/generate with the edited model
Producing compliant e-invoices from billing data
German B2G and, increasingly, B2B billing requires structured e-invoices. The generate operation builds an EN 16931 invoice from JSON with required invoice_number, issue_date, seller, buyer, lines, tax_breakdown, and totals, in UBL or CII, and the xrechnung flavor requires buyer_reference, the Leitweg-ID. invowerk writes amounts as given rather than recalculating them.
POST /v1/generate with syntax 'cii', flavor 'xrechnung', buyer_reference set to the Leitweg-ID, and the seller, buyer, lines, tax_breakdown, and totals, then POST /v1/validate on the result
Syntax conversion for a receiving system
A buyer's system may accept only UBL while a supplier sends CII, or the reverse. The convert operation takes XML or a ZUGFeRD or Factur-X PDF up to 20 MB, a required target_syntax of ubl or cii, and an optional target_flavor of en16931 or xrechnung.
POST /v1/convert with a ZUGFeRD PDF as the body and target_syntax 'ubl', then save the returned XML
7 endpoints — the invowerk api checks german and european e-invoices against en 16931 and the german rules, covering zugferd and factur-x pdfs including pdf/a, xrechnung through the kosit validator, and peppol bis.
METHOD
PATH
DESCRIPTION
/v1/validate
Check an e-invoice
/v1/explain
Explain a rule code
/v1/parse
Read an e-invoice into JSON
/v1/convert
Convert between UBL and CII
/v1/generate
Create an e-invoice from JSON
/v1/render
Render an e-invoice as HTML
/v1/me
Plan, requests, and credits remaining
/v1/validate
Check an e-invoice
/v1/explain
Explain a rule code
/v1/parse
Read an e-invoice into JSON
/v1/convert
Convert between UBL and CII
/v1/generate
Create an e-invoice from JSON
/v1/render
Render an e-invoice as HTML
/v1/me
Plan, requests, and credits remaining
What agents get from Jentic-routed access to this vendor.
Setup
Wiring invowerk by hand means sending the X-API-Key header, picking the right body type for XML, PDF, or multipart uploads, and reading RFC 9457 problem codes and rate-limit headers. Through Jentic you install once, import invowerk from the API Directory, store the key once, and your agent calls it.
Permission scoping
invowerk takes the invoice itself as the request body, so rules bound which operations your agent may call rather than which invoice it sends. You choose the operations it may call, so generating or converting invoices is not included unless you add it.
Credential isolation
Your invowerk API key is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
Intent-based discovery
Agents search Jentic by intent such as 'validate an XRechnung' or 'convert UBL to CII', and Jentic returns the matching invowerk operation with its input schema so the agent calls the right endpoint without browsing the reference docs.
Alternatives and complements available in the Jentic catalogue.
Specific to using invowerk API through Jentic.
What authentication does the invowerk API use?
Per its OpenAPI spec, invowerk uses an API key sent in the `X-API-Key` request header on its operations. The spec notes that calls without a key run anonymously at a lower rate limit per IP address, and GET /v1/me reports whether your key was recognised. Through Jentic the key is stored by your own instance and attached at call time.
Which e-invoice formats can invowerk validate?
POST /v1/validate accepts an XML invoice in UBL or CII, including XRechnung, or a ZUGFeRD or Factur-X PDF, sent as the raw body or a multipart file part of at most 20 MB. invowerk detects the format from the bytes and checks it against EN 16931 and the German rules.
What are the rate limits for the invowerk API?
The OpenAPI spec does not state fixed numbers. Every response carries X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset headers, over-budget calls return 429 with Retry-After, and GET /v1/me returns your live budget.
Is there an invowerk MCP server?
You don't need an MCP server to give your agent invowerk. Jentic connects it directly from the API Directory: import it, store your API key once, and your agent calls the validate, explain, and convert operations it needs, discovered on demand rather than loaded into its context.
Can I limit what my agent is allowed to do with invowerk?
Yes. For example, write a rule that allows only POST /v1/validate and GET /v1/explain, so the agent can check invoices and explain their findings but cannot generate or convert invoices that spend credits, and every call it makes is logged.
How do I validate an XRechnung through Jentic?
Import invowerk from the Jentic API Directory and store your X-API-Key once. Your agent searches for 'validate an e-invoice', gets POST /v1/validate with its schema, sends the XML as the body with explain set, and reads the findings. To run it on your own infrastructure, install Jentic One from its GitHub repo.
For Agents
Validate ZUGFeRD, Factur-X, XRechnung, and Peppol e-invoices, explain failed rules, parse invoices to JSON, convert between UBL and CII, and generate EN 16931 invoices.
Use for: Check whether this XRechnung file is valid, I need to validate a ZUGFeRD PDF before sending it to a customer, Explain what rule BR-DE-15 means and how to fix it, Convert this UBL invoice to CII
Not supported: Does not handle sending invoices over Peppol, payment collection, or bookkeeping. Use for validating, parsing, converting, generating, and rendering e-invoice files only.
The invowerk API checks German and European e-invoices against EN 16931 and the German rules, covering ZUGFeRD and Factur-X PDFs including PDF/A, XRechnung through the KoSIT validator, and Peppol BIS. It also reads an existing e-invoice into JSON keyed on EN 16931 Business Terms, converts invoices between UBL and CII syntax, creates a new UBL or CII e-invoice from JSON, and renders an XML invoice as readable HTML with the KoSIT visualization. An explain operation turns any rule code from a validation finding into a German or English description of what the rule requires and how to fix the invoice.
This API is usable in Jentic One now. Its AI-readiness score against Jentic's framework shows where it stands today and where improvements would make it even easier for agents to use.
Base layer of spec validity and structural soundness.
Aggregated quality score from linter diagnostics, weighted by severity.
Percentage of `$ref` references that resolve successfully.
Checks whether the API description parses successfully and conforms to its declared specification (e.g., OpenAPI).
Structural correctness score based on schema issues using logarithmic dampening.
Clarity, completeness, and ingestion readiness for developers and tooling.
How richly the API is illustrated with examples.
Percentage of examples that conform to their schemas.
Percentage of operations with complete response definitions (success, client error, server error).
Health of API ingestion, bundling, and resolution within Jentic pipelines.
Semantic breadth, depth, and agent comprehension for AI systems.
Coverage of descriptions across API elements.
Coverage of RFC 9457 Problem Details for error responses.
Coverage, uniqueness, and casing consistency of operationIds for AI inference.
Coverage of summaries across operations/tags/info.
Functional utility, complexity comfort, and AI orchestration readiness.
Agent comfort level based on API operational and structural complexity.
Trust, risk posture, and security compliance.
Average quality of security schemes based on authentication method strength (weakest link for OAuth2).
Findability, semantic richness, and reasoning readiness.
Clarity and depth of descriptions across API elements.
Score it yourself
Every API in the directory is allowlisted, so you can re-score it with no key required.
npx @jentic/api-scorecard-cli score <openapi-url>