Romanian company data for AI agents
Give your agent tools to check Romanian companies: know-your-business (KYB) onboarding, invoice verification and supplier due diligence. One key works over MCP and REST, and every answer is English JSON with its source and fetch time.
Connect the agent
MCP (Claude, Cursor, agent frameworks with an MCP client): remote server, streamable HTTP.
{ "mcpServers": { "howtoromania": { "url": "https://api.howtoromania.io/mcp", "headers": { "Authorization": "Bearer <your key>" } } } }
REST (function calling, LangChain or LlamaIndex tools, your own backend): plain HTTPS GET/POST with an x-api-key header. Tool definitions can be generated from openapi.json (OpenAPI 3.1, one operationId per MCP tool name). A short description for the model is in llms.txt.
Tool calls an agent makes
| Task | Tool calls (MCP name · REST endpoint) | Credits |
|---|---|---|
| KYB onboarding Is the company real, active, VAT-registered? Who represents it? | lookup_company · GET /v1/company/{cui}get_company_representatives · GET /v1/company/{cui}/representatives | 1 + 5 |
| Invoice verification Read an e-Factura XML, then check the seller before payment | parse_efactura · POST /v1/efactura/parselookup_company · GET /v1/company/{cui} | 1 + 1 |
| Supplier due diligence One call with status, financials, court cases and registry, plus flags and a 0–100 score | get_company_risk_report · GET /v1/company/{cui}/risk-report | 30 |
| Follow-up questions Turnover trend, a specific lawsuit, insolvency | get_company_financials · GET /v1/company/{cui}/financialsget_company_court_cases · GET /v1/company/{cui}/court-casesget_court_case · GET /v1/court-cases/{caseNumber} | 3 / 15 / 1 |
CUIs are accepted with or without the RO prefix. A risk report already includes the ANAF, financials, court and registry reads, so they are not billed again inside that call.
Example: tool call and result
MCP tool call:
{ "name": "lookup_company", "arguments": { "cui": "RO12345678" } }
Same call over REST:
GET https://api.howtoromania.io/v1/company/RO12345678 x-api-key: <your key>
Result (example data):
{
"data": {
"cui": "12345678",
"vatId": "RO12345678",
"name": "FIRMA SRL",
"registrationNumber": "J40/1234/2015",
"caenCode": "4690",
"vat": { "registered": true, "since": "2015-03-01", "cashAccounting": false, "splitVat": false },
"status": { "active": true, "inactive": false, "inactiveSince": null, "reactivatedOn": null, "deregisteredOn": null },
"eFactura": { "registered": true, "since": "2022-01-01" },
"address": { "fiscal": { "formatted": "Str. Exemplu 1, Sector 1, Bucuresti", "...": "..." } },
"queriedForDate": "2026-10-23",
"source": { "name": "ANAF PlatitorTvaRest v9", "url": "...", "fetchedAt": "2026-10-23T09:00:00.000Z" }
},
"fx": { "currency": "EUR", "ronPerUnit": 5.0, "date": "2026-10-23", "source": "BNR" }
}Response abridged; field names are exact, values are illustrative (FIRMA SRL and CUI 12345678 are example data, not a real company).
When the input is wrong, the agent gets a clear error it can act on, and the call is not billed:
HTTP 400
{ "error": { "code": "invalid_cui", "message": "CUI checksum is invalid (not billed)" } }
Freshness
| Data | Source | Cached for up to |
|---|---|---|
| Company status, VAT, e-Factura, address | ANAF | 6 hours |
| Court cases | portal.just.ro | 24 hours |
| Filed financial statements | ANAF | 30 days |
| Registry status, CAEN, representatives | ONRC open data | monthly snapshot |
Each response carries source.fetchedAt, so the agent can tell the user how recent the answer is. Registry fields contain filtered, decoded, translated ONRC data, from ONRC open data on data.gov.ro, licensed under CC BY 4.0.
Pricing
Pay per successful call in credits (1 credit = €0.005 at the smallest pack). Every key gets 100 free credits. Prepaid packs (VAT included): €5 = 1,000 · €20 = 5,000 · €100 = 30,000 credits. No contract or minimum spend. Errors, invalid input and not-found are not billed. Every REST response has x-credits-used and x-credits-remaining headers; out of credits returns HTTP 402 with checkout links, so the agent can tell the user what to do.
Typical cost per company: a quick check is 1 credit, KYB with representatives 6 credits, a full risk report 30 credits.
Building an agent product and want to test on real cases? Write to hello@howtoromania.io for up to 2,000 free credits for a pilot. Volume subscriptions available on request: hello@howtoromania.io.
Get a key
Free key: curl -X POST https://api.howtoromania.io/v1/keys -H "content-type: application/json" -d '{"email":"you@example.com","accept_terms":true}'
FAQ
Can the agent see personal data?
Court data masks natural persons, and there is no search by person name. Representatives (names and roles) come from the ONRC open data. A DPA is available.
Does it work outside MCP clients?
Yes. Every MCP tool has a REST endpoint with the same key, so any framework that can call HTTPS can use it. Ready-made n8n and Make flows: verify a supplier from an invoice email and downloadable n8n and Make templates.
Is HowToRomania affiliated with ANAF or another authority?
No. HowToRomania is an independent service that reads public data (ANAF, ONRC open data, portal.just.ro) and returns it as English JSON. It is not affiliated with or endorsed by any public authority. Information only; not legal or credit advice.
