{"openapi":"3.1.0","info":{"title":"EU E-Invoice Builder API","version":"0.1.0","description":"EU E-Invoice Builder turns plain invoice data (parties, lines, VAT categories, payment means) into a Peppol BIS Billing 3.0 UBL Invoice or Credit Note XML draft. build_ubl_invoice and build_ubl_credit_note compute the totals and the VAT breakdown with the EN 16931 rounding rules, insert the CustomizationID and ProfileID, refuse input that breaks a business rule (rule ids such as BR-CO-15 or...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://eu-einvoice-builder.connectorbay.com/mcp.\n\nDisclaimer: General information only, not legal, tax, accounting or payment advice. EU E-Invoice Builder is an independent tool: it is not affiliated with, endorsed by or operated by any government body, central bank, standards body or scheme operator. Rates, thresholds and rules change; check the cited official source and confirm with a qualified professional before you rely on a result.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/eu-einvoice-builder/docs"},"termsOfService":"https://connectorbay.com/eu-einvoice-builder/terms"},"servers":[{"url":"https://eu-einvoice-builder.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/eu-einvoice-builder/docs"},"security":[{},{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/build_ubl_invoice":{"post":{"operationId":"build_ubl_invoice","summary":"Create a Peppol BIS Billing 3.0 UBL Invoice XML draft from invoice JSON, with computed totals, VAT breakdown and a struc","description":"Create a Peppol BIS Billing 3.0 UBL Invoice XML draft from invoice JSON, with computed totals, VAT breakdown and a structural check. Use for \"Turn this invoice data into a Peppol e-invoice XML draft I can review\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"invoice":{"additionalProperties":true,"description":"Invoice as JSON: number, issue_date, currency, seller, buyer, lines, payment_means (see invoice_input_guide for the shape); money and quantities as strings such as '19.99'. Each text at most 5,000 characters.","title":"Invoice","type":"object"}},"required":["invoice"],"title":"build_ubl_invoiceArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/build_ubl_credit_note":{"post":{"operationId":"build_ubl_credit_note","summary":"Create a Peppol BIS Billing 3.0 UBL Credit Note XML draft from the same JSON shape (type code 381 by default). Use for \"","description":"Create a Peppol BIS Billing 3.0 UBL Credit Note XML draft from the same JSON shape (type code 381 by default). Use for \"Make a credit note for invoice INV-2026-001 as a Peppol e-invoice draft\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"invoice":{"additionalProperties":true,"description":"Credit note as JSON in the same shape as an invoice; type_code defaults to 381; add preceding_invoices to reference the original. Each text at most 5,000 characters.","title":"Invoice","type":"object"}},"required":["invoice"],"title":"build_ubl_credit_noteArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/compute_totals":{"post":{"operationId":"compute_totals","summary":"Line, tax and payable totals and the VAT breakdown of an invoice, with the rounding policy stated. Use for \"What are the","description":"Line, tax and payable totals and the VAT breakdown of an invoice, with the rounding policy stated. Use for \"What are the VAT total and amount due for these invoice lines?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"invoice":{"additionalProperties":true,"description":"Invoice JSON (see invoice_input_guide); only the lines, currency, allowances and prepaid amount matter for totals. Each text at most 5,000 characters.","title":"Invoice","type":"object"},"rounding":{"default":"en16931","description":"en16931 (default: VAT per category, BR-CO-17) or per_line_vat (VAT per line, used by some national systems; the UBL builders refuse it). At most 40 characters.","title":"Rounding","type":"string"}},"required":["invoice"],"title":"compute_totalsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/pick_vat_category":{"post":{"operationId":"pick_vat_category","summary":"What EN 16931 requires for each VAT category code and which VATEX exemption codes fit, for a described situation. Use fo","description":"What EN 16931 requires for each VAT category code and which VATEX exemption codes fit, for a described situation. Use for \"What does an invoice need if the supply is a reverse-charge supply?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"situation":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"standard_rate, zero_rated, exempt, reverse_charge, intra_community_supply, export_outside_eu, not_subject_to_vat, canary_islands_igic or ceuta_melilla_ipsi; omit to list all. At most 300 characters.","title":"Situation"}},"title":"pick_vat_categoryArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_vatex_codes":{"post":{"operationId":"list_vatex_codes","summary":"Search the VAT exemption reason (VATEX) code list of the May 2026 Peppol release. Use for \"Which VATEX code is the intra","description":"Search the VAT exemption reason (VATEX) code list of the May 2026 Peppol release. Use for \"Which VATEX code is the intra-community supply exemption?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Text to look for in the code or description (for example intra, reverse, article 132); omit to list the first 100. At most 100 characters.","title":"Query"}},"title":"list_vatex_codesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/invoice_input_guide":{"post":{"operationId":"invoice_input_guide","summary":"The invoice JSON shape accepted by the builders, with business-term (BT) numbers per field and a worked minimal example.","description":"The invoice JSON shape accepted by the builders, with business-term (BT) numbers per field and a worked minimal example. Use for \"What fields do I need to give to make a Peppol invoice?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"invoice_input_guideArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/peppol_ids":{"post":{"operationId":"peppol_ids","summary":"The CustomizationID, ProfileID and EndpointID elements to insert in a Peppol BIS Billing 3.0 document. Use for \"Which Cu","description":"The CustomizationID, ProfileID and EndpointID elements to insert in a Peppol BIS Billing 3.0 document. Use for \"Which CustomizationID and EndpointID schemeID do I put in the XML?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"endpoint_scheme":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"4-digit EAS code of the endpoint id, for example 9930 or 0088. At most 50 characters.","title":"Endpoint Scheme"},"endpoint_value":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"The endpoint id value, for example a VAT number or GLN. At most 100 characters.","title":"Endpoint Value"}},"title":"peppol_idsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}