Install Jentic One Beta
Jentic One is a self-hosted execution layer for AI agents. It lets your agent call the Attestwire API, 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%2Fattestwire.com%2Fattestwire" | 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%2Fattestwire.com%2Fattestwire" | 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 Attestwire API.
Validate an invoice against EN 16931 and national CIUS rules such as XRechnung and Peppol BIS 3
Generate compliant invoice XML in UBL 2.1 or UN/CEFACT CII
Diagnose and repair an invoice, returning the official rule id for each failure
Verify a VAT number against the VIES registry
Check whether a recipient can receive documents over Peppol
GET STARTED
Parse an invoice document into a structured JSON model
Patterns agents use Attestwire API for, with concrete tasks.
★ Agent-Checked Invoice Compliance
Before an AI agent connected through Jentic sends an invoice to a buyer, it validates the document against EN 16931 and the national CIUS rules that apply, and reads back the rule id and fix for any failure so it can correct the document first. This keeps non-compliant invoices from leaving the agent's hands and gives it a precise reason whenever one is rejected.
Validate a draft invoice against EN 16931, read the returned rule id for each failure, and confirm the corrected invoice passes
Compliant Invoice Generation
A billing workflow generates invoice XML in the EN 16931 syntax its recipient expects, UBL 2.1 or UN/CEFACT CII, with the profile choosing the syntax on generate. The API produces the structured document ready to transmit, so the workflow never hand-assembles XRechnung or Peppol BIS 3 output.
Generate a compliant invoice in UBL 2.1 for a given buyer and line items and verify it validates clean
VAT and Peppol Pre-Flight
Ahead of invoicing a new buyer, automation verifies the buyer's VAT number against VIES and checks whether they can receive documents over Peppol, so the invoice is addressed correctly the first time. Both checks run from a single Attestwire integration rather than wiring VIES and a Peppol directory separately.
Verify a buyer's VAT number with VIES and check whether the buyer is reachable over Peppol
21 endpoints — the attestwire api validates electronic invoices against en 16931 and its national cius rules such as xrechnung and peppol bis 3, returning the official rule id and a fix for every failure.
METHOD
PATH
DESCRIPTION
/v1/validate
Validate an invoice against EN 16931 rules
/v1/generate
Generate compliant invoice XML
/v1/diagnose
Diagnose and repair an invoice
/v1/vat/verify
Verify a VAT number with VIES
/v1/peppol/lookup
Check a Peppol recipient
/v1/parse
Read an invoice document into the JSON model
/v1/bundle
Bundle the invoice, report, and signed manifest as a ZIP
/v1/validate
Validate an invoice against EN 16931 rules
/v1/generate
Generate compliant invoice XML
/v1/diagnose
Diagnose and repair an invoice
/v1/vat/verify
Verify a VAT number with VIES
/v1/peppol/lookup
Check a Peppol recipient
/v1/parse
Read an invoice document into the JSON model
/v1/bundle
Bundle the invoice, report, and signed manifest as a ZIP
What agents get from Jentic-routed access to this vendor.
Setup
Wiring the Attestwire API by hand means handling its bearer token, learning which endpoints are open and which need the token, and matching the EN 16931 syntax your invoices use, UBL 2.1 or CII. Through Jentic you install once, import Attestwire from the API Directory, store the token once, and your agent calls it.
Permission scoping
Attestwire carries invoice content and keys in the request body, so rules bound which operations your agent may call rather than which invoice. Limit it to the operations it needs, such as validating and generating invoices, so operations like e-mailing an invoice or rotating your key are not included unless you add them.
Credential isolation
Your Attestwire bearer token 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 invoice' or 'verify a VAT number', and Jentic returns the matching Attestwire 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 Attestwire API through Jentic.
What authentication does the Attestwire API use?
The Attestwire API authenticates with a bearer token per its OpenAPI spec, sent in the Authorization header. Some endpoints, such as issuing a free-tier key or checking service health, are open and need no token. Through Jentic the token is stored encrypted by your own Jentic One instance and injected at call time, so it never reaches the agent's context.
Can I generate compliant invoice XML with the Attestwire API?
Yes. The generate operation produces invoice XML in either EN 16931 syntax, UBL 2.1 or UN/CEFACT CII, with the profile choosing the syntax. You can validate the result in the same integration and bundle the invoice, its validation report, and a signed manifest into a single ZIP.
Can I limit what my agent is allowed to do with the Attestwire API?
Yes. Write a rule that allows only the validate, generate, and parse operations, so your agent can check and produce invoices but cannot e-mail one or rotate your key, and every call it makes is logged. Add the VAT-verify and Peppol-lookup operations when you want the agent to run buyer pre-flight checks too.
What are the rate limits for the Attestwire API?
The OpenAPI spec does not state numeric rate limits for the Attestwire API. It exposes a usage endpoint that reports the calling key's current-period usage, and the ceilings that apply depend on your Attestwire plan, so check the usage endpoint and your plan details for current limits.
How do I validate an invoice with the Attestwire API through Jentic?
Search Jentic for 'validate an invoice against EN 16931' and it returns the validate operation with its input schema; your agent submits the invoice and reads back the rule id and fix for any failure. To run it on your own infrastructure, install Jentic One from its GitHub repo.
Is there an Attestwire MCP server?
You don't need an MCP server to give your agent the Attestwire API. Jentic connects it directly from the API Directory: import it, store your token once, and your agent calls the validation, generation, and lookup operations with scoping and credential isolation applied.
For Agents
Validate and generate EN 16931-compliant e-invoices, diagnose failures with the official rule id, verify VAT numbers, and check Peppol recipients. Reads invoice documents into a structured JSON model.
Use for: I need to validate an invoice against EN 16931, Generate a compliant invoice in UBL 2.1, Verify a VAT number with VIES, Check whether a buyer can receive invoices over Peppol
Not supported: Does not handle payment collection, double-entry bookkeeping, or tax return filing. Use for EN 16931 e-invoice validation, generation, and compliance checks only.
The Attestwire API validates electronic invoices against EN 16931 and its national CIUS rules such as XRechnung and Peppol BIS 3, returning the official rule id and a fix for every failure. It generates compliant invoice XML in either EN 16931 syntax, UBL 2.1 or UN/CEFACT CII, parses incoming invoice documents into a structured JSON model, and diagnoses and repairs invoices that do not pass. It also verifies VAT numbers against VIES and checks whether a buyer can receive documents over Peppol.
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>