Romanian company data, e-Factura and legislation: CUI lookup, courts, risk, invoices, laws
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Bearer <api_key>. Get a free key: POST https://api.howtoromania.io/v1/keys {"email":"[email protected]"}
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Renders a valid e-Factura XML as PDF using ANAF's public transformation service (no ANAF account). Returns the PDF as a base64 resource. The XML must pass validation. Costs 1 credit; not billed on errors.
UBL 2.1 Invoice or CreditNote XML (RO e-Factura / CIUS-RO)
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Renders a valid e-Factura XML as PDF using ANAF's public transformation service (no ANAF account). Returns the PDF as a base64 resource. The XML must pass validation. Costs 1 credit; not billed on errors.
| Argument | Type | Description |
|---|---|---|
| xml* | string | UBL 2.1 Invoice or CreditNote XML (RO e-Factura / CIUS-RO) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"xml"
],
"properties": {
"xml": {
"type": "string",
"maxLength": 300000,
"minLength": 20,
"description": "UBL 2.1 Invoice or CreditNote XML (RO e-Factura / CIUS-RO)"
}
}
}Builds a valid RO e-Factura (CIUS-RO 1.0.1, UBL 2.1) invoice XML from simple JSON: seller/buyer (just the CUI is enough: name, address, county code and VAT status are auto-filled from ANAF), lines with quantity, unit price and VAT rate (default 21%; categories S, Z, E, AE reverse charge, K, G, O not subject). Computes line, VAT and grand totals and returns the XML plus ANAF's validation verdict (public validation service). Does NOT submit to SPV. Costs 2 credits; not billed on errors.
| Argument | Type | Description |
|---|---|---|
| note | string | |
| buyer* | object | |
| lines* | array | |
| number* | string | Invoice number, e.g. HTR-0001 |
| seller* | object | |
| dueDate | string | |
| autofill | boolean | Fill parties from ANAF by CUI (default true) |
| currency | string | Default RON |
| issueDate | string | YYYY-MM-DD, default today |
| paymentTerms | string | |
| vatToRonRate | number | Required if currency != RON (RON per unit, e.g. BNR rate) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"number",
"seller",
"buyer",
"lines"
],
"properties": {
"note": {
"type": "string"
},
"buyer": {
"type": "object",
"properties": {
"cui": {
"type": "string",
"description": "Romanian CUI; with autofill, name/address/VAT status come from ANAF"
},
"bank": {
"type": "string"
},
"city": {
"type": "string",
"description": "For Bucharest use 'Sector N'"
},
"iban": {
"type": "string",
"description": "Seller IBAN for payment"
},
"name": {
"type": "string"
},
"email": {
"type": "string"
},
"phone": {
"type": "string"
},
"vatId": {
"type": "string",
"description": "VAT id (e.g. RO14399840 or DE123456789 for foreign parties)"
},
"county": {
"type": "string",
"description": "County name or code (Cluj, CJ, RO-CJ, B)"
},
"street": {
"type": "string"
},
"country": {
"type": "string",
"description": "ISO 2-letter, default RO"
},
"postalCode": {
"type": "string"
},
"vatRegistered": {
"type": "boolean"
}
}
},
"lines": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"quantity",
"unitPrice"
],
"properties": {
"name": {
"type": "string"
},
"vatRate": {
"type": "number"
},
"quantity": {
"type": "number"
},
"unitCode": {
"type": "string",
"description": "UN/ECE rec 20, default H87 (piece); HUR hour, KGM kg"
},
"unitPrice": {
"type": "number"
},
"description": {
"type": "string"
},
"vatCategory": {
"type": "string"
}
}
},
"maxItems": 500,
"minItems": 1
},
"number": {
"type": "string",
"description": "Invoice number, e.g. HTR-0001"
},
"seller": {
"type": "object",
"properties": {
"cui": {
"type": "string",
"description": "Romanian CUI; with autofill, name/address/VAT status come from ANAF"
},
"bank": {
"type": "string"
},
"city": {
"type": "string",
"description": "For Bucharest use 'Sector N'"
},
"iban": {
"type": "string",
"description": "Seller IBAN for payment"
},
"name": {
"type": "string"
},
"email": {
"type": "string"
},
"phone": {
"type": "string"
},
"vatId": {
"type": "string",
"description": "VAT id (e.g. RO14399840 or DE123456789 for foreign parties)"
},
"county": {
"type": "string",
"description": "County name or code (Cluj, CJ, RO-CJ, B)"
},
"street": {
"type": "string"
},
"country": {
"type": "string",
"description": "ISO 2-letter, default RO"
},
"postalCode": {
"type": "string"
},
"vatRegistered": {
"type": "boolean"
}
}
},
"dueDate": {
"type": "string"
},
"autofill": {
"type": "boolean",
"description": "Fill parties from ANAF by CUI (default true)"
},
"currency": {
"type": "string",
"description": "Default RON"
},
"issueDate": {
"type": "string",
"description": "YYYY-MM-DD, default today"
},
"paymentTerms": {
"type": "string"
},
"vatToRonRate": {
"type": "number",
"description": "Required if currency != RON (RON per unit, e.g. BNR rate)"
}
}
}Court cases (portal.just.ro, Ministry of Justice) where a Romanian company (by CUI) is a party: summary (total, by category/stage/company role, pending vs decided, insolvency) and a case list with court, subject, stage, company role, other parties and last/next hearing. Natural persons are masked (GDPR). Criminal cases show only category, stage, dates and the company's own role (criminalDetailsWithheld: true). Costs 15 credits; not billed if nothing is found.
| Argument | Type | Description |
|---|---|---|
| cui* | string | Romanian CUI, e.g. 14399840 |
| role | string | Filter by the company's role, e.g. Reclamant (plaintiff), Pârât (defendant), Debitor, Creditor |
| limit | integer | Max cases returned (default 50, max 200); summary covers all |
| since | string | Only cases registered on/after this date (YYYY-MM-DD). Default: Jan 1, three years ago |
| category | string | Filter by category, e.g. Civil, Penal, Insolventa, Contencios administrativ si fiscal |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"cui"
],
"properties": {
"cui": {
"type": "string",
"description": "Romanian CUI, e.g. 14399840"
},
"role": {
"type": "string",
"description": "Filter by the company's role, e.g. Reclamant (plaintiff), Pârât (defendant), Debitor, Creditor"
},
"limit": {
"type": "integer",
"maximum": 200,
"minimum": 1,
"description": "Max cases returned (default 50, max 200); summary covers all"
},
"since": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Only cases registered on/after this date (YYYY-MM-DD). Default: Jan 1, three years ago"
},
"category": {
"type": "string",
"description": "Filter by category, e.g. Civil, Penal, Insolventa, Contencios administrativ si fiscal"
}
}
}Annual financial statements filed with ANAF for a Romanian company (by CUI), in English: net turnover, revenue, expenses, gross/net profit (negative = loss), employees, assets, cash, debts, equity, plus net margin, debt-to-equity, ROE/ROA and YoY revenue growth. Amounts in RON. Costs 3 credits; not billed if nothing is found.
| Argument | Type | Description |
|---|---|---|
| cui* | string | Romanian CUI, e.g. 14399840 or RO14399840 |
| years | integer | Most recent filed years to return (default 3, max 5) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"cui"
],
"properties": {
"cui": {
"type": "string",
"description": "Romanian CUI, e.g. 14399840 or RO14399840"
},
"years": {
"type": "integer",
"maximum": 5,
"minimum": 1,
"description": "Most recent filed years to return (default 3, max 5)"
}
}
}Trade-register data for a Romanian company (by CUI) from the ONRC monthly open-data snapshot: registration number, EUID, legal form, registry status (decoded), authorized CAEN codes and legal representatives (names and roles, e.g. administrator, lichidator). Costs 5 credits; not billed if the CUI is not found.
| Argument | Type | Description |
|---|---|---|
| cui* | string | Romanian CUI, e.g. 14399840 or RO14399840 |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"cui"
],
"properties": {
"cui": {
"type": "string",
"description": "Romanian CUI, e.g. 14399840 or RO14399840"
}
}
}One-call due-diligence report for a Romanian company (by CUI): ANAF status (active/inactive, VAT, e-Factura), last 3 years of financials, court-case summary (portal.just.ro) and ONRC registry data when available, with a transparent rule-based score 0-100 (higher = fewer risk signals) and explained flags. Informational only, NOT credit advice. Costs 30 credits once for this call; the included financials, court cases and registry reads are not billed again. Not billed if the CUI is unknown.
| Argument | Type | Description |
|---|---|---|
| cui* | string | Romanian CUI, e.g. 14399840 or RO14399840 |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"cui"
],
"properties": {
"cui": {
"type": "string",
"description": "Romanian CUI, e.g. 14399840 or RO14399840"
}
}
}Full detail of a Romanian court case by its number (e.g. 9430/271/2025) from portal.just.ro: court, subject, stage, parties with roles (natural persons masked), all hearings with outcomes, and appeals. Criminal cases return only category, stage and dates (criminalDetailsWithheld: true). Costs 1 credit; not billed if not found.
| Argument | Type | Description |
|---|---|---|
| case_number* | string | Case number as shown by courts, e.g. 9430/271/2025 |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"case_number"
],
"properties": {
"case_number": {
"type": "string",
"description": "Case number as shown by courts, e.g. 9430/271/2025"
}
}
}Current consolidated text of a Romanian act by legislatie.just.ro id (from search_legislation), split by article: title, issuer, publication, consolidation date, version list and articles (number, heading, text, count of amendments). Paged with offset/limit (default 50 articles). Core codes (Codul fiscal 171282, Codul muncii 41627, Codul civil 175630, Codul de procedură civilă 140271, Codul de procedură fiscală 170007, Legea 31/1990 798) also work offline. Costs 1 credit. Source: legislatie.just.ro (Ministry of Justice); informational, consolidated forms are unofficial, only Monitorul Oficial text is authentic.
| Argument | Type | Description |
|---|---|---|
| id* | string | legislatie.just.ro DetaliiDocument id, e.g. 171282 |
| limit | integer | |
| offset | integer |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "legislatie.just.ro DetaliiDocument id, e.g. 171282"
},
"limit": {
"type": "integer",
"maximum": 200,
"minimum": 1
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
}
}
}Consolidation dates (with version ids) and the dated list of amendments for a whole act or one article: date in force, what was changed and by which act. Useful for 'what was the VAT rule on date X'. Costs 2 credits; not billed if not found. Source: legislatie.just.ro (Ministry of Justice); informational, consolidated forms are unofficial, only Monitorul Oficial text is authentic.
| Argument | Type | Description |
|---|---|---|
| id* | string | |
| article | string | Limit to one article, e.g. 291 |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string"
},
"article": {
"type": "string",
"description": "Limit to one article, e.g. 291"
}
}
}One article in its current consolidated form, e.g. Codul fiscal (171282) art. 291 (VAT rates), with paragraph/letter structure and dated amendment notes (what changed it and when). Article numbers like '293^1' are supported. Costs 1 credit; not billed if not found. Source: legislatie.just.ro (Ministry of Justice); informational, consolidated forms are unofficial, only Monitorul Oficial text is authentic.
| Argument | Type | Description |
|---|---|---|
| id* | string | Act id, e.g. 171282 for Codul fiscal |
| article* | string | Article number, e.g. 291 or 293^1 |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"article"
],
"properties": {
"id": {
"type": "string",
"description": "Act id, e.g. 171282 for Codul fiscal"
},
"article": {
"type": "string",
"description": "Article number, e.g. 291 or 293^1"
}
}
}Acts newly indexed by legislatie.just.ro (laws, government ordinances and decisions, ministerial orders, court decisions published in Monitorul Oficial) with an in-force date on/after `since` (default: last 7 days, max 35). Costs 1 credit. Source: legislatie.just.ro (Ministry of Justice); informational, consolidated forms are unofficial, only Monitorul Oficial text is authentic.
| Argument | Type | Description |
|---|---|---|
| since | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"since": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
}
}Given a Romanian CUI/CIF (fiscal code, optionally prefixed RO), returns ANAF public registry data in English: name, addresses, trade register number, VAT status, active/inactive, e-Factura registration, plus the BNR EUR/RON rate.
| Argument | Type | Description |
|---|---|---|
| cui* | string | Romanian CUI, e.g. 14399840 or RO14399840 |
| include_fx | boolean | Include BNR EUR/RON rate (default true) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"cui"
],
"properties": {
"cui": {
"type": "string",
"description": "Romanian CUI, e.g. 14399840 or RO14399840"
},
"include_fx": {
"type": "boolean",
"description": "Include BNR EUR/RON rate (default true)"
}
}
}Turns a UBL 2.1 e-Factura invoice or credit note XML (e.g. downloaded from ANAF SPV) into clean English JSON: number, dates, type, currency, seller/buyer (name, VAT id, CUI, address, contact), payment means and IBAN, lines (name, quantity, unit, price, net, VAT), VAT breakdown and totals. Costs 1 credit; not billed on errors.
| Argument | Type | Description |
|---|---|---|
| xml* | string | UBL 2.1 Invoice or CreditNote XML (RO e-Factura / CIUS-RO) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"xml"
],
"properties": {
"xml": {
"type": "string",
"maxLength": 300000,
"minLength": 20,
"description": "UBL 2.1 Invoice or CreditNote XML (RO e-Factura / CIUS-RO)"
}
}
}Finds Romanian normative acts on legislatie.just.ro by citation or title words: 'Legea 31/1990', 'OUG 195/2002', 'HG 1/2016', 'Codul fiscal', 'Codul muncii', or words from the title. Ranked so the main act comes first (codes and laws before decrees/orders). Returns act ids for get_legal_act / get_legal_article. Costs 1 credit; not billed if nothing matches. Source: legislatie.just.ro (Ministry of Justice); informational, consolidated forms are unofficial, only Monitorul Oficial text is authentic.
| Argument | Type | Description |
|---|---|---|
| q* | string | Citation or title words, e.g. 'Legea 31/1990' or 'Codul fiscal' |
| type | string | Act type filter, e.g. LEGE, ORDONANTA DE URGENTA, HOTARARE, ORDIN |
| year | string | |
| limit | integer | |
| number | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"q"
],
"properties": {
"q": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Citation or title words, e.g. 'Legea 31/1990' or 'Codul fiscal'"
},
"type": {
"type": "string",
"description": "Act type filter, e.g. LEGE, ORDONANTA DE URGENTA, HOTARARE, ORDIN"
},
"year": {
"type": "string"
},
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1
},
"number": {
"type": "string"
}
}
}Validates a UBL 2.1 invoice/credit note against RO e-Factura rules (CIUS-RO) using ANAF's public validation service (XSD + Schematron, no ANAF account needed) plus fast local checks (totals, VAT breakdown, CUI checksums, RO county codes, Bucharest SECTORn). Returns valid true/false and the exact rule codes (BR-xx, BR-RO-xx) with English/Romanian messages. Costs 1 credit; not billed if ANAF is unreachable.
| Argument | Type | Description |
|---|---|---|
| xml* | string | UBL 2.1 Invoice or CreditNote XML (RO e-Factura / CIUS-RO) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"xml"
],
"properties": {
"xml": {
"type": "string",
"maxLength": 300000,
"minLength": 20,
"description": "UBL 2.1 Invoice or CreditNote XML (RO e-Factura / CIUS-RO)"
}
}
}