Leadgen MCP

Tra cứu đăng ký kinh doanh Romania (dữ liệu ONRC chính thức), tìm kiếm giám đốc, trích xuất thông tin liên hệ từ website, và kiểm tra tên miền WHOIS/DNS/SPF-DMARC cho các tác nhân AI.

GitHubDùng thử MCP nàyĐược tài trợ

Tài liệu

Leadgen — Romanian ONRC Business Registry (API + MCP)

Free, read-only access to Romania's official business registry (ONRC): every registered company, its CAEN activities, legal representatives, status, and 2025 financial statements — built from the state's own open-data dump and exposed over a tiny HTTP API and an MCP server.

  • 4,196,860 companies
  • 19.3M CAEN activity records
  • 3.68M legal representatives
  • 4.64M status entries
  • 2025 financial statements loaded

Live endpoints (free, no auth)

REST APIhttps://onrc-api.adrianhomelab.com

EndpointDescription
GET /lookup_business?query=<name|CUI>&max_results=NSearch companies by name or tax code (CUI).
GET /lookup_director?name=<name>&max_results=NFind companies by director / legal-representative name.
GET /docsInteractive OpenAPI docs (Swagger UI).
GET /healthLiveness check.

The landing page at https://onrc-api.adrianhomelab.com/ documents the schema with a worked example.

MCP serverhttps://hermes.adrianhomelab.com/mcp (Streamable HTTP). Point any MCP client at that URL. Tools: lookup_business, lookup_director, lookup_financials, extract_contacts, lookup_domain.

Try it

# search by company name
curl "https://onrc-api.adrianhomelab.com/lookup_business?query=DEDEMAN&max_results=3"

# search by CUI (tax code)
curl "https://onrc-api.adrianhomelab.com/lookup_business?query=2816464"

# find companies by director name
curl "https://onrc-api.adrianhomelab.com/lookup_director?name=popescu"
{
  "query": "DEDEMAN",
  "total": 2,
  "results": [
    {
      "companyName": "DEDEMAN SRL",
      "cui": "2816464",
      "registrationCode": "J1992002621040",
      "legalForm": "SRL",
      "county": "Bacău",
      "website": "www.dedeman.ro",
      "caenActivities": [ { "code": "0125", "activity": "…" } ],
      "directors": [ "PAVĂL I. DRAGOŞ", "PAVĂL ADRIAN" ],
      "status": [ { "code": "1048", "name": "funcțiune" } ]
    }
  ]
}

Where the data comes from

The registry is built from the official ONRC snapshot published on data.gov.ro — no scraping, no third-party vendor. The loaders stream the CKAN CSVs into SQLite and build an FTS5 full-text index with diacritic-insensitive folding, so popescu matches Popéscu and PAVĂL matches paval.

Repository layout

FilePurpose
api.pyFastAPI wrapper — the read-only public REST surface (+ landing page).
server.pyMCP server (Streamable HTTP) with all five tools.
monetization.pyTelemetry + a dormant freemium/rate-limit scaffold.
load_onrc.pyDownload + load the ONRC CSV snapshot into SQLite.
load_nomenclatoare.pyDecode CAEN / status code tables.
load_financiare.pyLoad the 2025 financial statements.
server.jsonMCP Registry metadata (published as io.github.darksider4all/leadgen-mcp).
smithery.yamlSmithery deployment config.

Run locally

python -m venv venv
venv/bin/pip install -r requirements.txt

# load the data (downloads the official snapshots — several GB)
venv/bin/python load_onrc.py --data-dir ./data --db ./data/onrc.db

# start the REST API
ONRC_DB=./data/onrc.db venv/bin/python api.py

# start the MCP server
ONRC_DB=./data/onrc.db venv/bin/python server.py --transport streamable-http --port 8766

Then hit http://127.0.0.1:8767/docs.

Notes on the data

  • Diacritic-insensitive search — Romanian ă â î ș ț are folded to their ASCII forms on both the index and the query.
  • CUI vs registration code — a numeric query is matched against the CUI (tax code) first, then the registration code.
  • Read-only — the public surface only exposes lookups; there are no write paths.

License

MIT — see LICENSE.