@certscore/mcp 0.2.1 → 0.2.3

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,7 +2,7 @@
2
2
 
3
3
  CertScore MCP exposes a focused Model Context Protocol server for CertScore Pulse workflows.
4
4
 
5
- Status: public developer preview. The server is distributed for external macOS MCP clients through Homebrew. Local WC01 development uses `pnpm mcp:certscore`.
5
+ Status: public remote endpoint plus local stdio package. Remote clients can use `https://mcp.certscore.ai/mcp`; external macOS MCP clients can use the Homebrew-distributed stdio command. Local WC01 development uses `pnpm mcp:certscore`.
6
6
 
7
7
  Public docs:
8
8
 
@@ -13,7 +13,7 @@ Public docs:
13
13
 
14
14
  ## Tools
15
15
 
16
- - `scan_site` - Start or reuse a CertScore public-web scan for a public URL.
16
+ - `scan_site` - Start or reuse a CertScore public-web scan for a public URL. API docs: https://certscore.ai/api/v2/openapi.json
17
17
  - `get_scan` - Retrieve the API v2 public-safe scan resource for a stable scan ID.
18
18
  - `get_scan_status` - Pass scanId (preferred, API v2). Pass jobId only for a just-created scan that has not yet returned a scanId.
19
19
  - `get_report` - Retrieve a summary CertScore Pulse report by stable scan ID. Use get_evidence for the larger bounded evidence packet.
@@ -60,12 +60,9 @@ Run from this monorepo for local development:
60
60
  CERTSCORE_API_KEY=... pnpm mcp:certscore
61
61
  ```
62
62
 
63
- Generate a scoped preview key after applying DB migrations:
64
-
65
- ```bash
66
- pnpm db:migrate
67
- pnpm mcp:certscore:generate-key -- --name "CertScore MCP preview"
68
- ```
63
+ Public API/MCP access uses self-serve read-only keys from `POST https://certscore.ai/api/v2/keys/request` or support-granted
64
+ `scan:create` access. Repository-only key generation commands may exist for internal smoke tests, but they are not the public
65
+ integration path.
69
66
 
70
67
  Run the built package directly after local build:
71
68
 
@@ -80,11 +77,11 @@ CERTSCORE_BASE_URL=https://certscore.ai
80
77
  CERTSCORE_REQUEST_TIMEOUT_MS=300000
81
78
  ```
82
79
 
83
- `CERTSCORE_API_KEY` should be a scoped CertScore API token for the workspace or preview user. The MCP server passes it to Pulse as a bearer token and does not persist it.
80
+ `CERTSCORE_API_KEY` should be a scoped CertScore API token for the workspace or integration user. The MCP server passes it to Pulse as a bearer token and does not persist it.
84
81
 
85
82
  ## API Key Access
86
83
 
87
- MCP clients usually need `scan:read`, `scan:create`, and `mcp` scopes. Request developer-preview access by emailing `support@certscore.ai` with your organization, MCP client, expected workflow, expected request volume, contact email, and requested scopes.
84
+ MCP clients usually need `scan:read` and `mcp` for read workflows. Starting scans also requires `scan:create`, which is grant-gated for launch. Request scan creation access by emailing `support@certscore.ai` with your organization, MCP client, expected workflow, expected request volume, contact email, and requested scopes.
88
85
 
89
86
  ## Verify Install
90
87
 
@@ -217,7 +214,7 @@ For the full production operator smoke, run from the WC01 repo:
217
214
  pnpm ops:smoke:mcp-production
218
215
  ```
219
216
 
220
- This verifies the Homebrew-installed `certscore-mcp` command against live `https://certscore.ai`. It creates a short-lived preview key, stores only the hash in production through the approved ECS/Fargate path, checks required tools, requests a fresh EU-IR scan with `freshness: "refresh"` and `scanFrom: "eu_ie"`, requires non-empty findings and pre-consent cookies/trackers rows, runs `explain_finding`, and revokes the temporary key afterward. It exercises existing public-safe API/MCP projections only.
217
+ This verifies the Homebrew-installed `certscore-mcp` command against live `https://certscore.ai`. It creates a short-lived internal smoke key, stores only the hash in production through the approved ECS/Fargate path, checks required tools, requests a fresh EU-IE scan with `freshness: "refresh"` and `scanFrom: "eu_ie"`, requires non-empty findings and pre-consent cookies/trackers rows, runs `explain_finding`, and revokes the temporary key afterward. It exercises existing public-safe API/MCP projections only.
221
218
 
222
219
  ## Troubleshooting
223
220
 
@@ -18067,7 +18067,7 @@ var mcpGetLatestDomainPreConsentCookiesTrackersInputSchema = {
18067
18067
  };
18068
18068
  var scanCreationAnnotations = {
18069
18069
  readOnlyHint: false,
18070
- destructiveHint: false,
18070
+ destructiveHint: true,
18071
18071
  idempotentHint: false,
18072
18072
  openWorldHint: true
18073
18073
  };
