getregdata-mcp 1.0.5 → 1.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -2,10 +2,11 @@
2
2
 
3
3
  An [MCP](https://modelcontextprotocol.io) server that gives any MCP-capable agent
4
4
  (Claude Desktop, Claude Code, Cursor, Cline, Windsurf, ...) direct
5
- access to **25+ official business-registry actors** for KYC/AML, credit-risk,
6
- due-diligence and B2B data across **11 jurisdictions**: Poland, Germany, Italy,
7
- Spain, Austria, France, Belgium, Czechia, Slovakia, the US (California) and the UAE -
8
- plus a cross-border adverse-media screener.
5
+ access to **34 official business-registry actors** for KYC/AML, credit-risk,
6
+ due-diligence and B2B data across **16 jurisdictions**: Poland, Germany, Italy,
7
+ Spain, Austria, France, Belgium, Czechia, Slovakia, Cyprus, Ireland, Portugal,
8
+ Nigeria, Colombia, the US (California) and the UAE - plus a cross-border
9
+ adverse-media screener.
9
10
 
10
11
  Each registry is exposed as its own tool (e.g. `regdata_crbr_beneficial_owners`,
11
12
  `regdata_germany_handelsregister`, `regdata_adverse_media`), plus two helpers:
@@ -17,7 +18,7 @@ Each registry is exposed as its own tool (e.g. `regdata_crbr_beneficial_owners`,
17
18
  ## Setup
18
19
 
19
20
  You need an Apify API token (free, includes $5 credits):
20
- [console.apify.com/sign-up?ref=getregdata](https://console.apify.com/sign-up?ref=getregdata).
21
+ [apify.com/regdata](https://apify.com/regdata?fpr=getregdata).
21
22
 
22
23
  ### Claude Desktop / Claude Code
23
24
 
@@ -50,7 +51,7 @@ first-class tools there:
50
51
  https://mcp.apify.com/?actors=regdata/crbr-beneficial-owners-scraper,regdata/krz-debtor-scraper,regdata/germany-handelsregister-scraper,regdata/poland-krs-financial-scraper,regdata/adverse-media-screener
51
52
  ```
52
53
 
53
- Swap in any of the [25+ regdata actors](https://apify.com/regdata), or connect plain
54
+ Swap in any of the [34 regdata actors](https://apify.com/regdata?fpr=getregdata), or connect plain
54
55
  `https://mcp.apify.com` and let the agent discover them via `search-actors`
55
56
  ("Poland beneficial owners", "Germany insolvency", ...). OAuth signs you into your
56
57
  own Apify account, so billing and the free credit work exactly like the local server.
@@ -71,7 +72,7 @@ If the agent is unsure of a registry's exact input fields, it calls
71
72
 
72
73
  Pay-per-result on Apify, no subscription - from ~$0.003/result depending on actor
73
74
  and plan tier. The $5 monthly free credit covers hundreds to ~1,600 lookups. Each
74
- actor's current price is on its Store page at [apify.com/regdata](https://apify.com/regdata).
75
+ actor's current price is on its Store page at [apify.com/regdata](https://apify.com/regdata?fpr=getregdata).
75
76
 
76
77
  ## How it works
77
78
 
package/actors.js CHANGED
@@ -1,6 +1,6 @@
1
- // Auto-generated from the live Apify fleet (deployed builds). 29 regdata actors.
1
+ // Auto-generated from the live Apify fleet (deployed builds). 34 regdata actors.
2
2
  // Regenerate with: APIFY_TOKEN=... node scripts/gen-manifest.mjs
3
- // Generated 2026-07-16. Do not edit inputSchema by hand.
3
+ // Generated 2026-07-20. Do not edit inputSchema by hand.
4
4
  export const ACTORS = [
5
5
  {
6
6
  "slug": "adverse-media-screener",
@@ -336,7 +336,10 @@ export const ACTORS = [
336
336
  "default": 50
337
337
  }
338
338
  },
339
- "additionalProperties": true
339
+ "additionalProperties": true,
340
+ "required": [
341
+ "searchQueries"
342
+ ]
340
343
  }
341
344
  },
342
345
  {
@@ -375,7 +378,10 @@ export const ACTORS = [
375
378
  "default": 50
376
379
  }
377
380
  },
378
- "additionalProperties": true
381
+ "additionalProperties": true,
382
+ "required": [
383
+ "searchQueries"
384
+ ]
379
385
  }
380
386
  },
381
387
  {
@@ -1463,7 +1469,10 @@ export const ACTORS = [
1463
1469
  "default": 350
1464
1470
  }
1465
1471
  },
1466
- "additionalProperties": true
1472
+ "additionalProperties": true,
1473
+ "required": [
1474
+ "searchQueries"
1475
+ ]
1467
1476
  }
