Skip to main content

romania-mcp

tests PyPI

MCP server for Romanian public data. Lets Claude (or any MCP client) check a company at ANAF, read its financial statements, find its court cases, get BNR exchange rates, validate IBANs, and put all of it together to tell you if an online shop looks like a scam. No API keys, everything comes from official public sources.

Pe scurt: verifici o firmă după CUI (activă, radiată, inactivă fiscal, plătitoare de TVA), îi vezi bilanțurile, dosarele din instanță și cursul BNR, direct din Claude. Și îl poți întreba „e țeapă magazinul ăsta?”.

Tools

tool what it does source
shop_check is this online shop legit? reads the CUI off the site, checks the company, its financials, insolvency cases and how old the site is, returns red flags / warnings / good signs everything below + Wayback Machine
company_lookup status of up to 500 companies by CUI: name, address, Reg. Com. number, CAEN, deregistered, VAT registered, VAT on collection, split VAT, fiscally inactive, e-Factura registry. optionally as of a past date ANAF
company_financials filed balance sheets year by year: revenue, profit/loss, employees, debts, equity, cash ANAF
court_cases cases in every Romanian court by party name or case number: stage, parties and roles, latest outcome, next hearing, insolvency as debtor Portal Just
exchange_rate BNR reference rate for any day since 2005, with conversion BNR
iban_check is an IBAN well formed, which Romanian bank issued it, is it a Treasury account offline

Install

Needs Python 3.10+.

pip install romania-mcp-server

or if you use uv you don't need to install anything, just point the client at uvx (see below).

Claude Desktop

Add this to claude_desktop_config.json:

{
  "mcpServers": {
    "romania": {
      "command": "uvx",
      "args": ["romania-mcp-server"]
    }
  }
}

If you installed with pip, "command": "romania-mcp-server" with no args works too.

Claude Code

claude mcp add romania -- uvx romania-mcp-server

Cursor, Windsurf etc. take the same JSON as Claude Desktop.

Example prompts

  • "e țeapă magazinul ăsta? https://..."
  • "here are my 40 suppliers' CUIs, which ones are fiscally inactive or deregistered?"
  • "was RO18547290 VAT registered on 15.03.2016?"
  • "how did 14399840 do in the last 5 years? revenue, profit, employees"
  • "does Foo Trade SRL have any insolvency cases? when's the next hearing?"
  • "cât fac 2.450 EUR în lei la cursul BNR din 14 martie 2025?"
  • "is this IBAN right? RO49 AAAA 1B31 0075 9384 0000"

How shop_check decides

It's a list of signals, not a verdict from above:

  • red flags (risk = high): no CUI anywhere on the site, CUI unknown to ANAF, company deregistered or fiscally inactive, company is the debtor in an insolvency case
  • warnings (two or more = medium): company or site younger than a few months, never archived by the Wayback Machine, no financial statements, zero revenue or employees, negative equity, no ANPC link, the company name ANAF returns never appears on the site (scam shops sometimes copy a real company's CUI)
  • good signs: company and site have been around for years, real revenue and employees, ANPC links present

It can't see reviews, delivery times or whether the products exist, so a "low" doesn't mean the shop is good, just that the company behind it checks out.

Caching

Responses are cached in sqlite at ~/.cache/romania-mcp/cache.sqlite3 so ANAF and friends don't get asked the same thing twice: company status 6h, financials 24h, court cases 3h, current exchange rates 1h, past years' rates 30 days.

ROMANIA_MCP_CACHE=off           # disable
ROMANIA_MCP_CACHE_PATH=/tmp/x.db

Notes

  • ANAF only searches by CUI, not by company name. Name search would need the ONRC dataset, maybe later.
  • ANAF asks for at most one request per second. The server spaces requests out, so 500 CUIs take about 5 seconds and 5 years of financials about 5.
  • Financial statements for a year are filed by mid next year, and some companies only have data from around 2020 on.
  • Portal Just's API only answers over plain http (their https is broken), and caps a search at 1000 cases.
  • .ro domains have no public RDAP and ROTLD's whois terms forbid automated queries, so for .ro shops the site age comes from the Wayback Machine only.
  • iban_check knows the main Romanian banks. A valid IBAN doesn't prove who owns the account.

Development

git clone https://github.com/robyroro/romania-mcp
cd romania-mcp
pip install -e . pytest
pytest

Tests don't hit the network, HTTP calls are mocked.

To poke at it with the MCP inspector:

npx @modelcontextprotocol/inspector romania-mcp

Be reasonable

All of this is public data, but court records name real people. Use it to vet companies you do business with, not to dig into individuals.

License

MIT © Robert Vind-Gardoș (@robyroro)

Metadata

Release files for romania-mcp-server 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for romania-mcp-server 0.1.0
File Size Uploaded
romania_mcp_server-0.1.0.tar.gz 33.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for romania-mcp-server 0.1.0
File Interpreter ABI Platform
romania_mcp_server-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 61.7 kB

Release files / romania_mcp_server-0.1.0.tar.gz

Download URL romania_mcp_server-0.1.0.tar.gz
Size 33.0 kB
Tags Source
SHA-256 checksum
How to use checksums
b0db060b9bcf27472cd9bbc675a58a81db45dec664ddfc5029070a7cceb3f39b
BLAKE2b-256 checksum
How to use checksums
bf6fb424c6ed5f14fc79491e62a81f4682fdb0005d0f94202fef4d800f06a5ce
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 1, 2026.

Transparency log

Release files / romania_mcp_server-0.1.0-py3-none-any.whl

Download URL romania_mcp_server-0.1.0-py3-none-any.whl
Size 28.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ccaa0a99ee3a50f88c0a4c5a232f1be1a80f30b167846ae159ae76ed0e1e3df0
BLAKE2b-256 checksum
How to use checksums
2799a861c1994701935b13b1b5780940831472583a0c2d98b05306dc23ca6e31
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 1, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page