{"_id":"@certscore/mcp","_rev":"21-82699147955d47bd04a6977d2cb5d059","name":"@certscore/mcp","dist-tags":{"latest":"0.2.25"},"versions":{"0.2.0":{"name":"@certscore/mcp","version":"0.2.0","keywords":["certscore","pulse","mcp","modelcontextprotocol","model-context-protocol"],"license":"proprietary","_id":"@certscore/mcp@0.2.0","maintainers":[{"name":"certscore.ai","email":"bmasek@gmail.com"}],"homepage":"https://certscore.ai/developers/mcp","bugs":{"url":"https://certscore.ai/contact","email":"support@certscore.ai"},"bin":{"certscore-mcp":"dist/certscore-mcp.mjs"},"dist":{"shasum":"87f494cc2df0d065c3c443bd11d14545c2957892","tarball":"https://registry.npmjs.org/@certscore/mcp/-/mcp-0.2.0.tgz","fileCount":17,"integrity":"sha512-YXDGO+JTPt5CpuHA6ufLVyqeNf1AP3p8bjnAgWeUaTyMEIhfipHNrxWFDnI6vogV3ut6ZT9LUHk6/ouvXyo/IA==","signatures":[{"sig":"MEUCIQDuvhthTumP2VKX5WTkcIChMw7gax+3KBkjYlSi/QMCLgIgGDRsvOvwDZrhD7Y+cJ+mS+p8qh5w9AgARB7SxeMDCVs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":851243},"main":"./dist/certscore-mcp.mjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/certscore-mcp.mjs"}},"gitHead":"fd7a036e0704db763539cbd411cf8176736b588a","mcpName":"ai.certscore/mcp","private":false,"scripts":{"test":"node --import tsx --test src/*.test.ts","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","clean":"rm -rf dist","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --target=node20 --banner:js='#!/usr/bin/env node' --outfile=dist/certscore-mcp.mjs","prepack":"pnpm run build","typecheck":"tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"certscore.ai","email":"bmasek@gmail.com"},"repository":{"url":"git+https://github.com/ergoveritas1-alt/certscore.ai.git","type":"git","directory":"packages/certscore-mcp"},"_npmVersion":"10.9.4","description":"MCP server for CertScore public website risk-signal workflows.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^3.25.76","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@certscore/sdk":"workspace:*","@certscore/api-contracts":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.2.0_1783284468867_0.5462708442105222","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@certscore/mcp","version":"0.2.1","keywords":["certscore","pulse","mcp","modelcontextprotocol","model-context-protocol"],"license":"proprietary","_id":"@certscore/mcp@0.2.1","maintainers":[{"name":"certscore.ai","email":"bmasek@gmail.com"}],"homepage":"https://certscore.ai/developers/mcp","bugs":{"url":"https://certscore.ai/contact","email":"support@certscore.ai"},"bin":{"certscore-mcp":"dist/certscore-mcp.mjs"},"dist":{"shasum":"38b9a0decca5ba8b28d62afcd26de98e7586d339","tarball":"https://registry.npmjs.org/@certscore/mcp/-/mcp-0.2.1.tgz","fileCount":17,"integrity":"sha512-fUhKMkHTuD+9uD+STh4OLF+xj8xUPQVeiLvPMVVh8ycqqKrhjoh7zhRBH16MTwJaj5nqCsn88GGO9/iYibUzlg==","signatures":[{"sig":"MEUCIQD0xXntZ5hfaaROt4DmeIpXhsx1c8wsdU711Bnt5CvvmAIgZ2lDFUxgvaf5MFeOGtk+gvfbTbTiXo87TMixggEeDqQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":849713},"main":"./dist/certscore-mcp.mjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/certscore-mcp.mjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"}},"gitHead":"0adc064f446e1279426fcff2816739de1c84da8b","mcpName":"ai.certscore/mcp","private":false,"scripts":{"test":"node --import tsx --test src/*.test.ts","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","clean":"rm -rf dist","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --target=node20 --banner:js='#!/usr/bin/env node' --outfile=dist/certscore-mcp.mjs","prepack":"pnpm run build","typecheck":"tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"certscore.ai","email":"bmasek@gmail.com"},"repository":{"url":"git+https://github.com/ergoveritas1-alt/certscore.ai.git","type":"git","directory":"packages/certscore-mcp"},"_npmVersion":"10.9.4","description":"MCP server for CertScore public website risk-signal workflows.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^3.25.76","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@certscore/sdk":"workspace:*","@certscore/api-contracts":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.2.1_1783383284713_0.9669229168220765","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@certscore/mcp","version":"0.2.2","keywords":["certscore","pulse","mcp","modelcontextprotocol","model-context-protocol"],"license":"proprietary","_id":"@certscore/mcp@0.2.2","maintainers":[{"name":"certscore.ai","email":"bmasek@gmail.com"}],"homepage":"https://certscore.ai/developers/mcp","bugs":{"url":"https://certscore.ai/contact","email":"support@certscore.ai"},"bin":{"certscore-mcp":"dist/certscore-mcp.mjs"},"dist":{"shasum":"57b6072bc2bff0dcc00ddd238ead6ed6478743b0","tarball":"https://registry.npmjs.org/@certscore/mcp/-/mcp-0.2.2.tgz","fileCount":17,"integrity":"sha512-ljdPcACQLht//2c16GEV3DBzwiLijpq29LANKMr57LXHVifNx2DsCiBRHyaeTss44mZBIeV64TTNOhRUOSWyZw==","signatures":[{"sig":"MEYCIQCRTwqyLHVGEVdqeYJqWyEEjSelOMwAvl6J3CA2uwFuXwIhAJ45rgjA1f+yHRigjH3iNu4jP3Tp07N1xfkAT449wAf0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":849712},"main":"./dist/certscore-mcp.mjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/certscore-mcp.mjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"}},"gitHead":"ca8be13f37e7116d1cb975b6cd7fcd7221556a31","mcpName":"ai.certscore/mcp","private":false,"scripts":{"test":"node --import tsx --test src/*.test.ts","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","clean":"rm -rf dist","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --target=node20 --banner:js='#!/usr/bin/env node' --outfile=dist/certscore-mcp.mjs","prepack":"pnpm run build","typecheck":"tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"certscore.ai","email":"bmasek@gmail.com"},"repository":{"url":"git+https://github.com/ergoveritas1-alt/certscore.ai.git","type":"git","directory":"packages/certscore-mcp"},"_npmVersion":"10.9.4","description":"MCP server for CertScore public website risk-signal workflows.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^3.25.76","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@certscore/sdk":"workspace:*","@certscore/api-contracts":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.2.2_1783393149710_0.2686265341404528","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@certscore/mcp","version":"0.2.3","keywords":["certscore","pulse","mcp","modelcontextprotocol","model-context-protocol"],"license":"proprietary","_id":"@certscore/mcp@0.2.3","maintainers":[{"name":"certscore.ai","email":"bmasek@gmail.com"}],"homepage":"https://certscore.ai/developers/mcp","bugs":{"url":"https://certscore.ai/contact","email":"support@certscore.ai"},"bin":{"certscore-mcp":"dist/certscore-mcp.mjs"},"dist":{"shasum":"8247f4d2c7a944e8b9b96b35f542db0685c9a2d0","tarball":"https://registry.npmjs.org/@certscore/mcp/-/mcp-0.2.3.tgz","fileCount":17,"integrity":"sha512-D9FhMUDChwejcceYRdtvTqeC0jKXO8Nnj0vsVZHovaULMBCUu4Sc/9u6+hHx7Ni9/xe6udYABBQQEDn9f+kiJA==","signatures":[{"sig":"MEYCIQClppOuuNpV4N+Nc2rfyQwLUsV01MS5VPVOdy0P5JGsngIhALeJDmrJovkIgiRA5CpJ/E7aQzd4+QmMWrawatdKcQrw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":850011},"main":"./dist/certscore-mcp.mjs","type":"module","_from":"file:/tmp/certscore-mcp-pack/certscore-mcp-0.2.3.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/certscore-mcp.mjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"}},"mcpName":"ai.certscore/mcp","private":false,"scripts":{"test":"node --import tsx --test src/*.test.ts","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","clean":"rm -rf dist","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --target=node20 --banner:js='#!/usr/bin/env node' --outfile=dist/certscore-mcp.mjs","typecheck":"tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"certscore.ai","email":"bmasek@gmail.com"},"_resolved":"/tmp/certscore-mcp-pack/certscore-mcp-0.2.3.tgz","_integrity":"sha512-D9FhMUDChwejcceYRdtvTqeC0jKXO8Nnj0vsVZHovaULMBCUu4Sc/9u6+hHx7Ni9/xe6udYABBQQEDn9f+kiJA==","repository":{"url":"git+https://github.com/ergoveritas1-alt/certscore.ai.git","type":"git","directory":"packages/certscore-mcp"},"_npmVersion":"10.9.4","description":"MCP server for CertScore public website risk-signal workflows.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^3.25.76","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@certscore/sdk":"0.1.0","@certscore/api-contracts":"0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.2.3_1783457586292_0.5417278790026574","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"@certscore/mcp","version":"0.2.4","keywords":["certscore","pulse","mcp","modelcontextprotocol","model-context-protocol"],"license":"proprietary","_id":"@certscore/mcp@0.2.4","maintainers":[{"name":"certscore.ai","email":"bmasek@gmail.com"}],"homepage":"https://certscore.ai/developers/mcp","bugs":{"url":"https://certscore.ai/contact","email":"support@certscore.ai"},"bin":{"certscore-mcp":"dist/certscore-mcp.mjs"},"dist":{"shasum":"dc5162cfd55dd80e63930b28b0c8e2c1cafe8c0f","tarball":"https://registry.npmjs.org/@certscore/mcp/-/mcp-0.2.4.tgz","fileCount":17,"integrity":"sha512-sQKoRiUBKVfHuA2LfvGMwdSqw+wXr98t4k9pW6Sbm9CPiKlrZcrXHucCKvU+ljtPLrkp2NEvGEZUhyW7JSAZJA==","signatures":[{"sig":"MEUCIGwFqdGnHHQAazp3mHMRMTTycVxXIi5ube24dCCj/lG2AiEAh6OSCK8MoqvO8d11DhCIvAvGRAxAPgkaFDw4EKuDC8A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":850403},"main":"./dist/certscore-mcp.mjs","type":"module","_from":"file:/tmp/certscore-mcp-pack-0.2.4/certscore-mcp-0.2.4.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/certscore-mcp.mjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"}},"mcpName":"ai.certscore/mcp","private":false,"scripts":{"test":"node --import tsx --test src/*.test.ts","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","clean":"rm -rf dist","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --target=node20 --banner:js='#!/usr/bin/env node' --outfile=dist/certscore-mcp.mjs","typecheck":"tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"certscore.ai","email":"bmasek@gmail.com"},"_resolved":"/tmp/certscore-mcp-pack-0.2.4/certscore-mcp-0.2.4.tgz","_integrity":"sha512-sQKoRiUBKVfHuA2LfvGMwdSqw+wXr98t4k9pW6Sbm9CPiKlrZcrXHucCKvU+ljtPLrkp2NEvGEZUhyW7JSAZJA==","repository":{"url":"git+https://github.com/ergoveritas1-alt/certscore.ai.git","type":"git","directory":"packages/certscore-mcp"},"_npmVersion":"10.9.4","description":"MCP server for CertScore public website risk-signal workflows.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^3.25.76","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@certscore/sdk":"0.1.0","@certscore/api-contracts":"0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.2.4_1783459018890_0.714498956664122","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"@certscore/mcp","version":"0.2.5","keywords":["certscore","pulse","mcp","modelcontextprotocol","model-context-protocol"],"license":"proprietary","_id":"@certscore/mcp@0.2.5","maintainers":[{"name":"certscore.ai","email":"bmasek@gmail.com"}],"homepage":"https://certscore.ai/developers/mcp","bugs":{"url":"https://certscore.ai/contact","email":"support@certscore.ai"},"bin":{"certscore-mcp":"dist/certscore-mcp.mjs"},"dist":{"shasum":"ef93d3e50c28832f80ff22366a2fa4fcc06d05a7","tarball":"https://registry.npmjs.org/@certscore/mcp/-/mcp-0.2.5.tgz","fileCount":17,"integrity":"sha512-wtOf9NFGsVSomZsLe2T16xsoP/ejPA6k+it0YlxFyPYKH8CYJUFUL+kq8GZYeZhRYaPB88yYfIRXG2+ErUaU3g==","signatures":[{"sig":"MEUCIQCSNUGqxEyOLkxXBP3Wxks5GpjuCzgNDfA8U0Gda4m4SgIgQR4pXgPM/d/hlUEaQcGboUXzsu1OhrLxTooLp0WexBU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":853529},"main":"./dist/certscore-mcp.mjs","type":"module","_from":"file:certscore-mcp-0.2.5.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/certscore-mcp.mjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"}},"mcpName":"ai.certscore/mcp","private":false,"scripts":{"test":"node --import tsx --test src/*.test.ts","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","clean":"rm -rf dist","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --target=node20 --banner:js='#!/usr/bin/env node' --outfile=dist/certscore-mcp.mjs","typecheck":"tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"certscore.ai","email":"bmasek@gmail.com"},"_resolved":"/private/var/folders/0l/189bcvf93hv0chn146vsd1d00000gn/T/69e52b0f3967cb85c3bf44ba7a633e9b/certscore-mcp-0.2.5.tgz","_integrity":"sha512-wtOf9NFGsVSomZsLe2T16xsoP/ejPA6k+it0YlxFyPYKH8CYJUFUL+kq8GZYeZhRYaPB88yYfIRXG2+ErUaU3g==","repository":{"url":"git+https://github.com/ergoveritas1-alt/certscore.ai.git","type":"git","directory":"packages/certscore-mcp"},"_npmVersion":"10.9.4","description":"MCP server for CertScore public website risk-signal workflows.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^3.25.76","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@certscore/sdk":"0.2.3","@certscore/api-contracts":"0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.2.5_1783541224955_0.5999534524275525","host":"s3://npm-registry-packages-npm-production"}},"0.2.6":{"name":"@certscore/mcp","version":"0.2.6","keywords":["certscore","pulse","mcp","modelcontextprotocol","model-context-protocol"],"license":"proprietary","_id":"@certscore/mcp@0.2.6","maintainers":[{"name":"certscore.ai","email":"bmasek@gmail.com"}],"homepage":"https://certscore.ai/developers/mcp","bugs":{"url":"https://certscore.ai/contact","email":"support@certscore.ai"},"bin":{"certscore-mcp":"dist/certscore-mcp.mjs"},"dist":{"shasum":"2d9acc5beaabd0d36928835f5fda735c6081a5ac","tarball":"https://registry.npmjs.org/@certscore/mcp/-/mcp-0.2.6.tgz","fileCount":17,"integrity":"sha512-z6aB3cIP2ffnlv7NuutMX6JVWoURmvuKuQTKCPHWGJ4YpkUbJlXkkr9AqFOqz4ayPURANi6WfhPFCM2pnor0SA==","signatures":[{"sig":"MEUCIBZUsIj/hFVKypFXb0dkX+kogyQE4P6h5pT8QCp73Aq3AiEAvxHVrcC4aNhgmGqVRPxIJuOzf0w1PWDjbIZRqRvVea0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1165954},"main":"./dist/certscore-mcp.mjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/certscore-mcp.mjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"}},"gitHead":"49eab15f2ad0d03d2424b498f4bea897242d627e","mcpName":"ai.certscore/mcp","private":false,"scripts":{"test":"node --import tsx --test src/*.test.ts","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","clean":"rm -rf dist","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --target=node20 --banner:js='#!/usr/bin/env node' --outfile=dist/certscore-mcp.mjs","prepack":"pnpm run build","typecheck":"tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"certscore.ai","email":"bmasek@gmail.com"},"repository":{"url":"git+https://github.com/ergoveritas1-alt/certscore.ai.git","type":"git","directory":"packages/certscore-mcp"},"_npmVersion":"10.9.4","description":"MCP server for CertScore public website risk-signal workflows.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^3.25.76","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@certscore/sdk":"workspace:*","@certscore/api-contracts":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.2.6_1783731885238_0.02805407237479063","host":"s3://npm-registry-packages-npm-production"}},"0.2.7":{"name":"@certscore/mcp","version":"0.2.7","keywords":["certscore","pulse","mcp","modelcontextprotocol","model-context-protocol"],"license":"proprietary","_id":"@certscore/mcp@0.2.7","maintainers":[{"name":"certscore.ai","email":"bmasek@gmail.com"}],"homepage":"https://certscore.ai/developers/mcp","bugs":{"url":"https://certscore.ai/contact","email":"support@certscore.ai"},"bin":{"certscore-mcp":"dist/certscore-mcp.mjs"},"dist":{"shasum":"4f8bed75c438f85bce1d1d0936d3c43684ad3764","tarball":"https://registry.npmjs.org/@certscore/mcp/-/mcp-0.2.7.tgz","fileCount":17,"integrity":"sha512-6LXP7TUzKrmVMr38Xhaa/mIYv0hbgdqPAAPat06BYoe9jkFOdeOv1QtB88Q7W7RxqdBPuovLIxYbkrpzLCc8Fg==","signatures":[{"sig":"MEQCIBM1wD2a0vm1+Wvkli6FUond5wSMKWnDb65BqtR+S3zBAiA0iuvldbcDDlc8LpmCOcFNWMFPv5VwpkUtq969wm1YYw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1166029},"main":"./dist/certscore-mcp.mjs","type":"module","_from":"file:certscore-mcp-0.2.7.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/certscore-mcp.mjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"}},"mcpName":"ai.certscore/mcp","private":false,"scripts":{"test":"node --import tsx --test src/*.test.ts","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","clean":"rm -rf dist","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --target=node20 --banner:js='#!/usr/bin/env node' --outfile=dist/certscore-mcp.mjs","typecheck":"tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"certscore.ai","email":"bmasek@gmail.com"},"_resolved":"/private/var/folders/0l/189bcvf93hv0chn146vsd1d00000gn/T/d38df1c7f6b1cb4190e4c7664b6276d9/certscore-mcp-0.2.7.tgz","_integrity":"sha512-6LXP7TUzKrmVMr38Xhaa/mIYv0hbgdqPAAPat06BYoe9jkFOdeOv1QtB88Q7W7RxqdBPuovLIxYbkrpzLCc8Fg==","repository":{"url":"git+https://github.com/ergoveritas1-alt/certscore.ai.git","type":"git","directory":"packages/certscore-mcp"},"_npmVersion":"10.9.4","description":"MCP server for CertScore public website risk-signal workflows.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^3.25.76","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@certscore/sdk":"0.2.4","@certscore/api-contracts":"0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.2.7_1783735375830_0.8614748248415287","host":"s3://npm-registry-packages-npm-production"}},"0.2.11":{"name":"@certscore/mcp","version":"0.2.11","keywords":["certscore","pulse","mcp","modelcontextprotocol","model-context-protocol"],"license":"proprietary","_id":"@certscore/mcp@0.2.11","maintainers":[{"name":"certscore.ai","email":"bmasek@gmail.com"}],"homepage":"https://certscore.ai/developers/mcp","bugs":{"url":"https://certscore.ai/contact","email":"support@certscore.ai"},"bin":{"certscore-mcp":"dist/certscore-mcp.mjs"},"dist":{"shasum":"2fb79c26a3e2af83728cb22c43cd87d3f95ad731","tarball":"https://registry.npmjs.org/@certscore/mcp/-/mcp-0.2.11.tgz","fileCount":17,"integrity":"sha512-0el3u1NUlvG52/lh4KnsPzabzfY+Tg7Ruf6t3qlWy72PyW3Qh+Go+q8GwWv+eUClNURvOfVURyQUnUO54MiDxA==","signatures":[{"sig":"MEYCIQC109uX3ucQK3l+wYqaNgL3fMQGbLDm5p4nWD2JSG963QIhANvmcAqnZB8erWoG77cI3kteNMtXOx+uvddyvqQkuws0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1191261},"main":"./dist/certscore-mcp.mjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/certscore-mcp.mjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"}},"gitHead":"9778fb401dfa19e469f05c9312d1a4dd20b8482e","mcpName":"ai.certscore/mcp","private":false,"scripts":{"test":"node --import tsx --test src/*.test.ts","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","clean":"rm -rf dist","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --target=node20 --banner:js='#!/usr/bin/env node' --outfile=dist/certscore-mcp.mjs","prepack":"pnpm run build","typecheck":"tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"certscore.ai","email":"bmasek@gmail.com"},"repository":{"url":"git+https://github.com/ergoveritas1-alt/certscore.ai.git","type":"git","directory":"packages/certscore-mcp"},"_npmVersion":"10.9.4","description":"MCP server for CertScore public website risk-signal workflows.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^3.25.76","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@certscore/sdk":"workspace:*","@certscore/api-contracts":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.2.11_1784165810807_0.48854721699704173","host":"s3://npm-registry-packages-npm-production"}},"0.2.12":{"name":"@certscore/mcp","version":"0.2.12","keywords":["certscore","pulse","mcp","modelcontextprotocol","model-context-protocol"],"license":"proprietary","_id":"@certscore/mcp@0.2.12","maintainers":[{"name":"certscore.ai","email":"bmasek@gmail.com"}],"homepage":"https://certscore.ai/developers/mcp","bugs":{"url":"https://certscore.ai/contact","email":"support@certscore.ai"},"bin":{"certscore-mcp":"dist/certscore-mcp.mjs"},"dist":{"shasum":"5aadc0510eb029917a7e5d7f390b1f283a092e8c","tarball":"https://registry.npmjs.org/@certscore/mcp/-/mcp-0.2.12.tgz","fileCount":18,"integrity":"sha512-vp0iDDpQOjhHs20KBcF6TlSGn2FHm0njSswnvSIbOaMETrX9SiZzobpz779g7nhLGw8VCQJYsLX9u4jfaNjJ8w==","signatures":[{"sig":"MEQCIEPQGCCNhFHr6+YH3MaUVZmq3bVrTGfDAq561XqyuVvFAiBMldgOke76SaLABpv+D06QS+oqK5+ZRkCmCPUi1h0OHQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1193161},"main":"./dist/certscore-mcp.mjs","type":"module","_from":"file:certscore-mcp-0.2.12.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/certscore-mcp.mjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"}},"mcpName":"ai.certscore/mcp","private":false,"scripts":{"test":"node --import tsx --test src/*.test.ts","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","clean":"rm -rf dist","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --target=node20 --banner:js='#!/usr/bin/env node' --outfile=dist/certscore-mcp.mjs","typecheck":"tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"certscore.ai","email":"bmasek@gmail.com"},"_resolved":"/private/var/folders/0l/189bcvf93hv0chn146vsd1d00000gn/T/9e7b7e43d87fd8ba080458ea80758209/certscore-mcp-0.2.12.tgz","_integrity":"sha512-vp0iDDpQOjhHs20KBcF6TlSGn2FHm0njSswnvSIbOaMETrX9SiZzobpz779g7nhLGw8VCQJYsLX9u4jfaNjJ8w==","repository":{"url":"git+https://github.com/ergoveritas1-alt/certscore.ai.git","type":"git","directory":"packages/certscore-mcp"},"_npmVersion":"10.9.4","description":"MCP server for CertScore public website risk-signal workflows.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^3.25.76","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@certscore/sdk":"0.2.6","@certscore/api-contracts":"0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.2.12_1784167148392_0.2281662690293853","host":"s3://npm-registry-packages-npm-production"}},"0.2.15":{"name":"@certscore/mcp","version":"0.2.15","keywords":["certscore","pulse","mcp","modelcontextprotocol","model-context-protocol"],"license":"proprietary","_id":"@certscore/mcp@0.2.15","maintainers":[{"name":"certscore.ai","email":"bmasek@gmail.com"}],"homepage":"https://certscore.ai/developers/mcp","bugs":{"url":"https://certscore.ai/contact","email":"support@certscore.ai"},"bin":{"certscore-mcp":"dist/certscore-mcp.mjs"},"dist":{"shasum":"06b9163ac80bf3cbab8705f9b6a6fd64118f03c0","tarball":"https://registry.npmjs.org/@certscore/mcp/-/mcp-0.2.15.tgz","fileCount":18,"integrity":"sha512-kDfFeOmJa19nk1uGj2pjn0ghV5XqbtgYihG+EV2p0E0/GCM0PCS95POISFg/6O0fY8idQsFZuGpQulRc8J2deQ==","signatures":[{"sig":"MEUCIQCPvrVwqmn6jTIhAYvZefpCM0+v+7BiwynQpZkPw5naZQIgSJkkLZsMIkI3qoknXHnD2Jc3OJ2b9ngOBnh2mGw/bMg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1269704},"main":"./dist/certscore-mcp.mjs","type":"module","_from":"file:/tmp/certscore-mcp-npm-release.UH8Ovn/certscore-mcp-0.2.15.tgz","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/certscore-mcp.mjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"}},"mcpName":"ai.certscore/mcp","private":false,"scripts":{"test":"node --import tsx --test src/*.test.ts","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","clean":"rm -rf dist","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --target=node20 --banner:js='#!/usr/bin/env node' --outfile=dist/certscore-mcp.mjs","prepack":"pnpm run build","typecheck":"tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"certscore.ai","email":"bmasek@gmail.com"},"_resolved":"/tmp/certscore-mcp-npm-release.UH8Ovn/certscore-mcp-0.2.15.tgz","_integrity":"sha512-kDfFeOmJa19nk1uGj2pjn0ghV5XqbtgYihG+EV2p0E0/GCM0PCS95POISFg/6O0fY8idQsFZuGpQulRc8J2deQ==","repository":{"url":"git+https://github.com/ergoveritas1-alt/certscore.ai.git","type":"git","directory":"packages/certscore-mcp"},"_npmVersion":"10.9.4","description":"MCP server for CertScore public website risk-signal workflows.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^3.25.76","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@certscore/sdk":"workspace:*","@certscore/api-contracts":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.2.15_1786670991656_0.23841075885032614","host":"s3://npm-registry-packages-npm-production"}},"0.2.16":{"name":"@certscore/mcp","version":"0.2.16","keywords":["certscore","pulse","mcp","modelcontextprotocol","model-context-protocol"],"license":"proprietary","_id":"@certscore/mcp@0.2.16","maintainers":[{"name":"certscore.ai","email":"bmasek@gmail.com"}],"homepage":"https://certscore.ai/developers/mcp","bugs":{"url":"https://certscore.ai/contact","email":"support@certscore.ai"},"bin":{"certscore-mcp":"dist/certscore-mcp.mjs"},"dist":{"shasum":"2eda6775d13bc922d1b78c23c8ba724657a3f7ef","tarball":"https://registry.npmjs.org/@certscore/mcp/-/mcp-0.2.16.tgz","fileCount":18,"integrity":"sha512-PvdZyerTyAHIew80K1kXLVgNCYBzGylnWnDWrStloa/aOzLie9RmS/VEcc8rg9J1RjzarXhIssUvUcMy4I8D3A==","signatures":[{"sig":"MEYCIQCMzc42q8YMNBYUvwigC6UeCNQUfMsNPfbOKjbhuzojWgIhAP71X+l+SxsvJzJKHb8ndGk7i4GKFOaqLL57WqYVXqu9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1366386},"main":"./dist/certscore-mcp.mjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/certscore-mcp.mjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"}},"gitHead":"b33dc664fd8ee4292806110d61445e440faabca2","mcpName":"ai.certscore/mcp","private":false,"scripts":{"test":"node --import tsx --test src/*.test.ts","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","clean":"rm -rf dist","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --target=node20 --banner:js='#!/usr/bin/env node' --outfile=dist/certscore-mcp.mjs","prepack":"pnpm run build","typecheck":"tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"certscore.ai","email":"bmasek@gmail.com"},"repository":{"url":"git+https://github.com/ergoveritas1-alt/certscore.ai.git","type":"git","directory":"packages/certscore-mcp"},"_npmVersion":"10.9.4","description":"MCP server for CertScore public website risk-signal workflows.","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^3.25.76","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@certscore/sdk":"workspace:*","@certscore/api-contracts":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.2.16_1787943039458_0.2513616686262823","host":"s3://npm-registry-packages-npm-production"}},"0.2.17":{"name":"@certscore/mcp","version":"0.2.17","keywords":["certscore","pulse","mcp","modelcontextprotocol","model-context-protocol"],"license":"proprietary","_id":"@certscore/mcp@0.2.17","maintainers":[{"name":"certscore.ai","email":"bmasek@gmail.com"}],"homepage":"https://certscore.ai/developers/mcp","bugs":{"url":"https://certscore.ai/contact","email":"support@certscore.ai"},"bin":{"certscore-mcp":"dist/certscore-mcp.mjs"},"dist":{"shasum":"f02a8ed6842dc00aef978b0c53325d29943eae67","tarball":"https://registry.npmjs.org/@certscore/mcp/-/mcp-0.2.17.tgz","fileCount":18,"integrity":"sha512-XAUI/rnWxeCFEiSTxLOxR1yfwjQHTlw4vbDaB6qyruXGzLlPn/2T1nrlpCiE3Ia0ztfKFICwdBdRdNXa7AfvLw==","signatures":[{"sig":"MEQCIHTXI7Hwv2hcQ4KxKSe09XSciUphr3YIgVCHlFMDzb4ZAiBE8Xae73OgKO4xZqrqHUyIRhnVcdiY9JQ93f28fjYgEA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@certscore%2fmcp@0.2.17","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1409904},"main":"./dist/certscore-mcp.mjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/certscore-mcp.mjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"}},"gitHead":"a1c314e4f230b9c1f83d1b5d4aaf4803115af2cc","mcpName":"ai.certscore/mcp","private":false,"scripts":{"test":"node --import tsx --test src/*.test.ts","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","clean":"rm -rf dist","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --target=node20 --banner:js='#!/usr/bin/env node' --outfile=dist/certscore-mcp.mjs","prepack":"pnpm run build","typecheck":"tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"certscore.ai","email":"bmasek@gmail.com"},"repository":{"url":"git+https://github.com/ergoveritas1-alt/certscore.ai.git","type":"git","directory":"packages/certscore-mcp"},"_npmVersion":"11.4.2","description":"MCP server for CertScore public website risk-signal workflows.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.25.76","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@certscore/sdk":"workspace:*","@certscore/api-contracts":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.2.17_1788462342082_0.87522244768576","host":"s3://npm-registry-packages-npm-production"}},"0.2.18":{"name":"@certscore/mcp","version":"0.2.18","keywords":["certscore","pulse","mcp","modelcontextprotocol","model-context-protocol"],"license":"proprietary","_id":"@certscore/mcp@0.2.18","maintainers":[{"name":"certscore.ai","email":"bmasek@gmail.com"}],"homepage":"https://certscore.ai/developers/mcp","bugs":{"url":"https://certscore.ai/contact","email":"support@certscore.ai"},"bin":{"certscore-mcp":"dist/certscore-mcp.mjs"},"dist":{"shasum":"0eed61d4ba6f22d9122090fde92bcff3332882c8","tarball":"https://registry.npmjs.org/@certscore/mcp/-/mcp-0.2.18.tgz","fileCount":18,"integrity":"sha512-rd+HwJCqJp3nKcjORIBihR/97ydYXJ4blLnpgjTT36ufTsgd6J9F41SaoTUqBJOxNjFjWkOqEK/1M2Jb1Fhl+w==","signatures":[{"sig":"MEYCIQCYCme5BzaCc44XvXsAcD+ZwQXy4/6LXvNvPTZd9q5pFgIhAPjZWHntQMxUSKO7Ymqs0xiHqUQ1rHMRUoplR3UDS6ck","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@certscore%2fmcp@0.2.18","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1409904},"main":"./dist/certscore-mcp.mjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/certscore-mcp.mjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"}},"gitHead":"4f355c755302c9409ebfc372304d51ece37d8d30","mcpName":"ai.certscore/mcp","private":false,"scripts":{"test":"node --import tsx --test src/*.test.ts","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","clean":"rm -rf dist","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --target=node20 --banner:js='#!/usr/bin/env node' --outfile=dist/certscore-mcp.mjs","prepack":"pnpm run build","typecheck":"tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"certscore.ai","email":"bmasek@gmail.com"},"repository":{"url":"git+https://github.com/ergoveritas1-alt/certscore.ai.git","type":"git","directory":"packages/certscore-mcp"},"_npmVersion":"11.4.2","description":"MCP server for CertScore public website risk-signal workflows.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.25.76","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@certscore/sdk":"workspace:*","@certscore/api-contracts":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.2.18_1788476904889_0.06437487874020009","host":"s3://npm-registry-packages-npm-production"}},"0.2.19":{"name":"@certscore/mcp","version":"0.2.19","keywords":["certscore","pulse","mcp","modelcontextprotocol","model-context-protocol"],"license":"proprietary","_id":"@certscore/mcp@0.2.19","maintainers":[{"name":"certscore.ai","email":"bmasek@gmail.com"}],"homepage":"https://certscore.ai/developers/mcp","bugs":{"url":"https://certscore.ai/contact","email":"support@certscore.ai"},"bin":{"certscore-mcp":"dist/certscore-mcp.mjs"},"dist":{"shasum":"cb947723fcb3bc75a5940cd4fa4ae4a247d7e613","tarball":"https://registry.npmjs.org/@certscore/mcp/-/mcp-0.2.19.tgz","fileCount":18,"integrity":"sha512-cSO+aTZmGabX+eHepzKMbD4kJL5PNRtzMndExh1lVhPPIoKs1zRNcTwfn0Pab6Sm2CNpsV7N+gyDva0eWHpgjw==","signatures":[{"sig":"MEUCIEL7NO3HPLP7tlPZv/tgj7G7j8/FtoAV7E61UAPALjADAiEA6S7ech1rx/G9v868fsAAvMPHQphI6xK1FMLty9vQMSU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@certscore%2fmcp@0.2.19","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1409976},"main":"./dist/certscore-mcp.mjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/certscore-mcp.mjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"}},"gitHead":"279a0e0c686bb1aafd31e0a0a4bc4126c5fbccc5","mcpName":"ai.certscore/mcp","private":false,"scripts":{"test":"node --import tsx --test src/*.test.ts","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","clean":"rm -rf dist","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --target=node20 --banner:js='#!/usr/bin/env node' --outfile=dist/certscore-mcp.mjs","prepack":"pnpm run build","typecheck":"tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"certscore.ai","email":"bmasek@gmail.com"},"repository":{"url":"git+https://github.com/ergoveritas1-alt/certscore.ai.git","type":"git","directory":"packages/certscore-mcp"},"_npmVersion":"11.4.2","description":"MCP server for CertScore public website risk-signal workflows.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.25.76","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@certscore/sdk":"workspace:*","@certscore/api-contracts":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.2.19_1788477247881_0.25679274987337064","host":"s3://npm-registry-packages-npm-production"}},"0.2.20":{"name":"@certscore/mcp","version":"0.2.20","keywords":["certscore","pulse","mcp","modelcontextprotocol","model-context-protocol"],"license":"proprietary","_id":"@certscore/mcp@0.2.20","maintainers":[{"name":"certscore.ai","email":"bmasek@gmail.com"}],"homepage":"https://certscore.ai/developers/mcp","bugs":{"url":"https://certscore.ai/contact","email":"support@certscore.ai"},"bin":{"certscore-mcp":"dist/certscore-mcp.mjs"},"dist":{"shasum":"e9ba3d4e69885998ea3c16a45d73da6418324630","tarball":"https://registry.npmjs.org/@certscore/mcp/-/mcp-0.2.20.tgz","fileCount":18,"integrity":"sha512-DJY+Ay7QZc3CRDsn3VcHGu5z5WALf8Q7RT1L6yHfInhXLloWz5VbNERXydA4b0+jWS9QNdtTcVilmBUh1ZIEVA==","signatures":[{"sig":"MEUCIQDTXe+Smy1Mq1eJLf0MU3aV+RDxRmytPt7uJymbK2u1oAIgPOng4sL7QEXTW23+KWJ8wvACFjI3nlKDm2/U2+Y5PzY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@certscore%2fmcp@0.2.20","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1611105},"main":"./dist/certscore-mcp.mjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/certscore-mcp.mjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"}},"gitHead":"cbe69aacfe7b4f7263be813afd9e87346fb1b738","mcpName":"ai.certscore/mcp","private":false,"scripts":{"test":"node --import tsx --test src/*.test.ts","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","clean":"rm -rf dist","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --target=node20 --banner:js='#!/usr/bin/env node' --outfile=dist/certscore-mcp.mjs","prepack":"pnpm run build","typecheck":"tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"certscore.ai","email":"bmasek@gmail.com"},"repository":{"url":"git+https://github.com/ergoveritas1-alt/certscore.ai.git","type":"git","directory":"packages/certscore-mcp"},"_npmVersion":"11.4.2","description":"MCP server for CertScore public website risk-signal workflows.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.25.76","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@certscore/sdk":"workspace:*","@certscore/api-contracts":"workspace:*","@website-signal-risk-scanner/shared":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.2.20_1788977645509_0.22528320339751606","host":"s3://npm-registry-packages-npm-production"}},"0.2.21":{"name":"@certscore/mcp","version":"0.2.21","keywords":["certscore","pulse","mcp","modelcontextprotocol","model-context-protocol"],"license":"proprietary","_id":"@certscore/mcp@0.2.21","maintainers":[{"name":"certscore.ai","email":"bmasek@gmail.com"}],"homepage":"https://certscore.ai/developers/mcp","bugs":{"url":"https://certscore.ai/contact","email":"support@certscore.ai"},"bin":{"certscore-mcp":"dist/certscore-mcp.mjs"},"dist":{"shasum":"04925a18adbc896d8648036b9d4e1728ef5298df","tarball":"https://registry.npmjs.org/@certscore/mcp/-/mcp-0.2.21.tgz","fileCount":21,"integrity":"sha512-sl9EWJtvfV0JYJexMUVWGQro6xYSfvkhVzgpx6x70pPONT9NY0Lig5s5MzjHKB7aAWzV+xywNl6hMRjnYdvNvQ==","signatures":[{"sig":"MEUCIQCgRBskatcuBhH4BN7VuojkumfOLlMzYTNZou2YVo/CwAIgFYcA6OaKj8xNk4Lbp5K5iHyHwsEPlCHR6Z0WqWlat+M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCW4tmeDWyL8RhA3nWa6Ae6u9xoG9U5Niw42O+xYPitcwIgHHIXLtRNkSfJaTAc+gUl+Jg3/aycLM07tAChpuxyjcU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@certscore%2fmcp@0.2.21","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1649003},"main":"./dist/certscore-mcp.mjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/certscore-mcp.mjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"}},"gitHead":"aef64de7a9dffd784341a795a467e2cf2192a997","mcpName":"ai.certscore/mcp","private":false,"scripts":{"test":"node --import tsx --test src/*.test.ts","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","clean":"rm -rf dist","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --target=node20 --banner:js='#!/usr/bin/env node' --outfile=dist/certscore-mcp.mjs","prepack":"pnpm run build","typecheck":"tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"certscore.ai","email":"bmasek@gmail.com"},"repository":{"url":"git+https://github.com/ergoveritas1-alt/certscore.ai.git","type":"git","directory":"packages/certscore-mcp"},"_npmVersion":"11.4.2","description":"MCP server for CertScore public website risk-signal workflows.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.25.76","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@certscore/sdk":"workspace:*","@certscore/api-contracts":"workspace:*","@website-signal-risk-scanner/shared":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.2.21_1789156051796_0.7361982282513251","host":"s3://npm-registry-packages-npm-production"}},"0.2.22":{"name":"@certscore/mcp","version":"0.2.22","keywords":["certscore","pulse","mcp","modelcontextprotocol","model-context-protocol"],"license":"proprietary","_id":"@certscore/mcp@0.2.22","maintainers":[{"name":"certscore.ai","email":"bmasek@gmail.com"}],"homepage":"https://certscore.ai/developers/mcp","bugs":{"url":"https://certscore.ai/contact","email":"support@certscore.ai"},"bin":{"certscore-mcp":"dist/certscore-mcp.mjs"},"dist":{"shasum":"c2b82fbe31f384b26b16b27862d22fd5273d36b9","tarball":"https://registry.npmjs.org/@certscore/mcp/-/mcp-0.2.22.tgz","fileCount":27,"integrity":"sha512-f9sqwQ/EQloXfa2HA/dtcV1uCBeuj+891OcWxHJu7gaJWGSEDGV0dZGXzkI725pnTVU5Kg55fo8XMm5+jGd6ig==","signatures":[{"sig":"MEYCIQDx117NdBzEmGP9000ACVTHLq6xNEjfvYECVoNADmtasQIhAMc/ibhV7NGd41VH0XIbHkEo/PkGhWWerMbb8QIuAvBt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQD1VYl6dsUmedHgSc+Auoltdt73N+fSf6Qqy5T3qKe1rAIgeXTmfMH2rw0XKvx+lzgTvJ0GUz2Co0zoH6Q0aIRjEIs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@certscore%2fmcp@0.2.22","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1725564},"main":"./dist/certscore-mcp.mjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/certscore-mcp.mjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"}},"gitHead":"0ac993759afe11ab6bb57fccb3994a56f95fe314","mcpName":"ai.certscore/mcp","private":false,"scripts":{"test":"node --import tsx --test src/*.test.ts","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","clean":"rm -rf dist","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --target=node20 --banner:js='#!/usr/bin/env node' --outfile=dist/certscore-mcp.mjs","prepack":"pnpm run build","typecheck":"tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"certscore.ai","email":"bmasek@gmail.com"},"repository":{"url":"git+https://github.com/ergoveritas1-alt/certscore.ai.git","type":"git","directory":"packages/certscore-mcp"},"_npmVersion":"11.4.2","description":"MCP server for CertScore public website risk-signal workflows.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.25.76","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@certscore/sdk":"workspace:*","@certscore/api-contracts":"workspace:*","@website-signal-risk-scanner/shared":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.2.22_1790140047136_0.7321705882888425","host":"s3://npm-registry-packages-npm-production"}},"0.2.23":{"name":"@certscore/mcp","version":"0.2.23","keywords":["certscore","pulse","mcp","modelcontextprotocol","model-context-protocol"],"license":"proprietary","_id":"@certscore/mcp@0.2.23","maintainers":[{"name":"certscore.ai","email":"bmasek@gmail.com"}],"homepage":"https://certscore.ai/developers/mcp","bugs":{"url":"https://certscore.ai/contact","email":"support@certscore.ai"},"bin":{"certscore-mcp":"dist/certscore-mcp.mjs"},"dist":{"shasum":"8ff7524f155d57db1674926edf7a8416a0075762","tarball":"https://registry.npmjs.org/@certscore/mcp/-/mcp-0.2.23.tgz","fileCount":27,"integrity":"sha512-qyhxDDIAZTRhNU45r+gVBYqPjgjBlPmkfUvX5NbPCOlg+sDJRZPO61RZ1kpeLbh4QjqYwU/e8Vp7tdifj6DTrg==","signatures":[{"sig":"MEUCIF2tAuCGh5VQzB2N7isbvOuJNK3j0s9JKRvEvvPHBdUEAiEAsVQQ9Y3OhYZ8c01Bdj9kOfvh2bsi5+j+okaJYY9vtT0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQD6plnZHjlaQS5G7uUt3L0Q0mWeUjeN4sfaGVaXfrG4pAIhAKn+u49CO29yAHMCg63qPyKLOJc7Et/b4RWzLyiiYrbA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@certscore%2fmcp@0.2.23","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1731011},"main":"./dist/certscore-mcp.mjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/certscore-mcp.mjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"}},"gitHead":"dd66effc4212223c38d220c942b309ae907e3bd5","mcpName":"ai.certscore/mcp","private":false,"scripts":{"test":"node --import tsx --test src/*.test.ts","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","clean":"rm -rf dist","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --target=node20 --banner:js='#!/usr/bin/env node' --outfile=dist/certscore-mcp.mjs","prepack":"pnpm run build","typecheck":"tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"certscore.ai","email":"bmasek@gmail.com"},"repository":{"url":"git+https://github.com/ergoveritas1-alt/certscore.ai.git","type":"git","directory":"packages/certscore-mcp"},"_npmVersion":"11.4.2","description":"MCP server for CertScore public website risk-signal workflows.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.25.76","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@certscore/sdk":"workspace:*","@certscore/api-contracts":"workspace:*","@website-signal-risk-scanner/shared":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.2.23_1790337542507_0.2520680433458544","host":"s3://npm-registry-packages-npm-production"}},"0.2.24":{"name":"@certscore/mcp","version":"0.2.24","keywords":["certscore","pulse","mcp","modelcontextprotocol","model-context-protocol"],"license":"proprietary","_id":"@certscore/mcp@0.2.24","maintainers":[{"name":"certscore.ai","email":"bmasek@gmail.com"}],"homepage":"https://certscore.ai/developers/mcp","bugs":{"url":"https://certscore.ai/contact","email":"support@certscore.ai"},"bin":{"certscore-mcp":"dist/certscore-mcp.mjs"},"dist":{"shasum":"d6f7831f880d3a95860f5f8aa24464db1e40b0ec","tarball":"https://registry.npmjs.org/@certscore/mcp/-/mcp-0.2.24.tgz","fileCount":27,"integrity":"sha512-FUxEkqSajchBQSW3tPfHGsOrVY2Hx2xxZzKnc8vgIANMRzeHf1iMK0Mbkwb5M6zOHUjFFjwLmHZuqgSItGt5Ig==","signatures":[{"sig":"MEUCIFa24QwjgD1JJezfNv/kyQt62aQql9r0md1uMpf+I9g9AiEA14X9f5VoX4a0tLj/Dagk/H66yUsjysCrcHp1Il79hA0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIE0XPE2DJySWG8sXh3/rzpRVVbjcIQzHLzO2Prqsy44VAiEA0XXSjVTLuNTCO1WnB8X3plquz/MVv1SScHfLCm/da6Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@certscore%2fmcp@0.2.24","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1749389},"main":"./dist/certscore-mcp.mjs","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/certscore-mcp.mjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"}},"gitHead":"0a721c54d7642aaa322a02fab90b0fb6fc2ee200","mcpName":"ai.certscore/mcp","private":false,"scripts":{"test":"node --import tsx --test src/*.test.ts","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","clean":"rm -rf dist","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --target=node20 --banner:js='#!/usr/bin/env node' --outfile=dist/certscore-mcp.mjs","prepack":"pnpm run build","typecheck":"tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"certscore.ai","email":"bmasek@gmail.com"},"repository":{"url":"git+https://github.com/ergoveritas1-alt/certscore.ai.git","type":"git","directory":"packages/certscore-mcp"},"_npmVersion":"11.4.2","description":"MCP server for CertScore public website risk-signal workflows.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.25.76","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@certscore/sdk":"workspace:*","@certscore/api-contracts":"workspace:*","@website-signal-risk-scanner/shared":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.2.24_1790432448816_0.550192071132034","host":"s3://npm-registry-packages-npm-production"}},"0.2.25":{"_id":"@certscore/mcp@0.2.25","bin":{"certscore-mcp":"dist/certscore-mcp.mjs"},"bugs":{"url":"https://certscore.ai/contact","email":"support@certscore.ai"},"dist":{"shasum":"1981563e672e8b214e5abbe98ab302c062d6d79e","tarball":"https://registry.npmjs.org/@certscore/mcp/-/mcp-0.2.25.tgz","fileCount":27,"integrity":"sha512-7AkMM10ivTs+AJNep6PBfmZKVytXhOxVXO1L23fVGZkNTQy6eDxZ6KIxx+xgmpsp4RKv6/GMCjKETOHmfo6B5w==","signatures":[{"sig":"MEUCIQDU/un1kXQi8+mT0bKJwNH+gMR7zQxy6v7dece3UJL/XwIgKjIHtmKhFgQjCX/VYxBSd3JH1y/EQ3J9opBl0oPQzzg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICdQTcEdtB3XjhpyMkAV2ExbTP09nfkSUevu0n/xH8NIAiEAwbHlXo/1sj6lobvxq6hXSiKavbgUlINDroyhK4oIwh4="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@certscore%2fmcp@0.2.25","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1749731},"main":"./dist/certscore-mcp.mjs","name":"@certscore/mcp","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/certscore-mcp.mjs"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./version":{"types":"./dist/version.d.ts","import":"./dist/version.js"}},"gitHead":"0b9ed7bc17ae3c06c62ac6408bac0928980fb2ff","license":"proprietary","mcpName":"ai.certscore/mcp","private":false,"scripts":{"test":"node --import tsx --test src/*.test.ts","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","clean":"rm -rf dist","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --target=node20 --banner:js='#!/usr/bin/env node' --outfile=dist/certscore-mcp.mjs","prepack":"pnpm run build","typecheck":"tsc --noEmit -p tsconfig.json"},"version":"0.2.25","_npmUser":{"name":"certscore.ai","email":"bmasek@gmail.com"},"homepage":"https://certscore.ai/developers/mcp","keywords":["certscore","pulse","mcp","modelcontextprotocol","model-context-protocol"],"repository":{"url":"git+https://github.com/ergoveritas1-alt/certscore.ai.git","type":"git","directory":"packages/certscore-mcp"},"_npmVersion":"11.4.2","description":"MCP server for CertScore public website risk-signal workflows.","directories":{},"maintainers":[{"name":"certscore.ai","email":"bmasek@gmail.com"}],"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.25.76","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@certscore/sdk":"workspace:*","@certscore/api-contracts":"workspace:*","@website-signal-risk-scanner/shared":"workspace:*"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp_0.2.25_1790433985276_0.9531018762239138"}}},"time":{"created":"2026-07-05T20:47:48.715Z","modified":"2026-09-26T14:46:25.772Z","0.2.0":"2026-07-05T20:47:49.056Z","0.2.1":"2026-07-07T00:14:44.859Z","0.2.2":"2026-07-07T02:59:09.867Z","0.2.3":"2026-07-07T20:53:06.446Z","0.2.4":"2026-07-07T21:16:59.079Z","0.2.5":"2026-07-08T20:07:05.117Z","0.2.6":"2026-07-11T01:04:45.450Z","0.2.7":"2026-07-11T02:02:55.980Z","0.2.11":"2026-07-16T01:36:51.005Z","0.2.12":"2026-07-16T01:59:08.530Z","0.2.15":"2026-08-14T01:29:51.800Z","0.2.16":"2026-08-28T18:50:39.634Z","0.2.17":"2026-09-03T19:05:42.213Z","0.2.18":"2026-09-03T23:08:25.111Z","0.2.19":"2026-09-03T23:14:08.078Z","0.2.20":"2026-09-09T18:14:05.648Z","0.2.21":"2026-09-11T19:47:31.906Z","0.2.22":"2026-09-23T05:07:27.332Z","0.2.23":"2026-09-25T11:59:02.599Z","0.2.24":"2026-09-26T14:20:48.998Z","0.2.25":"2026-09-26T14:46:25.364Z"},"bugs":{"url":"https://certscore.ai/contact","email":"support@certscore.ai"},"license":"proprietary","homepage":"https://certscore.ai/developers/mcp","keywords":["certscore","pulse","mcp","modelcontextprotocol","model-context-protocol"],"repository":{"url":"git+https://github.com/ergoveritas1-alt/certscore.ai.git","type":"git","directory":"packages/certscore-mcp"},"description":"MCP server for CertScore public website risk-signal workflows.","maintainers":[{"name":"certscore.ai","email":"bmasek@gmail.com"}],"readme":"# CertScore.ai MCP Light\n\n**Recommended discovery entry: no-auth Streamable HTTP website privacy scans for MCP clients.** Give an agent a public URL and retrieve evidence-backed observations about cookies and storage, trackers and vendors, consent controls, privacy-policy surfaces, and HTTPS/TLS signals.\n\nCertScore.ai MCP Light is live in the [GitHub MCP Registry](https://github.com/mcp/ai.certscore/mcp-light) as `ai.certscore/mcp-light`. It exposes four tools and requires no signup, API key, bearer token, browser login, or OAuth.\n\n| | |\n| --- | --- |\n| Endpoint | `https://mcp.certscore.ai/mcp/light` |\n| Transport | Streamable HTTP |\n| Authentication | None |\n| Tools | `certscore_scan_site` → `certscore_get_scan_status` → `certscore_get_scan_bundle` |\n| Current hosted version | `0.2.25` |\n\n[Start with MCP Light](https://certscore.ai/mcp/light?utm_source=github&utm_medium=mcp_registry&utm_campaign=github_mcp_registry_launch) · [Install in Cursor](https://cursor.com/link/mcp/install?name=CertScore.ai&config=eyJ1cmwiOiJodHRwczovL21jcC5jZXJ0c2NvcmUuYWkvbWNwL2xpZ2h0In0%3D) · [Read the installation reference](../../docs/mcp-light-install.md)\n\n## Try it in about a minute\n\nAdd the public endpoint to Codex:\n\n```bash\ncodex mcp add certscore --url https://mcp.certscore.ai/mcp/light\n```\n\nThen ask:\n\n> Scan https://ergoveritas.com/.well-known/certscore-canary/sentinels/broad-baseline.html. Continue through the returned scan lifecycle, retrieve the completed findings bundle, and summarize the score, risk level, findings, evidence links, coverage limitations, and report URL. State whether the result was new or reused. Treat the results as automated public-web observations, not legal advice or certification.\n\nErgoVeritas is a stable, owned canary with intentional test signals. For an ordinary review, substitute any public HTTP or HTTPS URL you are authorized to assess.\n\n## Light MCP — no authentication: start here\n\nLight is the anonymous Streamable HTTP endpoint for first-time and low-volume agent workflows:\n\n```text\nLight:\nhttps://mcp.certscore.ai/mcp/light\n\nAuthentication: None\nTools: certscore_scan_site, certscore_get_scan_status, certscore_get_scan_bundle\n```\n\nLight allows up to 50 genuinely new scans per UTC day across the public Light surface and up to 5 per rolling 10 minutes, with additional IP/provider safeguards. Reused eligible results do not consume quota.\n\nLight is a free website privacy scanner and cookie checker for public websites. It can return canonical evidence and findings for pre-consent cookies and storage, trackers and vendors, cookie banners, CMP and consent controls, the jurisdiction-neutral GPC comparison, Accept and Reject Path post-action observations or explicit limitations, privacy-policy and transparency surfaces, GDPR/ePrivacy and CCPA/CPRA review signals, and HTTPS/TLS transport observations. Typical uses include release privacy preflight, public vendor-domain review, landing-page tracker inspection, audit triage, and evidence collection before human privacy review.\n\nDetailed first-run prompt:\n\n> Scan https://ergoveritas.com/.well-known/certscore-canary/sentinels/broad-baseline.html. If certscore_scan_site includes preConsentPreview, treat it as a partial preview and continue the workflow. Distinguish captured totals from bounded returned identities; use trackingVendorCount for non-operational tracking vendors and keep operationalVendors separate. Do not compare the compatibility preview trackerCount with the completed inventory's broader trackerCount. Never report preview counts as final totals. If certscore_scan_site returns a queued, running, or finalizing result, retain the returned scanId and poll certscore_get_scan_status using scanId only. If certscore_scan_site returns a retryable error without a scanId, wait for retryAfterSeconds and retry certscore_scan_site; do not call certscore_get_scan_status until a scanId exists. Once the scan reaches a terminal status, call certscore_get_scan_bundle with detail=findings and maxBytes=8000. Summarize whether the result was new or reused, the score, risk level, findings, evidence links, coverage limitations, and report URL. Explain truncation or omitted sections when present. Treat results as automated public-web observations, not legal conclusions, certifications, or compliance determinations.\n\nCanonical Light workflow:\n\n1. Call `certscore_scan_site` with a public URL.\n2. If a retryable error has no `scanId`, wait `retryAfterSeconds` and retry `certscore_scan_site`.\n3. If `preConsentPreview` is present, it is a partial preview of checkpoint passive observations. Its counts are partial, not the full scan tally; never report them as final totals. It contains no canonical findings or score and does not replace the completed bundle.\n4. If the result is queued, running, or finalizing, retain `scanId`.\n5. Poll `certscore_get_scan_status` using `scanId` only. Never poll until `scanId` exists.\n6. Stop polling at any terminal status. At `completed` or `completed_limited`, call `certscore_get_scan_bundle` before reporting full scan results, and use its final returned tally, canonical findings, and limitations; for other terminal states, follow the returned error guidance.\n7. Use `detail=findings` for a compact finding review.\n8. Use `detail=evidence` for finding digests, bounded external-request examples, policy-surface candidates, and references, including when no finding was projected. A request for an external script does not by itself establish tracking; use `certscore_get_report_evidence_page` for deeper retained report evidence.\n9. If truncated, follow `recommendedNextAction` or increase `maxBytes`.\n10. Summarize findings together with coverage limitations and the report URL.\n\nRecommended bundle budgets are `maxBytes=5000` for `summary`, `maxBytes=8000` for `findings`, `maxBytes=8000` for `evidence`, and `maxBytes=12000` to `25000` for `full`. MCP Light applies a 25,000-byte response ceiling so results remain within practical client limits; larger requested budgets are reported but clamped. At the 5,000-byte floor, compact core finding rows take priority over optional inventory and duplicate envelope fields. When repeated per-finding URLs are omitted, `evidenceUrlTemplate` points to `contentUrls.findings` and the returned finding ID so the same canonical evidence endpoint remains derivable. Inspect `canonicalFindingsComplete`, `requestedMaxBytes`, `effectiveMaxBytes`, `responseCeilingBytes`, `actualBytes`, `fullPayloadBytes`, `truncated`, `omittedSections`, `nextRecommendedMaxBytes`, and returned report or evidence content URLs. When `canonicalFindingsComplete` is true, retry only if omitted envelope detail is needed.\n\nVerification prompt:\n\n> List the available CertScore tools and confirm that certscore_scan_site, certscore_get_scan_status, and certscore_get_scan_bundle are available. Then scan https://ergoveritas.com/.well-known/certscore-canary/sentinels/broad-baseline.html and report whether the result was new or reused.\n\nSuccess means the tool list contains the four Light tools (scan, status, bundle and report evidence), no authorization page appears, and `certscore_scan_site` returns a stable `scanId` plus an explicit new-or-reused decision. An eligible reused result reports that quota was not consumed.\n\nCertScore results are automated observations from a public-web scan. No-go, not-observed, and limited-coverage results are not proof of compliance, absence of risk, or legal status. Review the retained evidence and applicable context before relying on a finding.\n\nScans describe observable behavior at a point in time. Public sites may behave differently on later visits or in another execution context. CertScore findings and the CertScore score support human and agentic review; they are not legal advice, certification, or a compliance determination.\n\n## Which MCP route should I use?\n\n| Route | Access | Best for |\n| --- | --- | --- |\n| Light MCP — no authentication | No account, API key, bearer token, browser login, or OAuth; four tools; up to 50 new scans per UTC day across Light and 5 per rolling 10 minutes; eligible reuse is free | First-time users, testing, and discovery |\n| Hosted MCP — OAuth | Hosted Streamable HTTP with OAuth scopes, higher volume, history, and approved advanced tools | Production, team, and managed remote clients |\n| Local MCP — scoped API key | Local stdio with a scoped key and tools allowed by its scopes | Backend, local, and controlled automation workflows |\n\nThe full/authenticated Streamable HTTP endpoint is `https://mcp.certscore.ai/mcp`. Use it after Light when the workflow requires authentication, higher volume, history, or advanced tools. Core identifiers and canonical response fields remain compatible when moving from Light to authenticated access.\n\n## Weighted read limits\n\nMCP scan-resource reads use the same weighted, rolling policy as the direct CertScore API. Hosted MCP rejects an over-limit composite call before internal fan-out; local MCP receives the same protection from the underlying API. Poll only active status resources, stop at a terminal status, do not repeatedly retrieve terminal scan resources, and honor `Retry-After` before retrying. The current limits and weights are published at https://certscore.ai/developers/reference#read-rate-limits and in the `x-certscore-read-rate-policy` extension of the public OpenAPI documents.\n\n## Authenticated and local MCP tool reference\n\nThe sections below document the broader authenticated and local package surfaces. They do not change the GitHub-listed Light contract, which exposes only `certscore_scan_site`, `certscore_get_scan_status`, and `certscore_get_scan_bundle`.\n\n- `certscore_scan_site` - Creates a public-website privacy scan or reuses an eligible recent completed scan. Coverage includes pre-consent storage, trackers, consent and CMP signals, privacy-policy disclosures, transport security, and GDPR/ePrivacy or CCPA/CPRA review signals. The response contains a stable scanId, lifecycle status, retry timing, and sometimes a bounded preliminary preConsentPreview; preliminary data contains no final findings or score. Results are automated public-web observations, not legal advice, certification, or a compliance determination. Tool and workflow documentation: https://certscore.ai/developers/mcp.\n\n  Workflow note: a new scan may include `preConsentPreview` when the runtime lane completes or reaches its six-second checkpoint. The preview separates captured totals from bounded returned identities. `trackingVendorCount` excludes infrastructure, security, and consent-management vendors, which appear in `operationalVendors`; the compatibility preview count is not comparable to the completed inventory's broader `trackerCount`. Continue with `certscore_get_scan_status`, never poll in parallel, and never resubmit `certscore_scan_site` while the scan is active. Then call `certscore_get_scan_bundle` at completed or completed_limited.\n- `certscore_get_scan` - Retrieve the API v2 public-safe scan resource, including completed-limited no-go disposition, reason-specific guidance, and timing when available.\n- `certscore_get_scan_status` - Returns lifecycle status for a stable CertScore scanId. Active responses include phase, heartbeat, estimated progress, retryAfterSeconds, and sometimes a bounded preliminary preConsentPreview. Terminal responses include completion status, CertScore score and risk metadata when available, coverage, persisted execution region and timestamps, report URL, and a next-action field. Preliminary observations are distinct from completed findings.\n- `certscore_get_report` - Focused follow-up: retrieve a bounded Pulse report with high-signal TextContent and typed structuredContent, including customer-safe no-go messaging. For broad privacy questions, use certscore_get_scan_bundle first because it combines canonical findings, limitations, and pre-consent rows without redundant calls.\n- `certscore_get_evidence` - Focused follow-up: retrieve a bounded public-safe evidence packet with a concise TextContent digest and typed structuredContent. For broad privacy questions, use certscore_get_scan_bundle first. Excludes raw cookie values, raw bodies, sensitive payloads, full DOM, and unredacted query values.\n- `certscore_get_scan_bundle` - Returns the completed or completed-limited CertScore evidence bundle for a stable scanId as concise TextContent and matching structuredContent. The default summary distinguishes observed external domains from classified tracker vendors and states the public-page scope. Use detail=evidence to inspect bounded retained request examples and policy-surface candidates even when there are no findings; use certscore_get_report_evidence_page for deeper report evidence. Available sections also include canonical findings, pre-consent cookie and tracker evidence, coverage limitations, persisted execution provenance, and retrieval URLs. Detail tiers and byte budgets report returned, total, truncated, and omitted-section metadata. Accept and Reject results distinguish registered decisions from retained after-click facts. Their execution reports succeeded for a completed click and bounded observation, and succeeded_with_confirmation when the consent decision is also verified. Optional afterAction summaries remain useful when registration is unconfirmed; absent or failed capture remains explicitly limited. Consume canonical findings for any scoring effect. Results are automated public-web observations, not legal advice, certification, or a compliance determination.\n\n  Count both execution success statuses; registered successful paths may omit afterAction, and missing historical execution means unavailable.\n\n\n  Post-refusal observation may intentionally stop after the first qualifying non-essential activity or retained consent-signal contradiction. A confirmed observation with `termination.kind=evidence_satisfied` is positive evidence for the returned observation, not an inconclusive Reject Path result. `coverageLimitations` describe only additional behavior or persistence that was not measured.\n- `certscore_export_findings` - Return structured findings plus completed-limited no-go disposition and guidance for downstream review or ticketing workflows.\n- `certscore_list_findings` - Focused follow-up: list bounded API v2 public-safe findings already projected by the canonical pipeline, with matching high-signal TextContent and typed structuredContent. For broad privacy questions, use certscore_get_scan_bundle first.\n- `certscore_get_pre_consent_cookies_trackers` - Focused follow-up: retrieve bounded row-level public-safe pre-consent cookie/tracker evidence with matching TextContent and typed structuredContent. For a new broad request such as checking a site for pre-consent tracking, use certscore_scan_site then certscore_get_scan_bundle first.\n- `certscore_explain_finding` - Explain one projected finding with public evidence, caveats, reviewer next steps, and reason-specific no-go context when applicable.\n- `certscore_get_latest_domain_scan` - Retrieve the latest eligible API v2 public-safe scan for a domain.\n\nStatus provenance fields remain distinct: `provenance.retrievalMode` describes the current read, `provenance.creationDecision` reports the retained original new/reused decision or `unknown`, and `provenance.scanAgeSeconds` reports numeric age when available. A scan-ID lookup alone never proves reuse.\n\nAt tight bundle budgets, short canonical `nextStep` actions remain only when they fit without displacing a finding. Longer actions and evidence detail remain available through the returned canonical URLs or a larger complete tier.\n- `certscore_get_latest_domain_pre_consent_cookies_trackers` - Focused follow-up: retrieve bounded row-level public-safe pre-consent cookie/tracker evidence from the latest eligible scan for a domain, with matching TextContent and typed structuredContent. For a broad current-site review, use certscore_scan_site then certscore_get_scan_bundle first.\n\nThe initial MCP surface intentionally does not include account scan browsing or scan comparison tools.\n\n## Scan Timing Fields\n\nMCP tools backed by API v2 scan resources return scan timing when CertScore has enough timing evidence:\n\n- `startedAt`\n- `completedAt`\n- `scanTimeSeconds`\n\nThis applies to `certscore_scan_site` when it returns an API v2 scan resource or job, `certscore_get_scan`, and `certscore_get_scan_status` when called with a `scanId`. `scanTimeSeconds: null` means timing is unavailable or incomplete and should not be displayed as `0`.\n\nCompleted Light results are canonical. `certscore_scan_site`, terminal `certscore_get_scan_status`, and `certscore_get_scan_bundle` return the same score, risk level, coverage, and timing fields. Scores include `scoreStatus`, `scoreVersion`, and `scoreUpdatedAt`; a scan remains `finalizing` until the persisted canonical report projection is ready, so a completed response always carries `scoreStatus: \"final\"`.\n\nNo-go results lead with the retained access blocker, “Not scored,” evidence excerpt, next action, and retry guidance in MCP text. Structured responses retain `resultDisposition`, `noGo`, null score/risk, and empty findings. Tight bundle budgets preserve that blocker and remedy before optional lane diagnostics; omitted diagnostics are listed in `mcpMetadata.omittedSections`. A no-go `full` request does not fabricate a full report.\n\nThe value is labeled `CertScore score`, never a compliance score. It covers observable public-web scan signals only. Clients must not infer technologies absent from the returned evidence, compare the value with a hypothetical compliant baseline, or infer legal compliance status.\n\nEvery `failed`, `expired`, or `rate_limited` status includes a bounded `error` object with `code`, `message`, `retryable`, `retryAfterSeconds`, and `recommendedNextAction`.\n\n## Light Bundle Detail and Byte Budgets\n\nEvery bundle declares its selected `detail` mode. `summary` returns the overview, canonical result, up to five compact projected finding objects, compact row-level pre-consent cookie/tracker evidence, coverage, limitations, counts, and report URL. This lets conversational MCP clients enumerate projected consent-control, CMP-context, transport, GDPR/ePrivacy transparency, social/media embed, accessibility, disclosure, and other returned review signals without needing a second tool; only categories actually present in canonical projections are returned. Findings and inventory sections each declare `total`, `returned`, and `truncated`. Each compact finding retains its public API v2 evidence anchor. Each inventory row includes cookie/tracker identity, cookie names where present, vendor, purpose, category, first-observed time, domains, evidence classification, and confidence. `findings` raises the default finding allowance to 20. `evidence` adds bounded evidence digests and references. `full` adds every available non-duplicated section subject to the effective byte budget; findings, top findings, and transport security are returned once in their canonical top-level bundle sections. When `fullPayloadBytes` exceeds the Light response ceiling, use the canonical content URLs instead of retrying above the ceiling.\n\n`TextContent` is capped at 8,000 characters and uses short plain-text lines instead of large tables or nested JSON. It presents canonical overview facts and projected findings before the row inventory so one evidence family cannot crowd out the rest. The full profile's structured bundle defaults to 50,000 bytes and accepts a caller-selected 5,000-200,000-byte bound. Light defaults to and applies a 25,000-byte response ceiling. If either representation must omit returned items, it states that explicitly and preserves totals and truncation metadata.\n\n`mcpMetadata` always includes `requestedMaxBytes`, `effectiveMaxBytes`, `responseCeilingBytes`, `responseBudgetClamped`, `actualBytes`, `fullPayloadBytes`, `truncated`, `canonicalFindingsComplete`, `truncationReason`, `omittedSections`, `deduplicatedSections`, `nextRecommendedMaxBytes`, `omittedContentAvailableViaUrl`, and `contentUrls`. Under byte pressure, optional detail and inventory rows are reduced before compact core finding rows. `canonicalFindingsComplete` separates complete projected findings from a partially omitted envelope. `nextRecommendedMaxBytes` is the rounded size needed for the complete requested tier rather than an incremental retry step; when the complete tier exceeds the MCP ceiling, the response directs the agent to an available report/evidence URL.\n\nInput-validation errors remain MCP `-32602` errors and also include structured `invalid_arguments` details with the affected field and a safe next action. Error results use concise text plus machine-readable details. Successful results put the typed result in `structuredContent`; scan bundles also render a bounded row-level evidence summary in `TextContent` for client compatibility.\n\nThe Light workflow is:\n\n1. Call `certscore_scan_site` with a public URL.\n2. If a retryable error has no `scanId`, wait `retryAfterSeconds` and retry `certscore_scan_site`; do not poll.\n3. If the result is queued, running, or finalizing, retain `scanId` and poll `certscore_get_scan_status` with only that ID.\n4. Stop polling at any terminal status. For `completed` or `completed_limited`, call `certscore_get_scan_bundle`.\n5. If the bundle is truncated, follow `recommendedNextAction`, increase `maxBytes`, or open a listed content URL.\n6. Summarize the CertScore score, risk, pre-consent rows, findings, coverage, limitations, and report URL without treating no-go, not-observed, or limited coverage as proof of compliance.\n\n## Completed-Limited No-Go Results\n\nNo-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\"`.\n\n## Hosted MCP — OAuth\n\nOAuth-capable MCP clients can connect to:\n\n```text\nhttps://mcp.certscore.ai/mcp\n```\n\nDiscovery endpoints:\n\n```text\nhttps://mcp.certscore.ai/.well-known/oauth-protected-resource/mcp\nhttps://certscore.ai/.well-known/oauth-authorization-server\n```\n\nThe full hosted service uses OAuth authorization code with PKCE. Members of active workspaces can connect through registered OAuth clients across plans with scan:read, scan:create and mcp. Existing limits apply. Canonical eligibility, authorization and reconnect behavior: https://certscore.ai/developers/mcp#hosted-oauth-start. Local scoped API-key policy is separate.\n\nFor low-volume agent discovery without account or OAuth setup, use the unauthenticated endpoint:\n\n```text\nhttps://mcp.certscore.ai/mcp/anonymous\n```\n\nFor the simplest no-account workflow, use the Light quickstart at the top of this document. OAuth metadata applies only to `https://mcp.certscore.ai/mcp`.\n\n## Local MCP — scoped API key configuration\n\nInstall with Homebrew on macOS:\n\n```bash\nbrew tap ergoveritas1-alt/certscore https://github.com/ergoveritas1-alt/certscore.ai\nbrew install --cask certscore-mcp\n```\n\nThe cask installs the prebuilt MCP command for users who prefer a persistent local binary.\n\nUse the installed command from an MCP client:\n\n```json\n{\n  \"mcpServers\": {\n    \"certscore\": {\n      \"command\": \"certscore-mcp\",\n      \"env\": {\n        \"CERTSCORE_API_KEY\": \"YOUR_TOKEN\",\n        \"CERTSCORE_BASE_URL\": \"https://certscore.ai\"\n      }\n    }\n  }\n}\n```\n\nRun from this monorepo for local development:\n\n```bash\nCERTSCORE_API_KEY=... pnpm mcp:certscore\n```\n\nGenerate a scoped preview key after applying DB migrations:\n\n```bash\npnpm db:migrate\npnpm mcp:certscore:generate-key -- --name \"CertScore MCP preview\"\n```\n\nRun the built package directly after local build:\n\n```bash\nCERTSCORE_API_KEY=... certscore-mcp\n```\n\nOptional:\n\n```bash\nCERTSCORE_BASE_URL=https://certscore.ai\nCERTSCORE_REQUEST_TIMEOUT_MS=300000\n```\n\n`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.\n\n## Local MCP — scoped API key access\n\nStdio API keys use `pulse:read` and `mcp`; creating scans additionally requires `pulse:scan`. Hosted OAuth uses `scan:read scan:create mcp` under the registered-client active-workspace policy. See https://certscore.ai/developers/mcp#hosted-oauth-start for current eligibility and verified client availability.\n\n## Verify Install\n\n```bash\ncertscore-mcp --version\ncertscore-mcp --help\nCERTSCORE_API_KEY=... certscore-mcp doctor\nCERTSCORE_API_KEY=... certscore-mcp doctor --check-auth\n```\n\nThe doctor command checks binary startup, version output, Node.js runtime compatibility, the configured CertScore base URL, API v2 health, and API key presence. Add `--check-auth` to validate the credential against `/api/v2/auth/check` without creating a scan. It does not print secrets or inspect raw scanner artifacts.\n\n## No-account agent scan path\n\nAgents that cannot create an account or configure OAuth can use the public API v2 scan path without an `Authorization` header:\n\n```bash\ncurl -X POST https://certscore.ai/api/v2/scans \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"url\":\"https://ergoveritas.com/.well-known/certscore-canary/sentinels/broad-baseline.html\",\"freshness\":\"latest\",\"scanFrom\":\"eu_ie\"}'\n```\n\nNew anonymous scans are limited to 20 per requester IP per UTC day. Reusing an eligible recent result does not consume the quota. Poll the returned status resource, then retrieve findings or evidence. Contact `support@certscore.ai` for a higher-volume allowance, including when reuse serves the current request.\n\n## MCP Client Examples\n\nClaude Desktop-style config:\n\n```json\n{\n  \"mcpServers\": {\n    \"certscore\": {\n      \"command\": \"certscore-mcp\",\n      \"env\": {\n        \"CERTSCORE_API_KEY\": \"YOUR_TOKEN\",\n        \"CERTSCORE_BASE_URL\": \"https://certscore.ai\"\n      }\n    }\n  }\n}\n```\n\nCursor config:\n\n```json\n{\n  \"mcpServers\": {\n    \"certscore\": {\n      \"command\": \"certscore-mcp\",\n      \"env\": {\n        \"CERTSCORE_API_KEY\": \"YOUR_TOKEN\",\n        \"CERTSCORE_BASE_URL\": \"https://certscore.ai\"\n      }\n    }\n  }\n}\n```\n\nWindsurf or generic stdio MCP client config:\n\n```json\n{\n  \"mcpServers\": {\n    \"certscore\": {\n      \"command\": \"certscore-mcp\",\n      \"env\": {\n        \"CERTSCORE_API_KEY\": \"YOUR_TOKEN\",\n        \"CERTSCORE_BASE_URL\": \"https://certscore.ai\"\n      }\n    }\n  }\n}\n```\n\nLocal repo config for contributors:\n\n```json\n{\n  \"mcpServers\": {\n    \"certscore\": {\n      \"command\": \"pnpm\",\n      \"args\": [\"mcp:certscore\"],\n      \"cwd\": \"/path/to/WC01\",\n      \"env\": {\n        \"CERTSCORE_API_KEY\": \"YOUR_TOKEN\",\n        \"CERTSCORE_BASE_URL\": \"https://certscore.ai\"\n      }\n    }\n  }\n}\n```\n\n## Agent Workflow\n\n1. Call `certscore_scan_site` with a public URL. A reused eligible result may be completed immediately; a new scan returns its stable `scanId` and may return a partial preview when the runtime lane completes or reaches its six-second checkpoint.\n2. If `preConsentPreview` is present, distinguish captured totals from bounded returned identities. Use `trackingVendorCount` for non-operational tracking vendors and keep `operationalVendors` separate; do not compare the compatibility preview `trackerCount` with the completed inventory's broader `trackerCount`. It is not a finding, score, or terminal result.\n3. If status is `queued`, `running`, or `finalizing`, retain the returned `scanId` and poll `certscore_get_scan_status` using only that ID. Stop polling at `completed`, `completed_limited`, `failed`, `expired`, or `rate_limited`.\n4. For `completed` or `completed_limited`, call `certscore_get_scan_bundle` with its default `detail: \"summary\"` before reporting full scan results. Use its final returned tally, canonical findings, and limitations. Use `findings`, `evidence`, or `full` only when progressively deeper bounded context is required.\n5. Summarize the canonical score, risk, findings, coverage, limitations, report URL, and next action. Never treat the preview, no-go, not-observed, or limited coverage as proof of compliance.\n\nCanonical first-run prompt:\n\n> Scan these public URLs. For each one, call certscore_scan_site. If preConsentPreview is present, treat it as a partial preview whose counts are checkpoint-only and partial, not the full scan tally; never report them as final totals, and continue the workflow. If status is queued, running, or finalizing, retain scanId and poll certscore_get_scan_status using only scanId. Stop polling at completed, completed_limited, failed, expired, or rate_limited. For completed or completed_limited scans, call certscore_get_scan_bundle with detail=findings before reporting full scan results. Use the bundle for the final returned tally, canonical findings, and limitations. If truncated, follow recommendedNextAction or increase maxBytes. Report the canonical score, risk level, coverage, findings, limitations, report URL, and next action. Never treat preConsentPreview, no-go, not-observed, or limited coverage as proof of compliance.\n4. Call `certscore_get_report`, `certscore_get_evidence`, `certscore_list_findings`, or `certscore_get_pre_consent_cookies_trackers` only when the task needs a dedicated view.\n5. Call `certscore_explain_finding` when a reviewer needs evidence and caveats for a specific finding.\n6. Call `certscore_get_latest_domain_scan` or `certscore_get_latest_domain_pre_consent_cookies_trackers` when the user asks for latest eligible public data for a domain.\n\n`certscore_scan_site` reports whether the result was reused, why the freshness decision was made, whether anonymous quota was consumed, the remaining daily allowance, the UTC reset time, and the recommended next tool.\n\nWith `freshness: \"latest\"`, CertScore reuses an eligible scan completed within the last 24 hours for the same normalized target and scan region. A reusable result must have completed usable page coverage and must not be an early-loss, no-page, or otherwise non-reusable limited result. Reuse does not consume anonymous quota. `freshnessDecision` states whether a recent result was reused or a new scan was queued; `reusedScanAgeSeconds` reports the reused result's age.\n\nProvenance keeps the current retrieval separate from the original creation decision. `retrievalMode=creation_response` means the result came from `certscore_scan_site`; `retrievalMode=scan_id_lookup` means a later tool fetched the retained scan by ID. `creationDecision` is `new_scan` or `reused_scan` only when the response retains that fact, and otherwise is `unknown`. Do not translate `scan_id_lookup` into a reused-scan claim. `scanAgeSeconds` reports a nonnegative age when a retained age or completion timestamp is available.\n\n```json\n{\n  \"tool\": \"certscore_get_pre_consent_cookies_trackers\",\n  \"arguments\": {\n    \"scanId\": \"00000000-0000-4000-8000-000000000123\"\n  }\n}\n```\n\n```json\n{\n  \"tool\": \"certscore_get_latest_domain_pre_consent_cookies_trackers\",\n  \"arguments\": {\n    \"domain\": \"ergoveritas.com\",\n    \"scanFrom\": \"eu_ie\"\n  }\n}\n```\n\nWhen summarizing table data, group rows by `vendor`, `purpose`, and `host` unless the user asks for row-level JSON.\nTreat MCP outputs as automated public-web observations for human and agentic review. They are not legal advice, certification, or a compliance determination. MCP tools must not infer findings from raw labels, raw network events, missing data, or display-only context.\n\n## Live Smoke\n\n```bash\nCERTSCORE_API_KEY=... pnpm mcp:certscore:smoke\n```\n\nOptional:\n\n```bash\nCERTSCORE_MCP_SMOKE_URL=https://ergoveritas.com/.well-known/certscore-canary/sentinels/broad-baseline.html\n```\n\nWithout `CERTSCORE_API_KEY`, the smoke script exits successfully with a skip message.\n\nFor the full production operator smoke, run from the WC01 repo:\n\n```bash\nCERTSCORE_ALLOW_PAID_ECS_SMOKE=1 pnpm ops:smoke:mcp-cli-production\n```\n\nThis verifies the Homebrew-installed `certscore-mcp` command against live `https://certscore.ai`. It first requires the installed CLI version to match the workspace version, then creates a short-lived preview key, stores only the hash in production through the approved ECS/Fargate path, checks required tools, requires non-empty findings and pre-consent cookies/trackers rows, and revokes the temporary key afterward. The explicit cost opt-in is required because this separate CLI check starts one-off Fargate tasks. Use `pnpm ops:smoke:mcp-production` for the hosted, retained-scan, read-only canary.\n\n## Troubleshooting\n\n- Unexpected OAuth in Codex: remove the server and add it again with the exact Light URL `https://mcp.certscore.ai/mcp/light`. Do not configure a bearer token.\n- Successful Light connection: Streamable HTTP initialization completes, no authorization page opens, and `tools/list` returns exactly `certscore_scan_site`, `certscore_get_scan_status`, and `certscore_get_scan_bundle`.\n- Missing scan ID: retry `certscore_scan_site` only when the error is retryable. Never call `certscore_get_scan_status` until `scanId` exists.\n- Rate limited: follow `retryAfterSeconds` and `recommendedNextAction`, wait for the returned UTC reset, or reuse an eligible result.\n- Reused result: report that the eligible prior scan was reused and quota was not consumed.\n- Truncated bundle: first inspect `canonicalFindingsComplete`; when true, retry only for omitted envelope detail. Otherwise follow `nextRecommendedMaxBytes`, raise `maxBytes`, or open a returned report or evidence content URL.\n- Invalid URL: correct the field named by the structured `invalid_arguments` response and retry with a public HTTP or HTTPS URL.\n- Limited result versus failure: `completed_limited`, no-go, not-observed, and limited coverage are observations only, never proof of compliance. `failed`, `expired`, and connection errors are failures with retry guidance.\n- Command not found: run the Homebrew install again and confirm Homebrew's bin directory is on `PATH`.\n- Missing API key: set `CERTSCORE_API_KEY` in the MCP client environment and rerun `certscore-mcp doctor`.\n- Bad token: rotate the key or request a scoped API/MCP key from `support@certscore.ai`.\n- API unreachable: check `CERTSCORE_BASE_URL` and verify `https://certscore.ai/api/v2/health`.\n- Homebrew tap stale: run `brew update` and reinstall `certscore-mcp`.\n- Old cached release: run `brew reinstall --cask certscore-mcp` after updating the tap.\n\n## Runbook\n\nSee `docs/certscore-mcp-homebrew-release.md` for Homebrew release steps and `docs/certscore-mcp-preview-runbook.md` for key issuance, smoke testing, deploy verification, and scan-to-report guardrails.\n\n\n### Hosted request diagnostics\n\nHosted MCP retains bounded, redacted previews of explicitly submitted tool arguments and client metadata for operational diagnostics. The admin “What the caller sent” popup distinguishes current arguments, per-request metadata, and initialization metadata. It records reasons for sensitive-field, sensitive-content, depth, text, field-count, and byte-budget omissions. These caller-declared values are not verified claims or a copy of the surrounding conversation.\n\nThe entire request-details record remains capped at 4 KB with the existing 90-day event retention. Previews contain at most 24 fields and 300 characters per string. Authentication headers, cookies, known credential fields, and chat-history/message collections are excluded; URL previews retain only the origin. Task-context question summaries retain their explicit sharing/source requirements and cannot be recovered through the generic preview path. The generic preview may show short text explicitly submitted in separate arguments such as `reason`, `notes`, or `prompt`; it does not fetch the user's chat.\n\nQuestion context from a prior request is shown separately, with a source link, only when the retained caller, session, scan, provider and entrypoint match and the source precedes the current call by at most 24 hours. Missing identities, filtered traffic and invalid context fail closed. No inherited context is written back to current events, and no scanning, findings or scoring behavior changes.\n\nEstimated additional cost at the September 2026 observed request volume: less than $0.10/month, using existing storage and record limits. No model calls, infrastructure capacity changes, or longer retention are introduced.\n\n### Complete report evidence JSON (OAuth and Light)\n\nUse `certscore_get_scan_bundle` for a concise summary. For all fields of the displayed single-page or full-site report, use `certscore_get_report_evidence_page({scanId})`. Continue with `{scanId, cursor: pagination.nextCursor}` until `pagination.complete` is true. This adds a fourth Light tool; the three-tool scan → status → bundle workflow remains the default.\n\nEach page contains `entries` with RFC 6901 JSON Pointer `path` and JSON `value`. Apply them in order, creating parent containers before children. An empty path replaces the root. For an oversized string, concatenate `value` by zero-based `stringPart` through `stringParts` before assigning it. Treat paths as data; use own properties when reconstructing objects to prevent prototype pollution. All pages must have the same `snapshot`; HTTP 409 means restart without a cursor and discard the old partial export.\n\nThe export preserves canonical findings, evidence tables, policy excerpts, inventory, consent/action/GPC evidence and coverage as present in the report projection. A complete export does **not** mean complete scan observation: retained samples, unavailable evidence and report limitations remain authoritative. Raw scanner artifacts outside the report and inline image binary bytes are excluded. Full-site data appears under `fullSiteReport`, including all page/resource rows, services, forms and retained fields. Available form snapshots have download URLs under `fullSiteReport.collectionSurfaces.rows[].snapshot.url`; use the OAuth bearer credential for workspace images, or no credential for eligible anonymous public scans. These downloads retain the existing provenance and image-safety checks. Withheld/unavailable snapshots are not promoted. OAuth can read its workspace’s reports and eligible public scans; Light can read only eligible anonymous public scans. No scan is created by this tool. Existing read throttles apply; honor Retry-After.\n\nDirect JSON endpoint: `GET /api/v2/scans/{scanId}/report-evidence?cursor={nextCursor}`. TypeScript SDK: `client.getReportEvidencePage(scanId, {cursor})`.\n\n- `certscore_get_connection_status` - Read current authenticated connection mode, granted scopes, workspace access, rolling scan quota and recovery action. No scan ID is needed and no scan is created. Use this to diagnose read-only access or quota limits; reconnect only for expired, revoked or expanded access.\n\n- `certscore_get_report_evidence_page` - Retrieve scan report display content as paginated JSON, without internal diagnostic JSON downloads. The response also offers a single-file full JSON download; private JSON download links expire after five minutes and need no OAuth header; use pagination if your host blocks file downloads. Repeated display records use reportContentRef JSON Pointers. Includes including evidence tables, full-site page and resource inventories, all retained additional-page form fields, form snapshot download references, and retained limitations. Snapshot images are downloaded separately from the returned URLs, with OAuth bearer authentication for workspace scans. Available on OAuth and Light. Start with scanId; follow pagination.nextCursor until complete. Pages share a snapshot; restart if it changes. Each entry has a JSON Pointer path and value; oversized strings use numbered parts. Export completion is not complete observation coverage. Use the concise scan bundle for summaries; use this tool for exhaustive report evidence. No new scan is created.\n\nReport-evidence export pages contain up to 64 KB of JSON entries and cost one terminal-read unit on both hosted MCP and the API. Existing 120-unit/10-minute and daily limits remain enforced, including repeated cursors. Full evidence reports, findings exports and bundles remain four units. If a larger export reaches a limit, retain the last nextCursor, wait for Retry-After, and resume rather than restarting.\n\n### Full report JSON download\n\n`certscore_get_scan_bundle` remains the default for concise summaries. For a full\nreport export, call `certscore_get_report_evidence_page` once: `download.url`\nreturns the entire report display JSON in one HTTP response, with its byte size.\nWorkspace download URLs contain a report-only capability that expires after five\nminutes. Fetch the returned URL directly without OAuth headers. Treat private\nlinks as confidential; do not publish them. Request a fresh page for a new link\nafter expiry. Eligible public reports remain anonymously downloadable.\nIf the host cannot fetch authenticated files, follow `pagination.nextCursor`\nthrough MCP instead. This does not require adding another connector.\n\nExports exclude diagnostic JSON downloads and internal runtime graphs. Repeated\nrecords use `reportContentRef` RFC 6901 pointers within the exported document;\nresolve these after loading it. Form fields, inventory rows, coverage limitations,\nand available snapshot links remain included. Image bytes are separate downloads.\nThe download uses the existing report read quota and creates no new scan or stored\nexport artifact. Actual host download support must be tested separately; a returned\nURL is not proof that Cursor or Claude can retrieve it.\n\n### Privacy and tracking workpapers (0.2.24)\n\n`certscore_get_scan_bundle` includes `privacyAuditSummary` when verified retained\nevidence is available: observed privacy-choice controls, notice topics, source\nhash and retained counts. `detail=full` also includes `privacyAuditEvidence`.\nByte-budget omissions are named in `mcpMetadata.omittedSections`; absence of a\nsection is not evidence that a control or notice was absent.\n\nUse the existing reader for the starting-page inventory and workpaper:\n\n```json\n{\"scanId\":\"00000000-0000-4000-8000-000000000123\",\"workpaper\":\"tracking\"}\n```\n\nPass those arguments to `certscore_get_report_evidence_page`. It returns paginated\nJSON entries, `download.url` for the JSON workpaper and `download.csvUrl` for the\ninventory CSV. Preserve `workpaper` on every cursor continuation. This works on\nOAuth and Light with their existing workspace/public access boundaries and read\nquotas; no scan is created. Keep five-minute private download links confidential.\n\nLead GPC summaries with returned observation facts and `gpcResponse.activityComparison`\nrequest counts when present. Keep the matched duration with those counts. Report\nDo Not Sell/Share control presence and retained notice passages as observations;\ndo not infer opt-out effectiveness, notice adequacy, sale/sharing, or GPC honoring.\nHistorical records remain unchanged and the score is the existing CertScore score.\n","readmeFilename":"README.md"}