1468
1477
  },
1469
1478
  {
@@ -1583,5 +1592,278 @@ export const ACTORS = [
1583
1592
  },
1584
1593
  "additionalProperties": true
1585
1594
  }
1595
+ },
1596
+ {
1597
+ "slug": "cyprus-drcor-company-scraper",
1598
+ "tool": "regdata_cyprus_drcor",
1599
+ "title": "Cyprus DRCOR Company Registry Scraper",
1600
+ "description": "Look up Cyprus companies in the official DRCOR register by name or HE number. Returns company identity and status, directors and secretary, and registered office. A verified \"not found in the register\" is a real answer, not an error.",
1601
+ "inputSchema": {
1602
+ "type": "object",
1603
+ "properties": {
1604
+ "companyName": {
1605
+ "type": "string",
1606
+ "title": "Company name",
1607
+ "description": "Company or organisation name to search for. Matching is controlled by the Search type below. Example: 'HELLENIC BANK', 'EUROBANK'. | Όνομα εταιρείας ή οργανισμού."
1608
+ },
1609
+ "registrationNumbers": {
1610
+ "type": "array",
1611
+ "title": "Registration numbers",
1612
+ "description": "One or more Cyprus registration numbers, each looked up separately. Accepts any format: 'HE 6771', 'HE6771' or just '6771'. A bare number matches that number across EVERY organisation type (a limited company HE, a business name EE, an overseas company AE...), so include the letter prefix when you want just one type. | Αριθμοί εγγραφής, π.χ. 'ΗΕ 6771'.",
1613
+ "items": {
1614
+ "type": "string"
1615
+ }
1616
+ },
1617
+ "searchType": {
1618
+ "type": "string",
1619
+ "title": "Search type",
1620
+ "description": "How the company name is matched. 'Starts with' is the register's default and the most reliable. 'Sounds like' uses the register's own phonetic index, which is narrow - it will not behave like a general fuzzy search.",
1621
+ "enum": [
1622
+ "startsWith",
1623
+ "endsWith",
1624
+ "soundsLike"
1625
+ ],
1626
+ "default": "startsWith"
1627
+ },
1628
+ "maxResults": {
1629
+ "type": "integer",
1630
+ "title": "Max results",
1631
+ "description": "Maximum organisation records to export. A company that has traded under several names is listed once per former name in the register; those are merged into a single record here, with the former names kept on it, so you are never charged twice for the same company.",
1632
+ "default": 100
1633
+ },
1634
+ "language": {
1635
+ "type": "string",
1636
+ "title": "Result language",
1637
+ "description": "Language for labels and values the register translates - organisation type, status and officer positions. Company names and addresses are returned exactly as the register holds them, which for older Cypriot files is Greek regardless of this setting.",
1638
+ "enum": [
1639
+ "en",
1640
+ "el",
1641
+ "tr"
1642
+ ],
1643
+ "default": "en"
1644
+ }
1645
+ },
1646
+ "additionalProperties": true
1647
+ }
1648
+ },
1649
+ {
1650
+ "slug": "ireland-cro-company-scraper",
1651
+ "tool": "regdata_ireland_cro",
1652
+ "title": "Ireland CRO Company Registry Scraper",
1653
+ "description": "Look up Irish companies in the official CRO register by name or CRO number. Returns identity, type, status, incorporation date, registered address and email. Directors/shareholders are paid CRO documents and not included. A verified \"not found\" is a real answer.",
1654
+ "inputSchema": {
1655
+ "type": "object",
1656
+ "properties": {
1657
+ "companyNames": {
1658
+ "type": "array",
1659
+ "title": "Company names",
1660
+ "description": "One or more company names to search, each looked up separately (min 2 characters). Partial names work. A broad name can hit the register's 50-result ceiling.",
1661
+ "items": {
1662
+ "type": "string"
1663
+ }
1664
+ },
1665
+ "companyNumbers": {
1666
+ "type": "array",
1667
+ "title": "Company numbers",
1668
+ "description": "One or more Irish CRO registration numbers, each looked up separately. Digits only, e.g. '104547'.",
1669
+ "items": {
1670
+ "type": "string"
1671
+ }
1672
+ },
1673
+ "maxResultsPerQuery": {
1674
+ "type": "integer",
1675
+ "title": "Max results per query",
1676
+ "description": "Maximum company records to export per query. The register returns at most 50 matches per search, so 50 is the ceiling. Fetching the full record for each match happens in the same run.",
1677
+ "default": 50
1678
+ },
1679
+ "statusFilter": {
1680
+ "type": "array",
1681
+ "title": "Status filter",
1682
+ "description": "Keep only companies whose status contains one of these words, e.g. 'Normal', 'Dissolved', 'Liquidation'. Leave empty to export every match - a Dissolved or Liquidation counterparty is usually the finding you most want to see.",
1683
+ "default": [],
1684
+ "items": {
1685
+ "type": "string"
1686
+ }
1687
+ }
1688
+ },
1689
+ "additionalProperties": true
1690
+ }
1691
+ },
1692
+ {
1693
+ "slug": "portugal-corporate-acts-scraper",
1694
+ "tool": "regdata_portugal_corporate_acts",
1695
+ "title": "Portugal Corporate Acts Scraper",
1696
+ "description": "Search the official Portuguese Ministry of Justice register of published corporate acts by NIF or entity name. Returns each published act (incorporation, changes, appointments, dissolution) with date, entity, municipality and type. This is an act/event register, not a company profile. \"No acts found\" is a real answer.",
1697
+ "inputSchema": {
1698
+ "type": "object",
1699
+ "properties": {
1700
+ "nifs": {
1701
+ "type": "array",
1702
+ "title": "NIFs / NIPCs",
1703
+ "description": "One or more Portuguese tax numbers (NIF/NIPC, 9 digits), each looked up separately. The NIF is the preferred, most precise criterion. Example: '500123456'.",
1704
+ "items": {
1705
+ "type": "string"
1706
+ }
1707
+ },
1708
+ "entityNames": {
1709
+ "type": "array",
1710
+ "title": "Entity names",
1711
+ "description": "One or more entity names to search, each looked up separately (minimum 2 characters). Name search is broader than a NIF and more likely to hit the register's 200-result ceiling.",
1712
+ "items": {
1713
+ "type": "string"
1714
+ }
1715
+ },
1716
+ "publicationType": {
1717
+ "type": "string",
1718
+ "title": "Publication type",
1719
+ "description": "Which class of publication to search. 'All' covers everything. 'Commercial' is company (Registo Comercial) and foundation acts. 'Associations' and 'Solidarity' cover the non-profit registers.",
1720
+ "enum": [
1721
+ "all",
1722
+ "commercial",
1723
+ "other",
1724
+ "associations",
1725
+ "solidarity"
1726
+ ],
1727
+ "default": "all"
1728
+ },
1729
+ "district": {
1730
+ "type": "string",
1731
+ "title": "District (optional)",
1732
+ "description": "Restrict to a Portuguese district by name, e.g. 'Lisboa', 'Porto', 'Faro'. Leave empty for all districts. A district narrows a broad name search below the 200-result ceiling."
1733
+ },
1734
+ "dateFrom": {
1735
+ "type": "string",
1736
+ "title": "Date from (optional)",
1737
+ "description": "Only acts published on or after this date. Accepts YYYY-MM-DD. Use a date range to narrow a broad search or to monitor recent activity."
1738
+ },
1739
+ "dateTo": {
1740
+ "type": "string",
1741
+ "title": "Date to (optional)",
1742
+ "description": "Only acts published on or before this date. Accepts YYYY-MM-DD."
1743
+ },
1744
+ "maxResultsPerQuery": {
1745
+ "type": "integer",
1746
+ "title": "Max results per query",
1747
+ "description": "Maximum acts to export per query. The register returns at most 200 per search (20 per page, paged automatically), so 200 is the ceiling. To reach acts beyond it, narrow by date range, district or publication type.",
1748
+ "default": 200
1749
+ }
1750
+ },
1751
+ "additionalProperties": true
1752
+ }
1753
+ },
1754
+ {
1755
+ "slug": "nigeria-cac-company-scraper",
1756
+ "tool": "regdata_nigeria_cac",
1757
+ "title": "Nigeria CAC Company Registry Scraper",
1758
+ "description": "Search the official Nigerian CAC register by entity name or RC/BN/IT number. Returns registered name, registration number, classification, nature of business and status for companies, business names and incorporated trustees. A verified \"not found in the register\" is a real answer.",
1759
+ "inputSchema": {
1760
+ "type": "object",
1761
+ "properties": {
1762
+ "companyNames": {
1763
+ "type": "array",
1764
+ "title": "Entity names",
1765
+ "description": "One or more entity names to search, each looked up separately. Matching is the register's own name-similarity search, so partial names work: 'DANGOTE' returns every entity whose name contains it. Broad terms hit the register's 50-result ceiling - see Max results per query.",
1766
+ "items": {
1767
+ "type": "string"
1768
+ }
1769
+ },
1770
+ "registrationNumbers": {
1771
+ "type": "array",
1772
+ "title": "Registration numbers",
1773
+ "description": "One or more registration numbers, each looked up separately. Accepts any format: 'RC 71242', 'RC-71242' or just '71242'. Include the prefix to restrict the classification - RC = company, BN = business name, IT = incorporated trustees. A bare number matches those digits across ALL THREE classifications, which is deliberate: the same digits genuinely exist as different entities (RC 71242 and IT 71242 are unrelated organisations).",
1774
+ "items": {
1775
+ "type": "string"
1776
+ }
1777
+ },
1778
+ "maxResultsPerQuery": {
1779
+ "type": "integer",
1780
+ "title": "Max results per query",
1781
+ "description": "Maximum records to export per query. The register itself returns at most 50 matches and provides no pagination, so 50 is the ceiling here too - a broader term cannot be paged through. To reach matches beyond the ceiling, narrow the name or search by registration number.",
1782
+ "default": 50
1783
+ },
1784
+ "nameMatchMode": {
1785
+ "type": "string",
1786
+ "title": "Name match strictness",
1787
+ "description": "How closely an entity name must answer a name query. The register's search matches on single common words, so a search for a company that does NOT exist still returns a full page of unrelated entities - 'NOTAREALFIRM LIMITED' returns 49 results purely because they contain 'LIMITED'. 'Relevant' (default) drops rows that share nothing but boilerplate with your query. 'Strict' keeps only rows containing every identifying word. 'All' returns the register's raw output, including the noise. Registration-number lookups are exact and are never affected by this.",
1788
+ "enum": [
1789
+ "relevant",
1790
+ "strict",
1791
+ "all"
1792
+ ],
1793
+ "default": "relevant"
1794
+ },
1795
+ "statusFilter": {
1796
+ "type": "array",
1797
+ "title": "Status filter",
1798
+ "description": "Keep only entities in these registry statuses. Leave empty to export every match, which is the safer default for screening - an INACTIVE or DISSOLVED counterparty is usually the finding you most want to see, not one to filter away.",
1799
+ "default": [],
1800
+ "items": {
1801
+ "type": "string"
1802
+ }
1803
+ }
1804
+ },
1805
+ "additionalProperties": true
1806
+ }
1807
+ },
1808
+ {
1809
+ "slug": "colombia-rues-company-scraper",
1810
+ "tool": "regdata_colombia_rues",
1811
+ "title": "Colombia RUES Company Registry Scraper",
1812
+ "description": "Search the official Colombian RUES register by company name, NIT or matricula. Returns company and non-profit (RM and ESAL) identity, chamber of commerce, legal form and registration status. A verified \"not found in the register\" is a real answer.",
1813
+ "inputSchema": {
1814
+ "type": "object",
1815
+ "properties": {
1816
+ "companyNames": {
1817
+ "type": "array",
1818
+ "title": "Company / entity names",
1819
+ "description": "One or more names to search, each looked up separately. Matching is the register's own name search (minimum 2 characters). Broad terms hit the register's 500-result ceiling - see Max results per query.",
1820
+ "items": {
1821
+ "type": "string"
1822
+ }
1823
+ },
1824
+ "nits": {
1825
+ "type": "array",
1826
+ "title": "NITs",
1827
+ "description": "One or more Colombian NITs, each looked up separately. Accepts any format: '890.903.938-8', '890903938-8' or '890903938'. The verification (check) digit is optional and is not used for matching. A NIT lookup returns the entity and its registered branches across chambers of commerce.",
1828
+ "items": {
1829
+ "type": "string"
1830
+ }
1831
+ },
1832
+ "matriculas": {
1833
+ "type": "array",
1834
+ "title": "Matrículas",
1835
+ "description": "One or more matrícula (mercantile registration) numbers, each looked up separately.",
1836
+ "items": {
1837
+ "type": "string"
1838
+ }
1839
+ },
1840
+ "register": {
1841
+ "type": "string",
1842
+ "title": "Register",
1843
+ "description": "Which register to search. 'Registro Mercantil' covers companies and business establishments. 'ESAL' covers non-profit entities - foundations, associations and NGOs. A single run searches one register; run twice to cover both.",
1844
+ "enum": [
1845
+ "RM",
1846
+ "ESAL"
1847
+ ],
1848
+ "default": "RM"
1849
+ },
1850
+ "maxResultsPerQuery": {
1851
+ "type": "integer",
1852
+ "title": "Max results per query",
1853
+ "description": "Maximum records to export per query. The register itself returns at most 500 matches and provides no pagination, so 500 is the ceiling here too. To reach matches beyond it, narrow the name or search by NIT or matrícula.",
1854
+ "default": 500
1855
+ },
1856
+ "statusFilter": {
1857
+ "type": "array",
1858
+ "title": "Status filter",
1859
+ "description": "Keep only entities in these registry statuses. Leave empty to export every match, which is the safer default for screening - a CANCELADA (cancelled) counterparty is usually the finding you most want to see, not one to filter away.",
1860
+ "default": [],
1861
+ "items": {
1862
+ "type": "string"
1863
+ }
1864
+ }
1865
+ },
1866
+ "additionalProperties": true
1867
+ }
1586
1868
  }
