@certscore/mcp 0.2.4 → 0.2.6
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 +49 -14
- package/dist/certscore-mcp.mjs +12638 -2328
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +34 -0
- package/dist/tools.d.ts +6 -0
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +4 -0
- package/package.json +12 -11
- package/server.json +7 -21
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
|
|
5
|
+
Status: public developer preview. Version 0.2.6 is available as a Homebrew/npm stdio server and as a hosted OAuth-protected Streamable HTTP service. Local WC01 development uses `pnpm mcp:certscore`.
|
|
6
6
|
|
|
7
7
|
Public docs:
|
|
8
8
|
|
|
@@ -13,19 +13,51 @@ Public docs:
|
|
|
13
13
|
|
|
14
14
|
## Tools
|
|
15
15
|
|
|
16
|
-
- `
|
|
17
|
-
- `
|
|
18
|
-
- `
|
|
19
|
-
- `
|
|
16
|
+
- `create_scan` - Deprecated compatibility alias of scan_site. Use scan_site for new integrations. Returns completed-limited no-go disposition and reason-specific guidance when applicable.
|
|
17
|
+
- `scan_site` - Start or reuse a CertScore public-web scan. Completed no-go scans return completed_limited status, structured reason-specific guidance, and timing when available.
|
|
18
|
+
- `get_scan` - Retrieve the API v2 public-safe scan resource, including completed-limited no-go disposition, reason-specific guidance, and timing when available.
|
|
19
|
+
- `get_scan_status` - Retrieve terminal status, including completed_limited no-go disposition and reason-specific guidance. Pass jobId only before a stable scanId is available.
|
|
20
|
+
- `get_report` - Retrieve a summary Pulse report, including customer-safe no-go messaging when coverage is completed-limited. Use get_evidence for the larger bounded packet.
|
|
20
21
|
- `get_evidence` - 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.
|
|
21
|
-
- `export_findings` - Return structured findings
|
|
22
|
+
- `export_findings` - Return structured findings plus completed-limited no-go disposition and guidance for downstream review or ticketing workflows.
|
|
22
23
|
- `list_findings` - List API v2 public-safe findings already projected for a scan.
|
|
23
24
|
- `get_pre_consent_cookies_trackers` - Retrieve the public-safe Cookies & Trackers (Pre-consent) report table as compact JSON for a scan.
|
|
24
|
-
- `explain_finding` - Explain
|
|
25
|
+
- `explain_finding` - Explain one projected finding with public evidence, caveats, reviewer next steps, and reason-specific no-go context when applicable.
|
|
25
26
|
- `get_latest_domain_scan` - Retrieve the latest eligible API v2 public-safe scan for a domain.
|
|
26
27
|
- `get_latest_domain_pre_consent_cookies_trackers` - Retrieve the public-safe Cookies & Trackers (Pre-consent) table from the latest eligible scan for a domain.
|
|
27
28
|
|
|
28
|
-
The initial MCP surface intentionally does not include account scan browsing
|
|
29
|
+
The initial MCP surface intentionally does not include account scan browsing or scan comparison tools.
|
|
30
|
+
|
|
31
|
+
## Scan Timing Fields
|
|
32
|
+
|
|
33
|
+
MCP tools backed by API v2 scan resources return scan timing when CertScore has enough timing evidence:
|
|
34
|
+
|
|
35
|
+
- `startedAt`
|
|
36
|
+
- `completedAt`
|
|
37
|
+
- `scanTimeSeconds`
|
|
38
|
+
|
|
39
|
+
This applies to `scan_site` when it returns an API v2 scan resource or job, `get_scan`, and `get_scan_status` when called with a `scanId`. `scanTimeSeconds: null` means timing is unavailable or incomplete and should not be displayed as `0`.
|
|
40
|
+
|
|
41
|
+
## Completed-Limited No-Go Results
|
|
42
|
+
|
|
43
|
+
No-go scans are usable terminal results, not transport failures. Relevant tools retain `status: "completed_limited"`, `resultDisposition: "no_go"`, the stable reason code, customer-safe title and explanation, `limitationKind` attribution, retry guidance, and a bounded `evidenceExcerpt` when retained. Unknown future reasons use generic customer copy while remaining structured as `reasonCode: "unknown"`.
|
|
44
|
+
|
|
45
|
+
## Hosted Streamable HTTP
|
|
46
|
+
|
|
47
|
+
OAuth-capable MCP clients can connect to:
|
|
48
|
+
|
|
49
|
+
```text
|
|
50
|
+
https://mcp.certscore.ai/mcp
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Discovery endpoints:
|
|
54
|
+
|
|
55
|
+
```text
|
|
56
|
+
https://mcp.certscore.ai/.well-known/oauth-protected-resource
|
|
57
|
+
https://certscore.ai/.well-known/oauth-authorization-server
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
The hosted service uses OAuth authorization code with PKCE. Default read access requests `scan:read mcp`; support-gated scan creation additionally requests `scan:create`. The same tool implementation and output contracts power stdio and hosted transports.
|
|
29
61
|
|
|
30
62
|
## Configuration
|
|
31
63
|
|
|
@@ -60,9 +92,12 @@ Run from this monorepo for local development:
|
|
|
60
92
|
CERTSCORE_API_KEY=... pnpm mcp:certscore
|
|
61
93
|
```
|
|
62
94
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
95
|
+
Generate a scoped preview key after applying DB migrations:
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
pnpm db:migrate
|
|
99
|
+
pnpm mcp:certscore:generate-key -- --name "CertScore MCP preview"
|
|
100
|
+
```
|
|
66
101
|
|
|
67
102
|
Run the built package directly after local build:
|
|
68
103
|
|
|
@@ -77,11 +112,11 @@ CERTSCORE_BASE_URL=https://certscore.ai
|
|
|
77
112
|
CERTSCORE_REQUEST_TIMEOUT_MS=300000
|
|
78
113
|
```
|
|
79
114
|
|
|
80
|
-
`CERTSCORE_API_KEY` should be a scoped CertScore API token for the workspace or
|
|
115
|
+
`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.
|
|
81
116
|
|
|
82
117
|
## API Key Access
|
|
83
118
|
|
|
84
|
-
|
|
119
|
+
Stdio API keys use `pulse:read` and `mcp`; creating scans additionally requires `pulse:scan`. Hosted OAuth uses `scan:read` and `mcp`, with support-gated `scan:create`. Request scan-creation access by emailing `support@certscore.ai` with your organization, MCP client, expected workflow, expected request volume, and contact email.
|
|
85
120
|
|
|
86
121
|
## Verify Install
|
|
87
122
|
|
|
@@ -214,7 +249,7 @@ For the full production operator smoke, run from the WC01 repo:
|
|
|
214
249
|
pnpm ops:smoke:mcp-production
|
|
215
250
|
```
|
|
216
251
|
|
|
217
|
-
This verifies the Homebrew-installed `certscore-mcp` command against live `https://certscore.ai`. It creates a short-lived
|
|
252
|
+
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.
|
|
218
253
|
|
|
219
254
|
## Troubleshooting
|
|
220
255
|
|