prometiam-risk-mcp 0.2.8 → 0.3.0

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
@@ -1,181 +1,188 @@
1
- # `prometiam-risk-mcp`
2
-
3
- > Model Context Protocol server for the **Prometiam company data API** — official company-registry data for Spain, France, the UK, Ireland, Poland and Norway, plus directors, corporate events, insolvency, VAT/LEI lookup and sanctions screening, as native MCP tools for Claude Desktop, Cursor, Continue, Cline, and any MCP-compatible client.
4
-
5
- [![npm version](https://img.shields.io/npm/v/prometiam-risk-mcp.svg)](https://www.npmjs.com/package/prometiam-risk-mcp)
6
- [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
7
- [![OpenAPI](https://img.shields.io/badge/OpenAPI-3.0-green)](https://www.prometiam.com/openapi.json)
8
-
9
- ## What you get
10
-
11
- 28 MCP tools that wrap the [Prometiam Risk API](https://www.prometiam.com/risk-api/docs):
12
-
13
- | Tool | Description |
14
- |---|---|
15
- | `companies_search` | Search EU + UK companies by name, NIF (ES), SIREN/SIRET (FR), company_number (UK), or organisation number (NO). |
16
- | `company_detail` | Full company profile by Prometiam ID — officers, registry coordinates, capital, status. `include=risk_flags` attaches published tax-debt / debarment signals (ES). |
17
- | `events_search` | Search normalized corporate events: capital changes, director changes, dissolutions, mergers, insolvency. |
18
- | `events_timeline` | Chronological event history for one company (oldest first). |
19
- | `event_detail` | A single corporate-event record by ID, with before/after values and source notice. |
20
- | `people_search` | Search officers / directors / shareholders by name across registries. |
21
- | `person_detail` | Officer / director profile with full appointment history across companies. |
22
- | `directors_network` | Cross-directorship rollup — people appointed to many companies (nominee/hub detection, ES). |
23
- | `sanctions_screen` | Trigram-fuzzy match against 44,000+ active designations — five sanctions lists (EU consolidated, UN, OFAC, UK OFSI, French Registre des gels) plus 11 US export-control lists (BIS Entity List, Denied Persons, Unverified, MEU; State ITAR-Debarred, ISN; OFAC SSI, CMIC, MBS, PLC, CAPTA). Refreshed daily. `include_pep=true` adds a PEP block (beta, ES, national politicians only — no relatives or close associates). |
24
- | `sanctions_entity` | Full detail for one sanctions entity by ID — aliases, programme, listing date. |
25
- | `vat_validate` | Validate an EU VAT number against VIES (27 EU states + XI) — returns registered name/address when valid. |
26
- | `lei_lookup` | Look up a Legal Entity Identifier in the GLEIF global register — legal name, jurisdiction, status, address. |
27
- | `lei_search` | Resolve a company name to candidate LEIs (GLEIF full-text search). |
28
- | `lei_relationships` | GLEIF Level-2 ownership: direct and ultimate parents/children of an LEI. |
29
- | `insolvency_search` | Search insolvency / risk notices (bankruptcies, liquidations, judgments). |
30
- | `insolvency_notices_search` | Corporate insolvency notices from official gazettes in FR, DE, GB, AT, CH, NO, FI, US — distress coverage in markets with no registry held. Corporate only; personal insolvency is never returned. |
31
- | `insolvency_record` | A single insolvency / risk notice by ID, with related events. |
32
- | `notice_detail` | Registry gazette PDF metadata: edition, parse status, hash, raw text. |
33
- | `coverage` | Dataset coverage stats per country (companies, events, freshness). |
34
- | `account` | Calling key's plan, rate limits, remaining quota, and scopes. |
35
- | `monitor_list` | List companies subscribed to ongoing monitoring for this key. |
36
- | `monitor_get` | One monitored company by ID, with its alert history. |
37
- | `monitor_subscribe` | Subscribe a company to daily monitoring (events/status/sanctions → signed webhook). ES, IE and PL only. **Mutating.** |
38
- | `monitor_stop` | Stop monitoring a company and delete the subscription. **Mutating.** |
39
- | `prospect_companies_search` | Search companies by firmographics — sector group, NACE code, company age, employee band — for ICP / prospect-list building. |
40
- | `prospect_people_search` | Find contactable decision-makers (officers ES/FR, PSC owners GB) by seniority, department, and contact-route availability. Compliance-safe. |
41
- | `prospect_company_contacts` | Compliance-safe contact routes (role/company emails, phone, website, LinkedIn) published by the organisation. Suppression-filtered. |
42
- | `prospect_suppress` | Add an email/domain/LinkedIn/phone/person/company to the prospecting opt-out list (GDPR). **Mutating.** |
43
-
44
- Source: Spain (BORME), France (BODACC), United Kingdom (Companies House), Ireland (CRO), Poland (KRS), Norway (Brønnøysundregistrene / Enhetsregisteret, NLOD) — 26M+ companies. Daily updates. EU data residency.
45
-
46
- Officer/director data is held for Spain, France, the UK and Norway. Ireland and Poland are company-level for now. Norway has no corporate-event stream, so the event tools return nothing for `country=NO`.
47
-
48
- ## Install
49
-
50
- ```bash
51
- npx -y prometiam-risk-mcp # one-shot run, no install needed
52
- # or
53
- npm install -g prometiam-risk-mcp # global install for the bin
54
- ```
55
-
56
- ## Configure
57
-
58
- You need a Prometiam API key. **Free tier: 1,000 calls/month, no credit card.** Sign up at <https://www.prometiam.com/signup>.
59
-
60
- Set it as an environment variable:
61
-
62
- ```bash
63
- export PROMETIAM_API_KEY="rk_live_..."
64
- ```
65
-
66
- ## Use with Claude Desktop
67
-
68
- Edit `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or `%APPDATA%\Claude\claude_desktop_config.json` (Windows):
69
-
70
- ```json
71
- {
72
- "mcpServers": {
73
- "prometiam-risk": {
74
- "command": "npx",
75
- "args": ["-y", "prometiam-risk-mcp"],
76
- "env": {
77
- "PROMETIAM_API_KEY": "rk_live_your_key_here"
78
- }
79
- }
80
- }
81
- }
82
- ```
83
-
84
- Restart Claude Desktop. The 28 tools appear in the tool list. Try:
85
-
86
- > "What's the Prometiam coverage today?"
87
- > "Search for companies named Mercadona in Spain."
88
- > "Run a sanctions screen on the name Juan Perez at threshold 85."
89
- > "Build a corporate-event timeline for Inditex."
90
-
91
- ## Use with Cursor
92
-
93
- Edit `.cursor/mcp.json` in your project (or globally at `~/.cursor/mcp.json`):
94
-
95
- ```json
96
- {
97
- "mcpServers": {
98
- "prometiam-risk": {
99
- "command": "npx",
100
- "args": ["-y", "prometiam-risk-mcp"],
101
- "env": {
102
- "PROMETIAM_API_KEY": "rk_live_your_key_here"
103
- }
104
- }
105
- }
106
- }
107
- ```
108
-
109
- ## Use with Continue
110
-
111
- Add to `~/.continue/config.json` under `experimental.modelContextProtocolServers`:
112
-
113
- ```json
114
- {
115
- "experimental": {
116
- "modelContextProtocolServers": [
117
- {
118
- "transport": {
119
- "type": "stdio",
120
- "command": "npx",
121
- "args": ["-y", "prometiam-risk-mcp"],
122
- "env": { "PROMETIAM_API_KEY": "rk_live_your_key_here" }
123
- }
124
- }
125
- ]
126
- }
127
- }
128
- ```
129
-
130
- ## Use with any other MCP client
131
-
132
- Anything that speaks MCP over stdio works. Run the binary with `PROMETIAM_API_KEY` set in the environment. JSON-RPC requests on stdin, responses on stdout, logs on stderr.
133
-
134
- ## Environment variables
135
-
136
- | Variable | Required | Default |
137
- |---|---|---|
138
- | `PROMETIAM_API_KEY` | **Yes** | — |
139
- | `PROMETIAM_BASE_URL` | No | `https://api.prometiam.com/functions/v1/risk-api` |
140
-
141
- ## Smoke test
142
-
143
- Once installed and configured, you can verify the server lists tools without spinning up an MCP client:
144
-
145
- ```bash
146
- echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | PROMETIAM_API_KEY=rk_live_... npx -y prometiam-risk-mcp
147
- ```
148
-
149
- You should see a JSON-RPC response with all 28 tools and their schemas.
150
-
151
- ## Rate limits & pricing
152
-
153
- Per Prometiam tier (returned in every response's `meta.rate_limit`):
154
-
155
- | Tier | Price | Calls/month | Daily cap | RPM |
156
- |---|---|---|---|---|
157
- | Free | €0 | 1,000 | 200 | 10 |
158
- | Starter | €9.99 | 10,000 | 2,000 | 60 |
159
- | Professional | €29.99 | 100,000 | 20,000 | 300 |
160
- | Scale | €99.99 | 1,000,000 | 200,000 | 600 |
161
- | Enterprise | Custom | Custom | Custom | Custom |
162
-
163
- ## Privacy and data residency
164
-
165
- - All requests hit the Prometiam Risk API in **EU** (AWS eu-central-1, Frankfurt).
166
- - The MCP server adds **no telemetry of its own** — it just forwards requests to the API.
167
- - Officer data is processed under GDPR Article 6(1)(c) (legal obligation of public registries) and 6(1)(f) (legitimate interest in fraud prevention).
168
- - Mostly read-only. The only mutating tools are `monitor_subscribe` and `monitor_stop` (create/delete a monitoring subscription tied to your key) and `prospect_suppress` (adds a GDPR opt-out); every other tool is read-only.
169
-
170
- ## Source
171
-
172
- This package is open source under the MIT license. The Risk API itself is a commercial service — see <https://www.prometiam.com> for terms.
173
-
174
- - API documentation: <https://www.prometiam.com/risk-api/docs>
175
- - OpenAPI 3.0 spec: <https://www.prometiam.com/openapi.json>
176
- - Pricing: <https://www.prometiam.com/pricing>
177
- - Support: <https://www.prometiam.com/contact>
178
-
179
- ## License
180
-
181
- MIT © Prometiam
1
+ # `prometiam-risk-mcp`
2
+
3
+ > Model Context Protocol server for the **Prometiam company data API** — official company-registry data for Spain, France, the UK, Ireland, Poland and Norway, plus directors, corporate events, insolvency, VAT/LEI lookup, sanctions screening, Spanish public-procurement awards and public-buyer risk scores, as native MCP tools for Claude Desktop, Cursor, Continue, Cline, and any MCP-compatible client.
4
+
5
+ [![npm version](https://img.shields.io/npm/v/prometiam-risk-mcp.svg)](https://www.npmjs.com/package/prometiam-risk-mcp)
6
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
7
+ [![OpenAPI](https://img.shields.io/badge/OpenAPI-3.0-green)](https://www.prometiam.com/openapi.json)
8
+
9
+ ## What you get
10
+
11
+ 35 MCP tools that wrap the [Prometiam Risk API](https://www.prometiam.com/risk-api/docs):
12
+
13
+ | Tool | Description |
14
+ |---|---|
15
+ | `companies_search` | Search EU + UK companies by name, NIF (ES), SIREN/SIRET (FR), company_number (UK), or organisation number (NO). |
16
+ | `company_detail` | Full company profile by Prometiam ID — officers, registry coordinates, capital, status. `include=risk_flags` attaches published tax-debt / debarment signals (ES). |
17
+ | `events_search` | Search normalized corporate events: capital changes, director changes, dissolutions, mergers, insolvency. |
18
+ | `events_timeline` | Chronological event history for one company (oldest first). |
19
+ | `event_detail` | A single corporate-event record by ID, with before/after values and source notice. |
20
+ | `people_search` | Search officers / directors / shareholders by name across registries. |
21
+ | `person_detail` | Officer / director profile with full appointment history across companies. |
22
+ | `directors_network` | Cross-directorship rollup — people appointed to many companies (nominee/hub detection, ES). |
23
+ | `sanctions_screen` | Trigram-fuzzy match against 44,000+ active designations — five sanctions lists (EU consolidated, UN, OFAC, UK OFSI, French Registre des gels) plus 11 US export-control lists (BIS Entity List, Denied Persons, Unverified, MEU; State ITAR-Debarred, ISN; OFAC SSI, CMIC, MBS, PLC, CAPTA). Refreshed daily. `include_pep=true` adds a PEP block (beta, ES, national politicians only — no relatives or close associates). |
24
+ | `sanctions_entity` | Full detail for one sanctions entity by ID — aliases, programme, listing date. |
25
+ | `sanctions_changes` | Additions, removals and amendments detected on the sanctions lists, newest first — answer "what changed" without re-screening a whole book of business. |
26
+ | `sanctions_watchlist` | Your sanctions watchlists and any recent hits against them. Read-only; requires the `sanctions_watch` scope. |
27
+ | `sanctions_watch` | Add a name to your sanctions watchlist: re-screened on every list update, with an optional webhook. Requires the `sanctions_watch` scope. **Mutating.** |
28
+ | `sanctions_unwatch` | Remove one of your watchlist entries by id. **Mutating.** |
29
+ | `vat_validate` | Validate an EU VAT number against VIES (27 EU states + XI) — returns registered name/address when valid. |
30
+ | `lei_lookup` | Look up a Legal Entity Identifier in the GLEIF global register — legal name, jurisdiction, status, address. |
31
+ | `lei_search` | Resolve a company name to candidate LEIs (GLEIF full-text search). |
32
+ | `lei_relationships` | GLEIF Level-2 ownership: direct and ultimate parents/children of an LEI. |
33
+ | `insolvency_search` | Search insolvency / risk notices (bankruptcies, liquidations, judgments). |
34
+ | `insolvency_notices_search` | Corporate insolvency notices from official gazettes in FR, DE, GB, AT, CH, NO, FI, US, NL — distress coverage in markets with no registry held. Corporate only; personal insolvency is never returned. |
35
+ | `companies_lookup` | Resolve up to 100 companies in one call by registry number, NIF, SIREN, VAT or name (best fuzzy match with match_score). Every item counts as one request; an over-quota batch is refused up front with `max_items_now`. |
36
+ | `sanctions_screen_batch` | Screen up to 50 names in one call (sanctions scope). Per-item status match / clear / error / timeout with the same hits as `sanctions_screen`. |
37
+ | `insolvency_check` | Check up to 100 counterparties for corporate insolvency notices in one call across FR, DE, GB, AT, CH, NO, FI, US, NL; up to 5 notices per item plus latest_filing_date. |
38
+ | `insolvency_record` | A single insolvency / risk notice by ID, with related events. |
39
+ | `notice_detail` | Registry gazette PDF metadata: edition, parse status, hash, raw text. |
40
+ | `coverage` | Dataset coverage stats per country (companies, events, freshness). |
41
+ | `account` | Calling key's plan, rate limits, remaining quota, and scopes. |
42
+ | `monitor_list` | List companies subscribed to ongoing monitoring for this key. |
43
+ | `monitor_get` | One monitored company by ID, with its alert history. |
44
+ | `monitor_subscribe` | Subscribe a company to daily monitoring (events/status/sanctions → signed webhook). ES, IE and PL only. **Mutating.** |
45
+ | `monitor_stop` | Stop monitoring a company and delete the subscription. **Mutating.** |
46
+ | `procurement_awards` | Spanish public-contract awards (PLACSP) by supplier, buyer, tax id, CPV code or date, linked to the supplier's registry record. Spain only. |
47
+ | `procurement_buyer` | Risk profile of a public buyer (the contracting body) in Spain or France — **beta**. Two calibrated scores: single-bid risk and supplier-insolvency exposure, each with a 1-10 score, a probability and the evidence awards. Never a supplier score. |
48
+ | `procurement_buyers` | List scored public buyers by either score — a portfolio screen, a region view, or a name lookup to find a buyer's id. Beta, ES + FR. |
49
+ | `procurement_relationship` | How dependent a public buyer and one of its five largest suppliers are on each other: awards, value, share, single-bid count, insolvency date. Beta, ES + FR. |
50
+
51
+ Source: Spain (BORME), France (BODACC), United Kingdom (Companies House), Ireland (CRO), Poland (KRS), Norway (Brønnøysundregistrene / Enhetsregisteret, NLOD) — 26M+ companies. Daily updates. EU data residency.
52
+
53
+ Officer/director data is held for Spain, France, the UK and Norway. Ireland and Poland are company-level for now. Norway has no corporate-event stream, so the event tools return nothing for `country=NO`.
54
+
55
+ ## Install
56
+
57
+ ```bash
58
+ npx -y prometiam-risk-mcp # one-shot run, no install needed
59
+ # or
60
+ npm install -g prometiam-risk-mcp # global install for the bin
61
+ ```
62
+
63
+ ## Configure
64
+
65
+ You need a Prometiam API key. **Free tier: 1,000 calls/month, no credit card.** Sign up at <https://www.prometiam.com/signup>.
66
+
67
+ Set it as an environment variable:
68
+
69
+ ```bash
70
+ export PROMETIAM_API_KEY="rk_live_..."
71
+ ```
72
+
73
+ ## Use with Claude Desktop
74
+
75
+ Edit `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or `%APPDATA%\Claude\claude_desktop_config.json` (Windows):
76
+
77
+ ```json
78
+ {
79
+ "mcpServers": {
80
+ "prometiam-risk": {
81
+ "command": "npx",
82
+ "args": ["-y", "prometiam-risk-mcp"],
83
+ "env": {
84
+ "PROMETIAM_API_KEY": "rk_live_your_key_here"
85
+ }
86
+ }
87
+ }
88
+ }
89
+ ```
90
+
91
+ Restart Claude Desktop. The 35 tools appear in the tool list. Try:
92
+
93
+ > "What's the Prometiam coverage today?"
94
+ > "Search for companies named Mercadona in Spain."
95
+ > "Run a sanctions screen on the name Juan Perez at threshold 85."
96
+ > "Build a corporate-event timeline for Inditex."
97
+
98
+ ## Use with Cursor
99
+
100
+ Edit `.cursor/mcp.json` in your project (or globally at `~/.cursor/mcp.json`):
101
+
102
+ ```json
103
+ {
104
+ "mcpServers": {
105
+ "prometiam-risk": {
106
+ "command": "npx",
107
+ "args": ["-y", "prometiam-risk-mcp"],
108
+ "env": {
109
+ "PROMETIAM_API_KEY": "rk_live_your_key_here"
110
+ }
111
+ }
112
+ }
113
+ }
114
+ ```
115
+
116
+ ## Use with Continue
117
+
118
+ Add to `~/.continue/config.json` under `experimental.modelContextProtocolServers`:
119
+
120
+ ```json
121
+ {
122
+ "experimental": {
123
+ "modelContextProtocolServers": [
124
+ {
125
+ "transport": {
126
+ "type": "stdio",
127
+ "command": "npx",
128
+ "args": ["-y", "prometiam-risk-mcp"],
129
+ "env": { "PROMETIAM_API_KEY": "rk_live_your_key_here" }
130
+ }
131
+ }
132
+ ]
133
+ }
134
+ }
135
+ ```
136
+
137
+ ## Use with any other MCP client
138
+
139
+ Anything that speaks MCP over stdio works. Run the binary with `PROMETIAM_API_KEY` set in the environment. JSON-RPC requests on stdin, responses on stdout, logs on stderr.
140
+
141
+ ## Environment variables
142
+
143
+ | Variable | Required | Default |
144
+ |---|---|---|
145
+ | `PROMETIAM_API_KEY` | **Yes** | — |
146
+ | `PROMETIAM_BASE_URL` | No | `https://api.prometiam.com/functions/v1/risk-api` |
147
+
148
+ ## Smoke test
149
+
150
+ Once installed and configured, you can verify the server lists tools without spinning up an MCP client:
151
+
152
+ ```bash
153
+ echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | PROMETIAM_API_KEY=rk_live_... npx -y prometiam-risk-mcp
154
+ ```
155
+
156
+ You should see a JSON-RPC response with all 29 tools and their schemas.
157
+
158
+ ## Rate limits & pricing
159
+
160
+ Per Prometiam tier (returned in every response's `meta.rate_limit`):
161
+
162
+ | Tier | Price | Calls/month | Daily cap | RPM |
163
+ |---|---|---|---|---|
164
+ | Free | €0 | 1,000 | 200 | 10 |
165
+ | Starter | €9.99 | 10,000 | 2,000 | 60 |
166
+ | Professional | €29.99 | 100,000 | 20,000 | 300 |
167
+ | Scale | €99.99 | 1,000,000 | 200,000 | 600 |
168
+ | Enterprise | Custom | Custom | Custom | Custom |
169
+
170
+ ## Privacy and data residency
171
+
172
+ - All requests hit the Prometiam Risk API in **EU** (AWS eu-central-1, Frankfurt).
173
+ - The MCP server adds **no telemetry of its own** — it just forwards requests to the API.
174
+ - Officer data is processed under GDPR Article 6(1)(c) (legal obligation of public registries) and 6(1)(f) (legitimate interest in fraud prevention).
175
+ - Mostly read-only. The only mutating tools are `monitor_subscribe` and `monitor_stop` (create/delete a monitoring subscription tied to your key); every other tool is read-only.
176
+
177
+ ## Source
178
+
179
+ This package is open source under the MIT license. The Risk API itself is a commercial service — see <https://www.prometiam.com> for terms.
180
+
181
+ - API documentation: <https://www.prometiam.com/risk-api/docs>
182
+ - OpenAPI 3.0 spec: <https://www.prometiam.com/openapi.json>
183
+ - Pricing: <https://www.prometiam.com/pricing>
184
+ - Support: <https://www.prometiam.com/contact>
185
+
186
+ ## License
187
+
188
+ MIT © Prometiam
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAuBvB,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,uCAAuC;IACvC,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAA;IAClC,4DAA4D;IAC5D,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CAC7D;AAsBD,eAAO,MAAM,KAAK,EAAE,OAAO,EA0V1B,CAAA"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAiBvB,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,uCAAuC;IACvC,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAA;IAClC,4DAA4D;IAC5D,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CAC7D;AAsBD,eAAO,MAAM,KAAK,EAAE,OAAO,EAwZ1B,CAAA"}
package/dist/tools.js CHANGED
@@ -17,12 +17,6 @@ const Country = z.enum(['ES', 'FR', 'GB', 'IE', 'PL', 'NO']).describe('Country c
17
17
  * false capability, not a convenience.
18
18
  */
19
19
  const MonitorCountry = z.enum(['ES', 'IE', 'PL']).describe('Country of the company to monitor: ES (default), IE, or PL. Monitoring is not available for the other registry countries.');
20
- /**
21
- * The prospect contact layer is built per-country and does NOT include Norway.
22
- * Deliberately mirrors the pre-Norway country set so NO is never advertised as
23
- * a prospecting scope.
24
- */
25
- const ProspectCountry = z.enum(['ES', 'FR', 'GB', 'IE', 'PL']).describe('Country code for the prospect layer: ES, FR, GB, IE or PL. Norway (NO) is not part of the prospect contact layer.');
26
20
  const Limit = z.number().int().min(1).max(100).default(20).describe('Maximum number of results to return (1–100, default 20).');
27
21
  const Cursor = z.string().optional().describe('Pagination cursor — pass the previous response\'s pagination.next_cursor to fetch the next page.');
28
22
  /** Convert any thrown RiskApiError into a clean text response for the MCP client. */
@@ -52,11 +46,18 @@ export const TOOLS = [
52
46
  description: 'Search EU + UK companies in official registries by name or identifier. Returns companies with legal form, capital, status, registry coordinates. Use country to scope the search to Spain (BORME), France (BODACC), the UK (Companies House), Ireland (CRO), Poland (KRS), or Norway (Brønnøysundregistrene). Fuzzy name results carry a match_score (0–100) and are ranked by relevance, best first.',
53
47
  schema: z.object({
54
48
  name: z.string().optional().describe('Company name — fuzzy normalized match.'),
55
- // 'nif' was documented here but handleCompaniesSearch never reads it; the ES NIF/CIF
56
- // exact-match field is company_number.
49
+ // 'nif' was removed here because handleCompaniesSearch did not read it. It does now
50
+ // (risk-api dc4b37b5, 2026-08-30): nif and vat are aliases for company_number. Keeping
51
+ // it absent was not neutral -- the only working field was labelled "UK Companies House
52
+ // number", so a model holding a Spanish NIF was steered away from the one parameter
53
+ // that would have answered it.
54
+ nif: z.string().optional().describe('Spanish NIF/CIF — exact match, e.g. A78053147. Alias of company_number.'),
55
+ vat: z.string().optional().describe('VAT / tax identifier — exact match. Alias of company_number.'),
57
56
  siren: z.string().optional().describe('French SIREN (9 digits), e.g. 552032534.'),
58
57
  siret: z.string().optional().describe('French SIRET (14 digits).'),
59
- company_number: z.string().optional().describe('UK Companies House number, e.g. 00445790 or SC123456.'),
58
+ // Resolves per country: NIF for ES, SIREN for FR, registration number for GB/IE/PL/NO.
59
+ // Describing it as UK-only was wrong and cost real lookups.
60
+ company_number: z.string().optional().describe('Registry identifier — exact match. Resolves per country: Spanish NIF/CIF (A78053147), French SIREN, UK Companies House number (00445790, SC123456), or the IE/PL/NO registration number.'),
60
61
  has_risk_flag: z.boolean().optional().describe('Spain only. Return only companies carrying a published risk flag (currently the AEAT >€600,000 tax-debtor list).'),
61
62
  risk_flag_type: z.enum(['tax_debt', 'debarment', 'regulator_sanction', 'subsidy']).optional().describe('Spain only. Restrict to one flag type.'),
62
63
  country: Country.optional(),
@@ -194,10 +195,10 @@ export const TOOLS = [
194
195
  },
195
196
  {
196
197
  name: 'insolvency_notices_search',
197
- description: 'Search CORPORATE insolvency notices published in official gazettes and registers across France, Germany, the UK, Austria, Switzerland, Norway, Finland and the US. Use this for distress coverage in markets where no company registry is held (DE, AT, CH, FI, US) — there the notices stand alone and are not linked to a company record. Norway has full registry coverage, so NO notices can be cross-referenced against companies_search with country=NO. Personal/consumer insolvency is deliberately excluded and is never returned. Distinct from insolvency_search, which covers the linked ES/FR/GB risk-notice corpus.',
198
+ description: 'Search CORPORATE insolvency notices published in official gazettes and registers across France, Germany, the UK, Austria, Switzerland, Norway, Finland, the US and the Netherlands. Use this for distress coverage in markets where no company registry is held (DE, AT, CH, FI, US) — there the notices stand alone and are not linked to a company record. Norway has full registry coverage, so NO notices can be cross-referenced against companies_search with country=NO. Personal/consumer insolvency is deliberately excluded and is never returned. Distinct from insolvency_search, which covers the linked ES/FR/GB risk-notice corpus.',
198
199
  schema: z.object({
199
200
  name: z.string().min(2).optional().describe('Company name — matched anywhere in the normalized name (min 2 characters).'),
200
- country: z.enum(['FR', 'DE', 'GB', 'AT', 'CH', 'NO', 'FI', 'US']).optional().describe('Insolvency-coverage country. This is NOT the same set as the company-registry countries.'),
201
+ country: z.enum(['FR', 'DE', 'GB', 'AT', 'CH', 'NO', 'FI', 'US', 'NL']).optional().describe('Insolvency-coverage country. This is NOT the same set as the company-registry countries.'),
201
202
  event_type: z.string().optional().describe('Notice type, e.g. insolvency, dissolution, liquidation, forced_sale.'),
202
203
  date_from: z.string().regex(/^\d{4}-\d{2}-\d{2}$/).optional().describe('Filing date on or after this date (YYYY-MM-DD).'),
203
204
  date_to: z.string().regex(/^\d{4}-\d{2}-\d{2}$/).optional().describe('Filing date on or before this date (YYYY-MM-DD).'),
@@ -206,6 +207,118 @@ export const TOOLS = [
206
207
  }),
207
208
  handler: (args) => safeCall(() => getClient().get('/insolvency/search', args)),
208
209
  },
210
+ {
211
+ name: 'procurement_awards',
212
+ description: 'List Spanish public-contract awards (PLACSP) by supplier, buyer, supplier tax id, CPV code and date, newest first. SPAIN ONLY: no other country has procurement data. amount_eur is the awarded amount as published before VAT; framework agreements publish a ceiling, not spend; minor contracts are awarded directly by law. company_id is set when the supplier resolves to a Spanish company record (use company_detail on it). Requires at least one of company_id, nif, supplier, buyer, cpv or date_from.',
213
+ schema: z.object({
214
+ company_id: z.union([z.number().int(), z.string()]).optional().describe('Prometiam company id of the supplier (from companies_search with country=ES).'),
215
+ nif: z.string().optional().describe('Supplier tax id (NIF/CIF), exact match, e.g. B12345678.'),
216
+ supplier: z.string().min(3).optional().describe('Supplier name, matched anywhere (min 3 characters).'),
217
+ buyer: z.string().min(3).optional().describe('Contracting body name, matched anywhere (min 3 characters), e.g. "Ayuntamiento de Madrid".'),
218
+ cpv: z.string().regex(/^\d{2,8}$/).optional().describe('CPV code or prefix, 2-8 digits (45 = construction works).'),
219
+ date_from: z.string().regex(/^\d{4}-\d{2}-\d{2}$/).optional().describe('Award date on or after (YYYY-MM-DD).'),
220
+ date_to: z.string().regex(/^\d{4}-\d{2}-\d{2}$/).optional().describe('Award date on or before (YYYY-MM-DD).'),
221
+ min_amount: z.number().min(0).optional().describe('Minimum awarded amount in EUR.'),
222
+ limit: Limit,
223
+ cursor: Cursor,
224
+ }),
225
+ handler: (args) => safeCall(() => getClient().get('/procurement/awards', args)),
226
+ },
227
+ {
228
+ name: 'procurement_buyer',
229
+ description: 'Risk profile of a PUBLIC BUYER (a contracting body) in Spain or France — BETA. Two calibrated scores about the buyer, never about a supplier or a tender: competition = probability that its next award receives a single bid; counterparty = probability that a supplier it awards to enters insolvency within 24 months (weak signal). Each carries score 1-10 (log-odds ladder, 1 = 1st percentile of the country\'s buyers, 10 = 99th), probability, base_rate, relative_risk, percentile of the residual, observed/expected rates, awards_scored, confidence; plus behaviour ratios, up to three evidence awards and the five largest supplier relationships. Find the id with procurement_buyers. A score is a prompt to look, not a finding of wrongdoing.',
230
+ schema: z.object({
231
+ id: z.string().describe('National identifier of the contracting body: DIR3 code or NIF (Spain), SIRET (France).'),
232
+ country: z.enum(['ES', 'FR']).optional().describe('Defaults to ES.'),
233
+ }),
234
+ handler: (args) => safeCall(() => {
235
+ const { id, ...rest } = args;
236
+ return getClient().get(`/procurement/buyer/${encodeURIComponent(String(id))}`, rest);
237
+ }),
238
+ },
239
+ {
240
+ name: 'procurement_buyers',
241
+ description: 'List scored public buyers (contracting bodies) in Spain or France ordered by one buyer score, highest first — BETA. Use it to screen a portfolio (min_score), to see a region, or to find a buyer\'s identifier by name before calling procurement_buyer. Rows carry the buyer, its coverage and both risk blocks (score 1-10, probability, base_rate, relative_risk).',
242
+ schema: z.object({
243
+ country: z.enum(['ES', 'FR']).optional().describe('Defaults to ES.'),
244
+ model: z.enum(['competition', 'counterparty']).optional().describe('Which score orders the list (default competition).'),
245
+ min_score: z.number().int().min(1).max(10).optional().describe('Keep buyers at or above this score.'),
246
+ name: z.string().min(3).optional().describe('Buyer name, matched anywhere (min 3 characters).'),
247
+ region: z.string().optional().describe('Region name, matched anywhere.'),
248
+ limit: Limit,
249
+ cursor: Cursor,
250
+ }),
251
+ handler: (args) => safeCall(() => getClient().get('/procurement/buyers', args)),
252
+ },
253
+ {
254
+ name: 'procurement_relationship',
255
+ description: 'How dependent a public buyer and one of its five largest suppliers are on each other (Spain or France, BETA): awards, awarded value, the supplier\'s share of the buyer\'s awarded value, first/last award, single-bid awards, average bids, and the supplier\'s insolvency date when it failed. Only the five largest relationships per buyer are held; a supplier outside them returns 404 — use procurement_awards for its full award list (Spain).',
256
+ schema: z.object({
257
+ buyer: z.string().describe('National identifier of the contracting body (DIR3/NIF for Spain, SIRET for France).'),
258
+ supplier: z.string().describe('Supplier tax id (NIF for Spain, SIREN for France).'),
259
+ country: z.enum(['ES', 'FR']).optional().describe('Defaults to ES.'),
260
+ }),
261
+ handler: (args) => safeCall(() => getClient().get('/procurement/relationship', args)),
262
+ },
263
+ {
264
+ name: 'sanctions_watch',
265
+ description: 'Add a name to your sanctions watchlist (sanctions_watch scope, Starter and above): the API re-screens it against every list update and reports new hits on sanctions_watchlist, or calls webhook_url when set.',
266
+ schema: z.object({
267
+ name: z.string().min(2).max(200).describe('Name to watch.'),
268
+ entity_type: z.enum(['person', 'company', 'vessel']).optional(),
269
+ webhook_url: z.string().url().optional().describe('https URL called when a new hit appears.'),
270
+ }),
271
+ handler: (args) => safeCall(() => getClient().post('/sanctions/watchlist', args)),
272
+ },
273
+ {
274
+ name: 'sanctions_unwatch',
275
+ description: 'Remove one of your sanctions watchlist entries by id (from sanctions_watchlist).',
276
+ schema: z.object({
277
+ id: z.string().describe('Watchlist entry id.'),
278
+ }),
279
+ handler: (args) => safeCall(() => getClient().del(`/sanctions/watchlist/${encodeURIComponent(String(args.id))}`)),
280
+ },
281
+ {
282
+ name: 'companies_lookup',
283
+ description: 'Resolve up to 100 companies in ONE call (POST /companies/lookup). Each item needs country plus an identifier (company_number; aliases nif, siren, vat) or a name (best fuzzy match with match_score). Results come back in request order with status found / not_found / error / timeout and the same company object companies_search returns. Every item counts as one request against the plan limits; a batch that does not fit is refused with 429 batch_exceeds_quota and max_items_now.',
284
+ schema: z.object({
285
+ items: z.array(z.object({
286
+ country: Country.optional(),
287
+ company_number: z.string().optional().describe('Registry number: NIF (ES), SIREN (FR), Companies House number (GB), CRO (IE), KRS (PL), organisasjonsnummer (NO).'),
288
+ nif: z.string().optional(),
289
+ siren: z.string().optional(),
290
+ vat: z.string().optional(),
291
+ name: z.string().optional().describe('Company name for a fuzzy lookup (best match only).'),
292
+ })).min(1).max(100).describe('Up to 100 companies to resolve.'),
293
+ }),
294
+ handler: (args) => safeCall(() => getClient().post('/companies/lookup', args)),
295
+ },
296
+ {
297
+ name: 'sanctions_screen_batch',
298
+ description: 'Screen up to 50 names against the sanctions lists in ONE call (POST /sanctions/screen). Requires the sanctions scope (batch calls do not use the free trial allowance); every item counts as one request. Per-item status: match / clear / error / timeout. "clear" means no hit at or above the threshold on the active lists, not a certification.',
299
+ schema: z.object({
300
+ names: z.array(z.string().min(2)).min(1).max(50).describe('Names to screen (people, companies, vessels).'),
301
+ threshold: z.number().int().min(30).max(100).optional().describe('Minimum similarity 30-100 (default 80).'),
302
+ group: z.enum(['entity']).optional().describe('entity: one row per listed person/company with lists[] and sources[] instead of one row per source list.'),
303
+ list: z.string().optional().describe('Comma-separated source lists to restrict to, e.g. OFAC,EU,UN.'),
304
+ active_only: z.boolean().optional().describe('Only currently listed entries (default true).'),
305
+ limit: z.number().int().min(1).max(100).optional().describe('Hits returned per name (default 10).'),
306
+ }),
307
+ handler: (args) => safeCall(() => getClient().post('/sanctions/screen', args)),
308
+ },
309
+ {
310
+ name: 'insolvency_check',
311
+ description: 'Check up to 100 counterparties for CORPORATE insolvency notices in ONE call (POST /insolvency/check) across FR, DE, GB, AT, CH, NO, FI, US and NL. Each item: country plus company_number (alias siren; exact, as printed on the notice) or name. Returns up to 5 notices per item, newest first, plus latest_filing_date; status found / none / error / timeout. "none" is not proof of solvency. Every item counts as one request.',
312
+ schema: z.object({
313
+ items: z.array(z.object({
314
+ country: z.enum(['FR', 'DE', 'GB', 'AT', 'CH', 'NO', 'FI', 'US', 'NL']).optional(),
315
+ company_number: z.string().optional().describe('Registry number as printed on the notice (SIREN for FR, HRB for DE, Companies House number for GB, org number for NO...).'),
316
+ siren: z.string().optional(),
317
+ name: z.string().optional().describe('Company name (normalised pattern match).'),
318
+ })).min(1).max(100).describe('Up to 100 counterparties to check.'),
319
+ }),
320
+ handler: (args) => safeCall(() => getClient().post('/insolvency/check', args)),
321
+ },
209
322
  {
210
323
  name: 'insolvency_record',
211
324
  description: 'Fetch a single insolvency / risk notice by Prometiam internal ID, with related corporate events. Get an ID from insolvency_search.',
@@ -305,61 +418,6 @@ export const TOOLS = [
305
418
  }),
306
419
  handler: (args) => safeCall(() => getClient().del(`/monitor/${args.id}`)),
307
420
  },
308
- // ── Prospecting (compliance-safe B2B contact intelligence) ─────────────────
309
- {
310
- name: 'prospect_companies_search',
311
- description: 'Search companies by firmographics for ICP/prospect-list building: sector group (technology, finance, manufacturing, retail_wholesale, ...), NACE code prefix, company age, and employee band (INSEE-sourced for FR, estimated elsewhere). Returns companies with derived firmographics. Get decision-makers for a result via prospect_people_search with the company filter.',
312
- schema: z.object({
313
- country: ProspectCountry.optional(),
314
- stats: z.enum(['sector_group', 'employee_band']).optional().describe('Audience-sizing mode: returns bucket counts for this dimension (instant, pre-aggregated) instead of a company list.'),
315
- sector_group: z.enum(['agriculture', 'mining_energy', 'manufacturing', 'utilities', 'construction', 'retail_wholesale', 'transport_logistics', 'hospitality', 'technology', 'finance', 'real_estate', 'professional_services', 'business_services', 'public_sector', 'education', 'healthcare', 'arts_entertainment', 'other_services', 'other']).optional().describe('Coarse sector group derived from the registry industry code.'),
316
- sector: z.string().optional().describe('NACE code prefix, e.g. "62" (computer programming), "47" (retail), "41" (construction).'),
317
- employee_band: z.enum(['1-9', '10-49', '50-249', '250-999', '1000+']).optional().describe('Employee-count band.'),
318
- company_age_min: z.number().int().min(0).optional().describe('Minimum years since founding.'),
319
- company_age_max: z.number().int().min(0).optional().describe('Maximum years since founding.'),
320
- limit: Limit,
321
- cursor: Cursor,
322
- }),
323
- handler: (args) => safeCall(() => getClient().get('/prospect/companies/search', args)),
324
- },
325
- {
326
- name: 'prospect_people_search',
327
- description: 'Find contactable decision-makers across EU registries: officers/directors (ES, FR) or beneficial owners (GB PSC), mapped from registry roles to functional titles + seniority. Filter by seniority, department, and whether a company/role contact route exists. Compliance-safe: registry-published roles + org-published routes only, never inferred personal emails. Scope with country (ES/FR/GB).',
328
- schema: z.object({
329
- country: ProspectCountry.optional(),
330
- stats: z.enum(['seniority', 'department']).optional().describe('Audience-sizing mode: returns bucket counts for this dimension (instant) instead of a people list.'),
331
- seniority: z.enum(['owner', 'c_level', 'board', 'manager', 'other']).optional().describe('Seniority tier. c_level = CEO/MD/Gérant/President; board = directors; owner = shareholders/PSC.'),
332
- department: z.enum(['executive', 'governance', 'ownership', 'finance', 'legal', 'other']).optional().describe('Functional department derived from the registry role.'),
333
- company: z.union([z.number().int(), z.string()]).optional().describe("Surface company ID — scope to one company's decision-makers (replaces the old prospect_company_people tool)."),
334
- has_email: z.boolean().optional().describe('Only people whose company has a published email route.'),
335
- has_phone: z.boolean().optional().describe('Only people whose company has a published phone route.'),
336
- has_linkedin: z.boolean().optional().describe('Only people with a published LinkedIn profile.'),
337
- min_tenure_years: z.number().int().min(0).optional().describe('Minimum years since appointment.'),
338
- limit: Limit,
339
- cursor: Cursor,
340
- }),
341
- handler: (args) => safeCall(() => getClient().get('/prospect/people/search', args)),
342
- },
343
- {
344
- name: 'prospect_company_contacts',
345
- description: 'Get the compliance-safe contact routes for a company (role/company emails, phones, website, LinkedIn) published by the organisation in official registers or its own website. Suppression-filtered. Not verified personal mailboxes. Get the company ID from companies_search or prospect_companies_search.',
346
- schema: z.object({
347
- id: z.union([z.number().int(), z.string()]).describe('Prometiam surface company ID.'),
348
- country: ProspectCountry.optional(),
349
- type: z.enum(['email', 'phone', 'website', 'linkedin']).optional().describe('Filter to one route type.'),
350
- }),
351
- handler: (args) => safeCall(() => getClient().get(`/prospect/company/${args.id}/contacts`, args)),
352
- },
353
- {
354
- name: 'prospect_suppress',
355
- description: 'Add a subject to the prospecting suppression / opt-out list (GDPR right to object). Any suppressed email, domain, LinkedIn, phone, person, or company is filtered from all prospect responses going forward. Suppression is permanent.',
356
- schema: z.object({
357
- kind: z.enum(['email', 'domain', 'linkedin', 'phone', 'person', 'company']).describe('What kind of identifier is being suppressed.'),
358
- value: z.string().describe('The email / domain / LinkedIn URL / phone / id to suppress.'),
359
- reason: z.string().optional().describe('Optional reason (opt_out, complaint, legal_request, bounce).'),
360
- }),
361
- handler: (args) => safeCall(() => getClient().post('/prospect/suppress', args)),
362
- },
363
421
  // ── Sanctions change feed / watchlists ───────────────────────────────────
364
422
  // Added 2026-07-28: both endpoints were live but absent from openapi.json, so the parity
365
423
  // guard could not see they had no tool. Documenting the paths surfaced the gap immediately.
@@ -376,7 +434,7 @@ export const TOOLS = [
376
434
  },
377
435
  {
378
436
  name: 'sanctions_watchlist',
379
- description: 'Return your sanctions watchlists and any recent hits against them. Requires the sanctions_watch scope; the number of entries allowed depends on your tier. Read-only — use the REST API to add or remove entries.',
437
+ description: 'Return your sanctions watchlists and any recent hits against them. Requires the sanctions_watch scope; the number of entries allowed depends on your tier. Add entries with sanctions_watch and remove them with sanctions_unwatch.',
380
438
  schema: z.object({}),
381
439
  handler: () => safeCall(() => getClient().get('/sanctions/watchlist', {})),
382
440
  },
package/dist/tools.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,80 +1,81 @@
1
- {
2
- "name": "prometiam-risk-mcp",
3
- "version": "0.2.8",
4
- "mcpName": "io.github.matiasmaquieira96/risk-mcp",
5
- "description": "Model Context Protocol server for the Prometiam company data API — official registry data for Spain, France, the UK, Ireland, Poland and Norway, plus directors and UK beneficial ownership, corporate events, insolvency notices, VAT (VIES) and LEI (GLEIF) lookup and sanctions screening, as native MCP tools for Claude, Cursor and any MCP-compatible client.",
6
- "type": "module",
7
- "main": "dist/index.js",
8
- "bin": {
9
- "prometiam-risk-mcp": "dist/index.js"
10
- },
11
- "files": [
12
- "dist",
13
- "README.md",
14
- "LICENSE"
15
- ],
16
- "scripts": {
17
- "check:parity": "node scripts/check-parity.mjs",
18
- "build": "npm run check:parity && tsc",
19
- "prepublishOnly": "npm run check:parity && npm run build",
20
- "start": "node dist/index.js",
21
- "dev": "tsc --watch",
22
- "smoke": "echo '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/list\"}' | node dist/index.js"
23
- },
24
- "keywords": [
25
- "mcp",
26
- "model-context-protocol",
27
- "claude",
28
- "cursor",
29
- "prometiam",
30
- "company-registry",
31
- "kyb",
32
- "kyc",
33
- "sanctions",
34
- "compliance",
35
- "borme",
36
- "bodacc",
37
- "companies-house",
38
- "brreg",
39
- "eu",
40
- "uk",
41
- "norway",
42
- "company-data",
43
- "company-search",
44
- "registry-api",
45
- "open-data",
46
- "aml",
47
- "due-diligence",
48
- "counterparty",
49
- "beneficial-ownership",
50
- "insolvency",
51
- "spain",
52
- "france",
53
- "ireland",
54
- "poland"
55
- ],
56
- "author": "Prometiam <support@prometiam.com> (https://www.prometiam.com)",
57
- "license": "MIT",
58
- "homepage": "https://github.com/matiasmaquieira96/prometiam-risk-mcp#readme",
59
- "bugs": {
60
- "url": "https://github.com/matiasmaquieira96/prometiam-risk-mcp/issues"
61
- },
62
- "repository": {
63
- "type": "git",
64
- "url": "git+https://github.com/matiasmaquieira96/prometiam-risk-mcp.git"
65
- },
66
- "publishConfig": {
67
- "access": "public"
68
- },
69
- "engines": {
70
- "node": ">=18"
71
- },
72
- "dependencies": {
73
- "@modelcontextprotocol/sdk": "^1.0.4",
74
- "zod": "^3.23.8"
75
- },
76
- "devDependencies": {
77
- "@types/node": "^22.0.0",
78
- "typescript": "^5.5.0"
79
- }
80
- }
1
+ {
2
+ "name": "prometiam-risk-mcp",
3
+ "version": "0.3.0",
4
+ "mcpName": "io.github.matiasmaquieira96/risk-mcp",
5
+ "description": "Model Context Protocol server for the Prometiam company data API — official registry data for Spain, France, the UK, Ireland, Poland and Norway, plus directors and UK beneficial ownership, corporate events, insolvency notices, VAT (VIES) and LEI (GLEIF) lookup, sanctions screening, Spanish public-procurement awards and beta public-buyer risk scores, as native MCP tools for Claude, Cursor and any MCP-compatible client.",
6
+ "type": "module",
7
+ "main": "dist/index.js",
8
+ "bin": {
9
+ "prometiam-risk-mcp": "dist/index.js"
10
+ },
11
+ "files": [
12
+ "dist",
13
+ "README.md",
14
+ "LICENSE"
15
+ ],
16
+ "scripts": {
17
+ "check:parity": "node scripts/check-parity.mjs",
18
+ "build": "npm run check:parity && tsc",
19
+ "prepublishOnly": "npm run check:parity && npm run build",
20
+ "start": "node dist/index.js",
21
+ "dev": "tsc --watch",
22
+ "smoke": "echo '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/list\"}' | node dist/index.js",
23
+ "check:surfaces": "node scripts/check-surfaces.mjs"
24
+ },
25
+ "keywords": [
26
+ "mcp",
27
+ "model-context-protocol",
28
+ "claude",
29
+ "cursor",
30
+ "prometiam",
31
+ "company-registry",
32
+ "kyb",
33
+ "kyc",
34
+ "sanctions",
35
+ "compliance",
36
+ "borme",
37
+ "bodacc",
38
+ "companies-house",
39
+ "brreg",
40
+ "eu",
41
+ "uk",
42
+ "norway",
43
+ "company-data",
44
+ "company-search",
45
+ "registry-api",
46
+ "open-data",
47
+ "aml",
48
+ "due-diligence",
49
+ "counterparty",
50
+ "beneficial-ownership",
51
+ "insolvency",
52
+ "spain",
53
+ "france",
54
+ "ireland",
55
+ "poland"
56
+ ],
57
+ "author": "Prometiam <support@prometiam.com> (https://www.prometiam.com)",
58
+ "license": "MIT",
59
+ "homepage": "https://github.com/matiasmaquieira96/prometiam-risk-mcp#readme",
60
+ "bugs": {
61
+ "url": "https://github.com/matiasmaquieira96/prometiam-risk-mcp/issues"
62
+ },
63
+ "repository": {
64
+ "type": "git",
65
+ "url": "git+https://github.com/matiasmaquieira96/prometiam-risk-mcp.git"
66
+ },
67
+ "publishConfig": {
68
+ "access": "public"
69
+ },
70
+ "engines": {
71
+ "node": ">=18"
72
+ },
73
+ "dependencies": {
74
+ "@modelcontextprotocol/sdk": "^1.0.4",
75
+ "zod": "^3.23.8"
76
+ },
77
+ "devDependencies": {
78
+ "@types/node": "^22.0.0",
79
+ "typescript": "^5.5.0"
80
+ }
81
+ }