@@ -18160,7 +18160,7 @@ var certScoreMcpToolContracts = [
18160
18160
  {
18161
18161
  name: "scan_site",
18162
18162
  title: "Scan site",
18163
- description: "Start or reuse a CertScore public-web scan for a public URL.",
18163
+ description: "Start or reuse a CertScore public-web scan for a public URL. API docs: https://certscore.ai/api/v2/openapi.json",
18164
18164
  inputSchema: mcpCreateScanInputSchema,
18165
18165
  outputSchema: mcpScanSiteOutputSchema,
18166
18166
  annotations: scanCreationAnnotations
@@ -18175,7 +18175,7 @@ var certScoreMcpToolContracts = [
18175
18175
  },
18176
18176
  {
18177
18177
  name: "get_scan_status",
18178
- title: "Get CertScore Pulse scan status",
18178
+ title: "Get CertScore scan status",
18179
18179
  description: "Pass scanId (preferred, API v2). Pass jobId only for a just-created scan that has not yet returned a scanId.",
18180
18180
  inputSchema: mcpGetScanStatusInputSchema,
18181
18181
  outputSchema: mcpScanStatusOutputSchema,
@@ -18183,7 +18183,7 @@ var certScoreMcpToolContracts = [
18183
18183
  },
18184
18184
  {
18185
18185
  name: "get_report",
18186
- title: "Get CertScore Pulse report",
18186
+ title: "Get CertScore report",
18187
18187
  description: "Retrieve a summary CertScore Pulse report by stable scan ID. Use get_evidence for the larger bounded evidence packet.",
18188
18188
  inputSchema: mcpGetReportInputSchema,
18189
18189
  outputSchema: mcpReportOutputSchema,
@@ -18191,7 +18191,7 @@ var certScoreMcpToolContracts = [
18191
18191
  },
18192
18192
  {
18193
18193
  name: "get_evidence",
18194
- title: "Get CertScore Pulse evidence",
18194
+ title: "Get CertScore evidence",
18195
18195
  description: "Retrieve the bounded structured Evidence JSON packet for a stable scan ID. Excludes raw cookie values, raw bodies, sensitive payloads, full DOM, and unredacted query values.",
18196
18196
  inputSchema: mcpGetEvidenceInputSchema,
18197
18197
  outputSchema: pulseResponseSchema,
@@ -18215,7 +18215,7 @@ var certScoreMcpToolContracts = [
18215
18215
  },
18216
18216
  {
18217
18217
  name: "get_pre_consent_cookies_trackers",
18218
- title: "Get pre-consent cookies and trackers",
18218
+ title: "Get pre-consent cookies & trackers",
18219
18219
  description: "Retrieve the public-safe Cookies & Trackers (Pre-consent) report table as compact JSON for a scan.",
18220
18220
  inputSchema: mcpGetPreConsentCookiesTrackersInputSchema,
18221
18221
  outputSchema: mcpPreConsentCookiesTrackersOutputSchema,
@@ -18239,7 +18239,7 @@ var certScoreMcpToolContracts = [
18239
18239
  },
18240
18240
  {
18241
18241
  name: "get_latest_domain_pre_consent_cookies_trackers",
18242
- title: "Get latest domain pre-consent cookies and trackers",
18242
+ title: "Get latest pre-consent cookies & trackers",
18243
18243
  description: "Retrieve the public-safe Cookies & Trackers (Pre-consent) table from the latest eligible scan for a domain.",
18244
18244
  inputSchema: mcpGetLatestDomainPreConsentCookiesTrackersInputSchema,
18245
18245
  outputSchema: mcpPreConsentCookiesTrackersOutputSchema,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@certscore/mcp",
3
- "version": "0.2.1",
3
+ "version": "0.2.3",
4
4
  "mcpName": "ai.certscore/mcp",
5
5
  "private": false,
6
6
  "description": "MCP server for CertScore public website risk-signal workflows.",
@@ -46,14 +46,6 @@
46
46
  "url": "https://certscore.ai/contact",
47
47
  "email": "support@certscore.ai"
48
48
  },
49
- "scripts": {
50
- "build": "tsc -p tsconfig.json && esbuild src/index.ts --bundle --platform=node --format=esm --target=node20 --banner:js='#!/usr/bin/env node' --outfile=dist/certscore-mcp.mjs",
51
- "bundle": "esbuild src/index.ts --bundle --platform=node --format=esm --target=node20 --banner:js='#!/usr/bin/env node' --outfile=dist/certscore-mcp.mjs",
52
- "typecheck": "tsc --noEmit -p tsconfig.json",
53
- "test": "node --import tsx --test src/*.test.ts",
54
- "prepack": "pnpm run build",
55
- "clean": "rm -rf dist"
56
- },
57
49
  "keywords": [
58
50
  "certscore",
59
51
  "pulse",
@@ -67,7 +59,14 @@
67
59
  "zod": "^3.25.76"
68
60
  },
69
61
  "devDependencies": {
70
- "@certscore/api-contracts": "workspace:*",
71
- "@certscore/sdk": "workspace:*"
62
+ "@certscore/api-contracts": "0.1.0",
63
+ "@certscore/sdk": "0.1.0"
64
+ },
65
+ "scripts": {
66
+ "build": "tsc -p tsconfig.json && esbuild src/index.ts --bundle --platform=node --format=esm --target=node20 --banner:js='#!/usr/bin/env node' --outfile=dist/certscore-mcp.mjs",
67
+ "bundle": "esbuild src/index.ts --bundle --platform=node --format=esm --target=node20 --banner:js='#!/usr/bin/env node' --outfile=dist/certscore-mcp.mjs",
68
+ "typecheck": "tsc --noEmit -p tsconfig.json",
69
+ "test": "node --import tsx --test src/*.test.ts",
70
+ "clean": "rm -rf dist"
72
71
  }
73
- }
72
+ }
package/server.json CHANGED
@@ -7,12 +7,12 @@
7
7
  "url": "https://github.com/ergoveritas1-alt/certscore.ai",
8
8
  "source": "github"
9
9
  },
10
- "version": "0.2.1",
10
+ "version": "0.2.3",
11
11
  "packages": [
12
12
  {
13
13
  "registryType": "npm",
14
14
  "identifier": "@certscore/mcp",
15
- "version": "0.2.1",
15
+ "version": "0.2.3",
16
16
  "transport": {
17
17
  "type": "stdio"
18
18
  },