1587
1869
  ];
package/index.js CHANGED
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  // getregdata MCP server - exposes the regdata official business-registry actors as MCP tools.
3
- // KYC/AML, credit-risk, due-diligence and B2B data across 11 jurisdictions.
3
+ // KYC/AML, credit-risk, due-diligence and B2B data across 16 jurisdictions.
4
4
  //
5
5
  // Auth: set APIFY_TOKEN in the environment (get one free at
6
- // https://console.apify.com/sign-up?ref=getregdata - includes $5 credits).
6
+ // https://apify.com/regdata?fpr=getregdata - includes $5 credits).
7
7
  //
8
8
  // Run: npx getregdata-mcp (or: node index.js)
9
9
 
@@ -18,6 +18,9 @@ import { ACTORS } from "./actors.js";
18
18
 
19
19
  const pkg = createRequire(import.meta.url)("./package.json");
20
20
  const APIFY_BASE = "https://api.apify.com/v2";
21
+ // Jurisdictions covered by the actor fleet. Not derivable from actors.js (no
22
+ // country field), so it is asserted here and checked by scripts/check-counts.mjs.
23
+ const JURISDICTIONS = 16;
21
24
  const token = () => process.env.APIFY_TOKEN || process.env.APIFY_API_TOKEN || "";
22
25
 
