accueil / serveurs / Finance & Paiement / com.adrianhomelab/leadgen-onrc
com.adrianhomelab/leadgen-onrc
serveur MCP (Model Context Protocol) · leadgen 1.0.0
Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur.
Est-ce que com.adrianhomelab/leadgen-onrc est sûr ?
Au dernier audit MCP Hub, le serveur MCP « com.adrianhomelab/leadgen-onrc » est classé « Non encore testé ». Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur. Le verdict est réévalué en continu ; consultez la fiche pour l'état à jour.
Méthode : MCP Hub analyse la description de chaque outil (couche 1) et, pour le verdict fort, exécute le serveur dans une micro-VM isolée avec leurres et réseau bloqué (couche 2). On publie des noms et des compteurs, jamais le contenu brut renvoyé par un outil.
Les 17 outils
- enrich_company≈ 976 tokens
A whole-firm profile in one call: the ONRC registry record plus the contacts discovered on that firm's website, each labelled with a confidence and a source. Prefer this over lookup_business followed by extract_contacts when you want everything about one company. cui is its tax code; website overrides the registered one; max_pages bounds the crawl; refresh=true crawls now instead of answering from the cache.
Paramètres, retour & exemple (4)
Paramètrescui· string · requis
Romanian tax identification number (CUI), e.g. '2816464'; 'RO' and leading zeros are accepted.refresh· boolean · optionnel
true crawls now even if a cached result exists (default false: answer from the cache when there is one).website· ? · optionnel
Optional website override (domain or URL). When omitted, the firm's registered website is used (an error if none is on file).max_pages· integer · optionnel
Maximum number of pages to crawl (1-20, default 5).
Exemple d'appel{"name": "enrich_company", "arguments": {"cui": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"cui": "texte", "asOf": {}, "error": "texte", "company": {}, "crawled": true, "message": "texte", "website": "texte", "cacheHit": true, "contacts": [], "crawlError": "texte", "pagesCrawled": 1, "websiteSource": "texte"}} - extract_contacts≈ 663 tokens
Crawl a company website and extract emails, phone numbers and social profiles. Accepts a bare domain or a full URL; max_pages (1-20, default 5) bounds the crawl.
Paramètres, retour & exemple (2)
Paramètreswebsite· string · requis
The website to crawl: a bare domain ('example.com') or a full URL ('https://example.com').max_pages· integer · optionnel
Maximum number of pages to crawl (1-20, default 5).
Exemple d'appel{"name": "extract_contacts", "arguments": {"website": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"url": "texte", "error": "texte", "domain": "texte", "emails": [], "github": "texte", "phones": [], "message": "texte", "twitter": "texte", "youtube": "texte", "facebook": "texte", "linkedin": "texte", "instagram": "texte"}} - find_company_by_domain≈ 1162 tokens
Find the Romanian firm behind a website domain (dedeman.ro). Uses the registry's website field, else reads the site's home and legal/contact pages for the CUI or registration number it shows (matchedOn: registry_website, site_cui). Without one, it says so and offers name candidates from the page title or the domain name, each with a confidence (at most 0.7, never a match). One lookup.
Paramètres, retour & exemple (3)
Paramètresdomain· string · requis
The website's domain ('dedeman.ro'); a URL or a www. host is reduced to it. Public domains only.fields· ? · optionnel
Optional: keep only these company fields in each row, comma-separated (companyName,cui,county,risk; dotted paths such as risk.level work). Without it the full record is returned.compact· boolean · optionnel
Optional: true keeps a short preset per row (name, CUI, county, city, legal form, risk level and what it did not check, phone, website, latest revenue and headcount, record url).
Exemple d'appel{"name": "find_company_by_domain", "arguments": {"domain": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"asOf": {}, "site": {}, "error": "texte", "found": true, "match": {}, "total": 1, "domain": "texte", "fields": [], "reason": "texte", "message": "texte", "results": [], "returned": 1}} - get_usage≈ 517 tokens
Show your own allowance: plan, daily limit, lookups used today, how many remain, when it resets (00:00 UTC) and any credit balance. Free and never counted as a lookup. Limits: 30 anonymous MCP calls a day, 50 with a free API key from https://leadgen.adrianhomelab.com/start (an email address, no payment).
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "get_usage", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"plan": "texte", "error": "texte", "links": {}, "counted": true, "message": "texte", "identity": {}, "remaining": 1, "resets_at": "texte", "suspended": true, "used_today": 1, "daily_limit": 1, "entitlements": {}}} - lookup_business≈ 1232 tokens
Look up a Romanian company by name or CUI (tax code) in the official ONRC registry of 4.2M firms. Diacritic-insensitive ('paval' finds 'PAVAL'); a CUI matches exactly. The first call for a named Romanian company. Ranked with a score: live firms first (exact name, then words), closed ones after; county lifts. For 'firms that do X in Y', use lookup_by_category (an empty result may carry a hint naming it).
Paramètres, retour & exemple (5)
Paramètresquery· string · requis
Company name or CUI (tax ID) to search for. Names are diacritic-insensitive ('paval' finds PAVĂL); a CUI ('2816464', 'RO2816464') matches exactly.county· ? · optionnel
Optional county hint (diacritic-insensitive): firms registered there rank higher. Not a filter.fields· ? · optionnel
Optional: keep only these company fields in each row, comma-separated (companyName,cui,county,risk; dotted paths such as risk.level work). Without it the full record is returned.compact· boolean · optionnel
Optional: true keeps a short preset per row (name, CUI, county, city, legal form, risk level and what it did not check, phone, website, latest revenue and headcount, record url).max_results· integer · optionnel
Maximum number of companies to return (1-100, default 10).
Exemple d'appel{"name": "lookup_business", "arguments": {"query": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"asOf": {}, "hint": {}, "error": "texte", "found": true, "query": "texte", "total": 1, "county": "texte", "fields": [], "reason": "texte", "source": "texte", "message": "texte", "results": []}} - lookup_by_category≈ 2560 tokens
Find companies by what they do, not by name: a curated topic ('software', 'retail'), plain words ('dentists', a CAEN class title; see matched) or CAEN codes ('4321,4322'; 6201 also finds Rev.3 6210). Narrow by county; qualify by revenue, headcount, VAT, main activity. active_only (default) drops dead and ANAF-inactive firms.
Paramètres, retour & exemple (15)
Paramètressort· string · optionnel · newest | revenue | employees
Order of the results: 'newest' registrations first (default), 'revenue' (latest filing's turnover, biggest first) or 'employees' (headcount, biggest first); firms without a filing come last.topic· string · requis
What the firms do: a curated topic ('software', 'retail'), plain words for a trade ('dentists', 'stomatologie'), a CAEN class title in Romanian or English, or CAEN codes ('6201' or '4321,4322'). Case-, space- and diacritic-insensitive. A number that names another activity in each revision takes a suffix: '4781r3' (Rev.3) or '4781r2' (Rev.2).county· ? · optionnel
Optional county to narrow to (diacritic-insensitive: 'bucuresti', 'cluj'; a county town such as 'Cluj-Napoca' or a Bucharest sector is read as its county); omit for nationwide. An unknown county is an error (unknown_county) with suggestions, not 0 firms.fields· ? · optionnel
Optional: keep only these company fields in each row, comma-separated (companyName,cui,county,risk; dotted paths such as risk.level work). Without it the full record is returned.compact· boolean · optionnel
Optional: true keeps a short preset per row (name, CUI, county, city, legal form, risk level and what it did not check, phone, website, latest revenue and headcount, record url).vat_payer· ? · optionnel
Optional: true keeps VAT-registered firms only, false only non-VAT payers (ANAF data). Omit for both.legal_form· ? · optionnel
Optional legal form(s) to keep, comma-separated, case-insensitive: 'SRL', 'SA', 'PFA', 'II', or 'SRL,SA' (companies, no sole traders). Default: any form.active_only· boolean · optionnel
Default true: drop firms that are not a lead (struck off, dissolving, in liquidation, insolvent or bankrupt, activity suspended, or ANAF fiscally inactive). false returns every firm.has_website· boolean · optionnel
true keeps only firms with a website on file in the registry (default false).max_results· integer · optionnel
Maximum number of companies to return (1-100, default 10).max_revenue· ? · optionnel
Optional maximum net turnover in RON on the latest filing.min_revenue· ? · optionnel
Optional minimum net turnover in RON on the latest filing (FY2025, else FY2024). Firms without a filing never match a band.max_employees· ? · optionnel
Optional maximum average headcount on the latest filing.min_employees· ? · optionnel
Optional minimum average headcount on the latest filing.main_activity_only· boolean · optionnel
Default false: a firm matches when the code is ANY of its authorised activities (ONRC lists a dozen per firm, most never practised). true keeps only firms whose DECLARED main activity is one of the codes (ANAF main CAEN, else the CAEN on the latest filing): fewer, more relevant firms. The Leadgen app's lists use true by default.
Exemple d'appel{"name": "lookup_by_category", "arguments": {"topic": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"asOf": {}, "sort": "texte", "error": "texte", "label": "texte", "query": "texte", "topic": "texte", "total": 1, "appUrl": "texte", "county": "texte", "fields": [], "source": "texte", "filters": {}}} - lookup_companies≈ 1402 tokens
Look up many Romanian companies by CUI in one call (up to 100): one result per input, in input order, each with found true/false and the company record. Each row is one lookup; rows past today's allowance come back not_processed (partial: true, remaining: rows to resend after the reset). fields or compact trims each record.
Paramètres, retour & exemple (3)
Paramètrescuis· ? · requis
Up to 100 CUIs, as a list or one comma-separated string ('RO', spaces and leading zeros accepted, as in lookup_business).fields· ? · optionnel
Optional: keep only these company fields in each row, comma-separated (companyName,cui,county,risk; dotted paths such as risk.level work). Without it the full record is returned.compact· boolean · optionnel
Optional: true keeps a short preset per row (name, CUI, county, city, legal form, risk level and what it did not check, phone, website, latest revenue and headcount, record url).
Exemple d'appel{"name": "lookup_companies", "arguments": {"cuis": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"asOf": {}, "error": "texte", "found": 1, "total": 1, "errors": 1, "fields": [], "source": "texte", "message": "texte", "partial": true, "results": [], "metering": {}, "notFound": 1}} - lookup_director≈ 1224 tokens
Find Romanian companies by the name of a director or legal representative (ONRC). Diacritic-insensitive. Whole words: 'pop maria' finds POP MARIA, not POPA MARIANA; prefix=true matches prefixes. The registry has no personal ID, so one name can be several people: homonyms and byCounty say so. Use this when you know a person rather than a firm.
Paramètres, retour & exemple (5)
Paramètresname· string · requis
Director / representative name to search for (e.g. 'Ion Popescu'); diacritic-insensitive, each word a whole word of the name.fields· ? · optionnel
Optional: keep only these company fields in each row, comma-separated (companyName,cui,county,risk; dotted paths such as risk.level work). Without it the full record is returned.prefix· boolean · optionnel
true matches each word as a prefix ('pop' also finds POPA, POPESCU); default false (whole words).compact· boolean · optionnel
Optional: true keeps a short preset per row (name, CUI, county, city, legal form, risk level and what it did not check, phone, website, latest revenue and headcount, record url).max_results· integer · optionnel
Maximum number of companies to return (1-100, default 10).
Exemple d'appel{"name": "lookup_director", "arguments": {"name": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"asOf": {}, "note": "texte", "error": "texte", "match": "texte", "query": "texte", "total": 1, "fields": [], "source": "texte", "message": "texte", "results": [], "byCounty": {}, "homonyms": true}} - lookup_domain≈ 497 tokens
WHOIS plus DNS records (A, MX, NS, TXT) and an SPF/DMARC email-security audit for a domain. Use it to profile a company's web estate or check its email posture. include_dns and include_security toggle the two halves.
Paramètres, retour & exemple (3)
Paramètresdomain· string · requis
Domain name to look up (e.g. 'example.com'); a URL is reduced to its host.include_dns· boolean · optionnel
Include DNS records (A, AAAA, MX, NS, TXT, SOA); default true.include_security· boolean · optionnel
Include the SPF/DMARC email-security check; default true.
Exemple d'appel{"name": "lookup_domain", "arguments": {"domain": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"dns": {}, "error": "texte", "whois": {}, "domain": "texte", "message": "texte", "security": {}, "resolvedIP": "texte"}} - lookup_financial_ratios≈ 782 tokens
Financial analysis of a Romanian company: multi-year revenue trend (YoY, 3/5/10-year CAGR), margins, headcount, solvency and liquidity ratios, a 0–100 health score with its rule-by-rule breakdown, red flags, and peer percentiles within the same CAEN activity and county. Verdict: 'growing', 'stable' or 'distressed'. Use lookup_financials for the raw figures.
Paramètres, retour & exemple (1)
Paramètrescui· string · requis
Romanian tax identification number (CUI), e.g. '2816464'; 'RO' and leading zeros are accepted.
Exemple d'appel{"name": "lookup_financial_ratios", "arguments": {"cui": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"cui": "texte", "asOf": {}, "error": "texte", "flags": [], "found": true, "peers": {}, "total": 1, "years": [], "ratios": {}, "source": "texte", "history": {}, "message": "texte"}} - lookup_financials≈ 587 tokens
Annual financial statements for a Romanian company from Ministry of Finance filings, every fiscal year on record since 2008: revenue, profit, headcount and balance-sheet lines in RON with each year's ratios (growth, margins, equity ratio, liquidity), plus a summary (3/5/10-year CAGR, loss years, health score). Resolve the firm with lookup_business first if you only have a name.
Paramètres, retour & exemple (1)
Paramètrescui· string · requis
Romanian tax identification number (CUI), e.g. '2816464'; 'RO' and leading zeros are accepted.
Exemple d'appel{"name": "lookup_financials", "arguments": {"cui": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"cui": "texte", "asOf": {}, "error": "texte", "found": true, "total": 1, "years": [], "source": "texte", "message": "texte", "summary": {}, "attribution": "texte"}} - match_companies≈ 1783 tokens
Match a list of up to 500 records (name, optional county, domain or CUI) to Romanian firms: each row gets match {cui, companyName, confidence, matchedOn} and the record, or no_match with up to 3 candidates. A valid CUI wins (confidence 1.0). Each row is one lookup; rows past today's allowance come back not_processed (partial: true, remaining: rows to resend after the reset).
Paramètres, retour & exemple (3)
Paramètresrows· array · requis
Up to 500 records, each {name, county, domain, cui, ref} (any of them; ref is your own id, echoed back), or a bare string (a CUI, a domain or a name).fields· ? · optionnel
Optional: keep only these company fields in each row, comma-separated (companyName,cui,county,risk; dotted paths such as risk.level work). Without it the full record is returned.compact· boolean · optionnel
Optional: true keeps a short preset per row (name, CUI, county, city, legal form, risk level and what it did not check, phone, website, latest revenue and headcount, record url).
Exemple d'appel{"name": "match_companies", "arguments": {"rows": []}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"asOf": {}, "error": "texte", "total": 1, "errors": 1, "fields": [], "source": "texte", "matched": 1, "message": "texte", "noMatch": 1, "partial": true, "results": [], "metering": {}}} - poll_watchlist≈ 537 tokens
Collect everything the watch tools have found: call it to drain the changeset for every watch owned by your API key, most severe first. Company watches return an 'updated' entry with the changed fields and risk; CAEN and county watches return the 'new' firms registered since the last poll (200 a poll, the rest next).
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "poll_watchlist", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "asOf": {}, "error": "texte", "owner": "texte", "total": 1, "active": [], "message": "texte", "watches": [], "attribution": "texte", "email_alerts": "texte"}} - report_issue≈ 536 tokens
Report to the person who runs Leadgen what is missing or wrong: a missing field, firm or source (kind 'gap'), a wrong company record ('wrong_record', pass its cui), a bug, an idea. Free, never counted as a lookup. contact is optional (an address for a reply); nothing is mailed to it automatically. Registry records are corrected at the source (ONRC) and arrive with the next snapshot.
Paramètres, retour & exemple (4)
Paramètrescui· ? · optionnel
Optional CUI of the firm the report is about (for 'wrong_record').kind· string · optionnel
One of 'gap' (a missing field, firm or source; the default), 'wrong_record' (pass its cui), 'bug', 'idea', 'other'.contact· ? · optionnel
Optional email address for a reply; nothing is mailed to it automatically.message· string · requis
The report, in plain words: what is missing or wrong.
Exemple d'appel{"name": "report_issue", "arguments": {"message": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"id": 1, "kind": "texte", "note": "texte", "error": "texte", "status": "texte", "message": "texte"}} - unwatch≈ 651 tokens
Stop watching a company (cui) or a CAEN activity code (code, plus the county it was watched in, if any), on your API key: the watch and its baseline are removed. Unwatching something you do not watch changes nothing (removed: 0). poll_watchlist lists your active watches.
Paramètres, retour & exemple (3)
Paramètrescui· ? · optionnel
CUI of a watched firm (e.g. '2816464'); give this or code.code· ? · optionnel
A watched CAEN activity code (e.g. '6210'); give this or cui.county· ? · optionnel
With code: the county the code was watched in (diacritic-insensitive); omit for a nationwide watch.
Exemple d'appel{"name": "unwatch", "arguments": {"cui": "texte", "code": "texte", "county": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "asOf": {}, "kind": "texte", "error": "texte", "owner": "texte", "active": [], "county": "texte", "target": "texte", "message": "texte", "removed": 1, "attribution": "texte"}} - watch_caen≈ 582 tokens
Watch a CAEN activity code, optionally scoped to one county, for newly registered firms. A registration-date cutoff is the baseline: only firms registered after it are reported, and poll_watchlist slides the cutoff forward so each new firm surfaces once. A retired CAEN Rev.2 code (6201) also watches its Rev.3 successor (6210), with a warning.
Paramètres, retour & exemple (2)
Paramètrescode· string · requis
CAEN activity code to watch (e.g. '6210'); a retired Rev.2 code also watches its Rev.3 successor.county· ? · optionnel
Optional county name to scope the watch to (diacritic-insensitive); omit to watch nationwide.
Exemple d'appel{"name": "watch_caen", "arguments": {"code": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "asOf": {}, "error": "texte", "watch": {}, "message": "texte", "warnings": [], "attribution": "texte", "alreadyWatching": true}} - watch_company≈ 481 tokens
Register a company (by CUI) to monitor. Stores a fingerprint of its current registry record as the baseline; poll_watchlist then reports changes between monthly ONRC snapshots - a new director, a new CAEN activity, an address or status change - and when ANAF declares it fiscally inactive or its VAT status flips.
Paramètres, retour & exemple (1)
Paramètrescui· string · requis
Romanian tax identification number (CUI) of the firm to watch, e.g. '2816464'. Watching a firm you already watch changes nothing.
Exemple d'appel{"name": "watch_company", "arguments": {"cui": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "asOf": {}, "error": "texte", "watch": {}, "message": "texte", "attribution": "texte", "alreadyWatching": true}}
C'est votre serveur ?
Revendiquez-le sur l'espace créateur (preuve GitHub, domaine ou npm) pour afficher le badge « propriétaire vérifié » et lancer un pentest comportemental à la demande afin d'obtenir le badge « Vérifié ».