23
26
  function requireToken() {
@@ -25,7 +28,7 @@ function requireToken() {
25
28
  if (!t) {
26
29
  throw new Error(
27
30
  "APIFY_TOKEN is not set. Get a free token (with $5 credits) at " +
28
- "https://console.apify.com/sign-up?ref=getregdata and set APIFY_TOKEN in your MCP client config."
31
+ "https://apify.com/regdata?fpr=getregdata and set APIFY_TOKEN in your MCP client config."
29
32
  );
30
33
  }
31
34
  return t;
@@ -100,7 +103,7 @@ function buildToolList() {
100
103
  {
101
104
  name: "regdata_catalog",
102
105
  description:
103
- `List all ${ACTORS.length} getregdata business-registry actors (KYC/AML, credit-risk, due-diligence, B2B) across 11 jurisdictions, with their tool name and what each returns. Call this first to discover which registry tool to use.`,
106
+ `List all ${ACTORS.length} getregdata business-registry actors (KYC/AML, credit-risk, due-diligence, B2B) across ${JURISDICTIONS} jurisdictions, with their tool name and what each returns. Call this first to discover which registry tool to use.`,
104
107
  inputSchema: { type: "object", properties: {}, additionalProperties: false },
105
108
  },
106
109
  {
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "getregdata-mcp",
3
- "version": "1.0.5",
3
+ "version": "1.0.7",
4
4
  "mcpName": "io.github.Nolpak14/getregdata",
5
- "description": "MCP server for 25+ official business-registry actors (KYC/AML, credit-risk, due-diligence, B2B data) across 11 jurisdictions - Poland, Germany, Italy, Spain, Austria, France, Belgium, Czechia, Slovakia, US (California) and UAE - plus cross-border adverse-media screening.",
5
+ "description": "MCP server for 34 official business-registry actors (KYC/AML, credit-risk, due-diligence, B2B data) across 16 jurisdictions - Poland, Germany, Italy, Spain, Austria, France, Belgium, Czechia, Slovakia, Cyprus, Ireland, Portugal, Nigeria, Colombia, US (California) and UAE - plus cross-border adverse-media screening.",
6
6
  "type": "module",
7
7
  "bin": {
8
8
  "getregdata-mcp": "index.js"