{"_id":"@mcpjam/sdk","_rev":"103-1f1c19abd525e7f216a4380b01ca532b","name":"@mcpjam/sdk","dist-tags":{"latest":"8.10.0"},"versions":{"0.1.0":{"name":"@mcpjam/sdk","version":"0.1.0","author":{"url":"https://mcpjam.com","name":"MCPJam"},"license":"Apache-2.0","_id":"@mcpjam/sdk@0.1.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"homepage":"https://mcpjam.com","bugs":{"url":"https://github.com/MCPJam/inspector/issues"},"dist":{"shasum":"dfa3ce3f45e0403995460182f106afee0f6efccd","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-0.1.0.tgz","fileCount":16,"integrity":"sha512-Frr9PqOaNSvhVpguyoGbG0FuFVOfYw3qiY2VuGn2KNiXV7i8OzDOY4QmYJx9z8k7nW8D65qfmrrmYaPOhvWrWA==","signatures":[{"sig":"MEUCIFCGGSF3J7HGzfvI6tpYCxllJQcMXdqCb7Iy3Xw1wWgPAiEAu/Ia5PhXMXdluFIWuJ38tzjiqj4VfIB9G0C+WWTnkG8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":464320},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json","./mcp-client-manager":{"types":"./dist/mcp-client-manager/index.d.ts","import":"./dist/mcp-client-manager/index.js","require":"./dist/mcp-client-manager/index.cjs"}},"gitHead":"2665868c5b70c6ceceb1590baa4495cbecb57969","scripts":{"dev":"tsup index.ts mcp-client-manager/index.ts --watch --format esm,cjs --dts --sourcemap --out-dir dist --external @modelcontextprotocol/sdk --external ai","build":"npm run build:packages && npm run build:bundle","clean":"rm -rf dist","clean:all":"npm run clean --silent && npm run --prefix ./mcp-client-manager clean --silent","build:bundle":"tsup index.ts mcp-client-manager/index.ts --clean --format esm,cjs --dts --sourcemap --out-dir dist --external @modelcontextprotocol/sdk --external ai","build:packages":"npm run --prefix ./mcp-client-manager build","prepublishOnly":"npm run build"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"repository":{"url":"git+https://github.com/MCPJam/inspector.git","type":"git","directory":"sdk"},"_npmVersion":"11.6.0","description":"Official MCPJam SDK with reusable client utilities","directories":{},"sideEffects":false,"_nodeVersion":"24.7.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","typescript":"^5.6.3"},"peerDependencies":{"@modelcontextprotocol/sdk":"^1.17.3"},"peerDependenciesMeta":{"@modelcontextprotocol/sdk":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.1.0_1760392545520_0.3764240928306364","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@mcpjam/sdk","version":"0.1.1","author":{"url":"https://mcpjam.com","name":"MCPJam"},"license":"Apache-2.0","_id":"@mcpjam/sdk@0.1.1","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"homepage":"https://mcpjam.com","bugs":{"url":"https://github.com/MCPJam/inspector/issues"},"dist":{"shasum":"7f7934ee4c8ea1a6ea73e9600dd4147dfb5df38e","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-0.1.1.tgz","fileCount":16,"integrity":"sha512-DC7DiT7OBGJI2vlWLOLcxPpFAhJUejMOhYBMPMXmnMHuUWw+s2CjmZuAmmIBoT9s801DzTqekIv8tX55fy/xIQ==","signatures":[{"sig":"MEUCIQDHjBvxgClBPRnlFdRo3Ag2XYMEDyJW3fx7nJZWlCMzAwIgSPfHflhYnQWV0phTQiFM3l1YfM93d5ivVhIpSpSp6B4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":464218},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json","./mcp-client-manager":{"types":"./dist/mcp-client-manager/index.d.ts","import":"./dist/mcp-client-manager/index.js","require":"./dist/mcp-client-manager/index.cjs"}},"gitHead":"339c2b7f1267d07a8ae8c0ef23197d659270737a","scripts":{"dev":"tsup index.ts mcp-client-manager/index.ts --watch --format esm,cjs --dts --sourcemap --out-dir dist --external @modelcontextprotocol/sdk --external ai","build":"npm run build:packages && npm run build:bundle","clean":"rm -rf dist","clean:all":"npm run clean --silent && npm run --prefix ./mcp-client-manager clean --silent","build:bundle":"tsup index.ts mcp-client-manager/index.ts --clean --format esm,cjs --dts --sourcemap --out-dir dist --external @modelcontextprotocol/sdk --external ai","build:packages":"npm run --prefix ./mcp-client-manager build","prepublishOnly":"npm run build"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"repository":{"url":"git+https://github.com/MCPJam/inspector.git","type":"git","directory":"sdk"},"_npmVersion":"11.6.0","description":"Official MCPJam SDK with reusable client utilities","directories":{},"sideEffects":false,"_nodeVersion":"24.7.0","dependencies":{"@modelcontextprotocol/sdk":"^1.17.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","typescript":"^5.6.3"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.1.1_1760393065995_0.9874567271753296","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@mcpjam/sdk","version":"0.1.2","author":{"url":"https://mcpjam.com","name":"MCPJam"},"license":"Apache-2.0","_id":"@mcpjam/sdk@0.1.2","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"homepage":"https://mcpjam.com","bugs":{"url":"https://github.com/MCPJam/inspector/issues"},"dist":{"shasum":"3efa2b1650c95b4da893edd1a630bc2de97addf4","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-0.1.2.tgz","fileCount":16,"integrity":"sha512-MFvYEAAcmqqgDoDKth9ASTUapootZRcmaEXJvVzYuSqlzn3x9z8NZB+BDRZIhIWNvhsvmLbwUlma1viW88K8tw==","signatures":[{"sig":"MEUCIAE7qBuwzTpH6Gsu+ZMDCQkOPn147u23FdoBThEe8eaDAiEAwWETAa4Pu8NMr2hoNk/o8274/vd2b9/hConV4TrQVdo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":467440},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json","./mcp-client-manager":{"types":"./dist/mcp-client-manager/index.d.ts","import":"./dist/mcp-client-manager/index.js","require":"./dist/mcp-client-manager/index.cjs"}},"gitHead":"bedc1947f6d2123d49d55af64230a560e2b6cde3","scripts":{"dev":"tsup index.ts mcp-client-manager/index.ts --watch --format esm,cjs --dts --sourcemap --out-dir dist --external @modelcontextprotocol/sdk --external ai","build":"npm run build:packages && npm run build:bundle","clean":"rm -rf dist","clean:all":"npm run clean --silent && npm run --prefix ./mcp-client-manager clean --silent","build:bundle":"tsup index.ts mcp-client-manager/index.ts --clean --format esm,cjs --dts --sourcemap --out-dir dist --external @modelcontextprotocol/sdk --external ai","build:packages":"npm run --prefix ./mcp-client-manager build","prepublishOnly":"npm run build"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"repository":{"url":"git+https://github.com/MCPJam/inspector.git","type":"git","directory":"sdk"},"_npmVersion":"11.6.0","description":"Official MCPJam SDK with reusable client utilities","directories":{},"sideEffects":false,"_nodeVersion":"24.7.0","dependencies":{"@modelcontextprotocol/sdk":"^1.17.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","typescript":"^5.6.3"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.1.2_1760393457778_0.6301043294346791","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@mcpjam/sdk","version":"0.1.3","author":{"url":"https://mcpjam.com","name":"MCPJam"},"license":"Apache-2.0","_id":"@mcpjam/sdk@0.1.3","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"homepage":"https://mcpjam.com","bugs":{"url":"https://github.com/MCPJam/inspector/issues"},"dist":{"shasum":"f7843140272ec94d07755fe07ad9d6700c2febb3","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-0.1.3.tgz","fileCount":16,"integrity":"sha512-6kVFy3A4rFlxy0cN/21KGSCjIl2onvkr2gBe9orUHUdxHgJfKaY5UPe8jVgHvyV8ezij7uQrpCFUDH+rBQxQTg==","signatures":[{"sig":"MEUCIQCkYGi0gXJ0026KUXw+k4oRm5kp+FLmr9enkWzimzeIYQIgPnQ6AltWcsR0xU9yNW6fU2sE8jV1UR0ca1gm15CK+3Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":474976},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json","./mcp-client-manager":{"types":"./dist/mcp-client-manager/index.d.ts","import":"./dist/mcp-client-manager/index.js","require":"./dist/mcp-client-manager/index.cjs"}},"gitHead":"6a53e95fac5c1f3264d5e977df7da8a420776e4b","scripts":{"dev":"tsup index.ts mcp-client-manager/index.ts --watch --format esm,cjs --dts --sourcemap --out-dir dist --external @modelcontextprotocol/sdk --external ai","build":"npm run build:packages && npm run build:bundle","clean":"rm -rf dist","clean:all":"npm run clean --silent && npm run --prefix ./mcp-client-manager clean --silent","build:bundle":"tsup index.ts mcp-client-manager/index.ts --clean --format esm,cjs --dts --sourcemap --out-dir dist --external @modelcontextprotocol/sdk --external ai","build:packages":"npm run --prefix ./mcp-client-manager build","prepublishOnly":"npm run build"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"repository":{"url":"git+https://github.com/MCPJam/inspector.git","type":"git","directory":"sdk"},"_npmVersion":"11.6.0","description":"Official MCPJam SDK with reusable client utilities","directories":{},"sideEffects":false,"_nodeVersion":"24.7.0","dependencies":{"@modelcontextprotocol/sdk":"^1.17.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","typescript":"^5.6.3"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.1.3_1760931896418_0.8507751743873664","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@mcpjam/sdk","version":"0.1.4","author":{"url":"https://mcpjam.com","name":"MCPJam"},"license":"Apache-2.0","_id":"@mcpjam/sdk@0.1.4","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"homepage":"https://mcpjam.com","bugs":{"url":"https://github.com/MCPJam/inspector/issues"},"dist":{"shasum":"1126b6f15bbf87424f30eafdfae83f42bfaca911","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-0.1.4.tgz","fileCount":14,"integrity":"sha512-/QJ+zbPx6Scl9FqvecOThSyLi5h8LkUS9Slzpz8p/8bmASm0iO9jzpR1xIhmtdjTbOfjNTClZOjgRZ1DKkDorg==","signatures":[{"sig":"MEQCIDSC6ff9DsDONx5JzcxuzHvNQWWOp6j+IdhNLuGzAOWUAiBzViwxrvmxfm3FkxxZU8akc3LPfKMxaocIyUim9gIqlg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":560493},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./package.json":"./package.json","./mcp-client-manager":{"types":"./dist/mcp-client-manager/index.d.ts","import":"./dist/mcp-client-manager/index.js","require":"./dist/mcp-client-manager/index.cjs"}},"gitHead":"ce36fef795dafd3e492393926d87e2e282e4f3ee","scripts":{"dev":"tsup --config tsup.config.ts --watch","build":"npm run clean --silent && tsup --config tsup.config.ts","clean":"rm -rf dist","prepublishOnly":"npm run build"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"repository":{"url":"git+https://github.com/MCPJam/inspector.git","type":"git","directory":"sdk"},"_npmVersion":"11.6.0","description":"Official MCPJam SDK with reusable client utilities","directories":{},"sideEffects":false,"_nodeVersion":"24.7.0","dependencies":{"ai":"^5.0.76","@modelcontextprotocol/sdk":"^1.17.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","typescript":"^5.6.3"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.1.4_1761062417835_0.643145308647673","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@mcpjam/sdk","version":"0.8.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@0.8.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"0d5f1b1ee82dd68de54549d98898a9d4471f3845","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-0.8.0.tgz","fileCount":8,"integrity":"sha512-Esqta/a+Q+dljbGFrLZqgvm5poxin3gmKRTBjm625lMUJoMeKQh5dxxKTIZ52nSVFNNnJhpUhloD2NOAEtN+vg==","signatures":[{"sig":"MEYCIQDgksFp+GTBN8oNcf8mGc6feCfiPu0IgU8rVy9jIyiQSQIhAJoXgqoKgh7OAEyz6WLp4fQZo1g37jceeHgGFxp674Yd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":730986},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"d120b3be1908beba00f6abcce104f1e2befdfd65","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"jest","build":"tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"jest --watch","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.6.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.7.0","dependencies":{"ai":"^5.0.123","zod":"^4.1.12","@ai-sdk/xai":"^2.0.29","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","ollama-ai-provider-v2":"^1.5.2","@modelcontextprotocol/sdk":"^1.25.3","@openrouter/ai-sdk-provider":"^1.2.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@typescript-eslint/parser":"^8.53.1","@typescript-eslint/eslint-plugin":"^8.53.1"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.8.0_1769463819619_0.656414139952463","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"@mcpjam/sdk","version":"0.8.1","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@0.8.1","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"d0875fc318a3fc2001439d19bd0c13e3cdfefb1e","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-0.8.1.tgz","fileCount":8,"integrity":"sha512-e7yndxehDYevIS1qdcqWXvMvnli5bWNmXIhu1jKSs2cvGCff5lb0XzBZkkOBIupbbB65owJHCh19YmYTGag0Aw==","signatures":[{"sig":"MEUCIQDK8LJwsVsCnUIM8IU1yg/6uOVkSqyvctUTXdDXoWMHPAIgIvSZL18/ACTpFGhmMG4fLORJK3Pwi8l6lIFGa5nT1vc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":733338},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"3a19e857e8f94a02a0e9609f01335ba81258576e","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"jest","build":"tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"jest --watch","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.6.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.7.0","dependencies":{"ai":"^6.0.50","zod":"^4.1.12","@ai-sdk/xai":"^2.0.29","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","ollama-ai-provider-v2":"^1.5.2","@modelcontextprotocol/sdk":"^1.25.3","@openrouter/ai-sdk-provider":"^2.0.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@typescript-eslint/parser":"^8.53.1","@typescript-eslint/eslint-plugin":"^8.53.1"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.8.1_1769712036129_0.07394852417631137","host":"s3://npm-registry-packages-npm-production"}},"0.8.2":{"name":"@mcpjam/sdk","version":"0.8.2","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@0.8.2","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"651bf5938699bd2c4401ed39e09cce2bf9927fac","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-0.8.2.tgz","fileCount":8,"integrity":"sha512-chY46gNKD/tCd1YyX1e6rFDQiI9vhuTk8Iwvc/gMQ0UhSYqsTuMrcWzLNKayVF4hOtJgRBf2sEWzLT3KQKwGLg==","signatures":[{"sig":"MEQCIDKCwpYRCHuoEcx//moIUZzWcUDxIoB5HTXmbEYEneC7AiB6NsEyGyE/qBTWKLaQGJLOxxhAcXCYJw0Ll91guwZt6Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":735605},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"7160f586fbef8f9352a246d590a97ef15cffc38c","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"jest","build":"tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"jest --watch","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.6.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.7.0","dependencies":{"ai":"^6.0.50","zod":"^4.1.12","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","ollama-ai-provider-v2":"^1.5.2","@modelcontextprotocol/sdk":"^1.25.3","@openrouter/ai-sdk-provider":"^2.0.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@typescript-eslint/parser":"^8.53.1","@typescript-eslint/eslint-plugin":"^8.53.1"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.8.2_1770243696209_0.8255743387256227","host":"s3://npm-registry-packages-npm-production"}},"0.8.3":{"name":"@mcpjam/sdk","version":"0.8.3","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@0.8.3","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"7368cea2caf022cd12f29269d7f6f388f074d85d","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-0.8.3.tgz","fileCount":8,"integrity":"sha512-c5EMaJZjs/GazOA65Cv/C4vmZIQ9sYflHw81GM1EMzfWJ8ixTzhDzvXzBHgqgMiPJd7VLO7aItG9CpJWu0BJBg==","signatures":[{"sig":"MEYCIQCLo2joo6+W0F/zqnXLAKB1fO2uzIUp2kFaNksltsmMuwIhAKfmt8RJqpNjDNoOrYTXeNWMtJQGiCA0/omEZwAVJ/Dv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":736475},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"fe3b7905d4cc10f94fbfb7321b566f33a92d7790","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"jest","build":"tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"jest --watch","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.6.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.7.0","dependencies":{"ai":"^6.0.50","zod":"^4.1.12","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","ollama-ai-provider-v2":"^1.5.2","@modelcontextprotocol/sdk":"^1.26.0","@openrouter/ai-sdk-provider":"^2.0.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@typescript-eslint/parser":"^8.53.1","@typescript-eslint/eslint-plugin":"^8.53.1"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.8.3_1770405254158_0.21220188923815453","host":"s3://npm-registry-packages-npm-production"}},"0.8.4":{"name":"@mcpjam/sdk","version":"0.8.4","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@0.8.4","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"103f8c82f1c77932ede9955496409205c9b01308","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-0.8.4.tgz","fileCount":8,"integrity":"sha512-fbo7TM1xHKlOuqM6kiu+fPuoT8fLbk1eck/JRMG5h3sua6eD3zYTjcLSf77NjPiP8SHzlkYIMF7y6QjbAYMaLA==","signatures":[{"sig":"MEUCICap9+8E4WQNlDy8lTTiV228hx41ydPhreGvaN1WGmmKAiEA0NRcalBGW8WP2ggOZV/p0HhT8KKIrUL55i6OloGsZ4w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":736439},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"165f7115658f326a7c6ce921681d9ed44cef5331","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"jest","build":"tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"jest --watch","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.6.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.7.0","dependencies":{"ai":"^6.0.50","zod":"^4.1.12","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","ollama-ai-provider-v2":"^1.5.2","@modelcontextprotocol/sdk":"^1.26.0","@openrouter/ai-sdk-provider":"^2.2.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@typescript-eslint/parser":"^8.53.1","@typescript-eslint/eslint-plugin":"^8.53.1"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.8.4_1770681950430_0.9230471704803376","host":"s3://npm-registry-packages-npm-production"}},"0.8.5":{"name":"@mcpjam/sdk","version":"0.8.5","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@0.8.5","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"329ef272e70284224e40f1a71a18980219573732","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-0.8.5.tgz","fileCount":14,"integrity":"sha512-+qJf7G29m55HChzWFPm6+zt0NDiHvs8+v8RIE6hjHAx1UvZppCcyWAHritkIh+DpSTxDWt1DawlV2xQeKRbQCA==","signatures":[{"sig":"MEYCIQCA8d9sbhLS/bu3wHog2mI+/7j3HuECa46+viQObUsfIwIhAJ/DLfn1/CfkGre06Wih6x0f5awVMdFh5pQRXPCOEtDE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1055127},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.mjs","require":"./dist/browser.js"}},"gitHead":"19306c898780e67f6c31b02a210daf1e6c508b87","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"jest","build":"tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"jest --watch","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.6.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.7.0","dependencies":{"ai":"^6.0.50","zod":"^4.1.12","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","ollama-ai-provider-v2":"^1.5.2","@modelcontextprotocol/sdk":"^1.26.0","@openrouter/ai-sdk-provider":"^2.2.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@typescript-eslint/parser":"^8.53.1","@typescript-eslint/eslint-plugin":"^8.53.1"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.8.5_1770931120165_0.06698606994238254","host":"s3://npm-registry-packages-npm-production"}},"0.8.6":{"name":"@mcpjam/sdk","version":"0.8.6","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@0.8.6","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"c736bb83dd5c56f267e375a8de2428dfe58f8dba","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-0.8.6.tgz","fileCount":8,"integrity":"sha512-cGYZAggv0fhparPmPqAedXLXJN9fwe8tKvHBtu6tG+PQ3vKTM3vKrRGR3BG8UXXc3PRLNZkfRQCd1yUS+4mjQw==","signatures":[{"sig":"MEUCIGBvgHhj1R5Eu8UOytDiNlyNof2MwboLXDkk4WGt8RTPAiEA4d5dlyGclM0waJIqDhOoCy6emhruQ7ehezOiCpiy+3E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":737897},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"4819b9cd8e16d57fc819fd3149b2297f35f8d840","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"jest","build":"tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"jest --watch","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"10.8.2","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"20.20.0","dependencies":{"ai":"^6.0.50","zod":"^4.1.12","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","ollama-ai-provider-v2":"^1.5.2","@modelcontextprotocol/sdk":"^1.26.0","@openrouter/ai-sdk-provider":"^2.2.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@typescript-eslint/parser":"^8.53.1","@typescript-eslint/eslint-plugin":"^8.53.1"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.8.6_1771836218182_0.14056071875286658","host":"s3://npm-registry-packages-npm-production"}},"0.8.7":{"name":"@mcpjam/sdk","version":"0.8.7","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@0.8.7","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"3fd226ba068cf7df4c233cc8792461760a40fcfd","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-0.8.7.tgz","fileCount":14,"integrity":"sha512-DE6xkUIaLw274zepLqb25F7yXxFC4+vR6eTEle+fhCR5QFUT3VvaHkJ5D3djZ4lFrE/UC/OglyegrhUtmYP6nw==","signatures":[{"sig":"MEQCIAGgu8FXFP1j8MSj4sYS+EndMJAUn4dXgveaJUa+AWYqAiBY0psHctEs+vG3HC92Ky2QYts6ym8tK4UBEACwM0cHmw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1446878},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.mjs","require":"./dist/skill-reference.js"}},"gitHead":"11cedc04f4ba61177263251a0ad353aa5944662e","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"jest","build":"tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"jest --watch","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"jest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.50","zod":"^4.1.12","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","ollama-ai-provider-v2":"^1.5.2","@modelcontextprotocol/sdk":"^1.26.0","@openrouter/ai-sdk-provider":"^2.2.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@typescript-eslint/parser":"^8.53.1","@typescript-eslint/eslint-plugin":"^8.53.1"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.8.7_1773089372262_0.7709782363623943","host":"s3://npm-registry-packages-npm-production"}},"0.8.8":{"name":"@mcpjam/sdk","version":"0.8.8","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@0.8.8","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"b8cd696dda0d845f545d2ef57e6e87dffb060961","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-0.8.8.tgz","fileCount":14,"integrity":"sha512-m28LVmGV5iz/8gchzHnnTjZHyZOeGIFOsIFO873O1j1qDpa0z0FEomdN7M3+p84jtar3sCJlsrTB3PSeLmH3LA==","signatures":[{"sig":"MEYCIQCMZR8I5YDAp024z6dX39sBZcdhCEc7QyEf0mV0dV5p9AIhAKmGnWqy6yHLaFBLBs9vHLQ2rUrXxdqgn9XY0KIVxmXN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1522197},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.mjs","require":"./dist/skill-reference.js"}},"gitHead":"07623a2987777bffa8458dc64a6250bfd0740af3","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"jest","build":"tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"jest --watch","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"jest --coverage","prepublishOnly":"npm run build","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.50","zod":"^4.1.12","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","ollama-ai-provider-v2":"^1.5.2","@modelcontextprotocol/sdk":"^1.26.0","@openrouter/ai-sdk-provider":"^2.2.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@typescript-eslint/parser":"^8.53.1","@typescript-eslint/eslint-plugin":"^8.53.1"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.8.8_1773173464440_0.15330754264403001","host":"s3://npm-registry-packages-npm-production"}},"0.8.9":{"name":"@mcpjam/sdk","version":"0.8.9","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@0.8.9","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"8424762afabde2adf281640234aef9dc1c542b69","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-0.8.9.tgz","fileCount":14,"integrity":"sha512-lV62ktIgYQfS6gYCvtV/vmRbCncborlRf6yvDBYCoR3FYHwJeL2k0GEpRpuKVFg7mXR6HdO5BLHHctvTwbVnsg==","signatures":[{"sig":"MEYCIQCNffEXiZnE5obLHj0nR9wxg9zwHh6vl2TvIHvrx+f7dQIhAKcqHcQrWzMFOIPKPCDSxMbj3WdkKR7WfbUar+A3DzrC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1536850},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.mjs","require":"./dist/skill-reference.js"}},"gitHead":"1d37ab29d22c09ba53598f7d9088b9014e06b321","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"jest","build":"tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"jest --watch","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"jest --coverage","prepublishOnly":"npm run build","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.50","zod":"^4.1.12","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","ollama-ai-provider-v2":"^1.5.2","@modelcontextprotocol/sdk":"^1.26.0","@openrouter/ai-sdk-provider":"^2.2.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@typescript-eslint/parser":"^8.53.1","@typescript-eslint/eslint-plugin":"^8.53.1"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.8.9_1773245202280_0.8481450910846269","host":"s3://npm-registry-packages-npm-production"}},"0.8.10":{"name":"@mcpjam/sdk","version":"0.8.10","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@0.8.10","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"19adb1b897b0eb1a0926f6fa4e400baf76e0ac4a","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-0.8.10.tgz","fileCount":14,"integrity":"sha512-7ZvSfPJsyJ4PQ6tilq9zrvhbOwbT3m4GVa+h/mwTHgYibV/WO5gKtP6QMUdfSiL3XoRhfQKP8hb1XUSlWBiNBg==","signatures":[{"sig":"MEQCIGbWW6Q9YMxrD2+d9FTuWowJTzrswvC0KlZ3YGRPrfdiAiBi2sShxKs8QL53sPEHOVUAGAOGOODu8ha9nVp8scGfMw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1573296},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.mjs","require":"./dist/skill-reference.js"}},"gitHead":"034bd70637b9b0a1696eff3582075d3666e61949","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"jest","build":"tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"jest --watch","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"jest --coverage","prepublishOnly":"npm run build","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.50","zod":"^4.1.12","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","ollama-ai-provider-v2":"^1.5.2","@modelcontextprotocol/sdk":"^1.26.0","@openrouter/ai-sdk-provider":"^2.2.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@typescript-eslint/parser":"^8.53.1","@typescript-eslint/eslint-plugin":"^8.53.1"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.8.10_1773254672543_0.03076599405813263","host":"s3://npm-registry-packages-npm-production"}},"0.8.11":{"name":"@mcpjam/sdk","version":"0.8.11","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@0.8.11","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"536a75342e6ff9c03f0389f109b32f1bdcefbeaa","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-0.8.11.tgz","fileCount":22,"integrity":"sha512-vJDE12xi+igFozlKOzRZFsE7J0FrEhQtOKxTLBK8VSXBK+km8Iphc3f9KRM0P54nvPdUYvx3Dm5EwZI6Rhre7g==","signatures":[{"sig":"MEUCIQCy1bs/Z+XyLrqm2pFOSv722YGY4LuRNhdD7fFsY+TD9QIgTr7txek16BZrR5wO7S7/wDmilreXaaqxG9PQ4BBZ+4o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1615553},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.mjs","require":"./dist/browser.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.mjs","require":"./dist/skill-reference.js"}},"gitHead":"abee51a4acd51f0d97767d330cc5a7a58ea0b3b4","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"jest","build":"tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"jest --watch","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"jest --coverage","prepublishOnly":"npm run build","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.50","zod":"^4.1.12","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","ollama-ai-provider-v2":"^1.5.2","@modelcontextprotocol/sdk":"^1.26.0","@openrouter/ai-sdk-provider":"^2.2.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@typescript-eslint/parser":"^8.53.1","@typescript-eslint/eslint-plugin":"^8.53.1"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.8.11_1774381777273_0.9105603606699049","host":"s3://npm-registry-packages-npm-production"}},"0.8.12":{"name":"@mcpjam/sdk","version":"0.8.12","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@0.8.12","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"c0118b0e023a37b405346cb29629b7e918d683c0","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-0.8.12.tgz","fileCount":22,"integrity":"sha512-iu7w0vHfJcZM+or8hkDjd7FipWyCNjApo/BMlhs4CDLD7pWXadRulkqa6ROQZDfOp3Y/Ca0xGePRn6x9molxLQ==","signatures":[{"sig":"MEUCIQC7EBeLJc9xyZSmOpRWdY6PuZKTW94NpG/0mms6h0h4+wIgA2aPGTo2KduzZy+Ii0NPlZHIWHbBegfNHr9gu1Am+oA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1654023},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.mjs","require":"./dist/browser.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.mjs","require":"./dist/skill-reference.js"}},"gitHead":"84396dc7fa71b6f20ed38d0970ed0690cfeaefa0","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"jest","build":"tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"jest --watch","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"jest --coverage","prepublishOnly":"npm run build","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.50","zod":"^4.1.12","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","ollama-ai-provider-v2":"^1.5.2","@modelcontextprotocol/sdk":"^1.26.0","@openrouter/ai-sdk-provider":"^2.2.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@typescript-eslint/parser":"^8.53.1","@typescript-eslint/eslint-plugin":"^8.53.1"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.8.12_1774486406216_0.11286466141766782","host":"s3://npm-registry-packages-npm-production"}},"0.8.13":{"name":"@mcpjam/sdk","version":"0.8.13","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@0.8.13","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"8e0155543d88afc5591d4d1251a6766f400fd07d","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-0.8.13.tgz","fileCount":22,"integrity":"sha512-It8VSLhrh9prmV9Saa9+o19oIkUHbIiE2RIMImGJDLqb53x7mzTGCXflpveraoL7rUbWx5gmTtwKXD70lLQcjA==","signatures":[{"sig":"MEUCIHDIM3lMpr0lwpTyqd1xpGJREjVKfZIxY9+lK/hBHh3uAiEAp3vZEFvkiYTT79h6pbgFe5EJfA5fEpaLoz2shDkDq/g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1934361},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.mjs","require":"./dist/browser.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.mjs","require":"./dist/skill-reference.js"}},"gitHead":"5bf5d6f28597d2c1d83fb1597b1e8377169b7ad2","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"jest","build":"tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"jest --watch","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"jest --coverage","prepublishOnly":"npm run build","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.50","zod":"^4.1.12","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","ollama-ai-provider-v2":"^1.5.2","@modelcontextprotocol/sdk":"^1.26.0","@openrouter/ai-sdk-provider":"^2.2.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@typescript-eslint/parser":"^8.53.1","@typescript-eslint/eslint-plugin":"^8.53.1"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.8.13_1774770704996_0.2374406730884504","host":"s3://npm-registry-packages-npm-production"}},"0.8.14":{"name":"@mcpjam/sdk","version":"0.8.14","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@0.8.14","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"ea8e6a53ebf790fbe91ad658154d2ec5d1498365","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-0.8.14.tgz","fileCount":22,"integrity":"sha512-x2tEX6SRrh7dA0/HJfoHZH/E8cnXucE+oAGyl5QYpl19VkWDNjgAY/jbTx3fnQFBJ4ei+D0WRNRqCPm/D+dq5Q==","signatures":[{"sig":"MEQCIHcPRHfxYIfoj/FJHqelhYCJGFpKeMwscans5BQeWyTcAiA42R8H6AGKbjJW+ltEruOQLPLR8ufj2ysAFkNFaDwupw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1957180},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.mjs","require":"./dist/browser.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.mjs","require":"./dist/skill-reference.js"}},"gitHead":"fbe073dbcdd8ea663821e0c206686835cbdbf34b","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"jest","build":"tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"jest --watch","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"jest --coverage","prepublishOnly":"npm run build","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","zod":"^4.1.12","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","ollama-ai-provider-v2":"^1.5.2","@modelcontextprotocol/sdk":"^1.26.0","@openrouter/ai-sdk-provider":"^2.2.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@typescript-eslint/parser":"^8.53.1","@typescript-eslint/eslint-plugin":"^8.53.1"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.8.14_1774949775837_0.8932346807130613","host":"s3://npm-registry-packages-npm-production"}},"0.8.16":{"name":"@mcpjam/sdk","version":"0.8.16","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@0.8.16","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"3be82f877c3746e7cd8f4d5698e3ea8efc799863","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-0.8.16.tgz","fileCount":22,"integrity":"sha512-KuQ39N9jDm5O38QBlur98Hl0p/Tp1MxoxoER9uU00LfcXsJsx57ILo+qCv6RXB5LkHZtkffZEPMNSS8wUW46gA==","signatures":[{"sig":"MEYCIQDOVopF9v+bjcEjNPcwKzMDLW4g94RdzQ/vPLQmz9IQbgIhAJkV4ykRQzTdtOh5kw22FPX96F3m2gxDQXdPuqDT5WI9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4567425},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.mjs","require":"./dist/browser.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.mjs","require":"./dist/skill-reference.js"}},"gitHead":"a325bfc3f80a51d2f3c43eb3beff558cafd088ee","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"jest","build":"tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"jest --watch","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"jest --coverage","prepublishOnly":"npm run build","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","zod":"^4.1.12","open":"^10.2.0","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","ollama-ai-provider-v2":"^1.5.2","@modelcontextprotocol/sdk":"^1.26.0","@openrouter/ai-sdk-provider":"^2.2.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@typescript-eslint/parser":"^8.53.1","@typescript-eslint/eslint-plugin":"^8.53.1"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.8.16_1775803193753_0.9886724102950677","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@mcpjam/sdk","version":"0.9.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@0.9.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"b37907333e07ef416f6ae19a4a8cb495215ea549","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-0.9.0.tgz","fileCount":22,"integrity":"sha512-G9lEt+Yj6eKb+dS2+84w/BFw1FG3j97OjwCsyfHWEUzdM8APVLcP61ZWcVgKyLnkYH6co+/3iLG7N31cQb9/Lw==","signatures":[{"sig":"MEQCIBLZTLbomS+ujcYlObGtuQhJ/cJYBe3aHCBj+ZjT4XvrAiB58AxlNuIuGbqd0awvvz5rk1CD74c3/O9FGa0eLkLYsg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4574018},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.mjs","require":"./dist/browser.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.mjs","require":"./dist/skill-reference.js"}},"gitHead":"2465359ec9ff8a47a84aa3911a3cf64fc2e9b3a8","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"jest","build":"tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"jest --watch","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"jest --coverage","prepublishOnly":"npm run build","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","zod":"^4.1.12","open":"^10.2.0","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","ollama-ai-provider-v2":"^1.5.2","@modelcontextprotocol/sdk":"^1.26.0","@openrouter/ai-sdk-provider":"^2.2.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@typescript-eslint/parser":"^8.53.1","@typescript-eslint/eslint-plugin":"^8.53.1"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.9.0_1775811499627_0.89496693324955","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"@mcpjam/sdk","version":"0.9.1","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@0.9.1","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"c8e2130db25196c0fa508a9ab4480f57fbb87e0e","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-0.9.1.tgz","fileCount":22,"integrity":"sha512-7cy516ZB+lZI1lc0uR19w455dHBPlUIErVKMN25HuZlD5z9nm69/ajz/SROkoVGFUkk4OPEYM9XxxXrLSL4rSQ==","signatures":[{"sig":"MEUCIQC8ulJKSSiCE3NU2o76jDUhdXsE8sdxi2feAeXScNMuQwIgD0HzJ3Kh6qSmQT6MPa+wD5jG8NXm6o5xRVR34VraQSg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4663502},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.mjs","require":"./dist/browser.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.mjs","require":"./dist/skill-reference.js"}},"gitHead":"41757b41ce6f1a7da4506d39aece3b5e38dba93a","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"jest","build":"tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"jest --watch","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"jest --coverage","prepublishOnly":"npm run build","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","zod":"^4.1.12","open":"^10.2.0","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","ollama-ai-provider-v2":"^1.5.2","@modelcontextprotocol/sdk":"^1.26.0","@openrouter/ai-sdk-provider":"^2.2.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@typescript-eslint/parser":"^8.53.1","@typescript-eslint/eslint-plugin":"^8.53.1"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.9.1_1775869077228_0.5144452466997163","host":"s3://npm-registry-packages-npm-production"}},"0.9.2":{"name":"@mcpjam/sdk","version":"0.9.2","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@0.9.2","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"9224fb2c19cd8f297f62a82b91c48821c043ff7f","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-0.9.2.tgz","fileCount":30,"integrity":"sha512-mDJHyF2E56+H9EBZbK4AZwnkQkhOGCeYsLpWM+4VUY0Kv9/6H7+gpc/e2m00g6CLNle8NpwU0iW87V7Q+JndSg==","signatures":[{"sig":"MEUCIGEca/GIIezvNj4sys3k37aFWBNtGnvHSg+UGI7QJ1yAAiEA1P6PMgkUTenBtusX1nT4w0SAqR2+VOngYyYGpd4IC/0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5991566},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.mjs","require":"./dist/browser.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.mjs","require":"./dist/operations.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.mjs","require":"./dist/skill-reference.js"}},"gitHead":"6d7db369a0277e53d3e82e6bf6a1b416c084c685","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"jest","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"jest --watch","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"jest --coverage","prepublishOnly":"npm run build","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","zod":"^4.1.12","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","ollama-ai-provider-v2":"^1.5.2","@modelcontextprotocol/sdk":"^1.26.0","@openrouter/ai-sdk-provider":"^2.2.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@typescript-eslint/parser":"^8.53.1","@typescript-eslint/eslint-plugin":"^8.53.1"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.9.2_1775944989589_0.12718754965995416","host":"s3://npm-registry-packages-npm-production"}},"0.9.3":{"name":"@mcpjam/sdk","version":"0.9.3","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@0.9.3","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"160b2727719b0e3a6d11198a994ec6e7c1d94cf9","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-0.9.3.tgz","fileCount":30,"integrity":"sha512-T1wiRVmOsaCf1S5Lx7or3y1Gj5+1OwkEmFYNbxRlDi7zZA5j9bKLNIeC3a78vPNqF/5Xbq8RyGX6lWe25J8vTw==","signatures":[{"sig":"MEUCIQC98DOq/rJXSnfrkYOPAkuIMRkr5zJ3ts1Uo+zKaJ+frgIgMYZMfJTqYoKusjih3dpIYGKrBykDhWg3yqDRvPk8FGw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6387315},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.mjs","require":"./dist/browser.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.mjs","require":"./dist/operations.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.mjs","require":"./dist/skill-reference.js"}},"gitHead":"9fb9dd7ccb1120462eca3ec02a92f61dbdc38a8b","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"jest","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"jest --watch","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"jest --coverage","prepublishOnly":"npm run build","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","zod":"^4.1.12","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","ollama-ai-provider-v2":"^1.5.2","@modelcontextprotocol/sdk":"^1.26.0","@openrouter/ai-sdk-provider":"^2.2.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@typescript-eslint/parser":"^8.53.1","@typescript-eslint/eslint-plugin":"^8.53.1"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.9.3_1776057679767_0.49746742574907943","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"@mcpjam/sdk","version":"0.10.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@0.10.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"f32b0f9713b784cca910cbe35e9b4c000fef88c3","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-0.10.0.tgz","fileCount":30,"integrity":"sha512-lreF/fd2OEH0QM6EDER50oC4fL5yBfgZlfqfpaQsiwrh0Xf+jrdftomT7SDrmLh68qOnO3w1Rk335B2xDaLyWg==","signatures":[{"sig":"MEQCICfzDpFSxWcl3RF3ltdvlIyg2sg4nFQAfkX4afXUuUjEAiBpnhPinrSLzWyUK2sPW1E1zoKJqMn/7Gp0mQex5DqNaQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7004837},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.mjs","require":"./dist/browser.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.mjs","require":"./dist/operations.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.mjs","require":"./dist/skill-reference.js"}},"gitHead":"6bd26bb48162d53cc14788bb9e4e1c4788f82971","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"jest","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"jest --watch","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"jest --coverage","prepublishOnly":"npm run build","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","zod":"^4.1.12","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","ollama-ai-provider-v2":"^1.5.2","@modelcontextprotocol/sdk":"^1.26.0","@openrouter/ai-sdk-provider":"^2.2.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@typescript-eslint/parser":"^8.53.1","@typescript-eslint/eslint-plugin":"^8.53.1"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.10.0_1776307347694_0.8637048064423769","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@mcpjam/sdk","version":"1.1.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@1.1.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"2f8a684be3cc47943489bc732d880b2396b004e1","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-1.1.0.tgz","fileCount":21,"integrity":"sha512-DVM6GlpQ9QCM5cko56ZLVO8HAqbWTXI3ZWVEZk11hgTpmuyqRx6beQDkdXWNXO8okFHebLmZRciNROZeIxGFrA==","signatures":[{"sig":"MEUCIQCZIVNvNl48E658TSqLQwuY4xwKD/llVV5HnRDYl+ibJQIgduR7iMHf4/HHpf0keWIzbDKkD7AHoSnwB5ajJdr4fys=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4190582},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"}},"gitHead":"b351db9ad0c6ed448621f4cc050c8a43c27de60f","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"await import('@mcpjam/sdk'); await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker');\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","zod":"^4.1.12","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","ollama-ai-provider-v2":"^1.5.2","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"^2.0.0-alpha.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.4","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"^2.0.0-alpha.2","@modelcontextprotocol/server":"^2.0.0-alpha.2","@typescript-eslint/eslint-plugin":"^8.53.1"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.1.0_1777277668219_0.47594850769826014","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@mcpjam/sdk","version":"1.2.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@1.2.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"b3280004ad80aa3d4da658659ded1c44c670000b","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-1.2.0.tgz","fileCount":21,"integrity":"sha512-h3L5DzxUqqO/WHxjjwUXQP9sMgCSpOnR0wBbwarr7cuZ4F4A83gQ2W0VXgDZJRnpvQ5SpXtBKBywPxUeYrmS8g==","signatures":[{"sig":"MEQCIC6tVji+Y7yuKIqqtPgQ4tcK53iNd90VT7mXk47gecEhAiApHubuNQgoPEZa+0LZz3SCNsm0ENw06moItnBCG+xGyA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4190621},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"}},"gitHead":"ea8f9f1b45b194d93d2dc285d484be1bc3276def","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"await import('@mcpjam/sdk'); await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker');\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","zod":"^4.1.12","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"^2.0.0-alpha.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.4","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"^2.0.0-alpha.2","@modelcontextprotocol/server":"^2.0.0-alpha.2","@typescript-eslint/eslint-plugin":"^8.53.1"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.2.0_1777287577674_0.6344491914407806","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@mcpjam/sdk","version":"1.3.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@1.3.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"ab4e34b37f1059b1e6b8b901db756f3ab981ddbe","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-1.3.0.tgz","fileCount":21,"integrity":"sha512-GYIBi82F8rm7F5xtvbF54Z8tjsTl/JUTShYBd7DnC28Z5h212RT9yb27jt8DVesN8AIArzpItZZTGjXCY0YrPQ==","signatures":[{"sig":"MEQCIEaw8ltIEvm1dftP2FynJrDeModR29HxDg2kT7oOuRDlAiAZo1mrMzp4uhW4zYR1dEaDD5v460nhPCbarYn/bex3Xw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4190621},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"}},"gitHead":"31a643814541f5d7c83b757d90cd403420381f30","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"await import('@mcpjam/sdk'); await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker');\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","zod":"^4.1.12","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"^2.0.0-alpha.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.4","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"^2.0.0-alpha.2","@modelcontextprotocol/server":"^2.0.0-alpha.2","@typescript-eslint/eslint-plugin":"^8.53.1"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.3.0_1777318941335_0.20941059925901273","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@mcpjam/sdk","version":"1.2.1","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@1.2.1","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"ae39b00b4c6f111814a7a2f62c42414c72ae4506","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-1.2.1.tgz","fileCount":21,"integrity":"sha512-BUwH5aJ1kk6sMB86K6QEZw8r5HB5AMryaVkl4Oc/juTCioKukonPIHdGr0AQRqKKMGQaszrlbhwAA2VT+ebHRA==","signatures":[{"sig":"MEYCIQCdHDHOJnQ0DvQ8ravs4cp+VDJ41Z3uIY0ibJiB2r0lSwIhAMooZOs+gQEbTxh3QwykNI7SrZpkEYiNrMAcZjtnHlg4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4190621},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"}},"gitHead":"aeffea04724ebc5f7f372101cd1d4eb46eb90ad3","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"await import('@mcpjam/sdk'); await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker');\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","zod":"^4.1.12","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"^2.0.0-alpha.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.4","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"^2.0.0-alpha.2","@modelcontextprotocol/server":"^2.0.0-alpha.2","@typescript-eslint/eslint-plugin":"^8.53.1"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.2.1_1777329085168_0.39764838872690356","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"@mcpjam/sdk","version":"1.2.2","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@1.2.2","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"871db2fa6833c250906000e922e30307a126c145","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-1.2.2.tgz","fileCount":21,"integrity":"sha512-vH7TFjQU2PArgRImstdM1PJ0dEmTx8HzvSeSF51DMvew6cqi6T/LU3w4KITh1wd6+0stZRNa4bc5x6/mon3K7A==","signatures":[{"sig":"MEQCIHEq4DWcippWbXMixR7AjsmNrstc0IW/FpcVssWyXQhUAiA76J+6cdTYAN7KzGaOwGF5VpgN80MCo23q1W44pyVURQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4193515},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"}},"gitHead":"045c944de59596e7433371e449111256a62ea5fc","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"await import('@mcpjam/sdk'); await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker');\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","zod":"^4.1.12","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"^2.0.0-alpha.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.4","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"^2.0.0-alpha.2","@modelcontextprotocol/server":"^2.0.0-alpha.2","@typescript-eslint/eslint-plugin":"^8.53.1"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.2.2_1777340150919_0.6417694658284059","host":"s3://npm-registry-packages-npm-production"}},"1.2.3":{"name":"@mcpjam/sdk","version":"1.2.3","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@1.2.3","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"d280fb301bac5f7d0ebcc68839e2cd73e0ecbdb2","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-1.2.3.tgz","fileCount":21,"integrity":"sha512-/3x3xia/PecNBKeZBMz7dCdSSUTEEX88hIKhomOsX1EHfKeykYxUMf1TTVf1vnfH3/audQyPo3fu72BjWWef3g==","signatures":[{"sig":"MEUCIQDtI+FSo0wW3doR7ghF8SlXHcqZ+iP+xJBrNdpLftJtNQIgTQsGkPHN70b36wVOwvUYT2TG3x3VJxHM5JQwUikbG/U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4193992},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"}},"gitHead":"6962b4dd451b30e69e0c0627a12384867c2916b1","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"await import('@mcpjam/sdk'); await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker');\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","zod":"^4.1.12","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"^2.0.0-alpha.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.4","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"^2.0.0-alpha.2","@modelcontextprotocol/server":"^2.0.0-alpha.2","@typescript-eslint/eslint-plugin":"^8.53.1"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.2.3_1777360443708_0.04516305934236753","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@mcpjam/sdk","version":"1.3.1","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@1.3.1","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"88bb1fe22ba5590826dd2776c0ecbb33aee5d76f","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-1.3.1.tgz","fileCount":21,"integrity":"sha512-UTzNmoRFwjt4pHlyDCct236xfBJUraNouHoGj53SJbvN3Xo484fakPmI4F/kmQSW+B4JfPEaLzY4q0TlsVPkig==","signatures":[{"sig":"MEUCIDEaoUWx54fmV+rFM9+yVS61Ux5gp0NK2dpEPedFDR9sAiEAnmdjblQagSqlyrB5Nsy/bwITSGDo//3PSgaU6UU0DBQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4194320},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"}},"gitHead":"440005d2022bc455a36bb65bddfac9a675dcffb2","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"await import('@mcpjam/sdk'); await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker');\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.12.1","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"25.9.0","dependencies":{"ai":"^6.0.141","zod":"^4.1.12","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"^2.0.0-alpha.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.4","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"^2.0.0-alpha.2","@modelcontextprotocol/server":"^2.0.0-alpha.2","@typescript-eslint/eslint-plugin":"^8.53.1"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.3.1_1777363117401_0.7175985114104895","host":"s3://npm-registry-packages-npm-production"}},"1.3.2":{"name":"@mcpjam/sdk","version":"1.3.2","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@1.3.2","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"62aac86fb1464b26d5dd2181b0f7f2172f1e6cad","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-1.3.2.tgz","fileCount":25,"integrity":"sha512-yJeQztVAvrbcVsdr36PlnMr7znwsdvIMx4GmFIda4GB02BUOeAFWeLT1hlzOJKaLXsHfqVRE55KytiiaZ61fkQ==","signatures":[{"sig":"MEQCIGiVF8gk6aycXR5j8y/ooyE9n3c48dk7OxcSQWUfq/sUAiALcN1GygntIL1LsvG7RKkQQ1L5K0Cg3N3cpz2siZDeXA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4262722},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"}},"gitHead":"5325d28db36d55e1d05f11a916b5b63a459569ba","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"await import('@mcpjam/sdk'); await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory');\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","zod":"^4.1.12","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"^2.0.0-alpha.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.4","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"^2.0.0-alpha.2","@modelcontextprotocol/server":"^2.0.0-alpha.2","@typescript-eslint/eslint-plugin":"^8.53.1"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.3.2_1778124467994_0.7040968265408918","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@mcpjam/sdk","version":"1.5.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@1.5.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"89e6526de04467f3dd3686d4d48be7885b820436","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-1.5.0.tgz","fileCount":27,"integrity":"sha512-kyRt9sGVbXJ+AulnGMgUdCJHdrnrjiPEdV9mHlH+SbhixDa5VC82hbBvrnQzxUd2HMw8PBXOF7ebzRioZdaqqw==","signatures":[{"sig":"MEYCIQDaZLM4fnztndtaLeo+gFGG9IH+rpoGjysaBH3qKb+AtwIhAJZLQIR2P3RHIqZqdRtoG/ocgjiVkJ9Csivp5f6NxsEi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4340138},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"}},"gitHead":"b9ccd22d5c41635af1640da015e7fd214cc565f2","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"await import('@mcpjam/sdk'); await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers');\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","zod":"^4.1.12","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"^2.0.0-alpha.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.4","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"^2.0.0-alpha.2","@modelcontextprotocol/server":"^2.0.0-alpha.2","@typescript-eslint/eslint-plugin":"^8.53.1"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.5.0_1778627837307_0.25510100009338577","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"@mcpjam/sdk","version":"1.6.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@1.6.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"424aad3bdda345435e563468522211fdbc731bf6","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-1.6.0.tgz","fileCount":27,"integrity":"sha512-L3oj8tlPMy627Lzp/pd4Ri7Om4ENy8niaTsLI7k5whIORtiO4fjfJP3UxAFkWPBFGkrQ1s/A0p8Qhm/ZXfphdA==","signatures":[{"sig":"MEUCIQD5PzzocJuC6+tGz2eM064Z34bBZRx52GUg4HDKoM6wowIgL5NV9pQUM2fPtch4uzxfSWNAYoI9+yCQDQg0/ohNh8A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4453877},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"}},"gitHead":"86809eebf40459595fb0becd18d0fd9a55fb790e","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"await import('@mcpjam/sdk'); await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers');\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","zod":"^4.1.12","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"^2.0.0-alpha.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.4","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"^2.0.0-alpha.2","@modelcontextprotocol/server":"^2.0.0-alpha.2","@typescript-eslint/eslint-plugin":"^8.53.1"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.6.0_1778744175543_0.41007773883746856","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"@mcpjam/sdk","version":"1.7.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@1.7.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"3251eba7c43b2b16a83dac01a447b3c2b9554c21","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-1.7.0.tgz","fileCount":27,"integrity":"sha512-6Hbx8MZTUOquv3KJEAdhZMY6sBOZA5a8y1qfBntax8ezFayoxIOjgwjYXKhnVyUuIIYfIiKPaukoSFUkr2wxTQ==","signatures":[{"sig":"MEQCIAYLpe9NeiyM5wIIVF7WmN5RNqaAdIFg8i2tj87tW6SGAiAN2Y42gJQG4eisys+0LFq1+s2tjdpFGV9SusVo4y3vCw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4462335},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"}},"gitHead":"a8e358a7919cc17723b6328479e98193dcb376ca","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"await import('@mcpjam/sdk'); await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers');\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","zod":"^4.1.12","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"^2.0.0-alpha.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.4","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"^2.0.0-alpha.2","@modelcontextprotocol/server":"^2.0.0-alpha.2","@typescript-eslint/eslint-plugin":"^8.53.1"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.7.0_1779138875207_0.8214626404076881","host":"s3://npm-registry-packages-npm-production"}},"1.7.1":{"name":"@mcpjam/sdk","version":"1.7.1","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@1.7.1","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"51da7b6133f30cfa2fe5479f1d174632ca9745d8","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-1.7.1.tgz","fileCount":27,"integrity":"sha512-EKCT777mTkXcYO5BAZHtWLavStzNt2MSfhtqB1h2MgCOewhJSXw7guZJ2fuvhP1PVhcc7ZEBJ7pY4+bJpWCyvQ==","signatures":[{"sig":"MEUCIQDiXpkjqLaHhD4IBRIasUbe21MMTblOoO11ASS5kPxMGQIgFRUKNHaWNW4BBILv8Baf74Wq0Nz9Of1K2gfRc8MIQog=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4471288},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"}},"gitHead":"d73b650f5b0dbd2c089620dafa130b860d05f4f5","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"await import('@mcpjam/sdk'); await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers');\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","zod":"^4.1.12","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"^2.0.0-alpha.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.4","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"^2.0.0-alpha.2","@modelcontextprotocol/server":"^2.0.0-alpha.2","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.7.1_1779311040220_0.18166802862307363","host":"s3://npm-registry-packages-npm-production"}},"1.8.0":{"name":"@mcpjam/sdk","version":"1.8.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@1.8.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"961d4114ec3a59bee9dd145f66d36c65a4c4169a","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-1.8.0.tgz","fileCount":27,"integrity":"sha512-jee0JBiwXMyaPnBcT2Vem44iGt5U8HGK2E7KkmFaU31MKd0OXJgsx0w83uLUuhhtdT7BwUSRpHeW278lQyQVSg==","signatures":[{"sig":"MEYCIQCT4QdTPye9FffEQcX5TIoo1RFWkw9MtfZSP03F1qrO7gIhALuRbpFG/nwPmW1r1W8JYmg04rHeXkfDj6sEkW8ucedm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4473417},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"}},"gitHead":"64c70864cdb20a5fc72580128a74144e29a91d77","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"await import('@mcpjam/sdk'); await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers');\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","zod":"^4.1.12","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"^2.0.0-alpha.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.4","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"^2.0.0-alpha.2","@modelcontextprotocol/server":"^2.0.0-alpha.2","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.8.0_1779450188978_0.2558587917696882","host":"s3://npm-registry-packages-npm-production"}},"1.9.0":{"name":"@mcpjam/sdk","version":"1.9.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@1.9.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"2ac805b12e1acea3ed2cdf086621ae1f95a12fa5","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-1.9.0.tgz","fileCount":27,"integrity":"sha512-+KCYUIwgXyhVHSS8AGHj8qix1DSORQQva+WVXGbwcKynXgamozOqenbZNTdrRk+rzPqvhZOFvWG59ZdEw1hBDQ==","signatures":[{"sig":"MEYCIQCz1xLr+HyBc/ioUv+oo/zCKjV6Lf93n8NFvd0iPU69dQIhAPM4am2EH1D785Clmxv/G4dkYJamSjC6U5m3awtRKUUF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4879533},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"}},"gitHead":"5b266931eba7e12c17dd1fde187e14f423fff876","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"await import('@mcpjam/sdk'); await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers');\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","zod":"^4.1.12","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"^2.0.0-alpha.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.4","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"^2.0.0-alpha.2","@modelcontextprotocol/server":"^2.0.0-alpha.2","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.9.0_1779994828413_0.9842757852129354","host":"s3://npm-registry-packages-npm-production"}},"1.10.0":{"name":"@mcpjam/sdk","version":"1.10.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@1.10.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"e1a5c678219a917ddb69c777cce67b31d5b8aa0c","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-1.10.0.tgz","fileCount":31,"integrity":"sha512-r+JpC4aoj0WfUk9JVZezqxOtGWfx1K7Yrf5sfB5AgT+CdsFz8Fkd47BOl44QN/T6wdk12/gvO4EOj/cU0nvJmA==","signatures":[{"sig":"MEUCIE7GvbO6eI8E4IrWqT+B6v9DdL2qNCIhW3fHQycn8++5AiEA8m2/u4ECF8xUVmIRGqMZkDwlqlnj3oTW5sHHZH3ovYo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4973686},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"}},"gitHead":"e0cedcf3476a72bf38a66a9593ea16d1a2c2f6ac","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"await import('@mcpjam/sdk'); await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates');\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","zod":"^4.1.12","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"^2.0.0-alpha.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.4","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"^2.0.0-alpha.2","@modelcontextprotocol/server":"^2.0.0-alpha.2","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.10.0_1780366478991_0.35342841782537926","host":"s3://npm-registry-packages-npm-production"}},"1.10.1":{"name":"@mcpjam/sdk","version":"1.10.1","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@1.10.1","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"4a5035de5d2941d58a4cf1e14007c4cf3da1307e","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-1.10.1.tgz","fileCount":31,"integrity":"sha512-UnT+Am9177+bEdEbr2Vi4TOrQBuiEitpRYep31Iqv3DkeVFB09Akoe1Oal6y61DKSqIwGIWf0ZhIf2lwyuIz2A==","signatures":[{"sig":"MEUCIQDX0y7caTmkQP9V31nRaHa+0ynUJlylI0cJ/UYkhxwOOgIgD+LRl6+YqONlEWdwTc6FgUUEnpONIQRDC3e6OO6XlDo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5030558},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"}},"gitHead":"9a501f46086229ea3af6d2d6181fbd2bb7f21f0c","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"await import('@mcpjam/sdk'); await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates');\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","zod":"^4.1.12","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"^2.0.0-alpha.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.4","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"^2.0.0-alpha.2","@modelcontextprotocol/server":"^2.0.0-alpha.2","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.10.1_1780390628370_0.5722571561231076","host":"s3://npm-registry-packages-npm-production"}},"1.11.0":{"name":"@mcpjam/sdk","version":"1.11.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@1.11.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"ef3d0c92b5acb8f15464ec5f0ce2282ed1413c15","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-1.11.0.tgz","fileCount":39,"integrity":"sha512-qKrOoX9pJ4X3O1QB1eU/plkHNLeEbsXd5qHHre7dvU1gtJYAea0fi+ludZGVHUm8ljP9fPfGRLURZbsDmJLUyw==","signatures":[{"sig":"MEQCIDJTy0oGO6As3NK3Q10gJ5A/PCOj9MybMWnlh174xEgkAiAIri12M/sCWhLCeYpJuNkRnCrzgyaVeLIjuEOx7wCkcg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5583417},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"}},"gitHead":"9ad846a4d211335cac3da10b4009116b2d9dfcd6","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"await import('@mcpjam/sdk'); await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); await import('@mcpjam/sdk/host-config'); await import('@mcpjam/sdk/host-config/internal');\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","zod":"^4.1.12","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"^2.0.0-alpha.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.4","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"^2.0.0-alpha.2","@modelcontextprotocol/server":"^2.0.0-alpha.2","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.11.0_1780533898726_0.6908051402613096","host":"s3://npm-registry-packages-npm-production"}},"1.12.0":{"name":"@mcpjam/sdk","version":"1.12.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@1.12.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"59a33bb126b158d7906f9197b602cc181946b906","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-1.12.0.tgz","fileCount":40,"integrity":"sha512-CA+JlzyFHvUarD6xU+VK82gX3QMP4SgYyOfnxhycAC/qq3uF06DGwfpCwns9XEbbxNigjBpPwnt4SNE4HEBZMQ==","signatures":[{"sig":"MEUCIQD/zO6C+LJTxPj5ZC7M0I5YH6pkiwgUdtBIk3HZ1s622QIgMUnyYq5TtiRA9qRUaZ/7gDdGDC8oX7tVYixvgqjjXyA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6496848},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"}},"gitHead":"5f0baee7ebf56590c6c460a5c48fa34944ba7fce","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"await import('@mcpjam/sdk'); await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); await import('@mcpjam/sdk/host-config'); const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } }\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","zod":"^4.1.12","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"^2.0.0-alpha.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.4","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"^2.0.0-alpha.2","@modelcontextprotocol/server":"^2.0.0-alpha.2","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.12.0_1780687209810_0.5621231989218187","host":"s3://npm-registry-packages-npm-production"}},"1.13.0":{"name":"@mcpjam/sdk","version":"1.13.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@1.13.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"bd9b1b5518a18bb63734f3a05ed270563f84b32d","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-1.13.0.tgz","fileCount":40,"integrity":"sha512-qs6JsnojPd9wJGmpGzaLsMOp1DRU8ow1W5yxkFY44wWGeS9vkfJRLEZ2WwVMyv+B/fISXQqinV2HJp9PwGeQYQ==","signatures":[{"sig":"MEUCIQC/G+n0CiW1ii/Rmf5t3ro6A3F4ltX4fNW2NDE8Z9qkCgIgCXuHxmOTifNr+TiZXWXVwPlwUkk3dQJyY++05nyHhgw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6708666},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"}},"gitHead":"139878aeed462c7550403f1331bcbbcfa7af39db","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"await import('@mcpjam/sdk'); await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); await import('@mcpjam/sdk/host-config'); const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } }\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","zod":"^4.1.12","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"^2.0.0-alpha.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.4","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"^2.0.0-alpha.2","@modelcontextprotocol/server":"^2.0.0-alpha.2","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.13.0_1780906328978_0.24969892276326378","host":"s3://npm-registry-packages-npm-production"}},"1.14.0":{"name":"@mcpjam/sdk","version":"1.14.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@1.14.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"3dbcc077d1a0077dddb7fdc9accd4743e543a202","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-1.14.0.tgz","fileCount":40,"integrity":"sha512-krtwwhSQG9i0UfBZ7HxUO0SS5I4VFBvTwST0gSm/EICQFSl+dUzYvOclFOI/HzLzRemc1ZOOn/0N4YYg9lVfBA==","signatures":[{"sig":"MEYCIQC8lEen26TulcONmawxqmA/i8CGIkqPXxxIVMqfUFhazwIhAKfHQwyDMvykjPkVfzhUK7Vn4EptPLPxix0RuMc/Cu4y","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6719118},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"}},"gitHead":"54adbe6d2be8e2b9a0d6fc46c60c44f95b07270d","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"await import('@mcpjam/sdk'); await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); await import('@mcpjam/sdk/host-config'); const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } }\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","zod":"^4.1.12","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"^2.0.0-alpha.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.4","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"^2.0.0-alpha.2","@modelcontextprotocol/server":"^2.0.0-alpha.2","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.14.0_1780985526511_0.5074501078839799","host":"s3://npm-registry-packages-npm-production"}},"1.15.0":{"name":"@mcpjam/sdk","version":"1.15.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@1.15.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"6f48c9804eed1aa5647d2f0a79e88f636f5f3650","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-1.15.0.tgz","fileCount":40,"integrity":"sha512-6Hqzg7HKj8P/Fr4jYTYcRNDMNEpmlDPOYYu0JbKEThttsMtoPOwIaP0x5ad44uGD011qzyGRxfGtej5oPwjphA==","signatures":[{"sig":"MEUCIQDqd0DWHi22rSXoGASzoTDr4zngtMb639YRiCIX0AdC3QIgEwVsw1KOm14IlLeP9fDmPKEU41csIBLGV5PHylYfxMg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6768480},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"}},"gitHead":"dbdcfcd1401080e1718c84da02f71668e6286ce2","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"await import('@mcpjam/sdk'); await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); await import('@mcpjam/sdk/host-config'); const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } }\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","zod":"^4.1.12","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"^2.0.0-alpha.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.4","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"^2.0.0-alpha.2","@modelcontextprotocol/server":"^2.0.0-alpha.2","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.15.0_1781072434211_0.07018653183850021","host":"s3://npm-registry-packages-npm-production"}},"1.16.0":{"name":"@mcpjam/sdk","version":"1.16.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@1.16.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"32bb6fc0b5a73c90d02b96efc201697bbd772e71","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-1.16.0.tgz","fileCount":46,"integrity":"sha512-1ewACbE2Casn9R5i2ypWMeOcfyOfMGF+xBBdbiUSTDTKz7Ax0+GtticTMf72+0Odz8tWRausLIyLQRKgl19YMg==","signatures":[{"sig":"MEYCIQCR1Tefhoa2Yj4ZC2HAevR4QF+4F3142Z186/6pash0+AIhAPhbXNPoihvKOOS39umw/cZRy6MDTxyMFp/H8Y1GlViK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6938167},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"}},"gitHead":"aeba0a54bf230b76e2c9410fc9510653cf06be65","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"await import('@mcpjam/sdk'); await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); await import('@mcpjam/sdk/host-config'); const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } }\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","zod":"^4.1.12","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"^2.0.0-alpha.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.4","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"^2.0.0-alpha.2","@modelcontextprotocol/server":"^2.0.0-alpha.2","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.16.0_1781205342996_0.29522369697782525","host":"s3://npm-registry-packages-npm-production"}},"1.17.0":{"name":"@mcpjam/sdk","version":"1.17.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@1.17.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"d084439fccd349c663d603287a0cdfd3ea7ea3e7","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-1.17.0.tgz","fileCount":46,"integrity":"sha512-HddNGnRifLYLwx7UZOnTfAMnbEgwe/D6zStqFfj17fc5Wy1Dp3GqzBhlAExQz5v9ynoNdcMHO+D4BQHtUJ+NyQ==","signatures":[{"sig":"MEUCIQCzZ9L1w9g5TF1evpuWeJLy0iev0/rLoAFKn05R4Tw7UgIgDV9cVBNZvJsh4aneJJGppfNnLE4lU5n0GgeAUT+24Gs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6985662},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"}},"gitHead":"f9b9e2bb201f82577c77f252d6e44b83eb982bdc","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"await import('@mcpjam/sdk'); await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); await import('@mcpjam/sdk/host-config'); const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation','createTunnelOperation','closeTunnelOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } }\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","zod":"^4.1.12","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"^2.0.0-alpha.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.4","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"^2.0.0-alpha.2","@modelcontextprotocol/server":"^2.0.0-alpha.2","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.17.0_1781297379655_0.485619636843472","host":"s3://npm-registry-packages-npm-production"}},"1.18.0":{"name":"@mcpjam/sdk","version":"1.18.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@1.18.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"04a2238d4a9997c1156a91d1563ff1251513bf00","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-1.18.0.tgz","fileCount":49,"integrity":"sha512-BNod8FZqCH09ckkuhtZSgoDcvXL6p7dA1B/IYuNiQMelGsEKUpGsJSeunwiXuV/Qn7Is+s7AZ85TqpCEqkiH7g==","signatures":[{"sig":"MEUCIQDPacMbUqIBG4e1FwkGbq8gmB9OiFOaMfXoQKuqjU2cOQIgEHjO4W1ksuiTEGiZHp2tE7nTNTNGlg74S971a087c2o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7092164},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./widget-runtime":{"types":"./dist/widget-runtime/index.d.ts","import":"./dist/widget-runtime/index.js","default":"./dist/widget-runtime/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"}},"gitHead":"099235b60cc55709c07af4ebccc22211150a9c84","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"await import('@mcpjam/sdk'); await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); await import('@mcpjam/sdk/host-config'); const w = await import('@mcpjam/sdk/widget-runtime'); for (const n of ['getToolVisibility','isVisibleToModelOnly','isVisibleToAppOnly','LoggingTransport','buildOuterAllowAttribute','buildOuterSandboxAttribute','resolveIframeSandboxPolicy','createHostAppBridge','registerHostBridgeHandlers']) { if (typeof w[n] !== 'function') { throw new Error('missing widget-runtime export: ' + n); } } if (w['DEFAULT_IFRAME_SANDBOX'] === undefined) { throw new Error('missing widget-runtime export: DEFAULT_IFRAME_SANDBOX'); } const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation','createTunnelOperation','closeTunnelOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } }\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","zod":"^4.1.12","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"^2.0.0-alpha.2","@modelcontextprotocol/ext-apps":"^1.7.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.4","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"^2.0.0-alpha.2","@modelcontextprotocol/server":"^2.0.0-alpha.2","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.18.0_1781651150378_0.44417978056836116","host":"s3://npm-registry-packages-npm-production"}},"1.19.0":{"name":"@mcpjam/sdk","version":"1.19.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@1.19.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"ac94666bb00eb2755305dd41ea9b91ed8286852e","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-1.19.0.tgz","fileCount":49,"integrity":"sha512-0vXYtl/X9Fkw/AsWKg+tB3a0G7jrA8dDPloD8K9TM2KJUoDCLUoU+ylyM2d5y5N6VQBeU/JH6gYH/oxS4fEgFQ==","signatures":[{"sig":"MEQCICQgKKz9IrJf7VtQ0XO5d/x1o/Avd6JoVBFPj0GSBCLfAiBwIXyJHB719AspVvMPaSRVySbIv1phdDg1uew7ZPbW5A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7114117},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./widget-runtime":{"types":"./dist/widget-runtime/index.d.ts","import":"./dist/widget-runtime/index.js","default":"./dist/widget-runtime/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"}},"gitHead":"8483c1865e92c6956cf05db2b76e02a67875c9c6","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"await import('@mcpjam/sdk'); await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); await import('@mcpjam/sdk/host-config'); const w = await import('@mcpjam/sdk/widget-runtime'); for (const n of ['getToolVisibility','isVisibleToModelOnly','isVisibleToAppOnly','LoggingTransport','buildOuterAllowAttribute','buildOuterSandboxAttribute','resolveIframeSandboxPolicy','createHostAppBridge','registerHostBridgeHandlers']) { if (typeof w[n] !== 'function') { throw new Error('missing widget-runtime export: ' + n); } } if (w['DEFAULT_IFRAME_SANDBOX'] === undefined) { throw new Error('missing widget-runtime export: DEFAULT_IFRAME_SANDBOX'); } const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation','createTunnelOperation','closeTunnelOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } }\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","zod":"^4.1.12","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"^2.0.0-alpha.2","@modelcontextprotocol/ext-apps":"^1.7.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.4","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"^2.0.0-alpha.2","@modelcontextprotocol/server":"^2.0.0-alpha.2","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.19.0_1781661441357_0.9686372723881087","host":"s3://npm-registry-packages-npm-production"}},"1.20.0":{"name":"@mcpjam/sdk","version":"1.20.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@1.20.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"9d0cd8d66df5d0bf4fb0fe8ec4873fa2bf288dfb","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-1.20.0.tgz","fileCount":49,"integrity":"sha512-Ez7zRvolmPdYlMgXXufSSXQdhRcMsx9tt1//xq681pK9ZFpee5a5n+xS6Veaim1yj7ZleBE4kkGqXmAsAWT/lA==","signatures":[{"sig":"MEQCIBdDZZ4s534CjFynhBJPyPzbcGn1kYlshXQs+tOXhIgNAiB+lKqcFjGFCK5K7C0HH46gvBMuoGlylGPTNpcsFGBc+w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7115096},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./widget-runtime":{"types":"./dist/widget-runtime/index.d.ts","import":"./dist/widget-runtime/index.js","default":"./dist/widget-runtime/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"}},"gitHead":"35d142c33f0c1f11ee2df55b63b756aacbecb9e7","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"await import('@mcpjam/sdk'); await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); await import('@mcpjam/sdk/host-config'); const w = await import('@mcpjam/sdk/widget-runtime'); for (const n of ['getToolVisibility','isVisibleToModelOnly','isVisibleToAppOnly','LoggingTransport','buildOuterAllowAttribute','buildOuterSandboxAttribute','resolveIframeSandboxPolicy','createHostAppBridge','registerHostBridgeHandlers']) { if (typeof w[n] !== 'function') { throw new Error('missing widget-runtime export: ' + n); } } if (w['DEFAULT_IFRAME_SANDBOX'] === undefined) { throw new Error('missing widget-runtime export: DEFAULT_IFRAME_SANDBOX'); } const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation','createTunnelOperation','closeTunnelOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } }\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","zod":"^4.1.12","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"^2.0.0-alpha.2","@modelcontextprotocol/ext-apps":"^1.7.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.4","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"^2.0.0-alpha.2","@modelcontextprotocol/server":"^2.0.0-alpha.2","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.20.0_1781724844645_0.6493629570119588","host":"s3://npm-registry-packages-npm-production"}},"1.21.0":{"name":"@mcpjam/sdk","version":"1.21.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@1.21.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"12f85b6e9740c393fbb6bff01ff128c78e9a5502","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-1.21.0.tgz","fileCount":49,"integrity":"sha512-BKqoaTnvoxD2JpMdFdslpIgW4A7w/vB4vS30bytdcLLsIPZLF5VfDod4jLuDRLlIH0oW6Ik6E2jEaiT/RQCnKw==","signatures":[{"sig":"MEYCIQCoQZ6fq5aFzKD5E8zqL9930oAjjQoMmJ5uhMTKllEBdgIhAMNKXROQYG1/0gHIiysDkmQrg0QqAr0swa17m2Iou7SN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7197963},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./widget-runtime":{"types":"./dist/widget-runtime/index.d.ts","import":"./dist/widget-runtime/index.js","default":"./dist/widget-runtime/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"}},"gitHead":"3cfe827983ea7429dd93c9b201bade551d550fcd","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"await import('@mcpjam/sdk'); await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); await import('@mcpjam/sdk/host-config'); const w = await import('@mcpjam/sdk/widget-runtime'); for (const n of ['getToolVisibility','isVisibleToModelOnly','isVisibleToAppOnly','LoggingTransport','buildOuterAllowAttribute','buildOuterSandboxAttribute','resolveIframeSandboxPolicy','createHostAppBridge','registerHostBridgeHandlers']) { if (typeof w[n] !== 'function') { throw new Error('missing widget-runtime export: ' + n); } } if (w['DEFAULT_IFRAME_SANDBOX'] === undefined) { throw new Error('missing widget-runtime export: DEFAULT_IFRAME_SANDBOX'); } const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation','createTunnelOperation','closeTunnelOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } }\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","zod":"^4.1.12","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"^2.0.0-alpha.2","@modelcontextprotocol/ext-apps":"^1.7.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.4","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"^2.0.0-alpha.2","@modelcontextprotocol/server":"^2.0.0-alpha.2","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.21.0_1781815839423_0.6724924637653664","host":"s3://npm-registry-packages-npm-production"}},"1.22.0":{"name":"@mcpjam/sdk","version":"1.22.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@1.22.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"20500e1be7bd76e192a0cf8d416ba93e966e7197","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-1.22.0.tgz","fileCount":49,"integrity":"sha512-01Oq1TAWKBX24djGU/IVacauvbW/VWilRW0U0SYl0+Bonbiz+mWvXkCPs8g/f2Ucuh/3VMom/MvxJirUD6XnZA==","signatures":[{"sig":"MEUCIQDEM+EuNhHVNZNlhXbSO0Tu/P4DLnsan0P8r7j0fxiIigIgJA3vRYJkviceZaX0p/uLpREKJzWbKz3TNRGiZk0FOtw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7213838},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./widget-runtime":{"types":"./dist/widget-runtime/index.d.ts","import":"./dist/widget-runtime/index.js","default":"./dist/widget-runtime/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"}},"gitHead":"4922f3ac1cb580fe1b9db9b9fe00e66a9b7b6e3c","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"await import('@mcpjam/sdk'); await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); await import('@mcpjam/sdk/host-config'); const w = await import('@mcpjam/sdk/widget-runtime'); for (const n of ['getToolVisibility','isVisibleToModelOnly','isVisibleToAppOnly','LoggingTransport','buildOuterAllowAttribute','buildOuterSandboxAttribute','resolveIframeSandboxPolicy','createHostAppBridge','registerHostBridgeHandlers']) { if (typeof w[n] !== 'function') { throw new Error('missing widget-runtime export: ' + n); } } if (w['DEFAULT_IFRAME_SANDBOX'] === undefined) { throw new Error('missing widget-runtime export: DEFAULT_IFRAME_SANDBOX'); } const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation','createTunnelOperation','closeTunnelOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } }\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","zod":"^4.1.12","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"^2.0.0-alpha.2","@modelcontextprotocol/ext-apps":"^1.7.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.4","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"^2.0.0-alpha.2","@modelcontextprotocol/server":"^2.0.0-alpha.2","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.22.0_1781844508599_0.8072274275236695","host":"s3://npm-registry-packages-npm-production"}},"1.23.0":{"name":"@mcpjam/sdk","version":"1.23.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@1.23.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"7ccfad9b31ed0832ff6b558361810759e0bfa71d","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-1.23.0.tgz","fileCount":55,"integrity":"sha512-e8qrpxkxMhf5e+og6ATM9Y22q71RHM65qCPA1tcUQE2cl9tf+l7r6Fvee0kSyvYJHChYXTVqZwGFLoifCUQFGg==","signatures":[{"sig":"MEYCIQClJ5uDN4C6ankhi11cug3XvzKTjx7fppPHnEAJt/KTLAIhAK+6QnKRNCiKEfrbCi1n54BMvIYP3qfr/NZS4Xmlmwop","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7583173},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./public-api":{"types":"./dist/public-api/index.d.ts","import":"./dist/public-api/index.js","default":"./dist/public-api/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./widget-runtime":{"types":"./dist/widget-runtime/index.d.ts","import":"./dist/widget-runtime/index.js","default":"./dist/widget-runtime/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"},"./host-config/templates":{"types":"./dist/host-config/templates/index.d.ts","import":"./dist/host-config/templates/index.js","default":"./dist/host-config/templates/index.js"}},"gitHead":"6ad6920240d2a7d50538ed0b1f39517f722c415f","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"await import('@mcpjam/sdk'); await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); await import('@mcpjam/sdk/host-config'); const w = await import('@mcpjam/sdk/widget-runtime'); for (const n of ['getToolVisibility','isVisibleToModelOnly','isVisibleToAppOnly','LoggingTransport','buildOuterAllowAttribute','buildOuterSandboxAttribute','resolveIframeSandboxPolicy','createHostAppBridge','registerHostBridgeHandlers']) { if (typeof w[n] !== 'function') { throw new Error('missing widget-runtime export: ' + n); } } if (w['DEFAULT_IFRAME_SANDBOX'] === undefined) { throw new Error('missing widget-runtime export: DEFAULT_IFRAME_SANDBOX'); } const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation','createTunnelOperation','closeTunnelOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } } const pub = await import('@mcpjam/sdk/public-api'); for (const n of ['isV1ErrorCode','mapInternalCode','v1ErrorBody','v1Page','classifyRuntimeError']) { if (typeof pub[n] !== 'function') { throw new Error('missing public-api export: ' + n); } } for (const n of ['V1_ERROR_CODES','V1_ERROR_STATUS','INTERNAL_TO_V1_CODE']) { if (pub[n] === undefined) { throw new Error('missing public-api export: ' + n); } }\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","zod":"^4.1.12","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"^2.0.0-alpha.2","@modelcontextprotocol/ext-apps":"^1.7.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.4","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"^2.0.0-alpha.2","@modelcontextprotocol/server":"^2.0.0-alpha.2","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.23.0_1782151666824_0.6675617412380956","host":"s3://npm-registry-packages-npm-production"}},"1.24.0":{"name":"@mcpjam/sdk","version":"1.24.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@1.24.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"a820847648ba2a2cf886d9cbc11b863115fb6dbf","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-1.24.0.tgz","fileCount":55,"integrity":"sha512-HuVYzeoloTHN4Z6GCMHDCaoYHKYe4afQS0BFJL5OYiDR4f9kf26rzbvbyRs3Y81T/jZTfNTSZNO9OrL5lygLyg==","signatures":[{"sig":"MEUCIFr24S6xBP41x3OlYgZCEYq/QZvyaag76p0eQjVIxfp3AiEA/1pXZCMw0QvSPmyMstVz/OK7Nw3S/HRea8g5o16S7j4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7610902},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./public-api":{"types":"./dist/public-api/index.d.ts","import":"./dist/public-api/index.js","default":"./dist/public-api/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./widget-runtime":{"types":"./dist/widget-runtime/index.d.ts","import":"./dist/widget-runtime/index.js","default":"./dist/widget-runtime/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"},"./host-config/templates":{"types":"./dist/host-config/templates/index.d.ts","import":"./dist/host-config/templates/index.js","default":"./dist/host-config/templates/index.js"}},"gitHead":"33412286b9b1e9558d567f47cc68fc2ca02e63be","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"await import('@mcpjam/sdk'); await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); await import('@mcpjam/sdk/host-config'); const w = await import('@mcpjam/sdk/widget-runtime'); for (const n of ['getToolVisibility','isVisibleToModelOnly','isVisibleToAppOnly','LoggingTransport','buildOuterAllowAttribute','buildOuterSandboxAttribute','resolveIframeSandboxPolicy','createHostAppBridge','registerHostBridgeHandlers']) { if (typeof w[n] !== 'function') { throw new Error('missing widget-runtime export: ' + n); } } if (w['DEFAULT_IFRAME_SANDBOX'] === undefined) { throw new Error('missing widget-runtime export: DEFAULT_IFRAME_SANDBOX'); } const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation','createTunnelOperation','closeTunnelOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } } const pub = await import('@mcpjam/sdk/public-api'); for (const n of ['isV1ErrorCode','mapInternalCode','v1ErrorBody','v1Page','classifyRuntimeError']) { if (typeof pub[n] !== 'function') { throw new Error('missing public-api export: ' + n); } } for (const n of ['V1_ERROR_CODES','V1_ERROR_STATUS','INTERNAL_TO_V1_CODE']) { if (pub[n] === undefined) { throw new Error('missing public-api export: ' + n); } }\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","zod":"^4.1.12","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"^2.0.0-alpha.2","@modelcontextprotocol/ext-apps":"^1.7.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.4","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"^2.0.0-alpha.2","@modelcontextprotocol/server":"^2.0.0-alpha.2","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.24.0_1782362150550_0.09030243456911413","host":"s3://npm-registry-packages-npm-production"}},"1.25.0":{"name":"@mcpjam/sdk","version":"1.25.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@1.25.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"4bfd783b362c7e9732bce32eac01ee65606366d1","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-1.25.0.tgz","fileCount":55,"integrity":"sha512-rbIDwrCwk4KsMZXz9RSTrVsRYeVzrhBj6EutTaEzZ1/CON2I1+/Ylpq7fO+sNjKlc6exDCs1kkYRfxwFtHDlDA==","signatures":[{"sig":"MEYCIQD9xqyLQWc5ZU0Tl1DwIEu/ljw81Mcczat/RKENIhIUTAIhAJXmKPEIBM00+mMWI/8/ZleDbNymWBla4T2TsdSt1Dwe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7632274},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./public-api":{"types":"./dist/public-api/index.d.ts","import":"./dist/public-api/index.js","default":"./dist/public-api/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./widget-runtime":{"types":"./dist/widget-runtime/index.d.ts","import":"./dist/widget-runtime/index.js","default":"./dist/widget-runtime/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"},"./host-config/templates":{"types":"./dist/host-config/templates/index.d.ts","import":"./dist/host-config/templates/index.js","default":"./dist/host-config/templates/index.js"}},"gitHead":"c10a1d7666afefb1482148eec3625bce40906026","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"await import('@mcpjam/sdk'); await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); await import('@mcpjam/sdk/host-config'); const w = await import('@mcpjam/sdk/widget-runtime'); for (const n of ['getToolVisibility','isVisibleToModelOnly','isVisibleToAppOnly','LoggingTransport','buildOuterAllowAttribute','buildOuterSandboxAttribute','resolveIframeSandboxPolicy','createHostAppBridge','registerHostBridgeHandlers']) { if (typeof w[n] !== 'function') { throw new Error('missing widget-runtime export: ' + n); } } if (w['DEFAULT_IFRAME_SANDBOX'] === undefined) { throw new Error('missing widget-runtime export: DEFAULT_IFRAME_SANDBOX'); } const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation','createTunnelOperation','closeTunnelOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } } const pub = await import('@mcpjam/sdk/public-api'); for (const n of ['isV1ErrorCode','mapInternalCode','v1ErrorBody','v1Page','classifyRuntimeError']) { if (typeof pub[n] !== 'function') { throw new Error('missing public-api export: ' + n); } } for (const n of ['V1_ERROR_CODES','V1_ERROR_STATUS','INTERNAL_TO_V1_CODE']) { if (pub[n] === undefined) { throw new Error('missing public-api export: ' + n); } }\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","zod":"^4.1.12","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"^2.0.0-alpha.2","@modelcontextprotocol/ext-apps":"^1.7.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.4","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"^2.0.0-alpha.2","@modelcontextprotocol/server":"^2.0.0-alpha.2","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.25.0_1782458302384_0.760076804375573","host":"s3://npm-registry-packages-npm-production"}},"1.26.0":{"name":"@mcpjam/sdk","version":"1.26.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@1.26.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"a7103653fa4fda2412b5037f324051f8b08c1728","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-1.26.0.tgz","fileCount":59,"integrity":"sha512-afFQdbJjgGle3A2cPMw9J/6ovHhFraOX6HqPj1rJDzyR99NdNaSDw0V0VIG9SAOVGk71KhftuNFJb2U1txYDeA==","signatures":[{"sig":"MEUCIQCXx2dR/5RKOca8Dv0hh8rkE8ElNRMYrTvrAM9yduvhwAIgDqu7TYxz3X3XTwZWK5BrD5Ua2B37QYpx8poSQvB8Fjc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7688165},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./public-api":{"types":"./dist/public-api/index.d.ts","import":"./dist/public-api/index.js","default":"./dist/public-api/index.js"},"./host-compat":{"types":"./dist/host-compat/index.d.ts","import":"./dist/host-compat/index.js","default":"./dist/host-compat/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./widget-runtime":{"types":"./dist/widget-runtime/index.d.ts","import":"./dist/widget-runtime/index.js","default":"./dist/widget-runtime/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"},"./host-config/templates":{"types":"./dist/host-config/templates/index.d.ts","import":"./dist/host-config/templates/index.js","default":"./dist/host-config/templates/index.js"}},"gitHead":"d21dd93a3e6058735cdfa4acc1c345a3b6227738","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"await import('@mcpjam/sdk'); await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); await import('@mcpjam/sdk/host-config'); const w = await import('@mcpjam/sdk/widget-runtime'); for (const n of ['getToolVisibility','isVisibleToModelOnly','isVisibleToAppOnly','LoggingTransport','buildOuterAllowAttribute','buildOuterSandboxAttribute','resolveIframeSandboxPolicy','createHostAppBridge','registerHostBridgeHandlers']) { if (typeof w[n] !== 'function') { throw new Error('missing widget-runtime export: ' + n); } } if (w['DEFAULT_IFRAME_SANDBOX'] === undefined) { throw new Error('missing widget-runtime export: DEFAULT_IFRAME_SANDBOX'); } const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation','createTunnelOperation','closeTunnelOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } } const pub = await import('@mcpjam/sdk/public-api'); for (const n of ['isV1ErrorCode','mapInternalCode','v1ErrorBody','v1Page','classifyRuntimeError']) { if (typeof pub[n] !== 'function') { throw new Error('missing public-api export: ' + n); } } for (const n of ['V1_ERROR_CODES','V1_ERROR_STATUS','INTERNAL_TO_V1_CODE']) { if (pub[n] === undefined) { throw new Error('missing public-api export: ' + n); } } const hc = await import('@mcpjam/sdk/host-compat'); for (const n of ['deriveServerRequirements','evaluateHostCompat','evaluateAllHosts','detectHostCompatBridgeFromMeta','scanWidgetSource','scanWidgetMeta']) { if (typeof hc[n] !== 'function') { throw new Error('missing host-compat export: ' + n); } } if (hc['HostCompatBridge'] === undefined) { throw new Error('missing host-compat export: HostCompatBridge'); }\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","zod":"^4.1.12","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"2.0.0-alpha.2","@modelcontextprotocol/ext-apps":"^1.7.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.4","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"^2.0.0-alpha.2","@modelcontextprotocol/server":"^2.0.0-alpha.2","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.26.0_1782537302632_0.6976827840260982","host":"s3://npm-registry-packages-npm-production"}},"1.27.0":{"name":"@mcpjam/sdk","version":"1.27.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@1.27.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"40e93b01057ac03a83cb3aa3af11f99f157691b4","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-1.27.0.tgz","fileCount":60,"integrity":"sha512-gLWR/GDkttSdmOP8JXmd9K2RhmBq5R6DvXu+Eta4EXz0qW5ubpXuebHQDY7UyfxzylKMORlDHO57yjRJUWLdJw==","signatures":[{"sig":"MEUCIQDx2e3mOC2KNR0QY+GhjhsLU2vQOv5YCKKqN3yWbnEE1QIgC428c2qomKwHvD8mGqfaTKt8Exqo214ADuR9AXw4N/0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7889061},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./public-api":{"types":"./dist/public-api/index.d.ts","import":"./dist/public-api/index.js","default":"./dist/public-api/index.js"},"./host-compat":{"types":"./dist/host-compat/index.d.ts","import":"./dist/host-compat/index.js","default":"./dist/host-compat/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./widget-runtime":{"types":"./dist/widget-runtime/index.d.ts","import":"./dist/widget-runtime/index.js","default":"./dist/widget-runtime/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"},"./host-config/templates":{"types":"./dist/host-config/templates/index.d.ts","import":"./dist/host-config/templates/index.js","default":"./dist/host-config/templates/index.js"}},"gitHead":"5dd657af81b863b1f9acb0fe297863a0a33a6e7a","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"await import('@mcpjam/sdk'); await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); await import('@mcpjam/sdk/host-config'); const w = await import('@mcpjam/sdk/widget-runtime'); for (const n of ['getToolVisibility','isVisibleToModelOnly','isVisibleToAppOnly','LoggingTransport','buildOuterAllowAttribute','buildOuterSandboxAttribute','resolveIframeSandboxPolicy','createHostAppBridge','registerHostBridgeHandlers']) { if (typeof w[n] !== 'function') { throw new Error('missing widget-runtime export: ' + n); } } if (w['DEFAULT_IFRAME_SANDBOX'] === undefined) { throw new Error('missing widget-runtime export: DEFAULT_IFRAME_SANDBOX'); } const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation','checkHostCompatibilityOperation','createTunnelOperation','closeTunnelOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } } const pub = await import('@mcpjam/sdk/public-api'); for (const n of ['isV1ErrorCode','mapInternalCode','v1ErrorBody','v1Page','classifyRuntimeError']) { if (typeof pub[n] !== 'function') { throw new Error('missing public-api export: ' + n); } } for (const n of ['V1_ERROR_CODES','V1_ERROR_STATUS','INTERNAL_TO_V1_CODE']) { if (pub[n] === undefined) { throw new Error('missing public-api export: ' + n); } } const hc = await import('@mcpjam/sdk/host-compat'); for (const n of ['deriveServerRequirements','evaluateHostCompat','evaluateAllHosts','buildMarketHostProfiles','evaluateMarketHosts','scanWidgetUsage','detectHostCompatBridgeFromMeta','scanWidgetSource','scanWidgetMeta']) { if (typeof hc[n] !== 'function') { throw new Error('missing host-compat export: ' + n); } } if (hc['HostCompatBridge'] === undefined) { throw new Error('missing host-compat export: HostCompatBridge'); } for (const n of ['MCP_APPS_FULL','MCP_APPS_CHATGPT','MCP_APPS_MISTRAL','MCP_APPS_CURSOR','MCP_APPS_GOOSE','MCP_APPS_COPILOT','MCP_APPS_NO_CLAIMS']) { if (typeof hc[n] !== 'object') { throw new Error('missing host-compat capability export: ' + n); } }\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","zod":"^4.1.12","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"2.0.0-alpha.2","@modelcontextprotocol/ext-apps":"^1.7.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.4","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"2.0.0-alpha.2","@modelcontextprotocol/server":"2.0.0-alpha.2","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.27.0_1782937154418_0.698712526770862","host":"s3://npm-registry-packages-npm-production"}},"1.28.0":{"name":"@mcpjam/sdk","version":"1.28.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@1.28.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"9bf133bb570b94c05c7f3ff87337af704e935616","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-1.28.0.tgz","fileCount":60,"integrity":"sha512-WQHX44RlWCmY93VgLmQZM9RmvHu9MDN1Tznca4h8c1/e4QX3xH3mvI55ooEzLyr9lr1nK8n6vRSsci5vivGiFw==","signatures":[{"sig":"MEUCIH4EIKuIk7PEHcvm4nF0GLNjwcbhQExGoeeVpC0NiWz/AiEArMxWcKG1u2jQRxAIgZ/KrXB9ZZRvFRfHXJKuTvhY1rc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8290594},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./public-api":{"types":"./dist/public-api/index.d.ts","import":"./dist/public-api/index.js","default":"./dist/public-api/index.js"},"./host-compat":{"types":"./dist/host-compat/index.d.ts","import":"./dist/host-compat/index.js","default":"./dist/host-compat/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./widget-runtime":{"types":"./dist/widget-runtime/index.d.ts","import":"./dist/widget-runtime/index.js","default":"./dist/widget-runtime/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"},"./host-config/templates":{"types":"./dist/host-config/templates/index.d.ts","import":"./dist/host-config/templates/index.js","default":"./dist/host-config/templates/index.js"}},"gitHead":"607c31fa2c7fb2966b0d3d93f587b1fc785ab341","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"await import('@mcpjam/sdk'); await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); await import('@mcpjam/sdk/host-config'); const w = await import('@mcpjam/sdk/widget-runtime'); for (const n of ['getToolVisibility','isVisibleToModelOnly','isVisibleToAppOnly','LoggingTransport','buildOuterAllowAttribute','buildOuterSandboxAttribute','resolveIframeSandboxPolicy','createHostAppBridge','registerHostBridgeHandlers']) { if (typeof w[n] !== 'function') { throw new Error('missing widget-runtime export: ' + n); } } if (w['DEFAULT_IFRAME_SANDBOX'] === undefined) { throw new Error('missing widget-runtime export: DEFAULT_IFRAME_SANDBOX'); } const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation','checkHostCompatibilityOperation','createTunnelOperation','closeTunnelOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } } const pub = await import('@mcpjam/sdk/public-api'); for (const n of ['isV1ErrorCode','mapInternalCode','v1ErrorBody','v1Page','classifyRuntimeError']) { if (typeof pub[n] !== 'function') { throw new Error('missing public-api export: ' + n); } } for (const n of ['V1_ERROR_CODES','V1_ERROR_STATUS','INTERNAL_TO_V1_CODE']) { if (pub[n] === undefined) { throw new Error('missing public-api export: ' + n); } } const hc = await import('@mcpjam/sdk/host-compat'); for (const n of ['deriveServerRequirements','evaluateHostCompat','evaluateAllHosts','buildMarketHostProfiles','evaluateMarketHosts','scanWidgetUsage','detectHostCompatBridgeFromMeta','scanWidgetSource','scanWidgetMeta']) { if (typeof hc[n] !== 'function') { throw new Error('missing host-compat export: ' + n); } } if (hc['HostCompatBridge'] === undefined) { throw new Error('missing host-compat export: HostCompatBridge'); } for (const n of ['MCP_APPS_FULL','MCP_APPS_CHATGPT','MCP_APPS_MISTRAL','MCP_APPS_CURSOR','MCP_APPS_GOOSE','MCP_APPS_COPILOT','MCP_APPS_NO_CLAIMS']) { if (typeof hc[n] !== 'object') { throw new Error('missing host-compat capability export: ' + n); } }\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","zod":"^4.1.12","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"2.0.0-alpha.2","@modelcontextprotocol/ext-apps":"^1.7.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.4","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"2.0.0-alpha.2","@modelcontextprotocol/server":"2.0.0-alpha.2","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.28.0_1783394263605_0.959344424071241","host":"s3://npm-registry-packages-npm-production"}},"1.29.0":{"name":"@mcpjam/sdk","version":"1.29.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@1.29.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"4a36e63e7a2a2852efdf80671f5d38e199e25f49","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-1.29.0.tgz","fileCount":60,"integrity":"sha512-FuU7A+d3fBQvNSmZc1V/uB0BAImqVe+RPKp+0a8JhyKPXmi8pgVMu8qSOaeECQLj8hF/ccpSAu+QH0osCeDnxw==","signatures":[{"sig":"MEUCIQCX04EmDcelnaqcRWODRaJEujtvIkXsaArarOUyQ37toQIgUS/ihrC6InELWNf8PnzseE8hJX/dgRagsm3otl5ZpW0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8425723},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./public-api":{"types":"./dist/public-api/index.d.ts","import":"./dist/public-api/index.js","default":"./dist/public-api/index.js"},"./host-compat":{"types":"./dist/host-compat/index.d.ts","import":"./dist/host-compat/index.js","default":"./dist/host-compat/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./widget-runtime":{"types":"./dist/widget-runtime/index.d.ts","import":"./dist/widget-runtime/index.js","default":"./dist/widget-runtime/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"},"./host-config/templates":{"types":"./dist/host-config/templates/index.d.ts","import":"./dist/host-config/templates/index.js","default":"./dist/host-config/templates/index.js"}},"gitHead":"5deaca1a211b1f9a746053f11ba28e901d48079a","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"await import('@mcpjam/sdk'); await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); await import('@mcpjam/sdk/host-config'); const w = await import('@mcpjam/sdk/widget-runtime'); for (const n of ['getToolVisibility','isVisibleToModelOnly','isVisibleToAppOnly','LoggingTransport','buildOuterAllowAttribute','buildOuterSandboxAttribute','resolveIframeSandboxPolicy','createHostAppBridge','registerHostBridgeHandlers']) { if (typeof w[n] !== 'function') { throw new Error('missing widget-runtime export: ' + n); } } if (w['DEFAULT_IFRAME_SANDBOX'] === undefined) { throw new Error('missing widget-runtime export: DEFAULT_IFRAME_SANDBOX'); } const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation','checkHostCompatibilityOperation','createTunnelOperation','closeTunnelOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } } const pub = await import('@mcpjam/sdk/public-api'); for (const n of ['isV1ErrorCode','mapInternalCode','v1ErrorBody','v1Page','classifyRuntimeError']) { if (typeof pub[n] !== 'function') { throw new Error('missing public-api export: ' + n); } } for (const n of ['V1_ERROR_CODES','V1_ERROR_STATUS','INTERNAL_TO_V1_CODE']) { if (pub[n] === undefined) { throw new Error('missing public-api export: ' + n); } } const hc = await import('@mcpjam/sdk/host-compat'); for (const n of ['deriveServerRequirements','evaluateHostCompat','evaluateAllHosts','buildMarketHostProfiles','evaluateMarketHosts','scanWidgetUsage','detectHostCompatBridgeFromMeta','scanWidgetSource','scanWidgetMeta','bundledHostCompatCatalog','buildHostProfilesFromCatalog','fetchHostCompatCatalog']) { if (typeof hc[n] !== 'function') { throw new Error('missing host-compat export: ' + n); } } if (hc['HostCompatBridge'] === undefined) { throw new Error('missing host-compat export: HostCompatBridge'); } for (const n of ['MCP_APPS_FULL','MCP_APPS_CHATGPT','MCP_APPS_MISTRAL','MCP_APPS_CURSOR','MCP_APPS_GOOSE','MCP_APPS_COPILOT','MCP_APPS_SLACK','MCP_APPS_VSCODE','MCP_APPS_NO_CLAIMS']) { if (typeof hc[n] !== 'object') { throw new Error('missing host-compat capability export: ' + n); } } for (const n of ['hostCompatCatalogSchema','hostCompatCatalogEnvelopeSchema','mcpAppsCapabilitiesSchema']) { if (hc[n] === undefined) { throw new Error('missing host-compat schema export: ' + n); } }\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","zod":"^4.1.12","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"2.0.0-alpha.2","@modelcontextprotocol/ext-apps":"^1.7.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.4","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"2.0.0-alpha.2","@modelcontextprotocol/server":"2.0.0-alpha.2","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.29.0_1783487799614_0.4266651913380528","host":"s3://npm-registry-packages-npm-production"}},"1.30.0":{"name":"@mcpjam/sdk","version":"1.30.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@1.30.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"9aa47483ba741d524fc2388d08a6dc810efb2e2a","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-1.30.0.tgz","fileCount":61,"integrity":"sha512-yGY9kcngx/uTKqs6xOk8fPoVHYbEEUee1bXeQoOhasxsm2HJjMMP0Enzg9uJ1SBj13FyrO0qfCIuYh3TQv+UWw==","signatures":[{"sig":"MEUCIG/xhNZW7++peFiY1VvaG5ICypXIWvI/ze6g4vYggv7oAiEA8WC6lYIYaDF1iDXHjviBTwpcZFSIK7fiqrsiDNLDN8w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8699976},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./public-api":{"types":"./dist/public-api/index.d.ts","import":"./dist/public-api/index.js","default":"./dist/public-api/index.js"},"./host-compat":{"types":"./dist/host-compat/index.d.ts","import":"./dist/host-compat/index.js","default":"./dist/host-compat/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./widget-runtime":{"types":"./dist/widget-runtime/index.d.ts","import":"./dist/widget-runtime/index.js","default":"./dist/widget-runtime/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"},"./host-config/templates":{"types":"./dist/host-config/templates/index.d.ts","import":"./dist/host-config/templates/index.js","default":"./dist/host-config/templates/index.js"}},"gitHead":"b01f41e153526af8f5d6183fd867b9fc2c3f7b54","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"await import('@mcpjam/sdk'); await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); await import('@mcpjam/sdk/host-config'); const w = await import('@mcpjam/sdk/widget-runtime'); for (const n of ['getToolVisibility','isVisibleToModelOnly','isVisibleToAppOnly','LoggingTransport','buildOuterAllowAttribute','buildOuterSandboxAttribute','resolveIframeSandboxPolicy','createHostAppBridge','registerHostBridgeHandlers']) { if (typeof w[n] !== 'function') { throw new Error('missing widget-runtime export: ' + n); } } if (w['DEFAULT_IFRAME_SANDBOX'] === undefined) { throw new Error('missing widget-runtime export: DEFAULT_IFRAME_SANDBOX'); } const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation','checkHostCompatibilityOperation','createTunnelOperation','closeTunnelOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } } const pub = await import('@mcpjam/sdk/public-api'); for (const n of ['isV1ErrorCode','mapInternalCode','v1ErrorBody','v1Page','classifyRuntimeError']) { if (typeof pub[n] !== 'function') { throw new Error('missing public-api export: ' + n); } } for (const n of ['V1_ERROR_CODES','V1_ERROR_STATUS','INTERNAL_TO_V1_CODE']) { if (pub[n] === undefined) { throw new Error('missing public-api export: ' + n); } } const hc = await import('@mcpjam/sdk/host-compat'); for (const n of ['deriveServerRequirements','evaluateHostCompat','evaluateAllHosts','buildMarketHostProfiles','evaluateMarketHosts','scanWidgetUsage','detectHostCompatBridgeFromMeta','scanWidgetSource','scanWidgetMeta','bundledHostCompatCatalog','buildHostProfilesFromCatalog','fetchHostCompatCatalog','hostConfigFieldsToImageSupport','imageSupportToHostConfigFields']) { if (typeof hc[n] !== 'function') { throw new Error('missing host-compat export: ' + n); } } if (hc['HostCompatBridge'] === undefined) { throw new Error('missing host-compat export: HostCompatBridge'); } for (const n of ['MCP_APPS_FULL','MCP_APPS_CHATGPT','MCP_APPS_MISTRAL','MCP_APPS_CURSOR','MCP_APPS_GOOSE','MCP_APPS_COPILOT','MCP_APPS_SLACK','MCP_APPS_VSCODE','MCP_APPS_NO_CLAIMS']) { if (typeof hc[n] !== 'object') { throw new Error('missing host-compat capability export: ' + n); } } for (const n of ['hostCompatCatalogSchema','hostCompatCatalogEnvelopeSchema','mcpAppsCapabilitiesSchema']) { if (hc[n] === undefined) { throw new Error('missing host-compat schema export: ' + n); } }\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs","check:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts --check","generate:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts","check:host-catalog-fallback:remote":"node --import tsx scripts/check-host-catalog-fallback-remote.ts"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","zod":"^4.1.12","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"2.0.0-alpha.2","@modelcontextprotocol/ext-apps":"^1.7.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.4","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"2.0.0-alpha.2","@modelcontextprotocol/server":"2.0.0-alpha.2","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.30.0_1783660855031_0.3836377746966244","host":"s3://npm-registry-packages-npm-production"}},"1.31.0":{"name":"@mcpjam/sdk","version":"1.31.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@1.31.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"a2ff6566ae2bf994e8532d06d1cd449ef5841388","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-1.31.0.tgz","fileCount":61,"integrity":"sha512-mQFN5kz3u8PaBzKaPM5LD2k0LSsTTaYOfK8xpBeOZkt1ZMW+utClbrM2wi3OgoTIx+rQO7Rrk/26yH+MNv4jdA==","signatures":[{"sig":"MEUCIQD5JIUD89W2SwVtKNIZtB0dcNlIgKWGKXUrITWi4u0+qAIgdK3lO7CDWXObdwrwTQGnk2LsByS4pT7VtPwlst/6HyQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9536195},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./public-api":{"types":"./dist/public-api/index.d.ts","import":"./dist/public-api/index.js","default":"./dist/public-api/index.js"},"./host-compat":{"types":"./dist/host-compat/index.d.ts","import":"./dist/host-compat/index.js","default":"./dist/host-compat/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./widget-runtime":{"types":"./dist/widget-runtime/index.d.ts","import":"./dist/widget-runtime/index.js","default":"./dist/widget-runtime/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"},"./host-config/templates":{"types":"./dist/host-config/templates/index.d.ts","import":"./dist/host-config/templates/index.js","default":"./dist/host-config/templates/index.js"}},"gitHead":"8ed5d02db7969b3301a734a43b77d0c9b6f1e55e","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"await import('@mcpjam/sdk'); await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); await import('@mcpjam/sdk/host-config'); const w = await import('@mcpjam/sdk/widget-runtime'); for (const n of ['getToolVisibility','isVisibleToModelOnly','isVisibleToAppOnly','LoggingTransport','buildOuterAllowAttribute','buildOuterSandboxAttribute','resolveIframeSandboxPolicy','createHostAppBridge','registerHostBridgeHandlers']) { if (typeof w[n] !== 'function') { throw new Error('missing widget-runtime export: ' + n); } } if (w['DEFAULT_IFRAME_SANDBOX'] === undefined) { throw new Error('missing widget-runtime export: DEFAULT_IFRAME_SANDBOX'); } const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation','checkHostCompatibilityOperation','createTunnelOperation','closeTunnelOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } } const pub = await import('@mcpjam/sdk/public-api'); for (const n of ['isV1ErrorCode','mapInternalCode','v1ErrorBody','v1Page','classifyRuntimeError']) { if (typeof pub[n] !== 'function') { throw new Error('missing public-api export: ' + n); } } for (const n of ['V1_ERROR_CODES','V1_ERROR_STATUS','INTERNAL_TO_V1_CODE']) { if (pub[n] === undefined) { throw new Error('missing public-api export: ' + n); } } const hc = await import('@mcpjam/sdk/host-compat'); for (const n of ['deriveServerRequirements','evaluateHostCompat','evaluateAllHosts','buildMarketHostProfiles','evaluateMarketHosts','scanWidgetUsage','detectHostCompatBridgeFromMeta','scanWidgetSource','scanWidgetMeta','bundledHostCompatCatalog','buildHostProfilesFromCatalog','fetchHostCompatCatalog','hostConfigFieldsToImageSupport','imageSupportToHostConfigFields']) { if (typeof hc[n] !== 'function') { throw new Error('missing host-compat export: ' + n); } } if (hc['HostCompatBridge'] === undefined) { throw new Error('missing host-compat export: HostCompatBridge'); } for (const n of ['MCP_APPS_FULL','MCP_APPS_CHATGPT','MCP_APPS_MISTRAL','MCP_APPS_CURSOR','MCP_APPS_GOOSE','MCP_APPS_COPILOT','MCP_APPS_SLACK','MCP_APPS_VSCODE','MCP_APPS_NO_CLAIMS']) { if (typeof hc[n] !== 'object') { throw new Error('missing host-compat capability export: ' + n); } } for (const n of ['hostCompatCatalogSchema','hostCompatCatalogEnvelopeSchema','mcpAppsCapabilitiesSchema']) { if (hc[n] === undefined) { throw new Error('missing host-compat schema export: ' + n); } }\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs","check:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts --check","generate:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts","check:host-catalog-fallback:remote":"node --import tsx scripts/check-host-catalog-fallback-remote.ts"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","zod":"^4.1.12","xpath":"^0.0.34","xml-crypto":"^6.1.2","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@xmldom/xmldom":"^0.8.13","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"2.0.0-alpha.2","@modelcontextprotocol/ext-apps":"^1.7.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.4","esbuild":"^0.27.0","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"2.0.0-alpha.2","@modelcontextprotocol/server":"2.0.0-alpha.2","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.31.0_1784048376847_0.1446035353533175","host":"s3://npm-registry-packages-npm-production"}},"1.32.0":{"name":"@mcpjam/sdk","version":"1.32.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@1.32.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"5fcbe46b28cfd555e2f76fcad0aa3c81e1353674","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-1.32.0.tgz","fileCount":61,"integrity":"sha512-IUnHWP2EtW3oB8n8AaACkcqPXZ83ug3MLBlz1Aut26f35csi/QGGuHmzJv99jt4A6mShdfwCHxEtiatC4utISQ==","signatures":[{"sig":"MEUCIH/3TTskIlvxFrkww55uuuZSuuaeqdfJs3U3/GK8UQ4KAiEA5bZrAE9wgV75z7E14oNlEef5grct6ginnjSVdw/SLOs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9656916},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./public-api":{"types":"./dist/public-api/index.d.ts","import":"./dist/public-api/index.js","default":"./dist/public-api/index.js"},"./host-compat":{"types":"./dist/host-compat/index.d.ts","import":"./dist/host-compat/index.js","default":"./dist/host-compat/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./widget-runtime":{"types":"./dist/widget-runtime/index.d.ts","import":"./dist/widget-runtime/index.js","default":"./dist/widget-runtime/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"},"./host-config/templates":{"types":"./dist/host-config/templates/index.d.ts","import":"./dist/host-config/templates/index.js","default":"./dist/host-config/templates/index.js"}},"gitHead":"5a7f169c390757c6bfe5d53232340a8963514bbd","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"await import('@mcpjam/sdk'); await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); await import('@mcpjam/sdk/host-config'); const w = await import('@mcpjam/sdk/widget-runtime'); for (const n of ['getToolVisibility','isVisibleToModelOnly','isVisibleToAppOnly','LoggingTransport','buildOuterAllowAttribute','buildOuterSandboxAttribute','resolveIframeSandboxPolicy','createHostAppBridge','registerHostBridgeHandlers']) { if (typeof w[n] !== 'function') { throw new Error('missing widget-runtime export: ' + n); } } if (w['DEFAULT_IFRAME_SANDBOX'] === undefined) { throw new Error('missing widget-runtime export: DEFAULT_IFRAME_SANDBOX'); } const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation','checkHostCompatibilityOperation','createTunnelOperation','closeTunnelOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } } const pub = await import('@mcpjam/sdk/public-api'); for (const n of ['isV1ErrorCode','mapInternalCode','v1ErrorBody','v1Page','classifyRuntimeError']) { if (typeof pub[n] !== 'function') { throw new Error('missing public-api export: ' + n); } } for (const n of ['V1_ERROR_CODES','V1_ERROR_STATUS','INTERNAL_TO_V1_CODE']) { if (pub[n] === undefined) { throw new Error('missing public-api export: ' + n); } } const hc = await import('@mcpjam/sdk/host-compat'); for (const n of ['deriveServerRequirements','evaluateHostCompat','evaluateAllHosts','buildMarketHostProfiles','evaluateMarketHosts','scanWidgetUsage','detectHostCompatBridgeFromMeta','scanWidgetSource','scanWidgetMeta','bundledHostCompatCatalog','buildHostProfilesFromCatalog','fetchHostCompatCatalog','hostConfigFieldsToImageSupport','imageSupportToHostConfigFields']) { if (typeof hc[n] !== 'function') { throw new Error('missing host-compat export: ' + n); } } if (hc['HostCompatBridge'] === undefined) { throw new Error('missing host-compat export: HostCompatBridge'); } for (const n of ['MCP_APPS_FULL','MCP_APPS_CHATGPT','MCP_APPS_MISTRAL','MCP_APPS_CURSOR','MCP_APPS_GOOSE','MCP_APPS_COPILOT','MCP_APPS_SLACK','MCP_APPS_VSCODE','MCP_APPS_NO_CLAIMS']) { if (typeof hc[n] !== 'object') { throw new Error('missing host-compat capability export: ' + n); } } for (const n of ['hostCompatCatalogSchema','hostCompatCatalogEnvelopeSchema','mcpAppsCapabilitiesSchema']) { if (hc[n] === undefined) { throw new Error('missing host-compat schema export: ' + n); } }\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs","check:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts --check","generate:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts","check:host-catalog-fallback:remote":"node --import tsx scripts/check-host-catalog-fallback-remote.ts"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","zod":"^4.1.12","xpath":"^0.0.34","xml-crypto":"^6.1.2","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@xmldom/xmldom":"^0.8.13","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"2.0.0-alpha.2","@modelcontextprotocol/ext-apps":"^1.7.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.4","esbuild":"^0.27.0","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"2.0.0-alpha.2","@modelcontextprotocol/server":"2.0.0-alpha.2","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.32.0_1784086054539_0.9287836489866088","host":"s3://npm-registry-packages-npm-production"}},"1.32.1":{"name":"@mcpjam/sdk","version":"1.32.1","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@1.32.1","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"1141a06b57552c0729aa0dc56f81e87daaed31f0","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-1.32.1.tgz","fileCount":61,"integrity":"sha512-DU3ccITDxHPfqu5htDM2gyAvBmdq/GuvxnZ2ifjBjbrNkolKbDN413RBsqdQd/IWayMEXbf1mZnAbazEvDVf/Q==","signatures":[{"sig":"MEQCIBQ3mxj7x2S6MwdUyt/R9WQChCAgkXmwXgOaBRUFWMRPAiAXOTF/2P8CpzXGzPFA+9SVtA9YVWY65nFvy0IKAvxFbA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9735828},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./public-api":{"types":"./dist/public-api/index.d.ts","import":"./dist/public-api/index.js","default":"./dist/public-api/index.js"},"./host-compat":{"types":"./dist/host-compat/index.d.ts","import":"./dist/host-compat/index.js","default":"./dist/host-compat/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./widget-runtime":{"types":"./dist/widget-runtime/index.d.ts","import":"./dist/widget-runtime/index.js","default":"./dist/widget-runtime/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"},"./host-config/templates":{"types":"./dist/host-config/templates/index.d.ts","import":"./dist/host-config/templates/index.js","default":"./dist/host-config/templates/index.js"}},"gitHead":"f5a7ea5bbc1e86c852fabab6458a7c801f419ded","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"await import('@mcpjam/sdk'); await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); await import('@mcpjam/sdk/host-config'); const w = await import('@mcpjam/sdk/widget-runtime'); for (const n of ['getToolVisibility','isVisibleToModelOnly','isVisibleToAppOnly','LoggingTransport','buildOuterAllowAttribute','buildOuterSandboxAttribute','resolveIframeSandboxPolicy','createHostAppBridge','registerHostBridgeHandlers']) { if (typeof w[n] !== 'function') { throw new Error('missing widget-runtime export: ' + n); } } if (w['DEFAULT_IFRAME_SANDBOX'] === undefined) { throw new Error('missing widget-runtime export: DEFAULT_IFRAME_SANDBOX'); } const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation','checkHostCompatibilityOperation','createTunnelOperation','closeTunnelOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } } const pub = await import('@mcpjam/sdk/public-api'); for (const n of ['isV1ErrorCode','mapInternalCode','v1ErrorBody','v1Page','classifyRuntimeError']) { if (typeof pub[n] !== 'function') { throw new Error('missing public-api export: ' + n); } } for (const n of ['V1_ERROR_CODES','V1_ERROR_STATUS','INTERNAL_TO_V1_CODE']) { if (pub[n] === undefined) { throw new Error('missing public-api export: ' + n); } } const hc = await import('@mcpjam/sdk/host-compat'); for (const n of ['deriveServerRequirements','evaluateHostCompat','evaluateAllHosts','buildMarketHostProfiles','evaluateMarketHosts','scanWidgetUsage','detectHostCompatBridgeFromMeta','scanWidgetSource','scanWidgetMeta','bundledHostCompatCatalog','buildHostProfilesFromCatalog','fetchHostCompatCatalog','hostConfigFieldsToImageSupport','imageSupportToHostConfigFields']) { if (typeof hc[n] !== 'function') { throw new Error('missing host-compat export: ' + n); } } if (hc['HostCompatBridge'] === undefined) { throw new Error('missing host-compat export: HostCompatBridge'); } for (const n of ['MCP_APPS_FULL','MCP_APPS_CHATGPT','MCP_APPS_MISTRAL','MCP_APPS_CURSOR','MCP_APPS_GOOSE','MCP_APPS_COPILOT','MCP_APPS_SLACK','MCP_APPS_VSCODE','MCP_APPS_NO_CLAIMS']) { if (typeof hc[n] !== 'object') { throw new Error('missing host-compat capability export: ' + n); } } for (const n of ['hostCompatCatalogSchema','hostCompatCatalogEnvelopeSchema','mcpAppsCapabilitiesSchema']) { if (hc[n] === undefined) { throw new Error('missing host-compat schema export: ' + n); } }\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs","check:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts --check","generate:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts","check:host-catalog-fallback:remote":"node --import tsx scripts/check-host-catalog-fallback-remote.ts"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","zod":"^4.1.12","xpath":"^0.0.34","xml-crypto":"^6.1.2","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@xmldom/xmldom":"^0.8.13","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"2.0.0-alpha.2","@modelcontextprotocol/ext-apps":"^1.7.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.4","esbuild":"^0.27.0","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"2.0.0-alpha.2","@modelcontextprotocol/server":"2.0.0-alpha.2","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.32.1_1784098963370_0.22647766600348151","host":"s3://npm-registry-packages-npm-production"}},"1.33.0":{"name":"@mcpjam/sdk","version":"1.33.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@1.33.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"35f5bb991e9d85c6711c4a3e345f6a21592eda2c","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-1.33.0.tgz","fileCount":61,"integrity":"sha512-AdDulpD4TAe5usD/ST7FRVgoLTioCNv4B3SPvjDOCM/mwLt7pejZmXQBvFRLryxtNvGzKYPvFhGou+qBLoB72w==","signatures":[{"sig":"MEQCIGdq+gQ457iDP3IuQLRWmb5M/ucQPQEQ0G/U+mYHAIziAiBiOIjZufMBIzjhzsupzd/k2uMnLW+Aa4JOaWW3nVB+ow==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9772359},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./public-api":{"types":"./dist/public-api/index.d.ts","import":"./dist/public-api/index.js","default":"./dist/public-api/index.js"},"./host-compat":{"types":"./dist/host-compat/index.d.ts","import":"./dist/host-compat/index.js","default":"./dist/host-compat/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./widget-runtime":{"types":"./dist/widget-runtime/index.d.ts","import":"./dist/widget-runtime/index.js","default":"./dist/widget-runtime/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"},"./host-config/templates":{"types":"./dist/host-config/templates/index.d.ts","import":"./dist/host-config/templates/index.js","default":"./dist/host-config/templates/index.js"}},"gitHead":"c3f0a8e2d701e62edc402f25a185e382a4a03d17","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"await import('@mcpjam/sdk'); await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); await import('@mcpjam/sdk/host-config'); const w = await import('@mcpjam/sdk/widget-runtime'); for (const n of ['getToolVisibility','isVisibleToModelOnly','isVisibleToAppOnly','LoggingTransport','buildOuterAllowAttribute','buildOuterSandboxAttribute','resolveIframeSandboxPolicy','createHostAppBridge','registerHostBridgeHandlers']) { if (typeof w[n] !== 'function') { throw new Error('missing widget-runtime export: ' + n); } } if (w['DEFAULT_IFRAME_SANDBOX'] === undefined) { throw new Error('missing widget-runtime export: DEFAULT_IFRAME_SANDBOX'); } const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation','checkHostCompatibilityOperation','createTunnelOperation','closeTunnelOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } } const pub = await import('@mcpjam/sdk/public-api'); for (const n of ['isV1ErrorCode','mapInternalCode','v1ErrorBody','v1Page','classifyRuntimeError']) { if (typeof pub[n] !== 'function') { throw new Error('missing public-api export: ' + n); } } for (const n of ['V1_ERROR_CODES','V1_ERROR_STATUS','INTERNAL_TO_V1_CODE']) { if (pub[n] === undefined) { throw new Error('missing public-api export: ' + n); } } const hc = await import('@mcpjam/sdk/host-compat'); for (const n of ['deriveServerRequirements','evaluateHostCompat','evaluateAllHosts','buildMarketHostProfiles','evaluateMarketHosts','scanWidgetUsage','detectHostCompatBridgeFromMeta','scanWidgetSource','scanWidgetMeta','bundledHostCompatCatalog','buildHostProfilesFromCatalog','fetchHostCompatCatalog','hostConfigFieldsToImageSupport','imageSupportToHostConfigFields']) { if (typeof hc[n] !== 'function') { throw new Error('missing host-compat export: ' + n); } } if (hc['HostCompatBridge'] === undefined) { throw new Error('missing host-compat export: HostCompatBridge'); } for (const n of ['MCP_APPS_FULL','MCP_APPS_CHATGPT','MCP_APPS_MISTRAL','MCP_APPS_CURSOR','MCP_APPS_GOOSE','MCP_APPS_COPILOT','MCP_APPS_SLACK','MCP_APPS_VSCODE','MCP_APPS_NO_CLAIMS']) { if (typeof hc[n] !== 'object') { throw new Error('missing host-compat capability export: ' + n); } } for (const n of ['hostCompatCatalogSchema','hostCompatCatalogEnvelopeSchema','mcpAppsCapabilitiesSchema']) { if (hc[n] === undefined) { throw new Error('missing host-compat schema export: ' + n); } }\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs","check:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts --check","generate:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts","check:host-catalog-fallback:remote":"node --import tsx scripts/check-host-catalog-fallback-remote.ts"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","zod":"^4.1.12","xpath":"^0.0.34","xml-crypto":"^6.1.2","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@xmldom/xmldom":"^0.8.13","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"2.0.0-alpha.2","@modelcontextprotocol/ext-apps":"^1.7.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.4","esbuild":"^0.27.0","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"2.0.0-alpha.2","@modelcontextprotocol/server":"2.0.0-alpha.2","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.33.0_1784106079087_0.2311737266216487","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@mcpjam/sdk","version":"2.0.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@2.0.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"c0bea39f955b4f45594192b37235aa20cc0a1c7e","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-2.0.0.tgz","fileCount":64,"integrity":"sha512-KwPM6hzgA52pAUrxBhazrH2XGhLQQa5eM5N9oIslVlRn7mqluEI1VPHuQamzfmGkYvtdzi65+eePQhUrhzXkzw==","signatures":[{"sig":"MEQCIDj9MSu6wAE5V1AHinpYtSbmearsoyBNwgzmyur8qmHtAiAvCTXtqDt2BVv+s5lkovJEcrd1CQ87wyutxDgjF6qHLw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10361215},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./public-api":{"types":"./dist/public-api/index.d.ts","import":"./dist/public-api/index.js","default":"./dist/public-api/index.js"},"./host-compat":{"types":"./dist/host-compat/index.d.ts","import":"./dist/host-compat/index.js","default":"./dist/host-compat/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./plugin-bundle":{"types":"./dist/plugin-bundle/index.d.ts","import":"./dist/plugin-bundle/index.js","default":"./dist/plugin-bundle/index.js"},"./widget-runtime":{"types":"./dist/widget-runtime/index.d.ts","import":"./dist/widget-runtime/index.js","default":"./dist/widget-runtime/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"},"./host-config/templates":{"types":"./dist/host-config/templates/index.d.ts","import":"./dist/host-config/templates/index.js","default":"./dist/host-config/templates/index.js"}},"gitHead":"61cd24eed05d5daaf298f5d70e5d175106660255","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"await import('@mcpjam/sdk'); await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); await import('@mcpjam/sdk/host-config'); const w = await import('@mcpjam/sdk/widget-runtime'); for (const n of ['getToolVisibility','isVisibleToModelOnly','isVisibleToAppOnly','LoggingTransport','buildOuterAllowAttribute','buildOuterSandboxAttribute','resolveIframeSandboxPolicy','createHostAppBridge','registerHostBridgeHandlers']) { if (typeof w[n] !== 'function') { throw new Error('missing widget-runtime export: ' + n); } } if (w['DEFAULT_IFRAME_SANDBOX'] === undefined) { throw new Error('missing widget-runtime export: DEFAULT_IFRAME_SANDBOX'); } const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation','checkHostCompatibilityOperation','createTunnelOperation','closeTunnelOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } } const pub = await import('@mcpjam/sdk/public-api'); for (const n of ['isV1ErrorCode','mapInternalCode','v1ErrorBody','v1Page','classifyRuntimeError']) { if (typeof pub[n] !== 'function') { throw new Error('missing public-api export: ' + n); } } for (const n of ['V1_ERROR_CODES','V1_ERROR_STATUS','INTERNAL_TO_V1_CODE']) { if (pub[n] === undefined) { throw new Error('missing public-api export: ' + n); } } const hc = await import('@mcpjam/sdk/host-compat'); for (const n of ['deriveServerRequirements','evaluateHostCompat','evaluateAllHosts','buildMarketHostProfiles','evaluateMarketHosts','scanWidgetUsage','detectHostCompatBridgeFromMeta','scanWidgetSource','scanWidgetMeta','bundledHostCompatCatalog','buildHostProfilesFromCatalog','fetchHostCompatCatalog','hostConfigFieldsToImageSupport','imageSupportToHostConfigFields']) { if (typeof hc[n] !== 'function') { throw new Error('missing host-compat export: ' + n); } } if (hc['HostCompatBridge'] === undefined) { throw new Error('missing host-compat export: HostCompatBridge'); } for (const n of ['MCP_APPS_FULL','MCP_APPS_CHATGPT','MCP_APPS_MISTRAL','MCP_APPS_CURSOR','MCP_APPS_GOOSE','MCP_APPS_COPILOT','MCP_APPS_SLACK','MCP_APPS_VSCODE','MCP_APPS_NO_CLAIMS']) { if (typeof hc[n] !== 'object') { throw new Error('missing host-compat capability export: ' + n); } } for (const n of ['hostCompatCatalogSchema','hostCompatCatalogEnvelopeSchema','mcpAppsCapabilitiesSchema']) { if (hc[n] === undefined) { throw new Error('missing host-compat schema export: ' + n); } } const pb = await import('@mcpjam/sdk/plugin-bundle'); for (const n of ['parsePluginBundle','containsRootPlaceholder']) { if (typeof pb[n] !== 'function') { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['DEFAULT_PLUGIN_BUNDLE_LIMITS','PLUGIN_ISSUE_CODES','PLUGIN_MANIFEST_DIR','PLUGIN_MANIFEST_PATH','PLUGIN_ROOT_PLACEHOLDERS','PluginBundleError','MCP_CONFIG_PATH']) { if (pb[n] === undefined) { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['normalizeBundlePath','validateBundleEntries','parseYamlLite','caseFoldPath','PluginIssueCollector','sha256HexBytes','computeAggregateHash']) { if (pb[n] !== undefined) { throw new Error('plugin-bundle should not re-export internal helper: ' + n); } }\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs","check:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts --check","generate:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts","check:host-catalog-fallback:remote":"node --import tsx scripts/check-host-catalog-fallback-remote.ts"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","zod":"^4.1.12","xpath":"^0.0.34","xml-crypto":"^6.1.2","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@xmldom/xmldom":"^0.8.13","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"2.0.0-beta.4","@modelcontextprotocol/ext-apps":"^1.7.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.4","esbuild":"^0.27.0","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"2.0.0-beta.4","@modelcontextprotocol/server":"2.0.0-beta.4","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_2.0.0_1784621224220_0.5169967033287064","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"@mcpjam/sdk","version":"2.0.1","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@2.0.1","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"44a3775a95c816d36a389974d23727d17b5d1561","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-2.0.1.tgz","fileCount":64,"integrity":"sha512-F4XUo714Q5ho4vBIrsh0ARy4XOuoSPiYWKjcl/B/6kXQSHTgA7gjtJNU5OKH42BAT4JWq120masSjNE1RqXKpg==","signatures":[{"sig":"MEQCIFg2CvxZWmk/w5dkvnMpL1Kzat+H9zhCdmCnxgt79gx0AiAFR8rn8s3jc2id9Rc8HgJM4Xko4JQHpeKc47OymRDFsg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10397415},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./public-api":{"types":"./dist/public-api/index.d.ts","import":"./dist/public-api/index.js","default":"./dist/public-api/index.js"},"./host-compat":{"types":"./dist/host-compat/index.d.ts","import":"./dist/host-compat/index.js","default":"./dist/host-compat/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./plugin-bundle":{"types":"./dist/plugin-bundle/index.d.ts","import":"./dist/plugin-bundle/index.js","default":"./dist/plugin-bundle/index.js"},"./widget-runtime":{"types":"./dist/widget-runtime/index.d.ts","import":"./dist/widget-runtime/index.js","default":"./dist/widget-runtime/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"},"./host-config/templates":{"types":"./dist/host-config/templates/index.d.ts","import":"./dist/host-config/templates/index.js","default":"./dist/host-config/templates/index.js"}},"gitHead":"46a290a6fb5049496b23fe82edf40a76a2e2a256","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"await import('@mcpjam/sdk'); await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); await import('@mcpjam/sdk/host-config'); const w = await import('@mcpjam/sdk/widget-runtime'); for (const n of ['getToolVisibility','isVisibleToModelOnly','isVisibleToAppOnly','LoggingTransport','buildOuterAllowAttribute','buildOuterSandboxAttribute','resolveIframeSandboxPolicy','createHostAppBridge','registerHostBridgeHandlers']) { if (typeof w[n] !== 'function') { throw new Error('missing widget-runtime export: ' + n); } } if (w['DEFAULT_IFRAME_SANDBOX'] === undefined) { throw new Error('missing widget-runtime export: DEFAULT_IFRAME_SANDBOX'); } const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation','checkHostCompatibilityOperation','createTunnelOperation','closeTunnelOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } } const pub = await import('@mcpjam/sdk/public-api'); for (const n of ['isV1ErrorCode','mapInternalCode','v1ErrorBody','v1Page','classifyRuntimeError']) { if (typeof pub[n] !== 'function') { throw new Error('missing public-api export: ' + n); } } for (const n of ['V1_ERROR_CODES','V1_ERROR_STATUS','INTERNAL_TO_V1_CODE']) { if (pub[n] === undefined) { throw new Error('missing public-api export: ' + n); } } const hc = await import('@mcpjam/sdk/host-compat'); for (const n of ['deriveServerRequirements','evaluateHostCompat','evaluateAllHosts','buildMarketHostProfiles','evaluateMarketHosts','scanWidgetUsage','detectHostCompatBridgeFromMeta','scanWidgetSource','scanWidgetMeta','bundledHostCompatCatalog','buildHostProfilesFromCatalog','fetchHostCompatCatalog','hostConfigFieldsToImageSupport','imageSupportToHostConfigFields']) { if (typeof hc[n] !== 'function') { throw new Error('missing host-compat export: ' + n); } } if (hc['HostCompatBridge'] === undefined) { throw new Error('missing host-compat export: HostCompatBridge'); } for (const n of ['MCP_APPS_FULL','MCP_APPS_CHATGPT','MCP_APPS_MISTRAL','MCP_APPS_CURSOR','MCP_APPS_GOOSE','MCP_APPS_COPILOT','MCP_APPS_SLACK','MCP_APPS_VSCODE','MCP_APPS_NO_CLAIMS']) { if (typeof hc[n] !== 'object') { throw new Error('missing host-compat capability export: ' + n); } } for (const n of ['hostCompatCatalogSchema','hostCompatCatalogEnvelopeSchema','mcpAppsCapabilitiesSchema']) { if (hc[n] === undefined) { throw new Error('missing host-compat schema export: ' + n); } } const pb = await import('@mcpjam/sdk/plugin-bundle'); for (const n of ['parsePluginBundle','containsRootPlaceholder']) { if (typeof pb[n] !== 'function') { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['DEFAULT_PLUGIN_BUNDLE_LIMITS','PLUGIN_ISSUE_CODES','PLUGIN_MANIFEST_DIR','PLUGIN_MANIFEST_PATH','PLUGIN_ROOT_PLACEHOLDERS','PluginBundleError','MCP_CONFIG_PATH']) { if (pb[n] === undefined) { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['normalizeBundlePath','validateBundleEntries','parseYamlLite','caseFoldPath','PluginIssueCollector','sha256HexBytes','computeAggregateHash']) { if (pb[n] !== undefined) { throw new Error('plugin-bundle should not re-export internal helper: ' + n); } }\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs","check:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts --check","generate:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts","check:host-catalog-fallback:remote":"node --import tsx scripts/check-host-catalog-fallback-remote.ts"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.1.12"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","ajv":"^8.17.1","zod":"^4.1.12","xpath":"^0.0.34","xml-crypto":"^6.1.2","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@xmldom/xmldom":"^0.8.13","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"2.0.0-beta.4","@modelcontextprotocol/ext-apps":"^1.7.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.4","esbuild":"^0.27.0","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"2.0.0-beta.4","@modelcontextprotocol/server":"2.0.0-beta.4","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_2.0.1_1784671716679_0.5910810596108291","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"@mcpjam/sdk","version":"2.1.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@2.1.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"5e7459d35cf92a6943cfade16b5d172377d372bf","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-2.1.0.tgz","fileCount":64,"integrity":"sha512-msNZ5grq1crhQzLfDtSWccWsbo3/1iHepjYH6d8Svc2yESuDOENLMycIJ0+W4fxAIvsARj3QDtfX75tO7xMlZA==","signatures":[{"sig":"MEUCIQCSDNq29h/3xmYCQCcwLxiKcwlgYMQj3wvSUy9t7VdtjgIgWU479cZPwSbuhMajN+rWtfSJBBjdnhJp0zcoFeX+cNs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12925673},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./public-api":{"types":"./dist/public-api/index.d.ts","import":"./dist/public-api/index.js","default":"./dist/public-api/index.js"},"./host-compat":{"types":"./dist/host-compat/index.d.ts","import":"./dist/host-compat/index.js","default":"./dist/host-compat/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./plugin-bundle":{"types":"./dist/plugin-bundle/index.d.ts","import":"./dist/plugin-bundle/index.js","default":"./dist/plugin-bundle/index.js"},"./widget-runtime":{"types":"./dist/widget-runtime/index.d.ts","import":"./dist/widget-runtime/index.js","default":"./dist/widget-runtime/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"},"./host-config/templates":{"types":"./dist/host-config/templates/index.d.ts","import":"./dist/host-config/templates/index.js","default":"./dist/host-config/templates/index.js"}},"gitHead":"798e9209980b768d1ce4bcd2a218ff27a5516fb7","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"const root = await import('@mcpjam/sdk'); for (const n of ['driveTaskToTerminal','TaskLifecycleEngine','taskLifecycleKey','isTerminalLifecycleStatus','extensionTaskToObservation','legacyTaskToObservation','isUnknownTaskError','canDeclareTasksExtension','readDeclaredInputCapabilities','TaskInputRejectedError','createStrictElicitationContentValidator','retryAfterMsFromError']) { if (typeof root[n] !== 'function') { throw new Error('missing tasks export: ' + n); } } for (const n of ['TERMINAL_LIFECYCLE_STATUSES','UNKNOWN_TASK_ERROR_CODE','DEFAULT_TASK_INPUT_LIMITS']) { if (root[n] === undefined) { throw new Error('missing tasks export: ' + n); } } await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); await import('@mcpjam/sdk/host-config'); const w = await import('@mcpjam/sdk/widget-runtime'); for (const n of ['getToolVisibility','isVisibleToModelOnly','isVisibleToAppOnly','LoggingTransport','buildOuterAllowAttribute','buildOuterSandboxAttribute','resolveIframeSandboxPolicy','createHostAppBridge','registerHostBridgeHandlers']) { if (typeof w[n] !== 'function') { throw new Error('missing widget-runtime export: ' + n); } } if (w['DEFAULT_IFRAME_SANDBOX'] === undefined) { throw new Error('missing widget-runtime export: DEFAULT_IFRAME_SANDBOX'); } const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation','checkHostCompatibilityOperation','createTunnelOperation','closeTunnelOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } } const pub = await import('@mcpjam/sdk/public-api'); for (const n of ['isV1ErrorCode','mapInternalCode','v1ErrorBody','v1Page','classifyRuntimeError']) { if (typeof pub[n] !== 'function') { throw new Error('missing public-api export: ' + n); } } for (const n of ['V1_ERROR_CODES','V1_ERROR_STATUS','INTERNAL_TO_V1_CODE']) { if (pub[n] === undefined) { throw new Error('missing public-api export: ' + n); } } const hc = await import('@mcpjam/sdk/host-compat'); for (const n of ['deriveServerRequirements','evaluateHostCompat','evaluateAllHosts','buildMarketHostProfiles','evaluateMarketHosts','scanWidgetUsage','detectHostCompatBridgeFromMeta','scanWidgetSource','scanWidgetMeta','bundledHostCompatCatalog','buildHostProfilesFromCatalog','fetchHostCompatCatalog','hostConfigFieldsToImageSupport','imageSupportToHostConfigFields']) { if (typeof hc[n] !== 'function') { throw new Error('missing host-compat export: ' + n); } } if (hc['HostCompatBridge'] === undefined) { throw new Error('missing host-compat export: HostCompatBridge'); } for (const n of ['MCP_APPS_FULL','MCP_APPS_CHATGPT','MCP_APPS_MISTRAL','MCP_APPS_CURSOR','MCP_APPS_GOOSE','MCP_APPS_COPILOT','MCP_APPS_SLACK','MCP_APPS_VSCODE','MCP_APPS_NO_CLAIMS']) { if (typeof hc[n] !== 'object') { throw new Error('missing host-compat capability export: ' + n); } } for (const n of ['hostCompatCatalogSchema','hostCompatCatalogEnvelopeSchema','mcpAppsCapabilitiesSchema']) { if (hc[n] === undefined) { throw new Error('missing host-compat schema export: ' + n); } } const pb = await import('@mcpjam/sdk/plugin-bundle'); for (const n of ['parsePluginBundle','containsRootPlaceholder','selectPluginMcpServerMap','detectPluginMcpTransport']) { if (typeof pb[n] !== 'function') { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['DEFAULT_PLUGIN_BUNDLE_LIMITS','PLUGIN_ISSUE_CODES','PLUGIN_MANIFEST_DIR','PLUGIN_MANIFEST_PATH','PLUGIN_ROOT_PLACEHOLDERS','PluginBundleError','MCP_CONFIG_PATH']) { if (pb[n] === undefined) { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['normalizeBundlePath','validateBundleEntries','parseYamlLite','caseFoldPath','PluginIssueCollector','sha256HexBytes','computeAggregateHash']) { if (pb[n] !== undefined) { throw new Error('plugin-bundle should not re-export internal helper: ' + n); } }\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs","check:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts --check","generate:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts","check:host-catalog-fallback:remote":"node --import tsx scripts/check-host-catalog-fallback-remote.ts"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.2.0"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","ajv":"^8.17.1","zod":"^4.2.0","xpath":"^0.0.34","xml-crypto":"^6.1.2","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@xmldom/xmldom":"^0.8.13","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"2.0.0","@modelcontextprotocol/ext-apps":"^1.7.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.4","esbuild":"^0.27.0","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"2.0.0","@modelcontextprotocol/server":"2.0.0","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_2.1.0_1785346236245_0.6920388205130747","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"@mcpjam/sdk","version":"2.2.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@2.2.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"19dd243dfb7466c11835dab2f60ce34abee82425","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-2.2.0.tgz","fileCount":64,"integrity":"sha512-pd11jcYG6b64sTqgFOYRZH/DHXlgyvM8nbwrb7tPSfpHK6bveNAq4tQzz87nMxQarphUNY4d+dGLUklMsW5WVQ==","signatures":[{"sig":"MEQCIFfvcpWthkt/WdTGcvlyTBuf00Br2WpDE8hH8FYLWbn2AiANnpWhKwBRxJuEKmmQ3ezqNui1Al7MtFbcGYtjhcVh4g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13248882},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./public-api":{"types":"./dist/public-api/index.d.ts","import":"./dist/public-api/index.js","default":"./dist/public-api/index.js"},"./host-compat":{"types":"./dist/host-compat/index.d.ts","import":"./dist/host-compat/index.js","default":"./dist/host-compat/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./plugin-bundle":{"types":"./dist/plugin-bundle/index.d.ts","import":"./dist/plugin-bundle/index.js","default":"./dist/plugin-bundle/index.js"},"./widget-runtime":{"types":"./dist/widget-runtime/index.d.ts","import":"./dist/widget-runtime/index.js","default":"./dist/widget-runtime/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"},"./host-config/templates":{"types":"./dist/host-config/templates/index.d.ts","import":"./dist/host-config/templates/index.js","default":"./dist/host-config/templates/index.js"}},"gitHead":"c3af6a95fdf0fb3032e90bf12d05dc5103275cc2","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"const root = await import('@mcpjam/sdk'); for (const n of ['driveTaskToTerminal','TaskLifecycleEngine','taskLifecycleKey','isTerminalLifecycleStatus','extensionTaskToObservation','legacyTaskToObservation','isUnknownTaskError','canDeclareTasksExtension','readDeclaredInputCapabilities','TaskInputRejectedError','createStrictElicitationContentValidator','retryAfterMsFromError']) { if (typeof root[n] !== 'function') { throw new Error('missing tasks export: ' + n); } } for (const n of ['TERMINAL_LIFECYCLE_STATUSES','UNKNOWN_TASK_ERROR_CODE','DEFAULT_TASK_INPUT_LIMITS']) { if (root[n] === undefined) { throw new Error('missing tasks export: ' + n); } } await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); await import('@mcpjam/sdk/host-config'); const w = await import('@mcpjam/sdk/widget-runtime'); for (const n of ['getToolVisibility','isVisibleToModelOnly','isVisibleToAppOnly','LoggingTransport','buildOuterAllowAttribute','buildOuterSandboxAttribute','resolveIframeSandboxPolicy','createHostAppBridge','registerHostBridgeHandlers']) { if (typeof w[n] !== 'function') { throw new Error('missing widget-runtime export: ' + n); } } if (w['DEFAULT_IFRAME_SANDBOX'] === undefined) { throw new Error('missing widget-runtime export: DEFAULT_IFRAME_SANDBOX'); } const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation','checkHostCompatibilityOperation','createTunnelOperation','closeTunnelOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } } const pub = await import('@mcpjam/sdk/public-api'); for (const n of ['isV1ErrorCode','mapInternalCode','v1ErrorBody','v1Page','classifyRuntimeError']) { if (typeof pub[n] !== 'function') { throw new Error('missing public-api export: ' + n); } } for (const n of ['V1_ERROR_CODES','V1_ERROR_STATUS','INTERNAL_TO_V1_CODE']) { if (pub[n] === undefined) { throw new Error('missing public-api export: ' + n); } } const hc = await import('@mcpjam/sdk/host-compat'); for (const n of ['deriveServerRequirements','evaluateHostCompat','evaluateAllHosts','buildMarketHostProfiles','evaluateMarketHosts','scanWidgetUsage','detectHostCompatBridgeFromMeta','scanWidgetSource','scanWidgetMeta','bundledHostCompatCatalog','buildHostProfilesFromCatalog','fetchHostCompatCatalog','hostConfigFieldsToImageSupport','imageSupportToHostConfigFields']) { if (typeof hc[n] !== 'function') { throw new Error('missing host-compat export: ' + n); } } if (hc['HostCompatBridge'] === undefined) { throw new Error('missing host-compat export: HostCompatBridge'); } for (const n of ['MCP_APPS_FULL','MCP_APPS_CHATGPT','MCP_APPS_MISTRAL','MCP_APPS_CURSOR','MCP_APPS_GOOSE','MCP_APPS_COPILOT','MCP_APPS_SLACK','MCP_APPS_VSCODE','MCP_APPS_NO_CLAIMS']) { if (typeof hc[n] !== 'object') { throw new Error('missing host-compat capability export: ' + n); } } for (const n of ['hostCompatCatalogSchema','hostCompatCatalogEnvelopeSchema','mcpAppsCapabilitiesSchema']) { if (hc[n] === undefined) { throw new Error('missing host-compat schema export: ' + n); } } const pb = await import('@mcpjam/sdk/plugin-bundle'); for (const n of ['parsePluginBundle','containsRootPlaceholder','selectPluginMcpServerMap','detectPluginMcpTransport']) { if (typeof pb[n] !== 'function') { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['DEFAULT_PLUGIN_BUNDLE_LIMITS','PLUGIN_ISSUE_CODES','PLUGIN_MANIFEST_DIR','PLUGIN_MANIFEST_PATH','PLUGIN_ROOT_PLACEHOLDERS','PluginBundleError','MCP_CONFIG_PATH']) { if (pb[n] === undefined) { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['normalizeBundlePath','validateBundleEntries','parseYamlLite','caseFoldPath','PluginIssueCollector','sha256HexBytes','computeAggregateHash']) { if (pb[n] !== undefined) { throw new Error('plugin-bundle should not re-export internal helper: ' + n); } }\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs","check:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts --check","generate:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts","check:host-catalog-fallback:remote":"node --import tsx scripts/check-host-catalog-fallback-remote.ts"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.2.0"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","ajv":"^8.17.1","zod":"^4.2.0","xpath":"^0.0.34","xml-crypto":"^6.1.2","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@xmldom/xmldom":"^0.8.13","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"2.0.0","@modelcontextprotocol/ext-apps":"^1.7.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.4","esbuild":"^0.27.0","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"2.0.0","@modelcontextprotocol/server":"2.0.0","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_2.2.0_1785563113969_0.437319231186551","host":"s3://npm-registry-packages-npm-production"}},"2.3.0":{"name":"@mcpjam/sdk","version":"2.3.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@2.3.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"f8d6bec7862f46ebdf98a0d8bf914875757b5a95","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-2.3.0.tgz","fileCount":64,"integrity":"sha512-vY8A3zDQG7Dd87dpgzXBDxoW04UYyX8OHYBfygD4ePHIumk3KOolLZDjOn8UzsDT62TqWeMInQbgj/yDk3gUoQ==","signatures":[{"sig":"MEYCIQDDtTPH2bbgWHAx545b2bz3WisVGL7j5JzawxVC+iOI7wIhANOrTazxChyDrH4wzoGIt19VMYFZ4XqtyNe1Ifz5b5QE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13685798},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./public-api":{"types":"./dist/public-api/index.d.ts","import":"./dist/public-api/index.js","default":"./dist/public-api/index.js"},"./host-compat":{"types":"./dist/host-compat/index.d.ts","import":"./dist/host-compat/index.js","default":"./dist/host-compat/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./plugin-bundle":{"types":"./dist/plugin-bundle/index.d.ts","import":"./dist/plugin-bundle/index.js","default":"./dist/plugin-bundle/index.js"},"./widget-runtime":{"types":"./dist/widget-runtime/index.d.ts","import":"./dist/widget-runtime/index.js","default":"./dist/widget-runtime/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"},"./host-config/templates":{"types":"./dist/host-config/templates/index.d.ts","import":"./dist/host-config/templates/index.js","default":"./dist/host-config/templates/index.js"}},"gitHead":"e642731a9751c8663859f1b43e08987d0b2f999c","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"const root = await import('@mcpjam/sdk'); for (const n of ['driveTaskToTerminal','TaskLifecycleEngine','taskLifecycleKey','isTerminalLifecycleStatus','extensionTaskToObservation','legacyTaskToObservation','isUnknownTaskError','canDeclareTasksExtension','readDeclaredInputCapabilities','TaskInputRejectedError','createStrictElicitationContentValidator','retryAfterMsFromError']) { if (typeof root[n] !== 'function') { throw new Error('missing tasks export: ' + n); } } for (const n of ['TERMINAL_LIFECYCLE_STATUSES','UNKNOWN_TASK_ERROR_CODE','DEFAULT_TASK_INPUT_LIMITS']) { if (root[n] === undefined) { throw new Error('missing tasks export: ' + n); } } await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); await import('@mcpjam/sdk/host-config'); const w = await import('@mcpjam/sdk/widget-runtime'); for (const n of ['getToolVisibility','isVisibleToModelOnly','isVisibleToAppOnly','LoggingTransport','buildOuterAllowAttribute','buildOuterSandboxAttribute','resolveIframeSandboxPolicy','createHostAppBridge','registerHostBridgeHandlers']) { if (typeof w[n] !== 'function') { throw new Error('missing widget-runtime export: ' + n); } } if (w['DEFAULT_IFRAME_SANDBOX'] === undefined) { throw new Error('missing widget-runtime export: DEFAULT_IFRAME_SANDBOX'); } const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation','checkHostCompatibilityOperation','createTunnelOperation','closeTunnelOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } } const pub = await import('@mcpjam/sdk/public-api'); for (const n of ['isV1ErrorCode','mapInternalCode','v1ErrorBody','v1Page','classifyRuntimeError']) { if (typeof pub[n] !== 'function') { throw new Error('missing public-api export: ' + n); } } for (const n of ['V1_ERROR_CODES','V1_ERROR_STATUS','INTERNAL_TO_V1_CODE']) { if (pub[n] === undefined) { throw new Error('missing public-api export: ' + n); } } const hc = await import('@mcpjam/sdk/host-compat'); for (const n of ['deriveServerRequirements','evaluateHostCompat','evaluateAllHosts','buildMarketHostProfiles','evaluateMarketHosts','scanWidgetUsage','detectHostCompatBridgeFromMeta','scanWidgetSource','scanWidgetMeta','bundledHostCompatCatalog','buildHostProfilesFromCatalog','fetchHostCompatCatalog','hostConfigFieldsToImageSupport','imageSupportToHostConfigFields']) { if (typeof hc[n] !== 'function') { throw new Error('missing host-compat export: ' + n); } } if (hc['HostCompatBridge'] === undefined) { throw new Error('missing host-compat export: HostCompatBridge'); } for (const n of ['MCP_APPS_FULL','MCP_APPS_CHATGPT','MCP_APPS_MISTRAL','MCP_APPS_CURSOR','MCP_APPS_GOOSE','MCP_APPS_COPILOT','MCP_APPS_SLACK','MCP_APPS_VSCODE','MCP_APPS_NO_CLAIMS']) { if (typeof hc[n] !== 'object') { throw new Error('missing host-compat capability export: ' + n); } } for (const n of ['hostCompatCatalogSchema','hostCompatCatalogEnvelopeSchema','mcpAppsCapabilitiesSchema']) { if (hc[n] === undefined) { throw new Error('missing host-compat schema export: ' + n); } } const pb = await import('@mcpjam/sdk/plugin-bundle'); for (const n of ['parsePluginBundle','containsRootPlaceholder','selectPluginMcpServerMap','detectPluginMcpTransport']) { if (typeof pb[n] !== 'function') { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['DEFAULT_PLUGIN_BUNDLE_LIMITS','PLUGIN_ISSUE_CODES','PLUGIN_MANIFEST_DIR','PLUGIN_MANIFEST_PATH','PLUGIN_ROOT_PLACEHOLDERS','PluginBundleError','MCP_CONFIG_PATH']) { if (pb[n] === undefined) { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['normalizeBundlePath','validateBundleEntries','parseYamlLite','caseFoldPath','PluginIssueCollector','sha256HexBytes','computeAggregateHash']) { if (pb[n] !== undefined) { throw new Error('plugin-bundle should not re-export internal helper: ' + n); } }\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs","check:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts --check","generate:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts","check:host-catalog-fallback:remote":"node --import tsx scripts/check-host-catalog-fallback-remote.ts"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.2.0"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","ajv":"^8.17.1","zod":"^4.2.0","xpath":"^0.0.34","xml-crypto":"^6.1.2","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@xmldom/xmldom":"^0.8.13","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"2.0.0","@modelcontextprotocol/ext-apps":"^1.7.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.4","esbuild":"^0.27.0","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"2.0.0","@modelcontextprotocol/server":"2.0.0","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_2.3.0_1785781512947_0.02651480296525066","host":"s3://npm-registry-packages-npm-production"}},"2.4.0":{"name":"@mcpjam/sdk","version":"2.4.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@2.4.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"40130b326f551d26f805c53897608d98676877c5","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-2.4.0.tgz","fileCount":63,"integrity":"sha512-UfCnt+muq6AerHTqXoONWGY81Btt+3i78wh5rUgXNkAYSQd0BKWpgnlxjxbFbDC9QRFFkwlRFBcAXm+0dbfB2w==","signatures":[{"sig":"MEUCIQDpqngA8breFR5UEV4+ymn7gTCtdLmwObMER52Qs3p9CAIgQf+OzMxEgsvIt2zpPywnzGWVIexjYUV2bQmP/cuOodE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14618782},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./public-api":{"types":"./dist/public-api/index.d.ts","import":"./dist/public-api/index.js","default":"./dist/public-api/index.js"},"./host-compat":{"types":"./dist/host-compat/index.d.ts","import":"./dist/host-compat/index.js","default":"./dist/host-compat/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./plugin-bundle":{"types":"./dist/plugin-bundle/index.d.ts","import":"./dist/plugin-bundle/index.js","default":"./dist/plugin-bundle/index.js"},"./widget-runtime":{"types":"./dist/widget-runtime/index.d.ts","import":"./dist/widget-runtime/index.js","default":"./dist/widget-runtime/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"},"./host-config/templates":{"types":"./dist/host-config/templates/index.d.ts","import":"./dist/host-config/templates/index.js","default":"./dist/host-config/templates/index.js"}},"gitHead":"12f47bbbfc4df01a0a11a4ccc252dc04c6b65855","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"const root = await import('@mcpjam/sdk'); for (const n of ['driveTaskToTerminal','TaskLifecycleEngine','taskLifecycleKey','isTerminalLifecycleStatus','extensionTaskToObservation','legacyTaskToObservation','isUnknownTaskError','canDeclareTasksExtension','readDeclaredInputCapabilities','TaskInputRejectedError','createStrictElicitationContentValidator','retryAfterMsFromError']) { if (typeof root[n] !== 'function') { throw new Error('missing tasks export: ' + n); } } for (const n of ['TERMINAL_LIFECYCLE_STATUSES','UNKNOWN_TASK_ERROR_CODE','DEFAULT_TASK_INPUT_LIMITS']) { if (root[n] === undefined) { throw new Error('missing tasks export: ' + n); } } await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); await import('@mcpjam/sdk/host-config'); const w = await import('@mcpjam/sdk/widget-runtime'); for (const n of ['getToolVisibility','isVisibleToModelOnly','isVisibleToAppOnly','LoggingTransport','buildOuterAllowAttribute','buildOuterSandboxAttribute','resolveIframeSandboxPolicy','createHostAppBridge','registerHostBridgeHandlers']) { if (typeof w[n] !== 'function') { throw new Error('missing widget-runtime export: ' + n); } } if (w['DEFAULT_IFRAME_SANDBOX'] === undefined) { throw new Error('missing widget-runtime export: DEFAULT_IFRAME_SANDBOX'); } const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation','checkHostCompatibilityOperation','createTunnelOperation','closeTunnelOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } } const pub = await import('@mcpjam/sdk/public-api'); for (const n of ['isV1ErrorCode','mapInternalCode','v1ErrorBody','v1Page','classifyRuntimeError']) { if (typeof pub[n] !== 'function') { throw new Error('missing public-api export: ' + n); } } for (const n of ['V1_ERROR_CODES','V1_ERROR_STATUS','INTERNAL_TO_V1_CODE']) { if (pub[n] === undefined) { throw new Error('missing public-api export: ' + n); } } const hc = await import('@mcpjam/sdk/host-compat'); for (const n of ['deriveServerRequirements','evaluateHostCompat','evaluateAllHosts','buildMarketHostProfiles','evaluateMarketHosts','scanWidgetUsage','detectHostCompatBridgeFromMeta','scanWidgetSource','scanWidgetMeta','bundledHostCompatCatalog','buildHostProfilesFromCatalog','fetchHostCompatCatalog','hostConfigFieldsToImageSupport','imageSupportToHostConfigFields']) { if (typeof hc[n] !== 'function') { throw new Error('missing host-compat export: ' + n); } } if (hc['HostCompatBridge'] === undefined) { throw new Error('missing host-compat export: HostCompatBridge'); } for (const n of ['MCP_APPS_FULL','MCP_APPS_CHATGPT','MCP_APPS_MISTRAL','MCP_APPS_CURSOR','MCP_APPS_GOOSE','MCP_APPS_COPILOT','MCP_APPS_SLACK','MCP_APPS_VSCODE','MCP_APPS_NO_CLAIMS']) { if (typeof hc[n] !== 'object') { throw new Error('missing host-compat capability export: ' + n); } } for (const n of ['hostCompatCatalogSchema','hostCompatCatalogEnvelopeSchema','mcpAppsCapabilitiesSchema']) { if (hc[n] === undefined) { throw new Error('missing host-compat schema export: ' + n); } } const pb = await import('@mcpjam/sdk/plugin-bundle'); for (const n of ['parsePluginBundle','containsRootPlaceholder','selectPluginMcpServerMap','detectPluginMcpTransport']) { if (typeof pb[n] !== 'function') { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['DEFAULT_PLUGIN_BUNDLE_LIMITS','PLUGIN_ISSUE_CODES','PLUGIN_MANIFEST_DIR','PLUGIN_MANIFEST_PATH','PLUGIN_ROOT_PLACEHOLDERS','PluginBundleError','MCP_CONFIG_PATH']) { if (pb[n] === undefined) { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['normalizeBundlePath','validateBundleEntries','parseYamlLite','caseFoldPath','PluginIssueCollector','sha256HexBytes','computeAggregateHash']) { if (pb[n] !== undefined) { throw new Error('plugin-bundle should not re-export internal helper: ' + n); } }\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs","check:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts --check","generate:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts","check:host-catalog-fallback:remote":"node --import tsx scripts/check-host-catalog-fallback-remote.ts"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.2.0"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","ajv":"^8.17.1","zod":"^4.2.0","yaml":"^2.9.0","xpath":"^0.0.34","xml-crypto":"^6.1.2","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@xmldom/xmldom":"^0.8.13","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"2.0.0","@modelcontextprotocol/ext-apps":"^1.7.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.4","esbuild":"^0.27.0","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"2.0.0","@modelcontextprotocol/server":"2.0.0","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_2.4.0_1785899783380_0.9222421908283243","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"@mcpjam/sdk","version":"3.0.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@3.0.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"9d080cbe6bfc2d5791569d31babd0b6b7b7dd5be","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-3.0.0.tgz","fileCount":63,"integrity":"sha512-ka7U79FFWkZCFufnO8Byg2TO19HXbsH637hUJGdohJZ4cHZdChAdJvkVbGNOvToyCrYFTdrl5qdSJL6R+RDBLw==","signatures":[{"sig":"MEQCIB0lDcNlU3gf6Uf6F8vGCDnRkEanNKfPSrqYLJZZTMVMAiBgfnRx0XafZu6NPvYKA+8NvtmTOzcZNVrqynBEB9i8nA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14932292},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./public-api":{"types":"./dist/public-api/index.d.ts","import":"./dist/public-api/index.js","default":"./dist/public-api/index.js"},"./host-compat":{"types":"./dist/host-compat/index.d.ts","import":"./dist/host-compat/index.js","default":"./dist/host-compat/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./plugin-bundle":{"types":"./dist/plugin-bundle/index.d.ts","import":"./dist/plugin-bundle/index.js","default":"./dist/plugin-bundle/index.js"},"./widget-runtime":{"types":"./dist/widget-runtime/index.d.ts","import":"./dist/widget-runtime/index.js","default":"./dist/widget-runtime/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"},"./host-config/templates":{"types":"./dist/host-config/templates/index.d.ts","import":"./dist/host-config/templates/index.js","default":"./dist/host-config/templates/index.js"}},"gitHead":"e8d69c1b10a984da76a51fa0d1e4a5bef6e533a8","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"const root = await import('@mcpjam/sdk'); for (const n of ['driveTaskToTerminal','TaskLifecycleEngine','taskLifecycleKey','isTerminalLifecycleStatus','extensionTaskToObservation','legacyTaskToObservation','isUnknownTaskError','canDeclareTasksExtension','readDeclaredInputCapabilities','TaskInputRejectedError','createStrictElicitationContentValidator','retryAfterMsFromError']) { if (typeof root[n] !== 'function') { throw new Error('missing tasks export: ' + n); } } for (const n of ['TERMINAL_LIFECYCLE_STATUSES','UNKNOWN_TASK_ERROR_CODE','DEFAULT_TASK_INPUT_LIMITS']) { if (root[n] === undefined) { throw new Error('missing tasks export: ' + n); } } await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); await import('@mcpjam/sdk/host-config'); const w = await import('@mcpjam/sdk/widget-runtime'); for (const n of ['getToolVisibility','isVisibleToModelOnly','isVisibleToAppOnly','LoggingTransport','buildOuterAllowAttribute','buildOuterSandboxAttribute','resolveIframeSandboxPolicy','createHostAppBridge','registerHostBridgeHandlers']) { if (typeof w[n] !== 'function') { throw new Error('missing widget-runtime export: ' + n); } } if (w['DEFAULT_IFRAME_SANDBOX'] === undefined) { throw new Error('missing widget-runtime export: DEFAULT_IFRAME_SANDBOX'); } const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation','checkHostCompatibilityOperation','createTunnelOperation','closeTunnelOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } } const pub = await import('@mcpjam/sdk/public-api'); for (const n of ['isV1ErrorCode','mapInternalCode','v1ErrorBody','v1Page','classifyRuntimeError']) { if (typeof pub[n] !== 'function') { throw new Error('missing public-api export: ' + n); } } for (const n of ['V1_ERROR_CODES','V1_ERROR_STATUS','INTERNAL_TO_V1_CODE']) { if (pub[n] === undefined) { throw new Error('missing public-api export: ' + n); } } const hc = await import('@mcpjam/sdk/host-compat'); for (const n of ['deriveServerRequirements','evaluateHostCompat','evaluateAllHosts','buildMarketHostProfiles','evaluateMarketHosts','scanWidgetUsage','detectHostCompatBridgeFromMeta','scanWidgetSource','scanWidgetMeta','bundledHostCompatCatalog','buildHostProfilesFromCatalog','fetchHostCompatCatalog','hostConfigFieldsToImageSupport','imageSupportToHostConfigFields']) { if (typeof hc[n] !== 'function') { throw new Error('missing host-compat export: ' + n); } } if (hc['HostCompatBridge'] === undefined) { throw new Error('missing host-compat export: HostCompatBridge'); } for (const n of ['MCP_APPS_FULL','MCP_APPS_CHATGPT','MCP_APPS_MISTRAL','MCP_APPS_CURSOR','MCP_APPS_GOOSE','MCP_APPS_COPILOT','MCP_APPS_SLACK','MCP_APPS_VSCODE','MCP_APPS_NO_CLAIMS']) { if (typeof hc[n] !== 'object') { throw new Error('missing host-compat capability export: ' + n); } } for (const n of ['hostCompatCatalogSchema','hostCompatCatalogEnvelopeSchema','mcpAppsCapabilitiesSchema']) { if (hc[n] === undefined) { throw new Error('missing host-compat schema export: ' + n); } } const pb = await import('@mcpjam/sdk/plugin-bundle'); for (const n of ['parsePluginBundle','containsRootPlaceholder','containsPluginPlaceholder','selectPluginMcpServerMap','detectPluginMcpTransport']) { if (typeof pb[n] !== 'function') { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['DEFAULT_PLUGIN_BUNDLE_LIMITS','PLUGIN_ISSUE_CODES','PLUGIN_MANIFEST_SCHEMAS','PLUGIN_MCP_SCHEMAS','PLUGIN_MANIFEST_PATH','PLUGIN_ROOT_PLACEHOLDERS','PLUGIN_DATA_PLACEHOLDER','PluginBundleError','MCP_CONFIG_PATH']) { if (pb[n] === undefined) { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['normalizeBundlePath','validateBundleEntries','parseYamlLite','caseFoldPath','PluginIssueCollector','sha256HexBytes','computeAggregateHash']) { if (pb[n] !== undefined) { throw new Error('plugin-bundle should not re-export internal helper: ' + n); } }\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs","check:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts --check","generate:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts","check:host-catalog-fallback:remote":"node --import tsx scripts/check-host-catalog-fallback-remote.ts"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.2.0"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","ajv":"^8.17.1","zod":"^4.2.0","yaml":"^2.9.0","xpath":"^0.0.34","xml-crypto":"^6.1.2","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@xmldom/xmldom":"^0.8.13","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"2.0.0","@modelcontextprotocol/ext-apps":"^1.7.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.4","esbuild":"^0.27.0","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"2.0.0","@modelcontextprotocol/server":"2.0.0","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_3.0.0_1786383651913_0.37262174409103066","host":"s3://npm-registry-packages-npm-production"}},"3.1.0":{"name":"@mcpjam/sdk","version":"3.1.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@3.1.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"defff67cc1b4f48637d4eb233ab92843193f41fc","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-3.1.0.tgz","fileCount":63,"integrity":"sha512-S0/JRuMXrkmPoZWdZo/XzL1FewUe3p5TCqZwmbJOyMk87h1K1UOGGCCNS6DHYisg3oVcDD0udS4usMlF5W/hrg==","signatures":[{"sig":"MEUCIQCR+bYZilKMsftFQR7IPQ4ztRTH3sMl/BtgfOLsWit5PAIgdz5z0npMGFmKz6SJeGAsuCKvjyGPSFumLEaEL//wm2E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15028990},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./public-api":{"types":"./dist/public-api/index.d.ts","import":"./dist/public-api/index.js","default":"./dist/public-api/index.js"},"./host-compat":{"types":"./dist/host-compat/index.d.ts","import":"./dist/host-compat/index.js","default":"./dist/host-compat/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./plugin-bundle":{"types":"./dist/plugin-bundle/index.d.ts","import":"./dist/plugin-bundle/index.js","default":"./dist/plugin-bundle/index.js"},"./widget-runtime":{"types":"./dist/widget-runtime/index.d.ts","import":"./dist/widget-runtime/index.js","default":"./dist/widget-runtime/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"},"./host-config/templates":{"types":"./dist/host-config/templates/index.d.ts","import":"./dist/host-config/templates/index.js","default":"./dist/host-config/templates/index.js"}},"gitHead":"a905d6149116d1bfe421136705c5c78a4ca554c4","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"const root = await import('@mcpjam/sdk'); for (const n of ['driveTaskToTerminal','TaskLifecycleEngine','taskLifecycleKey','isTerminalLifecycleStatus','extensionTaskToObservation','legacyTaskToObservation','isUnknownTaskError','canDeclareTasksExtension','readDeclaredInputCapabilities','TaskInputRejectedError','createStrictElicitationContentValidator','retryAfterMsFromError']) { if (typeof root[n] !== 'function') { throw new Error('missing tasks export: ' + n); } } for (const n of ['TERMINAL_LIFECYCLE_STATUSES','UNKNOWN_TASK_ERROR_CODE','DEFAULT_TASK_INPUT_LIMITS']) { if (root[n] === undefined) { throw new Error('missing tasks export: ' + n); } } await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); await import('@mcpjam/sdk/host-config'); const w = await import('@mcpjam/sdk/widget-runtime'); for (const n of ['getToolVisibility','isVisibleToModelOnly','isVisibleToAppOnly','LoggingTransport','buildOuterAllowAttribute','buildOuterSandboxAttribute','resolveIframeSandboxPolicy','createHostAppBridge','registerHostBridgeHandlers']) { if (typeof w[n] !== 'function') { throw new Error('missing widget-runtime export: ' + n); } } if (w['DEFAULT_IFRAME_SANDBOX'] === undefined) { throw new Error('missing widget-runtime export: DEFAULT_IFRAME_SANDBOX'); } const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation','checkHostCompatibilityOperation','createTunnelOperation','closeTunnelOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } } const pub = await import('@mcpjam/sdk/public-api'); for (const n of ['isV1ErrorCode','mapInternalCode','v1ErrorBody','v1Page','classifyRuntimeError']) { if (typeof pub[n] !== 'function') { throw new Error('missing public-api export: ' + n); } } for (const n of ['V1_ERROR_CODES','V1_ERROR_STATUS','INTERNAL_TO_V1_CODE']) { if (pub[n] === undefined) { throw new Error('missing public-api export: ' + n); } } const hc = await import('@mcpjam/sdk/host-compat'); for (const n of ['deriveServerRequirements','evaluateHostCompat','evaluateAllHosts','buildMarketHostProfiles','evaluateMarketHosts','scanWidgetUsage','detectHostCompatBridgeFromMeta','scanWidgetSource','scanWidgetMeta','bundledHostCompatCatalog','buildHostProfilesFromCatalog','fetchHostCompatCatalog','hostConfigFieldsToImageSupport','imageSupportToHostConfigFields']) { if (typeof hc[n] !== 'function') { throw new Error('missing host-compat export: ' + n); } } if (hc['HostCompatBridge'] === undefined) { throw new Error('missing host-compat export: HostCompatBridge'); } for (const n of ['MCP_APPS_FULL','MCP_APPS_CHATGPT','MCP_APPS_MISTRAL','MCP_APPS_CURSOR','MCP_APPS_GOOSE','MCP_APPS_COPILOT','MCP_APPS_SLACK','MCP_APPS_VSCODE','MCP_APPS_NO_CLAIMS']) { if (typeof hc[n] !== 'object') { throw new Error('missing host-compat capability export: ' + n); } } for (const n of ['hostCompatCatalogSchema','hostCompatCatalogEnvelopeSchema','mcpAppsCapabilitiesSchema']) { if (hc[n] === undefined) { throw new Error('missing host-compat schema export: ' + n); } } const pb = await import('@mcpjam/sdk/plugin-bundle'); for (const n of ['parsePluginBundle','containsRootPlaceholder','containsPluginPlaceholder','selectPluginMcpServerMap','detectPluginMcpTransport']) { if (typeof pb[n] !== 'function') { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['DEFAULT_PLUGIN_BUNDLE_LIMITS','PLUGIN_ISSUE_CODES','PLUGIN_MANIFEST_SCHEMAS','PLUGIN_MCP_SCHEMAS','PLUGIN_MANIFEST_PATH','PLUGIN_ROOT_PLACEHOLDERS','PLUGIN_DATA_PLACEHOLDER','PluginBundleError','MCP_CONFIG_PATH']) { if (pb[n] === undefined) { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['normalizeBundlePath','validateBundleEntries','parseYamlLite','caseFoldPath','PluginIssueCollector','sha256HexBytes','computeAggregateHash']) { if (pb[n] !== undefined) { throw new Error('plugin-bundle should not re-export internal helper: ' + n); } }\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs","check:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts --check","generate:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts","check:host-catalog-fallback:remote":"node --import tsx scripts/check-host-catalog-fallback-remote.ts"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.2.0"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","ajv":"^8.17.1","zod":"^4.2.0","yaml":"^2.9.0","xpath":"^0.0.34","xml-crypto":"^6.1.2","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@xmldom/xmldom":"^0.8.13","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"2.0.0","@modelcontextprotocol/ext-apps":"^1.7.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.4","esbuild":"^0.27.0","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"2.0.0","@modelcontextprotocol/server":"2.0.0","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_3.1.0_1786484277630_0.9059488954280828","host":"s3://npm-registry-packages-npm-production"}},"4.0.0":{"name":"@mcpjam/sdk","version":"4.0.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@4.0.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"157f78a98467e4113691efff3fb75cf519197b70","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-4.0.0.tgz","fileCount":68,"integrity":"sha512-uFHzJiuMmX+3tMWo8Y1yJixZ+XFq9B9YH8N/mCy/N1tc87VfcwK6UC5Sp7oaTPInYjrxj8iKbZNM6SxeP4v6vA==","signatures":[{"sig":"MEQCIEbPKfUJd2RX4yboQowm16SDNJwATMuy1XlPRZlMydfOAiACnYlHrwTURAPnp81F6wANZlYby/M1rjO0mkFbuP4LWw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15182511},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./oauth/node":{"types":"./dist/oauth/node.d.ts","import":"./dist/oauth/node.js","default":"./dist/oauth/node.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./public-api":{"types":"./dist/public-api/index.d.ts","import":"./dist/public-api/index.js","default":"./dist/public-api/index.js"},"./host-compat":{"types":"./dist/host-compat/index.d.ts","import":"./dist/host-compat/index.js","default":"./dist/host-compat/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./plugin-bundle":{"types":"./dist/plugin-bundle/index.d.ts","import":"./dist/plugin-bundle/index.js","default":"./dist/plugin-bundle/index.js"},"./widget-runtime":{"types":"./dist/widget-runtime/index.d.ts","import":"./dist/widget-runtime/index.js","default":"./dist/widget-runtime/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"},"./host-config/templates":{"types":"./dist/host-config/templates/index.d.ts","import":"./dist/host-config/templates/index.js","default":"./dist/host-config/templates/index.js"}},"gitHead":"29296a8a70bda4e5aeffdd3a0ddc35fa9fc0958c","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"const root = await import('@mcpjam/sdk'); for (const n of ['driveTaskToTerminal','TaskLifecycleEngine','taskLifecycleKey','isTerminalLifecycleStatus','extensionTaskToObservation','legacyTaskToObservation','isUnknownTaskError','canDeclareTasksExtension','readDeclaredInputCapabilities','TaskInputRejectedError','createStrictElicitationContentValidator','retryAfterMsFromError']) { if (typeof root[n] !== 'function') { throw new Error('missing tasks export: ' + n); } } for (const n of ['TERMINAL_LIFECYCLE_STATUSES','UNKNOWN_TASK_ERROR_CODE','DEFAULT_TASK_INPUT_LIMITS']) { if (root[n] === undefined) { throw new Error('missing tasks export: ' + n); } } await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); await import('@mcpjam/sdk/host-config'); const w = await import('@mcpjam/sdk/widget-runtime'); for (const n of ['getToolVisibility','isVisibleToModelOnly','isVisibleToAppOnly','LoggingTransport','buildOuterAllowAttribute','buildOuterSandboxAttribute','resolveIframeSandboxPolicy','createHostAppBridge','registerHostBridgeHandlers']) { if (typeof w[n] !== 'function') { throw new Error('missing widget-runtime export: ' + n); } } if (w['DEFAULT_IFRAME_SANDBOX'] === undefined) { throw new Error('missing widget-runtime export: DEFAULT_IFRAME_SANDBOX'); } const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation','checkHostCompatibilityOperation','createTunnelOperation','closeTunnelOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } } const pub = await import('@mcpjam/sdk/public-api'); for (const n of ['isV1ErrorCode','mapInternalCode','v1ErrorBody','v1Page','classifyRuntimeError']) { if (typeof pub[n] !== 'function') { throw new Error('missing public-api export: ' + n); } } for (const n of ['V1_ERROR_CODES','V1_ERROR_STATUS','INTERNAL_TO_V1_CODE']) { if (pub[n] === undefined) { throw new Error('missing public-api export: ' + n); } } const hc = await import('@mcpjam/sdk/host-compat'); for (const n of ['deriveServerRequirements','evaluateHostCompat','evaluateAllHosts','buildMarketHostProfiles','evaluateMarketHosts','scanWidgetUsage','detectHostCompatBridgeFromMeta','scanWidgetSource','scanWidgetMeta','bundledHostCompatCatalog','buildHostProfilesFromCatalog','fetchHostCompatCatalog','hostConfigFieldsToImageSupport','imageSupportToHostConfigFields']) { if (typeof hc[n] !== 'function') { throw new Error('missing host-compat export: ' + n); } } if (hc['HostCompatBridge'] === undefined) { throw new Error('missing host-compat export: HostCompatBridge'); } for (const n of ['MCP_APPS_FULL','MCP_APPS_CHATGPT','MCP_APPS_MISTRAL','MCP_APPS_CURSOR','MCP_APPS_GOOSE','MCP_APPS_COPILOT','MCP_APPS_SLACK','MCP_APPS_VSCODE','MCP_APPS_NO_CLAIMS']) { if (typeof hc[n] !== 'object') { throw new Error('missing host-compat capability export: ' + n); } } for (const n of ['hostCompatCatalogSchema','hostCompatCatalogEnvelopeSchema','mcpAppsCapabilitiesSchema']) { if (hc[n] === undefined) { throw new Error('missing host-compat schema export: ' + n); } } const pb = await import('@mcpjam/sdk/plugin-bundle'); for (const n of ['parsePluginBundle','containsRootPlaceholder','containsPluginPlaceholder','selectPluginMcpServerMap','detectPluginMcpTransport']) { if (typeof pb[n] !== 'function') { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['DEFAULT_PLUGIN_BUNDLE_LIMITS','PLUGIN_ISSUE_CODES','PLUGIN_MANIFEST_SCHEMAS','PLUGIN_MCP_SCHEMAS','PLUGIN_MANIFEST_PATH','PLUGIN_ROOT_PLACEHOLDERS','PLUGIN_DATA_PLACEHOLDER','PluginBundleError','MCP_CONFIG_PATH']) { if (pb[n] === undefined) { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['normalizeBundlePath','validateBundleEntries','parseYamlLite','caseFoldPath','PluginIssueCollector','sha256HexBytes','computeAggregateHash']) { if (pb[n] !== undefined) { throw new Error('plugin-bundle should not re-export internal helper: ' + n); } } const on = await import('@mcpjam/sdk/oauth/node'); for (const n of ['assertOutboundOAuthUrlAllowed','isDisallowedIpAddress','isLoopbackOAuthUrl','isPrivateHost','OAuthOutboundUrlBlockedError','executeOAuthProxy','executeDebugOAuthProxy','fetchOAuthMetadata','fetchPinnedPublicDocument','validateUrl','OAuthProxyError']) { if (typeof on[n] !== 'function') { throw new Error('missing oauth/node export: ' + n); } }\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs","check:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts --check","generate:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts","check:host-catalog-fallback:remote":"node --import tsx scripts/check-host-catalog-fallback-remote.ts"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.2.0"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","ajv":"^8.17.1","zod":"^4.2.0","yaml":"^2.9.0","xpath":"^0.0.34","xml-crypto":"^6.1.2","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@xmldom/xmldom":"^0.8.13","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"2.0.0","@modelcontextprotocol/ext-apps":"^1.7.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.4","esbuild":"^0.27.0","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"2.0.0","@modelcontextprotocol/server":"2.0.0","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_4.0.0_1786589408821_0.3226712895015842","host":"s3://npm-registry-packages-npm-production"}},"4.1.0":{"name":"@mcpjam/sdk","version":"4.1.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@4.1.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"ee8a76ad10d95ff00b650e1d7902ca61f497b8c5","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-4.1.0.tgz","fileCount":68,"integrity":"sha512-6PHGsms4+fmUktx5FUBZwyAk0Y1hHcaqRh1jg5/tcysOhVDJwksyfOnKktbGG9KtssXyVYETS3kxwiP75XbfsQ==","signatures":[{"sig":"MEQCIEZ9RhCNh5x3VdWs50rVvNB9QgAOmsY1LBI7ts0cEd62AiAi7Dv/oX9jIJp2P3jVC4xEZ/54II6uLCYVPUhzn3UVtg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15246556},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./oauth/node":{"types":"./dist/oauth/node.d.ts","import":"./dist/oauth/node.js","default":"./dist/oauth/node.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./public-api":{"types":"./dist/public-api/index.d.ts","import":"./dist/public-api/index.js","default":"./dist/public-api/index.js"},"./host-compat":{"types":"./dist/host-compat/index.d.ts","import":"./dist/host-compat/index.js","default":"./dist/host-compat/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./plugin-bundle":{"types":"./dist/plugin-bundle/index.d.ts","import":"./dist/plugin-bundle/index.js","default":"./dist/plugin-bundle/index.js"},"./widget-runtime":{"types":"./dist/widget-runtime/index.d.ts","import":"./dist/widget-runtime/index.js","default":"./dist/widget-runtime/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"},"./host-config/templates":{"types":"./dist/host-config/templates/index.d.ts","import":"./dist/host-config/templates/index.js","default":"./dist/host-config/templates/index.js"}},"gitHead":"bb0346ddb886cadb3227013b6b674eb44a9c576c","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"const root = await import('@mcpjam/sdk'); for (const n of ['driveTaskToTerminal','TaskLifecycleEngine','taskLifecycleKey','isTerminalLifecycleStatus','extensionTaskToObservation','legacyTaskToObservation','isUnknownTaskError','canDeclareTasksExtension','readDeclaredInputCapabilities','TaskInputRejectedError','createStrictElicitationContentValidator','retryAfterMsFromError']) { if (typeof root[n] !== 'function') { throw new Error('missing tasks export: ' + n); } } for (const n of ['TERMINAL_LIFECYCLE_STATUSES','UNKNOWN_TASK_ERROR_CODE','DEFAULT_TASK_INPUT_LIMITS']) { if (root[n] === undefined) { throw new Error('missing tasks export: ' + n); } } await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); await import('@mcpjam/sdk/host-config'); const w = await import('@mcpjam/sdk/widget-runtime'); for (const n of ['getToolVisibility','isVisibleToModelOnly','isVisibleToAppOnly','LoggingTransport','buildOuterAllowAttribute','buildOuterSandboxAttribute','resolveIframeSandboxPolicy','createHostAppBridge','registerHostBridgeHandlers']) { if (typeof w[n] !== 'function') { throw new Error('missing widget-runtime export: ' + n); } } if (w['DEFAULT_IFRAME_SANDBOX'] === undefined) { throw new Error('missing widget-runtime export: DEFAULT_IFRAME_SANDBOX'); } const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation','checkHostCompatibilityOperation','createTunnelOperation','closeTunnelOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } } const pub = await import('@mcpjam/sdk/public-api'); for (const n of ['isV1ErrorCode','mapInternalCode','v1ErrorBody','v1Page','classifyRuntimeError']) { if (typeof pub[n] !== 'function') { throw new Error('missing public-api export: ' + n); } } for (const n of ['V1_ERROR_CODES','V1_ERROR_STATUS','INTERNAL_TO_V1_CODE']) { if (pub[n] === undefined) { throw new Error('missing public-api export: ' + n); } } const hc = await import('@mcpjam/sdk/host-compat'); for (const n of ['deriveServerRequirements','evaluateHostCompat','evaluateAllHosts','buildMarketHostProfiles','evaluateMarketHosts','scanWidgetUsage','detectHostCompatBridgeFromMeta','scanWidgetSource','scanWidgetMeta','bundledHostCompatCatalog','buildHostProfilesFromCatalog','fetchHostCompatCatalog','hostConfigFieldsToImageSupport','imageSupportToHostConfigFields']) { if (typeof hc[n] !== 'function') { throw new Error('missing host-compat export: ' + n); } } if (hc['HostCompatBridge'] === undefined) { throw new Error('missing host-compat export: HostCompatBridge'); } for (const n of ['MCP_APPS_FULL','MCP_APPS_CHATGPT','MCP_APPS_MISTRAL','MCP_APPS_CURSOR','MCP_APPS_GOOSE','MCP_APPS_COPILOT','MCP_APPS_SLACK','MCP_APPS_VSCODE','MCP_APPS_NO_CLAIMS']) { if (typeof hc[n] !== 'object') { throw new Error('missing host-compat capability export: ' + n); } } for (const n of ['hostCompatCatalogSchema','hostCompatCatalogEnvelopeSchema','mcpAppsCapabilitiesSchema']) { if (hc[n] === undefined) { throw new Error('missing host-compat schema export: ' + n); } } const pb = await import('@mcpjam/sdk/plugin-bundle'); for (const n of ['parsePluginBundle','containsRootPlaceholder','containsPluginPlaceholder','selectPluginMcpServerMap','detectPluginMcpTransport']) { if (typeof pb[n] !== 'function') { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['DEFAULT_PLUGIN_BUNDLE_LIMITS','PLUGIN_ISSUE_CODES','PLUGIN_MANIFEST_SCHEMAS','PLUGIN_MCP_SCHEMAS','PLUGIN_MANIFEST_PATH','PLUGIN_ROOT_PLACEHOLDERS','PLUGIN_DATA_PLACEHOLDER','PluginBundleError','MCP_CONFIG_PATH']) { if (pb[n] === undefined) { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['normalizeBundlePath','validateBundleEntries','parseYamlLite','caseFoldPath','PluginIssueCollector','sha256HexBytes','computeAggregateHash']) { if (pb[n] !== undefined) { throw new Error('plugin-bundle should not re-export internal helper: ' + n); } } const on = await import('@mcpjam/sdk/oauth/node'); for (const n of ['assertOutboundOAuthUrlAllowed','isDisallowedIpAddress','isLoopbackOAuthUrl','isPrivateHost','OAuthOutboundUrlBlockedError','executeOAuthProxy','executeDebugOAuthProxy','fetchOAuthMetadata','fetchPinnedPublicDocument','validateUrl','OAuthProxyError']) { if (typeof on[n] !== 'function') { throw new Error('missing oauth/node export: ' + n); } }\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs","check:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts --check","generate:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts","check:host-catalog-fallback:remote":"node --import tsx scripts/check-host-catalog-fallback-remote.ts"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.2.0"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","ajv":"^8.17.1","zod":"^4.2.0","yaml":"^2.9.0","xpath":"^0.0.34","xml-crypto":"^6.1.2","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@xmldom/xmldom":"^0.8.13","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"2.0.0","@modelcontextprotocol/ext-apps":"^1.7.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.4","esbuild":"^0.27.0","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"2.0.0","@modelcontextprotocol/server":"2.0.0","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_4.1.0_1786666233523_0.7635538527301851","host":"s3://npm-registry-packages-npm-production"}},"4.2.0":{"name":"@mcpjam/sdk","version":"4.2.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@4.2.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"a71e562ff47af66649941aec243500c6a48e600d","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-4.2.0.tgz","fileCount":68,"integrity":"sha512-nrRL5FZ9PB4O0DuQgA7fOJnNJGyYftvdFZOaV6OfqfDZaBH4h1C7GHx7TQuvXVKJjfcndRTDR3/NSMQVdZ6dcA==","signatures":[{"sig":"MEYCIQDRjZcSqfeAr9XGy4STI4wh5uf2yO3FYX8XEsNYZDVs/QIhAOPYPS9J16I656wZPPd+rPRDdt281EhZwvPHJ06pgI38","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15250750},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./oauth/node":{"types":"./dist/oauth/node.d.ts","import":"./dist/oauth/node.js","default":"./dist/oauth/node.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./public-api":{"types":"./dist/public-api/index.d.ts","import":"./dist/public-api/index.js","default":"./dist/public-api/index.js"},"./host-compat":{"types":"./dist/host-compat/index.d.ts","import":"./dist/host-compat/index.js","default":"./dist/host-compat/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./plugin-bundle":{"types":"./dist/plugin-bundle/index.d.ts","import":"./dist/plugin-bundle/index.js","default":"./dist/plugin-bundle/index.js"},"./widget-runtime":{"types":"./dist/widget-runtime/index.d.ts","import":"./dist/widget-runtime/index.js","default":"./dist/widget-runtime/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"},"./host-config/templates":{"types":"./dist/host-config/templates/index.d.ts","import":"./dist/host-config/templates/index.js","default":"./dist/host-config/templates/index.js"}},"gitHead":"42ea592c0d49ac1a3f5e0612e8154a83a32b20d9","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"const root = await import('@mcpjam/sdk'); for (const n of ['driveTaskToTerminal','TaskLifecycleEngine','taskLifecycleKey','isTerminalLifecycleStatus','extensionTaskToObservation','legacyTaskToObservation','isUnknownTaskError','canDeclareTasksExtension','readDeclaredInputCapabilities','TaskInputRejectedError','createStrictElicitationContentValidator','retryAfterMsFromError']) { if (typeof root[n] !== 'function') { throw new Error('missing tasks export: ' + n); } } for (const n of ['TERMINAL_LIFECYCLE_STATUSES','UNKNOWN_TASK_ERROR_CODE','DEFAULT_TASK_INPUT_LIMITS']) { if (root[n] === undefined) { throw new Error('missing tasks export: ' + n); } } await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); await import('@mcpjam/sdk/host-config'); const w = await import('@mcpjam/sdk/widget-runtime'); for (const n of ['getToolVisibility','isVisibleToModelOnly','isVisibleToAppOnly','LoggingTransport','buildOuterAllowAttribute','buildOuterSandboxAttribute','resolveIframeSandboxPolicy','createHostAppBridge','registerHostBridgeHandlers']) { if (typeof w[n] !== 'function') { throw new Error('missing widget-runtime export: ' + n); } } if (w['DEFAULT_IFRAME_SANDBOX'] === undefined) { throw new Error('missing widget-runtime export: DEFAULT_IFRAME_SANDBOX'); } const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation','checkHostCompatibilityOperation','createTunnelOperation','closeTunnelOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } } const pub = await import('@mcpjam/sdk/public-api'); for (const n of ['isV1ErrorCode','mapInternalCode','v1ErrorBody','v1Page','classifyRuntimeError']) { if (typeof pub[n] !== 'function') { throw new Error('missing public-api export: ' + n); } } for (const n of ['V1_ERROR_CODES','V1_ERROR_STATUS','INTERNAL_TO_V1_CODE']) { if (pub[n] === undefined) { throw new Error('missing public-api export: ' + n); } } const hc = await import('@mcpjam/sdk/host-compat'); for (const n of ['deriveServerRequirements','evaluateHostCompat','evaluateAllHosts','buildMarketHostProfiles','evaluateMarketHosts','scanWidgetUsage','detectHostCompatBridgeFromMeta','scanWidgetSource','scanWidgetMeta','bundledHostCompatCatalog','buildHostProfilesFromCatalog','fetchHostCompatCatalog','hostConfigFieldsToImageSupport','imageSupportToHostConfigFields']) { if (typeof hc[n] !== 'function') { throw new Error('missing host-compat export: ' + n); } } if (hc['HostCompatBridge'] === undefined) { throw new Error('missing host-compat export: HostCompatBridge'); } for (const n of ['MCP_APPS_FULL','MCP_APPS_CHATGPT','MCP_APPS_MISTRAL','MCP_APPS_CURSOR','MCP_APPS_GOOSE','MCP_APPS_COPILOT','MCP_APPS_SLACK','MCP_APPS_VSCODE','MCP_APPS_NO_CLAIMS']) { if (typeof hc[n] !== 'object') { throw new Error('missing host-compat capability export: ' + n); } } for (const n of ['hostCompatCatalogSchema','hostCompatCatalogEnvelopeSchema','mcpAppsCapabilitiesSchema']) { if (hc[n] === undefined) { throw new Error('missing host-compat schema export: ' + n); } } const pb = await import('@mcpjam/sdk/plugin-bundle'); for (const n of ['parsePluginBundle','containsRootPlaceholder','containsPluginPlaceholder','selectPluginMcpServerMap','detectPluginMcpTransport']) { if (typeof pb[n] !== 'function') { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['DEFAULT_PLUGIN_BUNDLE_LIMITS','PLUGIN_ISSUE_CODES','PLUGIN_MANIFEST_SCHEMAS','PLUGIN_MCP_SCHEMAS','PLUGIN_MANIFEST_PATH','PLUGIN_ROOT_PLACEHOLDERS','PLUGIN_DATA_PLACEHOLDER','PluginBundleError','MCP_CONFIG_PATH']) { if (pb[n] === undefined) { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['normalizeBundlePath','validateBundleEntries','parseYamlLite','caseFoldPath','PluginIssueCollector','sha256HexBytes','computeAggregateHash']) { if (pb[n] !== undefined) { throw new Error('plugin-bundle should not re-export internal helper: ' + n); } } const on = await import('@mcpjam/sdk/oauth/node'); for (const n of ['assertOutboundOAuthUrlAllowed','isDisallowedIpAddress','isLoopbackOAuthUrl','isPrivateHost','OAuthOutboundUrlBlockedError','executeOAuthProxy','executeDebugOAuthProxy','fetchOAuthMetadata','fetchPinnedPublicDocument','validateUrl','OAuthProxyError']) { if (typeof on[n] !== 'function') { throw new Error('missing oauth/node export: ' + n); } }\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs","check:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts --check","generate:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts","check:host-catalog-fallback:remote":"node --import tsx scripts/check-host-catalog-fallback-remote.ts"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.2.0"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","ajv":"^8.17.1","zod":"^4.2.0","yaml":"^2.9.0","xpath":"^0.0.34","xml-crypto":"^6.1.2","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@xmldom/xmldom":"^0.8.13","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"2.0.0","@modelcontextprotocol/ext-apps":"^1.7.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.4","esbuild":"^0.27.0","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"2.0.0","@modelcontextprotocol/server":"2.0.0","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_4.2.0_1786678650679_0.9172417949615643","host":"s3://npm-registry-packages-npm-production"}},"4.3.0":{"name":"@mcpjam/sdk","version":"4.3.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@4.3.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"f0e2ba70ab6b24ee3cea27b3b81e513dda2b47b4","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-4.3.0.tgz","fileCount":68,"integrity":"sha512-jEcAMreq6mBIBjAYkO3OiHPFVRF7LphhFdFRbk0FYNIeR1e9baBOVqk+1yzRdfINRLj9rZF7FddbLBVOECdDug==","signatures":[{"sig":"MEQCIELu6viEGpOhpahm+8IsfPFaQ1k08f1S+TDs0KGwHpA3AiAVbfs5mDKXLQzycE6aa79vMFxRpeBZ8m45SweoUWJSCw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15645710},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./oauth/node":{"types":"./dist/oauth/node.d.ts","import":"./dist/oauth/node.js","default":"./dist/oauth/node.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./public-api":{"types":"./dist/public-api/index.d.ts","import":"./dist/public-api/index.js","default":"./dist/public-api/index.js"},"./host-compat":{"types":"./dist/host-compat/index.d.ts","import":"./dist/host-compat/index.js","default":"./dist/host-compat/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./plugin-bundle":{"types":"./dist/plugin-bundle/index.d.ts","import":"./dist/plugin-bundle/index.js","default":"./dist/plugin-bundle/index.js"},"./widget-runtime":{"types":"./dist/widget-runtime/index.d.ts","import":"./dist/widget-runtime/index.js","default":"./dist/widget-runtime/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"},"./host-config/templates":{"types":"./dist/host-config/templates/index.d.ts","import":"./dist/host-config/templates/index.js","default":"./dist/host-config/templates/index.js"}},"gitHead":"3702251359ade7b3402ada1f52ccb8e469ee184a","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"const root = await import('@mcpjam/sdk'); for (const n of ['driveTaskToTerminal','TaskLifecycleEngine','taskLifecycleKey','isTerminalLifecycleStatus','extensionTaskToObservation','legacyTaskToObservation','isUnknownTaskError','canDeclareTasksExtension','readDeclaredInputCapabilities','TaskInputRejectedError','createStrictElicitationContentValidator','retryAfterMsFromError']) { if (typeof root[n] !== 'function') { throw new Error('missing tasks export: ' + n); } } for (const n of ['TERMINAL_LIFECYCLE_STATUSES','UNKNOWN_TASK_ERROR_CODE','DEFAULT_TASK_INPUT_LIMITS']) { if (root[n] === undefined) { throw new Error('missing tasks export: ' + n); } } await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); await import('@mcpjam/sdk/host-config'); const w = await import('@mcpjam/sdk/widget-runtime'); for (const n of ['getToolVisibility','isVisibleToModelOnly','isVisibleToAppOnly','LoggingTransport','buildOuterAllowAttribute','buildOuterSandboxAttribute','resolveIframeSandboxPolicy','createHostAppBridge','registerHostBridgeHandlers']) { if (typeof w[n] !== 'function') { throw new Error('missing widget-runtime export: ' + n); } } if (w['DEFAULT_IFRAME_SANDBOX'] === undefined) { throw new Error('missing widget-runtime export: DEFAULT_IFRAME_SANDBOX'); } const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation','checkHostCompatibilityOperation','createTunnelOperation','closeTunnelOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } } const pub = await import('@mcpjam/sdk/public-api'); for (const n of ['isV1ErrorCode','mapInternalCode','v1ErrorBody','v1Page','classifyRuntimeError']) { if (typeof pub[n] !== 'function') { throw new Error('missing public-api export: ' + n); } } for (const n of ['V1_ERROR_CODES','V1_ERROR_STATUS','INTERNAL_TO_V1_CODE']) { if (pub[n] === undefined) { throw new Error('missing public-api export: ' + n); } } const hc = await import('@mcpjam/sdk/host-compat'); for (const n of ['deriveServerRequirements','evaluateHostCompat','evaluateAllHosts','buildMarketHostProfiles','evaluateMarketHosts','scanWidgetUsage','detectHostCompatBridgeFromMeta','scanWidgetSource','scanWidgetMeta','bundledHostCompatCatalog','buildHostProfilesFromCatalog','fetchHostCompatCatalog','hostConfigFieldsToImageSupport','imageSupportToHostConfigFields']) { if (typeof hc[n] !== 'function') { throw new Error('missing host-compat export: ' + n); } } if (hc['HostCompatBridge'] === undefined) { throw new Error('missing host-compat export: HostCompatBridge'); } for (const n of ['MCP_APPS_FULL','MCP_APPS_CHATGPT','MCP_APPS_MISTRAL','MCP_APPS_CURSOR','MCP_APPS_GOOSE','MCP_APPS_COPILOT','MCP_APPS_SLACK','MCP_APPS_VSCODE','MCP_APPS_NO_CLAIMS']) { if (typeof hc[n] !== 'object') { throw new Error('missing host-compat capability export: ' + n); } } for (const n of ['hostCompatCatalogSchema','hostCompatCatalogEnvelopeSchema','mcpAppsCapabilitiesSchema']) { if (hc[n] === undefined) { throw new Error('missing host-compat schema export: ' + n); } } const pb = await import('@mcpjam/sdk/plugin-bundle'); for (const n of ['parsePluginBundle','containsRootPlaceholder','containsPluginPlaceholder','selectPluginMcpServerMap','detectPluginMcpTransport']) { if (typeof pb[n] !== 'function') { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['DEFAULT_PLUGIN_BUNDLE_LIMITS','PLUGIN_ISSUE_CODES','PLUGIN_MANIFEST_SCHEMAS','PLUGIN_MCP_SCHEMAS','PLUGIN_MANIFEST_PATH','PLUGIN_ROOT_PLACEHOLDERS','PLUGIN_DATA_PLACEHOLDER','PluginBundleError','MCP_CONFIG_PATH']) { if (pb[n] === undefined) { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['normalizeBundlePath','validateBundleEntries','parseYamlLite','caseFoldPath','PluginIssueCollector','sha256HexBytes','computeAggregateHash']) { if (pb[n] !== undefined) { throw new Error('plugin-bundle should not re-export internal helper: ' + n); } } const on = await import('@mcpjam/sdk/oauth/node'); for (const n of ['assertOutboundOAuthUrlAllowed','isDisallowedIpAddress','isLoopbackOAuthUrl','isPrivateHost','OAuthOutboundUrlBlockedError','executeOAuthProxy','executeDebugOAuthProxy','fetchOAuthMetadata','fetchPinnedPublicDocument','validateUrl','OAuthProxyError']) { if (typeof on[n] !== 'function') { throw new Error('missing oauth/node export: ' + n); } }\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs","check:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts --check","generate:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts","check:host-catalog-fallback:remote":"node --import tsx scripts/check-host-catalog-fallback-remote.ts"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.2.0"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","ajv":"^8.17.1","zod":"^4.2.0","yaml":"^2.9.0","xpath":"^0.0.34","xml-crypto":"^6.1.2","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@xmldom/xmldom":"^0.8.13","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"2.0.0","@modelcontextprotocol/ext-apps":"^1.7.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.4","esbuild":"^0.27.0","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"2.0.0","@modelcontextprotocol/server":"2.0.0","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_4.3.0_1786757656200_0.32739409282256915","host":"s3://npm-registry-packages-npm-production"}},"5.0.0":{"name":"@mcpjam/sdk","version":"5.0.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@5.0.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"4477f4dc4f05d3953cee841d890fe415fe6d6fd2","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-5.0.0.tgz","fileCount":73,"integrity":"sha512-GG7mHspjQODv5+FBm21Gyzf6LGXF/wBsKJoSjy7Qfdv0XDmBNq47J/ncHMPYWTrKhk9nlIRK2xJIliowKQQQOQ==","signatures":[{"sig":"MEUCIAtrjQWPlJ7C2iSTfvxD9SCp7hKe719EHGTB7G/aDpTpAiEAh9vhAkzzN3pLiY3qihxdqIC870vQlI5KbZqxI17iKnI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16553759},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./contract":{"types":"./dist/contract/index.d.ts","import":"./dist/contract/index.js","default":"./dist/contract/index.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./oauth/node":{"types":"./dist/oauth/node.d.ts","import":"./dist/oauth/node.js","default":"./dist/oauth/node.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./public-api":{"types":"./dist/public-api/index.d.ts","import":"./dist/public-api/index.js","default":"./dist/public-api/index.js"},"./host-compat":{"types":"./dist/host-compat/index.d.ts","import":"./dist/host-compat/index.js","default":"./dist/host-compat/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./plugin-bundle":{"types":"./dist/plugin-bundle/index.d.ts","import":"./dist/plugin-bundle/index.js","default":"./dist/plugin-bundle/index.js"},"./widget-runtime":{"types":"./dist/widget-runtime/index.d.ts","import":"./dist/widget-runtime/index.js","default":"./dist/widget-runtime/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"},"./host-config/templates":{"types":"./dist/host-config/templates/index.d.ts","import":"./dist/host-config/templates/index.js","default":"./dist/host-config/templates/index.js"}},"gitHead":"51d1c2b08d2b36aadefd097d82126e346be3a23d","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"const root = await import('@mcpjam/sdk'); for (const n of ['driveTaskToTerminal','TaskLifecycleEngine','taskLifecycleKey','isTerminalLifecycleStatus','extensionTaskToObservation','legacyTaskToObservation','isUnknownTaskError','canDeclareTasksExtension','readDeclaredInputCapabilities','TaskInputRejectedError','createStrictElicitationContentValidator','retryAfterMsFromError']) { if (typeof root[n] !== 'function') { throw new Error('missing tasks export: ' + n); } } for (const n of ['TERMINAL_LIFECYCLE_STATUSES','UNKNOWN_TASK_ERROR_CODE','DEFAULT_TASK_INPUT_LIMITS']) { if (root[n] === undefined) { throw new Error('missing tasks export: ' + n); } } await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); const contract = await import('@mcpjam/sdk/contract'); for (const n of ['canonicalJson','canonicalDigest','sha256Hex','resolveScoreDefinition','definitionHash','evaluationConfigHash','buildEvaluationConfigSnapshot','scorePassed','finalizeScoreResult','errorScoreResult','skippedScoreResult','notApplicableScoreResult','predicateScoreDefinition','scoreResultFromPredicateResult','toolMatchScoreDefinition','fromToolMatchResult','legacyTestScoreDefinition','fromLegacyTestOutcome','fromGoalCompletionCase','fromCriterionResult','generatedPredicateScorerId','mintCaseId','mintSuiteId','isOpaqueId','isPromptStep','isToolCallStep','isInteractStep','isAssertStep','isWidgetAssertion']) { if (typeof contract[n] !== 'function') { throw new Error('missing contract export: ' + n); } } for (const n of ['scoreResultSchema','resolvedScoreDefinitionSchema','evaluationConfigSnapshotSchema','PREDICATES_VERSION','MAX_SCORER_ID_LENGTH','TOOL_MATCH_SCORER_ID','LEGACY_TEST_SCORER_ID','opaqueIdSchema','CASE_ID_PREFIX','SUITE_ID_PREFIX','USER_VALUE_STAGES','STAGE_STATES','FAILURE_CATEGORIES','ITERATION_STATUSES','IMPORT_MAPPING_STATUSES','TEST_STEP_KINDS','testStepSchema','stepsSchema','elementLocatorSchema','evalSuiteFileSchema','evalSuiteFileStructuralSchema','evalSuiteFileCaseSchema','evalSuiteFileJsonSchema','EVAL_SUITE_SCHEMA_ID','EVAL_SUITE_SCHEMA_VERSION','MAX_SUITE_FILE_CASES']) { if (contract[n] === undefined) { throw new Error('missing contract export: ' + n); } } if (typeof contract.evalSuiteFileJsonSchema !== 'object' || !contract.evalSuiteFileJsonSchema.properties?.cases) { throw new Error('contract export evalSuiteFileJsonSchema is not the generated JSON Schema document'); } await import('@mcpjam/sdk/host-config'); const w = await import('@mcpjam/sdk/widget-runtime'); for (const n of ['getToolVisibility','isVisibleToModelOnly','isVisibleToAppOnly','LoggingTransport','buildOuterAllowAttribute','buildOuterSandboxAttribute','resolveIframeSandboxPolicy','createHostAppBridge','registerHostBridgeHandlers']) { if (typeof w[n] !== 'function') { throw new Error('missing widget-runtime export: ' + n); } } if (w['DEFAULT_IFRAME_SANDBOX'] === undefined) { throw new Error('missing widget-runtime export: DEFAULT_IFRAME_SANDBOX'); } const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation','checkHostCompatibilityOperation','createTunnelOperation','closeTunnelOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } } const pub = await import('@mcpjam/sdk/public-api'); for (const n of ['isV1ErrorCode','mapInternalCode','v1ErrorBody','v1Page','classifyRuntimeError']) { if (typeof pub[n] !== 'function') { throw new Error('missing public-api export: ' + n); } } for (const n of ['V1_ERROR_CODES','V1_ERROR_STATUS','INTERNAL_TO_V1_CODE']) { if (pub[n] === undefined) { throw new Error('missing public-api export: ' + n); } } const hc = await import('@mcpjam/sdk/host-compat'); for (const n of ['deriveServerRequirements','evaluateHostCompat','evaluateAllHosts','buildMarketHostProfiles','evaluateMarketHosts','scanWidgetUsage','detectHostCompatBridgeFromMeta','scanWidgetSource','scanWidgetMeta','bundledHostCompatCatalog','buildHostProfilesFromCatalog','fetchHostCompatCatalog','hostConfigFieldsToImageSupport','imageSupportToHostConfigFields']) { if (typeof hc[n] !== 'function') { throw new Error('missing host-compat export: ' + n); } } if (hc['HostCompatBridge'] === undefined) { throw new Error('missing host-compat export: HostCompatBridge'); } for (const n of ['MCP_APPS_FULL','MCP_APPS_CHATGPT','MCP_APPS_MISTRAL','MCP_APPS_CURSOR','MCP_APPS_GOOSE','MCP_APPS_COPILOT','MCP_APPS_SLACK','MCP_APPS_VSCODE','MCP_APPS_NO_CLAIMS']) { if (typeof hc[n] !== 'object') { throw new Error('missing host-compat capability export: ' + n); } } for (const n of ['hostCompatCatalogSchema','hostCompatCatalogEnvelopeSchema','mcpAppsCapabilitiesSchema']) { if (hc[n] === undefined) { throw new Error('missing host-compat schema export: ' + n); } } const pb = await import('@mcpjam/sdk/plugin-bundle'); for (const n of ['parsePluginBundle','containsRootPlaceholder','containsPluginPlaceholder','selectPluginMcpServerMap','detectPluginMcpTransport']) { if (typeof pb[n] !== 'function') { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['DEFAULT_PLUGIN_BUNDLE_LIMITS','PLUGIN_ISSUE_CODES','PLUGIN_MANIFEST_SCHEMAS','PLUGIN_MCP_SCHEMAS','PLUGIN_MANIFEST_PATH','PLUGIN_ROOT_PLACEHOLDERS','PLUGIN_DATA_PLACEHOLDER','PluginBundleError','MCP_CONFIG_PATH']) { if (pb[n] === undefined) { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['normalizeBundlePath','validateBundleEntries','parseYamlLite','caseFoldPath','PluginIssueCollector','sha256HexBytes','computeAggregateHash']) { if (pb[n] !== undefined) { throw new Error('plugin-bundle should not re-export internal helper: ' + n); } } const on = await import('@mcpjam/sdk/oauth/node'); for (const n of ['assertOutboundOAuthUrlAllowed','isDisallowedIpAddress','isLoopbackOAuthUrl','isPrivateHost','OAuthOutboundUrlBlockedError','executeOAuthProxy','executeDebugOAuthProxy','fetchOAuthMetadata','fetchPinnedPublicDocument','validateUrl','OAuthProxyError']) { if (typeof on[n] !== 'function') { throw new Error('missing oauth/node export: ' + n); } }\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs","check:eval-suite-schema":"tsx scripts/generate-eval-suite-schema.ts --check","generate:eval-suite-schema":"tsx scripts/generate-eval-suite-schema.ts","check:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts --check","generate:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts","check:host-catalog-fallback:remote":"node --import tsx scripts/check-host-catalog-fallback-remote.ts"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.2.0"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","ajv":"^8.17.1","zod":"^4.2.0","yaml":"^2.9.0","xpath":"^0.0.34","xml-crypto":"^6.1.2","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@noble/hashes":"^2.3.0","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@xmldom/xmldom":"^0.8.13","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"2.0.0","@modelcontextprotocol/ext-apps":"^1.7.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.4","esbuild":"^0.27.0","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"2.0.0","@modelcontextprotocol/server":"2.0.0","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_5.0.0_1787014918403_0.9764344375225016","host":"s3://npm-registry-packages-npm-production"}},"6.0.0":{"name":"@mcpjam/sdk","version":"6.0.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@6.0.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"f3774c64f6c993ec97df3e041e2e3a8f287c4ae8","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-6.0.0.tgz","fileCount":73,"integrity":"sha512-q4JfEUlFET2dlt6Mz+fONKOgABdnLk9uuQe3qBwOL9MLAFs7QT0abALXiYIUZDck1E9n6I85OyXxQ11EgeebDg==","signatures":[{"sig":"MEUCIQDxA1RF/yrcKdS3DFCdtRMh0HMJUA2cAxKDrfDRnTDdJgIgVpkR1GHGwqXL+EyqYsGhuo4D9tZaYut5kTTTXZG4ios=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16605210},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./contract":{"types":"./dist/contract/index.d.ts","import":"./dist/contract/index.js","default":"./dist/contract/index.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./oauth/node":{"types":"./dist/oauth/node.d.ts","import":"./dist/oauth/node.js","default":"./dist/oauth/node.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./public-api":{"types":"./dist/public-api/index.d.ts","import":"./dist/public-api/index.js","default":"./dist/public-api/index.js"},"./host-compat":{"types":"./dist/host-compat/index.d.ts","import":"./dist/host-compat/index.js","default":"./dist/host-compat/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./plugin-bundle":{"types":"./dist/plugin-bundle/index.d.ts","import":"./dist/plugin-bundle/index.js","default":"./dist/plugin-bundle/index.js"},"./widget-runtime":{"types":"./dist/widget-runtime/index.d.ts","import":"./dist/widget-runtime/index.js","default":"./dist/widget-runtime/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"},"./host-config/templates":{"types":"./dist/host-config/templates/index.d.ts","import":"./dist/host-config/templates/index.js","default":"./dist/host-config/templates/index.js"}},"gitHead":"80458e4df3c0a090f40ec106c5ed8216c36392b8","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"const root = await import('@mcpjam/sdk'); for (const n of ['driveTaskToTerminal','TaskLifecycleEngine','taskLifecycleKey','isTerminalLifecycleStatus','extensionTaskToObservation','legacyTaskToObservation','isUnknownTaskError','canDeclareTasksExtension','readDeclaredInputCapabilities','TaskInputRejectedError','createStrictElicitationContentValidator','retryAfterMsFromError']) { if (typeof root[n] !== 'function') { throw new Error('missing tasks export: ' + n); } } for (const n of ['TERMINAL_LIFECYCLE_STATUSES','UNKNOWN_TASK_ERROR_CODE','DEFAULT_TASK_INPUT_LIMITS']) { if (root[n] === undefined) { throw new Error('missing tasks export: ' + n); } } await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); const contract = await import('@mcpjam/sdk/contract'); for (const n of ['canonicalJson','canonicalDigest','sha256Hex','resolveScoreDefinition','definitionHash','evaluationConfigHash','buildEvaluationConfigSnapshot','scorePassed','finalizeScoreResult','errorScoreResult','skippedScoreResult','notApplicableScoreResult','predicateScoreDefinition','scoreResultFromPredicateResult','toolMatchScoreDefinition','fromToolMatchResult','legacyTestScoreDefinition','fromLegacyTestOutcome','fromGoalCompletionCase','fromCriterionResult','generatedPredicateScorerId','mintCaseId','mintSuiteId','isOpaqueId','isPromptStep','isToolCallStep','isInteractStep','isAssertStep','isWidgetAssertion']) { if (typeof contract[n] !== 'function') { throw new Error('missing contract export: ' + n); } } for (const n of ['scoreResultSchema','resolvedScoreDefinitionSchema','evaluationConfigSnapshotSchema','PREDICATES_VERSION','MAX_SCORER_ID_LENGTH','TOOL_MATCH_SCORER_ID','LEGACY_TEST_SCORER_ID','opaqueIdSchema','CASE_ID_PREFIX','SUITE_ID_PREFIX','USER_VALUE_STAGES','STAGE_STATES','FAILURE_CATEGORIES','ITERATION_STATUSES','IMPORT_MAPPING_STATUSES','TEST_STEP_KINDS','testStepSchema','stepsSchema','elementLocatorSchema','evalSuiteFileSchema','evalSuiteFileStructuralSchema','evalSuiteFileCaseSchema','evalSuiteFileJsonSchema','EVAL_SUITE_SCHEMA_ID','EVAL_SUITE_SCHEMA_VERSION','MAX_SUITE_FILE_CASES']) { if (contract[n] === undefined) { throw new Error('missing contract export: ' + n); } } if (typeof contract.evalSuiteFileJsonSchema !== 'object' || !contract.evalSuiteFileJsonSchema.properties?.cases) { throw new Error('contract export evalSuiteFileJsonSchema is not the generated JSON Schema document'); } await import('@mcpjam/sdk/host-config'); const w = await import('@mcpjam/sdk/widget-runtime'); for (const n of ['getToolVisibility','isVisibleToModelOnly','isVisibleToAppOnly','LoggingTransport','buildOuterAllowAttribute','buildOuterSandboxAttribute','resolveIframeSandboxPolicy','createHostAppBridge','registerHostBridgeHandlers']) { if (typeof w[n] !== 'function') { throw new Error('missing widget-runtime export: ' + n); } } if (w['DEFAULT_IFRAME_SANDBOX'] === undefined) { throw new Error('missing widget-runtime export: DEFAULT_IFRAME_SANDBOX'); } const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation','checkHostCompatibilityOperation','createTunnelOperation','closeTunnelOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } } const pub = await import('@mcpjam/sdk/public-api'); for (const n of ['isV1ErrorCode','mapInternalCode','v1ErrorBody','v1Page','classifyRuntimeError']) { if (typeof pub[n] !== 'function') { throw new Error('missing public-api export: ' + n); } } for (const n of ['V1_ERROR_CODES','V1_ERROR_STATUS','INTERNAL_TO_V1_CODE']) { if (pub[n] === undefined) { throw new Error('missing public-api export: ' + n); } } const hc = await import('@mcpjam/sdk/host-compat'); for (const n of ['deriveServerRequirements','evaluateHostCompat','evaluateAllHosts','buildMarketHostProfiles','evaluateMarketHosts','scanWidgetUsage','detectHostCompatBridgeFromMeta','scanWidgetSource','scanWidgetMeta','bundledHostCompatCatalog','buildHostProfilesFromCatalog','fetchHostCompatCatalog','hostConfigFieldsToImageSupport','imageSupportToHostConfigFields']) { if (typeof hc[n] !== 'function') { throw new Error('missing host-compat export: ' + n); } } if (hc['HostCompatBridge'] === undefined) { throw new Error('missing host-compat export: HostCompatBridge'); } for (const n of ['MCP_APPS_FULL','MCP_APPS_CHATGPT','MCP_APPS_MISTRAL','MCP_APPS_CURSOR','MCP_APPS_GOOSE','MCP_APPS_COPILOT','MCP_APPS_SLACK','MCP_APPS_VSCODE','MCP_APPS_NO_CLAIMS']) { if (typeof hc[n] !== 'object') { throw new Error('missing host-compat capability export: ' + n); } } for (const n of ['hostCompatCatalogSchema','hostCompatCatalogEnvelopeSchema','mcpAppsCapabilitiesSchema']) { if (hc[n] === undefined) { throw new Error('missing host-compat schema export: ' + n); } } const pb = await import('@mcpjam/sdk/plugin-bundle'); for (const n of ['parsePluginBundle','containsRootPlaceholder','containsPluginPlaceholder','selectPluginMcpServerMap','detectPluginMcpTransport']) { if (typeof pb[n] !== 'function') { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['DEFAULT_PLUGIN_BUNDLE_LIMITS','PLUGIN_ISSUE_CODES','PLUGIN_MANIFEST_SCHEMAS','PLUGIN_MCP_SCHEMAS','PLUGIN_MANIFEST_PATH','PLUGIN_ROOT_PLACEHOLDERS','PLUGIN_DATA_PLACEHOLDER','PluginBundleError','MCP_CONFIG_PATH']) { if (pb[n] === undefined) { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['normalizeBundlePath','validateBundleEntries','parseYamlLite','caseFoldPath','PluginIssueCollector','sha256HexBytes','computeAggregateHash']) { if (pb[n] !== undefined) { throw new Error('plugin-bundle should not re-export internal helper: ' + n); } } const on = await import('@mcpjam/sdk/oauth/node'); for (const n of ['assertOutboundOAuthUrlAllowed','isDisallowedIpAddress','isLoopbackOAuthUrl','isPrivateHost','OAuthOutboundUrlBlockedError','executeOAuthProxy','executeDebugOAuthProxy','fetchOAuthMetadata','fetchPinnedPublicDocument','validateUrl','OAuthProxyError']) { if (typeof on[n] !== 'function') { throw new Error('missing oauth/node export: ' + n); } }\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs","check:eval-suite-schema":"tsx scripts/generate-eval-suite-schema.ts --check","generate:eval-suite-schema":"tsx scripts/generate-eval-suite-schema.ts","check:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts --check","generate:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts","check:host-catalog-fallback:remote":"node --import tsx scripts/check-host-catalog-fallback-remote.ts"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.2.0"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","ajv":"^8.17.1","zod":"^4.2.0","yaml":"^2.9.0","xpath":"^0.0.34","xml-crypto":"^6.1.2","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@noble/hashes":"^2.3.0","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@xmldom/xmldom":"^0.8.13","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"2.0.0","@modelcontextprotocol/ext-apps":"^1.7.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.7","esbuild":"^0.27.0","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"2.0.0","@modelcontextprotocol/server":"2.0.0","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_6.0.0_1787093117795_0.4658672081609627","host":"s3://npm-registry-packages-npm-production"}},"6.1.0":{"name":"@mcpjam/sdk","version":"6.1.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@6.1.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"4b00b18993de6cf88ea2101d5cdc513851f96a88","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-6.1.0.tgz","fileCount":73,"integrity":"sha512-WWnkSPRnBh8sGbjYmP/q4/1HTHbOWViRWXjL4e4ebXGaKrtw1ZtMJ3Eheq4Z57E+YKg/n5RYMwCOqKz5wKvfmw==","signatures":[{"sig":"MEQCID8NTAfZegIiCCip/LZyp76WeyWwrC8gWP7NEw0jWx7YAiAeC+mJamOqTAw/4vkngTr3HqViTFHL4vJT3oHYUNpIWg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16735669},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./contract":{"types":"./dist/contract/index.d.ts","import":"./dist/contract/index.js","default":"./dist/contract/index.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./oauth/node":{"types":"./dist/oauth/node.d.ts","import":"./dist/oauth/node.js","default":"./dist/oauth/node.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./public-api":{"types":"./dist/public-api/index.d.ts","import":"./dist/public-api/index.js","default":"./dist/public-api/index.js"},"./host-compat":{"types":"./dist/host-compat/index.d.ts","import":"./dist/host-compat/index.js","default":"./dist/host-compat/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./plugin-bundle":{"types":"./dist/plugin-bundle/index.d.ts","import":"./dist/plugin-bundle/index.js","default":"./dist/plugin-bundle/index.js"},"./widget-runtime":{"types":"./dist/widget-runtime/index.d.ts","import":"./dist/widget-runtime/index.js","default":"./dist/widget-runtime/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"},"./host-config/templates":{"types":"./dist/host-config/templates/index.d.ts","import":"./dist/host-config/templates/index.js","default":"./dist/host-config/templates/index.js"}},"gitHead":"448301f4635c735d46ed1d7b6ea3c2ec51f43da8","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"const root = await import('@mcpjam/sdk'); for (const n of ['driveTaskToTerminal','TaskLifecycleEngine','taskLifecycleKey','isTerminalLifecycleStatus','extensionTaskToObservation','legacyTaskToObservation','isUnknownTaskError','canDeclareTasksExtension','readDeclaredInputCapabilities','TaskInputRejectedError','createStrictElicitationContentValidator','retryAfterMsFromError']) { if (typeof root[n] !== 'function') { throw new Error('missing tasks export: ' + n); } } for (const n of ['TERMINAL_LIFECYCLE_STATUSES','UNKNOWN_TASK_ERROR_CODE','DEFAULT_TASK_INPUT_LIMITS']) { if (root[n] === undefined) { throw new Error('missing tasks export: ' + n); } } await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); const contract = await import('@mcpjam/sdk/contract'); for (const n of ['canonicalJson','canonicalDigest','sha256Hex','resolveScoreDefinition','definitionHash','evaluationConfigHash','buildEvaluationConfigSnapshot','scorePassed','finalizeScoreResult','errorScoreResult','skippedScoreResult','notApplicableScoreResult','predicateScoreDefinition','scoreResultFromPredicateResult','toolMatchScoreDefinition','fromToolMatchResult','legacyTestScoreDefinition','fromLegacyTestOutcome','fromGoalCompletionCase','fromCriterionResult','generatedPredicateScorerId','mintCaseId','mintSuiteId','isOpaqueId','isPromptStep','isToolCallStep','isInteractStep','isAssertStep','isWidgetAssertion']) { if (typeof contract[n] !== 'function') { throw new Error('missing contract export: ' + n); } } for (const n of ['scoreResultSchema','resolvedScoreDefinitionSchema','evaluationConfigSnapshotSchema','PREDICATES_VERSION','MAX_SCORER_ID_LENGTH','TOOL_MATCH_SCORER_ID','LEGACY_TEST_SCORER_ID','opaqueIdSchema','CASE_ID_PREFIX','SUITE_ID_PREFIX','USER_VALUE_STAGES','STAGE_STATES','FAILURE_CATEGORIES','ITERATION_STATUSES','IMPORT_MAPPING_STATUSES','TEST_STEP_KINDS','testStepSchema','stepsSchema','elementLocatorSchema','evalSuiteFileSchema','evalSuiteFileStructuralSchema','evalSuiteFileCaseSchema','evalSuiteFileJsonSchema','EVAL_SUITE_SCHEMA_ID','EVAL_SUITE_SCHEMA_VERSION','MAX_SUITE_FILE_CASES']) { if (contract[n] === undefined) { throw new Error('missing contract export: ' + n); } } if (typeof contract.evalSuiteFileJsonSchema !== 'object' || !contract.evalSuiteFileJsonSchema.properties?.cases) { throw new Error('contract export evalSuiteFileJsonSchema is not the generated JSON Schema document'); } await import('@mcpjam/sdk/host-config'); const w = await import('@mcpjam/sdk/widget-runtime'); for (const n of ['getToolVisibility','isVisibleToModelOnly','isVisibleToAppOnly','LoggingTransport','buildOuterAllowAttribute','buildOuterSandboxAttribute','resolveIframeSandboxPolicy','createHostAppBridge','registerHostBridgeHandlers']) { if (typeof w[n] !== 'function') { throw new Error('missing widget-runtime export: ' + n); } } if (w['DEFAULT_IFRAME_SANDBOX'] === undefined) { throw new Error('missing widget-runtime export: DEFAULT_IFRAME_SANDBOX'); } const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation','checkHostCompatibilityOperation','createTunnelOperation','closeTunnelOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } } const pub = await import('@mcpjam/sdk/public-api'); for (const n of ['isV1ErrorCode','mapInternalCode','v1ErrorBody','v1Page','classifyRuntimeError']) { if (typeof pub[n] !== 'function') { throw new Error('missing public-api export: ' + n); } } for (const n of ['V1_ERROR_CODES','V1_ERROR_STATUS','INTERNAL_TO_V1_CODE']) { if (pub[n] === undefined) { throw new Error('missing public-api export: ' + n); } } const hc = await import('@mcpjam/sdk/host-compat'); for (const n of ['deriveServerRequirements','evaluateHostCompat','evaluateAllHosts','buildMarketHostProfiles','evaluateMarketHosts','scanWidgetUsage','detectHostCompatBridgeFromMeta','scanWidgetSource','scanWidgetMeta','bundledHostCompatCatalog','buildHostProfilesFromCatalog','fetchHostCompatCatalog','hostConfigFieldsToImageSupport','imageSupportToHostConfigFields']) { if (typeof hc[n] !== 'function') { throw new Error('missing host-compat export: ' + n); } } if (hc['HostCompatBridge'] === undefined) { throw new Error('missing host-compat export: HostCompatBridge'); } for (const n of ['MCP_APPS_FULL','MCP_APPS_CHATGPT','MCP_APPS_MISTRAL','MCP_APPS_CURSOR','MCP_APPS_GOOSE','MCP_APPS_COPILOT','MCP_APPS_SLACK','MCP_APPS_VSCODE','MCP_APPS_NO_CLAIMS']) { if (typeof hc[n] !== 'object') { throw new Error('missing host-compat capability export: ' + n); } } for (const n of ['hostCompatCatalogSchema','hostCompatCatalogEnvelopeSchema','mcpAppsCapabilitiesSchema']) { if (hc[n] === undefined) { throw new Error('missing host-compat schema export: ' + n); } } const pb = await import('@mcpjam/sdk/plugin-bundle'); for (const n of ['parsePluginBundle','containsRootPlaceholder','containsPluginPlaceholder','selectPluginMcpServerMap','detectPluginMcpTransport']) { if (typeof pb[n] !== 'function') { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['DEFAULT_PLUGIN_BUNDLE_LIMITS','PLUGIN_ISSUE_CODES','PLUGIN_MANIFEST_SCHEMAS','PLUGIN_MCP_SCHEMAS','PLUGIN_MANIFEST_PATH','PLUGIN_ROOT_PLACEHOLDERS','PLUGIN_DATA_PLACEHOLDER','PluginBundleError','MCP_CONFIG_PATH']) { if (pb[n] === undefined) { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['normalizeBundlePath','validateBundleEntries','parseYamlLite','caseFoldPath','PluginIssueCollector','sha256HexBytes','computeAggregateHash']) { if (pb[n] !== undefined) { throw new Error('plugin-bundle should not re-export internal helper: ' + n); } } const on = await import('@mcpjam/sdk/oauth/node'); for (const n of ['assertOutboundOAuthUrlAllowed','isDisallowedIpAddress','isLoopbackOAuthUrl','isPrivateHost','OAuthOutboundUrlBlockedError','executeOAuthProxy','executeDebugOAuthProxy','fetchOAuthMetadata','fetchPinnedPublicDocument','validateUrl','OAuthProxyError']) { if (typeof on[n] !== 'function') { throw new Error('missing oauth/node export: ' + n); } }\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs","check:eval-suite-schema":"tsx scripts/generate-eval-suite-schema.ts --check","generate:eval-suite-schema":"tsx scripts/generate-eval-suite-schema.ts","check:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts --check","generate:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts","check:host-catalog-fallback:remote":"node --import tsx scripts/check-host-catalog-fallback-remote.ts"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.2.0"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","ajv":"^8.17.1","zod":"^4.2.0","yaml":"^2.9.0","xpath":"^0.0.34","xml-crypto":"^6.1.2","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@noble/hashes":"^2.3.0","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@xmldom/xmldom":"^0.8.13","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"2.0.0","@modelcontextprotocol/ext-apps":"^1.7.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.7","esbuild":"^0.27.0","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"2.0.0","@modelcontextprotocol/server":"2.0.0","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_6.1.0_1787176396386_0.2936925807496893","host":"s3://npm-registry-packages-npm-production"}},"6.2.0":{"name":"@mcpjam/sdk","version":"6.2.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@6.2.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"9f0309140d2085704249f59110c52cb501a034d2","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-6.2.0.tgz","fileCount":73,"integrity":"sha512-z6pEI3t8JTNWwVDpP0x5sGAy6bHlEPIhAOI8Lqi/VjL4c7NsET67rD92Mn8GX48/TtSgr/hSaZrMqzRm3U3BvA==","signatures":[{"sig":"MEUCIQDKd4woK48gOWKsRdp1tlx6T9J0wBqI784antmUgM/O4gIgKIKou64H0iP0lq73sgJ5/RmiI7uyJZEl6csElay4QRE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17748934},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./contract":{"types":"./dist/contract/index.d.ts","import":"./dist/contract/index.js","default":"./dist/contract/index.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./oauth/node":{"types":"./dist/oauth/node.d.ts","import":"./dist/oauth/node.js","default":"./dist/oauth/node.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./public-api":{"types":"./dist/public-api/index.d.ts","import":"./dist/public-api/index.js","default":"./dist/public-api/index.js"},"./host-compat":{"types":"./dist/host-compat/index.d.ts","import":"./dist/host-compat/index.js","default":"./dist/host-compat/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./plugin-bundle":{"types":"./dist/plugin-bundle/index.d.ts","import":"./dist/plugin-bundle/index.js","default":"./dist/plugin-bundle/index.js"},"./widget-runtime":{"types":"./dist/widget-runtime/index.d.ts","import":"./dist/widget-runtime/index.js","default":"./dist/widget-runtime/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"},"./host-config/templates":{"types":"./dist/host-config/templates/index.d.ts","import":"./dist/host-config/templates/index.js","default":"./dist/host-config/templates/index.js"}},"gitHead":"0d63ee4215bf68c659bf592f947578c5b38589ed","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"const root = await import('@mcpjam/sdk'); for (const n of ['driveTaskToTerminal','TaskLifecycleEngine','taskLifecycleKey','isTerminalLifecycleStatus','extensionTaskToObservation','legacyTaskToObservation','isUnknownTaskError','canDeclareTasksExtension','readDeclaredInputCapabilities','TaskInputRejectedError','createStrictElicitationContentValidator','retryAfterMsFromError']) { if (typeof root[n] !== 'function') { throw new Error('missing tasks export: ' + n); } } for (const n of ['loadEvalSuiteFile','resolveEvalSuiteFile','serializeEvalSuiteFile','formatSuiteFileFindings','suiteFilePointer']) { if (typeof root[n] !== 'function') { throw new Error('missing suite-file export: ' + n); } } for (const n of ['TERMINAL_LIFECYCLE_STATUSES','UNKNOWN_TASK_ERROR_CODE','DEFAULT_TASK_INPUT_LIMITS']) { if (root[n] === undefined) { throw new Error('missing tasks export: ' + n); } } for (const n of ['MAX_SUITE_FILE_BYTES','SUITE_FILE_VALIDITY_DEFAULTS','SUITE_FILE_DEFAULT_CAPTURE_LEVEL','SUITE_FILE_FINDING_CODES']) { if (root[n] === undefined) { throw new Error('missing suite-file export: ' + n); } } if (root.MAX_SUITE_FILE_BYTES !== 1048576) { throw new Error('MAX_SUITE_FILE_BYTES is not the pinned 1 MiB cap'); } await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); const contract = await import('@mcpjam/sdk/contract'); for (const n of ['canonicalJson','canonicalDigest','sha256Hex','resolveScoreDefinition','definitionHash','evaluationConfigHash','buildEvaluationConfigSnapshot','scorePassed','finalizeScoreResult','errorScoreResult','skippedScoreResult','notApplicableScoreResult','predicateScoreDefinition','scoreResultFromPredicateResult','toolMatchScoreDefinition','fromToolMatchResult','legacyTestScoreDefinition','fromLegacyTestOutcome','fromGoalCompletionCase','fromCriterionResult','generatedPredicateScorerId','mintCaseId','mintSuiteId','isOpaqueId','isPromptStep','isToolCallStep','isInteractStep','isAssertStep','isWidgetAssertion']) { if (typeof contract[n] !== 'function') { throw new Error('missing contract export: ' + n); } } for (const n of ['scoreResultSchema','resolvedScoreDefinitionSchema','evaluationConfigSnapshotSchema','PREDICATES_VERSION','MAX_SCORER_ID_LENGTH','TOOL_MATCH_SCORER_ID','LEGACY_TEST_SCORER_ID','opaqueIdSchema','CASE_ID_PREFIX','SUITE_ID_PREFIX','USER_VALUE_STAGES','STAGE_STATES','FAILURE_CATEGORIES','ITERATION_STATUSES','IMPORT_MAPPING_STATUSES','TEST_STEP_KINDS','testStepSchema','stepsSchema','elementLocatorSchema','evalSuiteFileSchema','evalSuiteFileStructuralSchema','evalSuiteFileCaseSchema','evalSuiteFileJsonSchema','EVAL_SUITE_SCHEMA_ID','EVAL_SUITE_SCHEMA_VERSION','MAX_SUITE_FILE_CASES']) { if (contract[n] === undefined) { throw new Error('missing contract export: ' + n); } } if (typeof contract.evalSuiteFileJsonSchema !== 'object' || !contract.evalSuiteFileJsonSchema.properties?.cases) { throw new Error('contract export evalSuiteFileJsonSchema is not the generated JSON Schema document'); } await import('@mcpjam/sdk/host-config'); const w = await import('@mcpjam/sdk/widget-runtime'); for (const n of ['getToolVisibility','isVisibleToModelOnly','isVisibleToAppOnly','LoggingTransport','buildOuterAllowAttribute','buildOuterSandboxAttribute','resolveIframeSandboxPolicy','createHostAppBridge','registerHostBridgeHandlers']) { if (typeof w[n] !== 'function') { throw new Error('missing widget-runtime export: ' + n); } } if (w['DEFAULT_IFRAME_SANDBOX'] === undefined) { throw new Error('missing widget-runtime export: DEFAULT_IFRAME_SANDBOX'); } const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation','checkHostCompatibilityOperation','createTunnelOperation','closeTunnelOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } } const pub = await import('@mcpjam/sdk/public-api'); for (const n of ['isV1ErrorCode','mapInternalCode','v1ErrorBody','v1Page','classifyRuntimeError']) { if (typeof pub[n] !== 'function') { throw new Error('missing public-api export: ' + n); } } for (const n of ['V1_ERROR_CODES','V1_ERROR_STATUS','INTERNAL_TO_V1_CODE']) { if (pub[n] === undefined) { throw new Error('missing public-api export: ' + n); } } const hc = await import('@mcpjam/sdk/host-compat'); for (const n of ['deriveServerRequirements','evaluateHostCompat','evaluateAllHosts','buildMarketHostProfiles','evaluateMarketHosts','scanWidgetUsage','detectHostCompatBridgeFromMeta','scanWidgetSource','scanWidgetMeta','bundledHostCompatCatalog','buildHostProfilesFromCatalog','fetchHostCompatCatalog','hostConfigFieldsToImageSupport','imageSupportToHostConfigFields']) { if (typeof hc[n] !== 'function') { throw new Error('missing host-compat export: ' + n); } } if (hc['HostCompatBridge'] === undefined) { throw new Error('missing host-compat export: HostCompatBridge'); } for (const n of ['MCP_APPS_FULL','MCP_APPS_CHATGPT','MCP_APPS_MISTRAL','MCP_APPS_CURSOR','MCP_APPS_GOOSE','MCP_APPS_COPILOT','MCP_APPS_SLACK','MCP_APPS_VSCODE','MCP_APPS_NO_CLAIMS']) { if (typeof hc[n] !== 'object') { throw new Error('missing host-compat capability export: ' + n); } } for (const n of ['hostCompatCatalogSchema','hostCompatCatalogEnvelopeSchema','mcpAppsCapabilitiesSchema']) { if (hc[n] === undefined) { throw new Error('missing host-compat schema export: ' + n); } } const pb = await import('@mcpjam/sdk/plugin-bundle'); for (const n of ['parsePluginBundle','containsRootPlaceholder','containsPluginPlaceholder','selectPluginMcpServerMap','detectPluginMcpTransport']) { if (typeof pb[n] !== 'function') { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['DEFAULT_PLUGIN_BUNDLE_LIMITS','PLUGIN_ISSUE_CODES','PLUGIN_MANIFEST_SCHEMAS','PLUGIN_MCP_SCHEMAS','PLUGIN_MANIFEST_PATH','PLUGIN_ROOT_PLACEHOLDERS','PLUGIN_DATA_PLACEHOLDER','PluginBundleError','MCP_CONFIG_PATH']) { if (pb[n] === undefined) { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['normalizeBundlePath','validateBundleEntries','parseYamlLite','caseFoldPath','PluginIssueCollector','sha256HexBytes','computeAggregateHash']) { if (pb[n] !== undefined) { throw new Error('plugin-bundle should not re-export internal helper: ' + n); } } const on = await import('@mcpjam/sdk/oauth/node'); for (const n of ['assertOutboundOAuthUrlAllowed','isDisallowedIpAddress','isLoopbackOAuthUrl','isPrivateHost','OAuthOutboundUrlBlockedError','executeOAuthProxy','executeDebugOAuthProxy','fetchOAuthMetadata','fetchPinnedPublicDocument','validateUrl','OAuthProxyError']) { if (typeof on[n] !== 'function') { throw new Error('missing oauth/node export: ' + n); } }\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs","check:eval-suite-schema":"tsx scripts/generate-eval-suite-schema.ts --check","generate:eval-suite-schema":"tsx scripts/generate-eval-suite-schema.ts","check:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts --check","generate:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts","check:host-catalog-fallback:remote":"node --import tsx scripts/check-host-catalog-fallback-remote.ts"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.2.0"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","ajv":"^8.17.1","zod":"^4.2.0","yaml":"^2.9.0","xpath":"^0.0.34","xml-crypto":"^6.1.2","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@noble/hashes":"^2.3.0","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@xmldom/xmldom":"^0.8.13","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"2.0.0","@modelcontextprotocol/ext-apps":"^1.7.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.7","esbuild":"^0.27.0","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"2.0.0","@modelcontextprotocol/server":"2.0.0","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_6.2.0_1787190675165_0.2535208972896841","host":"s3://npm-registry-packages-npm-production"}},"6.3.0":{"name":"@mcpjam/sdk","version":"6.3.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@6.3.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"744de5f3698dee62381b9976f22739fa4899df5d","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-6.3.0.tgz","fileCount":74,"integrity":"sha512-nfJsn3ciBH2tU0ne4SN8DWLHc69v0OG+V8PYGUcvecitZcfXYOlAz4dlzfDs+6MUogTaOkYCFMI/+8xY8v+y/A==","signatures":[{"sig":"MEYCIQCep62DbVmYg0TCn8JwWJ5sWWhWWAKvcL6CsNie64quhwIhAOEGaeAisdz4bqU3TP/P4zviITxgZXtCcXTU81wVmBIh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19109170},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./contract":{"types":"./dist/contract/index.d.ts","import":"./dist/contract/index.js","default":"./dist/contract/index.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./oauth/node":{"types":"./dist/oauth/node.d.ts","import":"./dist/oauth/node.js","default":"./dist/oauth/node.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./public-api":{"types":"./dist/public-api/index.d.ts","import":"./dist/public-api/index.js","default":"./dist/public-api/index.js"},"./host-compat":{"types":"./dist/host-compat/index.d.ts","import":"./dist/host-compat/index.js","default":"./dist/host-compat/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./plugin-bundle":{"types":"./dist/plugin-bundle/index.d.ts","import":"./dist/plugin-bundle/index.js","default":"./dist/plugin-bundle/index.js"},"./widget-runtime":{"types":"./dist/widget-runtime/index.d.ts","import":"./dist/widget-runtime/index.js","default":"./dist/widget-runtime/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"},"./host-config/templates":{"types":"./dist/host-config/templates/index.d.ts","import":"./dist/host-config/templates/index.js","default":"./dist/host-config/templates/index.js"}},"gitHead":"5013212e9347df00b796e04e17d5cc142c2d3387","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"const root = await import('@mcpjam/sdk'); for (const n of ['driveTaskToTerminal','TaskLifecycleEngine','taskLifecycleKey','isTerminalLifecycleStatus','extensionTaskToObservation','legacyTaskToObservation','isUnknownTaskError','canDeclareTasksExtension','readDeclaredInputCapabilities','TaskInputRejectedError','createStrictElicitationContentValidator','retryAfterMsFromError']) { if (typeof root[n] !== 'function') { throw new Error('missing tasks export: ' + n); } } for (const n of ['loadEvalSuiteFile','resolveEvalSuiteFile','serializeEvalSuiteFile','formatSuiteFileFindings','suiteFilePointer']) { if (typeof root[n] !== 'function') { throw new Error('missing suite-file export: ' + n); } } for (const n of ['TERMINAL_LIFECYCLE_STATUSES','UNKNOWN_TASK_ERROR_CODE','DEFAULT_TASK_INPUT_LIMITS']) { if (root[n] === undefined) { throw new Error('missing tasks export: ' + n); } } for (const n of ['MAX_SUITE_FILE_BYTES','SUITE_FILE_VALIDITY_DEFAULTS','SUITE_FILE_DEFAULT_CAPTURE_LEVEL','SUITE_FILE_FINDING_CODES']) { if (root[n] === undefined) { throw new Error('missing suite-file export: ' + n); } } if (root.MAX_SUITE_FILE_BYTES !== 1048576) { throw new Error('MAX_SUITE_FILE_BYTES is not the pinned 1 MiB cap'); } await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); const contract = await import('@mcpjam/sdk/contract'); for (const n of ['canonicalJson','canonicalDigest','sha256Hex','resolveScoreDefinition','definitionHash','evaluationConfigHash','buildEvaluationConfigSnapshot','scorePassed','finalizeScoreResult','errorScoreResult','skippedScoreResult','notApplicableScoreResult','predicateScoreDefinition','scoreResultFromPredicateResult','toolMatchScoreDefinition','fromToolMatchResult','legacyTestScoreDefinition','fromLegacyTestOutcome','fromGoalCompletionCase','fromCriterionResult','generatedPredicateScorerId','mintCaseId','mintSuiteId','isOpaqueId','isPromptStep','isToolCallStep','isInteractStep','isAssertStep','isWidgetAssertion']) { if (typeof contract[n] !== 'function') { throw new Error('missing contract export: ' + n); } } for (const n of ['scoreResultSchema','resolvedScoreDefinitionSchema','evaluationConfigSnapshotSchema','PREDICATES_VERSION','MAX_SCORER_ID_LENGTH','TOOL_MATCH_SCORER_ID','LEGACY_TEST_SCORER_ID','opaqueIdSchema','CASE_ID_PREFIX','SUITE_ID_PREFIX','USER_VALUE_STAGES','STAGE_STATES','FAILURE_CATEGORIES','ITERATION_STATUSES','IMPORT_MAPPING_STATUSES','TEST_STEP_KINDS','testStepSchema','stepsSchema','elementLocatorSchema','evalSuiteFileSchema','evalSuiteFileStructuralSchema','evalSuiteFileCaseSchema','evalSuiteFileJsonSchema','EVAL_SUITE_SCHEMA_ID','EVAL_SUITE_SCHEMA_VERSION','MAX_SUITE_FILE_CASES']) { if (contract[n] === undefined) { throw new Error('missing contract export: ' + n); } } if (typeof contract.evalSuiteFileJsonSchema !== 'object' || !contract.evalSuiteFileJsonSchema.properties?.cases) { throw new Error('contract export evalSuiteFileJsonSchema is not the generated JSON Schema document'); } await import('@mcpjam/sdk/host-config'); const w = await import('@mcpjam/sdk/widget-runtime'); for (const n of ['getToolVisibility','isVisibleToModelOnly','isVisibleToAppOnly','LoggingTransport','buildOuterAllowAttribute','buildOuterSandboxAttribute','resolveIframeSandboxPolicy','createHostAppBridge','registerHostBridgeHandlers']) { if (typeof w[n] !== 'function') { throw new Error('missing widget-runtime export: ' + n); } } if (w['DEFAULT_IFRAME_SANDBOX'] === undefined) { throw new Error('missing widget-runtime export: DEFAULT_IFRAME_SANDBOX'); } const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation','checkHostCompatibilityOperation','createTunnelOperation','closeTunnelOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } } const pub = await import('@mcpjam/sdk/public-api'); for (const n of ['isV1ErrorCode','mapInternalCode','v1ErrorBody','v1Page','classifyRuntimeError']) { if (typeof pub[n] !== 'function') { throw new Error('missing public-api export: ' + n); } } for (const n of ['V1_ERROR_CODES','V1_ERROR_STATUS','INTERNAL_TO_V1_CODE']) { if (pub[n] === undefined) { throw new Error('missing public-api export: ' + n); } } const hc = await import('@mcpjam/sdk/host-compat'); for (const n of ['deriveServerRequirements','evaluateHostCompat','evaluateAllHosts','buildMarketHostProfiles','evaluateMarketHosts','scanWidgetUsage','detectHostCompatBridgeFromMeta','scanWidgetSource','scanWidgetMeta','bundledHostCompatCatalog','buildHostProfilesFromCatalog','fetchHostCompatCatalog','hostConfigFieldsToImageSupport','imageSupportToHostConfigFields']) { if (typeof hc[n] !== 'function') { throw new Error('missing host-compat export: ' + n); } } if (hc['HostCompatBridge'] === undefined) { throw new Error('missing host-compat export: HostCompatBridge'); } for (const n of ['MCP_APPS_FULL','MCP_APPS_CHATGPT','MCP_APPS_MISTRAL','MCP_APPS_CURSOR','MCP_APPS_GOOSE','MCP_APPS_COPILOT','MCP_APPS_SLACK','MCP_APPS_VSCODE','MCP_APPS_NO_CLAIMS']) { if (typeof hc[n] !== 'object') { throw new Error('missing host-compat capability export: ' + n); } } for (const n of ['hostCompatCatalogSchema','hostCompatCatalogEnvelopeSchema','mcpAppsCapabilitiesSchema']) { if (hc[n] === undefined) { throw new Error('missing host-compat schema export: ' + n); } } const pb = await import('@mcpjam/sdk/plugin-bundle'); for (const n of ['parsePluginBundle','containsRootPlaceholder','containsPluginPlaceholder','selectPluginMcpServerMap','detectPluginMcpTransport']) { if (typeof pb[n] !== 'function') { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['DEFAULT_PLUGIN_BUNDLE_LIMITS','PLUGIN_ISSUE_CODES','PLUGIN_MANIFEST_SCHEMAS','PLUGIN_MCP_SCHEMAS','PLUGIN_MANIFEST_PATH','PLUGIN_ROOT_PLACEHOLDERS','PLUGIN_DATA_PLACEHOLDER','PluginBundleError','MCP_CONFIG_PATH']) { if (pb[n] === undefined) { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['normalizeBundlePath','validateBundleEntries','parseYamlLite','caseFoldPath','PluginIssueCollector','sha256HexBytes','computeAggregateHash']) { if (pb[n] !== undefined) { throw new Error('plugin-bundle should not re-export internal helper: ' + n); } } const on = await import('@mcpjam/sdk/oauth/node'); for (const n of ['assertOutboundOAuthUrlAllowed','isDisallowedIpAddress','isLoopbackOAuthUrl','isPrivateHost','OAuthOutboundUrlBlockedError','executeOAuthProxy','executeDebugOAuthProxy','fetchOAuthMetadata','fetchPinnedPublicDocument','validateUrl','OAuthProxyError']) { if (typeof on[n] !== 'function') { throw new Error('missing oauth/node export: ' + n); } }\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs","check:eval-suite-schema":"tsx scripts/generate-eval-suite-schema.ts --check","generate:eval-suite-schema":"tsx scripts/generate-eval-suite-schema.ts","check:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts --check","generate:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts","check:host-catalog-fallback:remote":"node --import tsx scripts/check-host-catalog-fallback-remote.ts"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.2.0"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","ajv":"^8.17.1","zod":"^4.2.0","yaml":"^2.9.0","xpath":"^0.0.34","xml-crypto":"^6.1.2","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@noble/hashes":"^2.3.0","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@xmldom/xmldom":"^0.8.13","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"2.0.0","@modelcontextprotocol/ext-apps":"^1.7.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.7","esbuild":"^0.27.0","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"2.0.0","@modelcontextprotocol/server":"2.0.0","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_6.3.0_1787249668468_0.2696765477855876","host":"s3://npm-registry-packages-npm-production"}},"6.4.0":{"name":"@mcpjam/sdk","version":"6.4.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@6.4.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"8bd99d4ce168fed3fc7e681a0f69b9c3eb812685","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-6.4.0.tgz","fileCount":74,"integrity":"sha512-HR7TCWexCY2gvPcnmWlH2WRpgqURTBGATHtVQ3z9OaFN0vukc69M1g1knu8h02rZL9aG3KhcxpHtzjfV86/SLw==","signatures":[{"sig":"MEQCID0p8mczHGFdGGy+T0CFhemS+xHje1bDaW7/fGs7SlrRAiBz2gDOglI3OWZxtJLIgHJeWUon5EQUOpBVom/SLHmQog==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19669553},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./contract":{"types":"./dist/contract/index.d.ts","import":"./dist/contract/index.js","default":"./dist/contract/index.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./oauth/node":{"types":"./dist/oauth/node.d.ts","import":"./dist/oauth/node.js","default":"./dist/oauth/node.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./public-api":{"types":"./dist/public-api/index.d.ts","import":"./dist/public-api/index.js","default":"./dist/public-api/index.js"},"./host-compat":{"types":"./dist/host-compat/index.d.ts","import":"./dist/host-compat/index.js","default":"./dist/host-compat/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./plugin-bundle":{"types":"./dist/plugin-bundle/index.d.ts","import":"./dist/plugin-bundle/index.js","default":"./dist/plugin-bundle/index.js"},"./widget-runtime":{"types":"./dist/widget-runtime/index.d.ts","import":"./dist/widget-runtime/index.js","default":"./dist/widget-runtime/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"},"./host-config/templates":{"types":"./dist/host-config/templates/index.d.ts","import":"./dist/host-config/templates/index.js","default":"./dist/host-config/templates/index.js"}},"gitHead":"886a1fe23d43673f7579cafca2ec62caf811d9c9","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"const root = await import('@mcpjam/sdk'); for (const n of ['driveTaskToTerminal','TaskLifecycleEngine','taskLifecycleKey','isTerminalLifecycleStatus','extensionTaskToObservation','legacyTaskToObservation','isUnknownTaskError','canDeclareTasksExtension','readDeclaredInputCapabilities','TaskInputRejectedError','createStrictElicitationContentValidator','retryAfterMsFromError']) { if (typeof root[n] !== 'function') { throw new Error('missing tasks export: ' + n); } } for (const n of ['loadEvalSuiteFile','resolveEvalSuiteFile','serializeEvalSuiteFile','formatSuiteFileFindings','suiteFilePointer']) { if (typeof root[n] !== 'function') { throw new Error('missing suite-file export: ' + n); } } for (const n of ['TERMINAL_LIFECYCLE_STATUSES','UNKNOWN_TASK_ERROR_CODE','DEFAULT_TASK_INPUT_LIMITS']) { if (root[n] === undefined) { throw new Error('missing tasks export: ' + n); } } for (const n of ['MAX_SUITE_FILE_BYTES','SUITE_FILE_VALIDITY_DEFAULTS','SUITE_FILE_DEFAULT_CAPTURE_LEVEL','SUITE_FILE_FINDING_CODES']) { if (root[n] === undefined) { throw new Error('missing suite-file export: ' + n); } } if (root.MAX_SUITE_FILE_BYTES !== 1048576) { throw new Error('MAX_SUITE_FILE_BYTES is not the pinned 1 MiB cap'); } await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); const contract = await import('@mcpjam/sdk/contract'); for (const n of ['canonicalJson','canonicalDigest','sha256Hex','resolveScoreDefinition','definitionHash','evaluationConfigHash','buildEvaluationConfigSnapshot','scorePassed','finalizeScoreResult','errorScoreResult','skippedScoreResult','notApplicableScoreResult','predicateScoreDefinition','scoreResultFromPredicateResult','toolMatchScoreDefinition','fromToolMatchResult','legacyTestScoreDefinition','fromLegacyTestOutcome','fromGoalCompletionCase','fromCriterionResult','generatedPredicateScorerId','mintCaseId','mintSuiteId','isOpaqueId','isPromptStep','isToolCallStep','isInteractStep','isAssertStep','isWidgetAssertion']) { if (typeof contract[n] !== 'function') { throw new Error('missing contract export: ' + n); } } for (const n of ['scoreResultSchema','resolvedScoreDefinitionSchema','evaluationConfigSnapshotSchema','PREDICATES_VERSION','MAX_SCORER_ID_LENGTH','TOOL_MATCH_SCORER_ID','LEGACY_TEST_SCORER_ID','opaqueIdSchema','CASE_ID_PREFIX','SUITE_ID_PREFIX','USER_VALUE_STAGES','STAGE_STATES','FAILURE_CATEGORIES','ITERATION_STATUSES','IMPORT_MAPPING_STATUSES','TEST_STEP_KINDS','testStepSchema','stepsSchema','elementLocatorSchema','evalSuiteFileSchema','evalSuiteFileStructuralSchema','evalSuiteFileCaseSchema','evalSuiteFileJsonSchema','EVAL_SUITE_SCHEMA_ID','EVAL_SUITE_SCHEMA_VERSION','MAX_SUITE_FILE_CASES']) { if (contract[n] === undefined) { throw new Error('missing contract export: ' + n); } } if (typeof contract.evalSuiteFileJsonSchema !== 'object' || !contract.evalSuiteFileJsonSchema.properties?.cases) { throw new Error('contract export evalSuiteFileJsonSchema is not the generated JSON Schema document'); } await import('@mcpjam/sdk/host-config'); const w = await import('@mcpjam/sdk/widget-runtime'); for (const n of ['getToolVisibility','isVisibleToModelOnly','isVisibleToAppOnly','LoggingTransport','buildOuterAllowAttribute','buildOuterSandboxAttribute','resolveIframeSandboxPolicy','createHostAppBridge','registerHostBridgeHandlers']) { if (typeof w[n] !== 'function') { throw new Error('missing widget-runtime export: ' + n); } } if (w['DEFAULT_IFRAME_SANDBOX'] === undefined) { throw new Error('missing widget-runtime export: DEFAULT_IFRAME_SANDBOX'); } const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation','checkHostCompatibilityOperation','createTunnelOperation','closeTunnelOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } } const pub = await import('@mcpjam/sdk/public-api'); for (const n of ['isV1ErrorCode','mapInternalCode','v1ErrorBody','v1Page','classifyRuntimeError']) { if (typeof pub[n] !== 'function') { throw new Error('missing public-api export: ' + n); } } for (const n of ['V1_ERROR_CODES','V1_ERROR_STATUS','INTERNAL_TO_V1_CODE']) { if (pub[n] === undefined) { throw new Error('missing public-api export: ' + n); } } const hc = await import('@mcpjam/sdk/host-compat'); for (const n of ['deriveServerRequirements','evaluateHostCompat','evaluateAllHosts','buildMarketHostProfiles','evaluateMarketHosts','scanWidgetUsage','detectHostCompatBridgeFromMeta','scanWidgetSource','scanWidgetMeta','bundledHostCompatCatalog','buildHostProfilesFromCatalog','fetchHostCompatCatalog','hostConfigFieldsToImageSupport','imageSupportToHostConfigFields']) { if (typeof hc[n] !== 'function') { throw new Error('missing host-compat export: ' + n); } } if (hc['HostCompatBridge'] === undefined) { throw new Error('missing host-compat export: HostCompatBridge'); } for (const n of ['MCP_APPS_FULL','MCP_APPS_CHATGPT','MCP_APPS_MISTRAL','MCP_APPS_CURSOR','MCP_APPS_GOOSE','MCP_APPS_COPILOT','MCP_APPS_SLACK','MCP_APPS_VSCODE','MCP_APPS_NO_CLAIMS']) { if (typeof hc[n] !== 'object') { throw new Error('missing host-compat capability export: ' + n); } } for (const n of ['hostCompatCatalogSchema','hostCompatCatalogEnvelopeSchema','mcpAppsCapabilitiesSchema']) { if (hc[n] === undefined) { throw new Error('missing host-compat schema export: ' + n); } } const pb = await import('@mcpjam/sdk/plugin-bundle'); for (const n of ['parsePluginBundle','containsRootPlaceholder','containsPluginPlaceholder','selectPluginMcpServerMap','detectPluginMcpTransport']) { if (typeof pb[n] !== 'function') { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['DEFAULT_PLUGIN_BUNDLE_LIMITS','PLUGIN_ISSUE_CODES','PLUGIN_MANIFEST_SCHEMAS','PLUGIN_MCP_SCHEMAS','PLUGIN_MANIFEST_PATH','PLUGIN_ROOT_PLACEHOLDERS','PLUGIN_DATA_PLACEHOLDER','PluginBundleError','MCP_CONFIG_PATH']) { if (pb[n] === undefined) { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['normalizeBundlePath','validateBundleEntries','parseYamlLite','caseFoldPath','PluginIssueCollector','sha256HexBytes','computeAggregateHash']) { if (pb[n] !== undefined) { throw new Error('plugin-bundle should not re-export internal helper: ' + n); } } const on = await import('@mcpjam/sdk/oauth/node'); for (const n of ['assertOutboundOAuthUrlAllowed','isDisallowedIpAddress','isLoopbackOAuthUrl','isPrivateHost','OAuthOutboundUrlBlockedError','executeOAuthProxy','executeDebugOAuthProxy','fetchOAuthMetadata','fetchPinnedPublicDocument','validateUrl','OAuthProxyError']) { if (typeof on[n] !== 'function') { throw new Error('missing oauth/node export: ' + n); } }\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs","check:eval-suite-schema":"tsx scripts/generate-eval-suite-schema.ts --check","generate:eval-suite-schema":"tsx scripts/generate-eval-suite-schema.ts","check:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts --check","generate:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts","check:host-catalog-fallback:remote":"node --import tsx scripts/check-host-catalog-fallback-remote.ts"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.2.0"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","ajv":"^8.17.1","zod":"^4.2.0","yaml":"^2.9.0","jszip":"^3.10.1","xpath":"^0.0.34","xml-crypto":"^6.1.2","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@noble/hashes":"^2.3.0","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@xmldom/xmldom":"^0.8.13","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"2.0.0","@modelcontextprotocol/ext-apps":"^1.7.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.7","esbuild":"^0.27.0","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"2.0.0","@modelcontextprotocol/server":"2.0.0","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_6.4.0_1787359128929_0.4818968049518295","host":"s3://npm-registry-packages-npm-production"}},"6.5.0":{"name":"@mcpjam/sdk","version":"6.5.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@6.5.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"8135108efa1f1b80c0c5ce7338229895a9adf3a6","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-6.5.0.tgz","fileCount":74,"integrity":"sha512-3mX0q/rXk0u1m9FtafgLjty2Y531ZORdTG/n+0yMyASRl6eISqNpQMnKf5wPRUjYxl5FllvUchPf7ZPU09OmOg==","signatures":[{"sig":"MEQCIH6qtNjMyYuC/MDFvWab5SmhpooJhg1h+JnYUjOHdrYdAiAG69IcBnVhwdSLi1pdAE2Zxqa5Ok/S5Xv+Jagdd2sm8Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22086556},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./contract":{"types":"./dist/contract/index.d.ts","import":"./dist/contract/index.js","default":"./dist/contract/index.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./oauth/node":{"types":"./dist/oauth/node.d.ts","import":"./dist/oauth/node.js","default":"./dist/oauth/node.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./public-api":{"types":"./dist/public-api/index.d.ts","import":"./dist/public-api/index.js","default":"./dist/public-api/index.js"},"./host-compat":{"types":"./dist/host-compat/index.d.ts","import":"./dist/host-compat/index.js","default":"./dist/host-compat/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./plugin-bundle":{"types":"./dist/plugin-bundle/index.d.ts","import":"./dist/plugin-bundle/index.js","default":"./dist/plugin-bundle/index.js"},"./widget-runtime":{"types":"./dist/widget-runtime/index.d.ts","import":"./dist/widget-runtime/index.js","default":"./dist/widget-runtime/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"},"./host-config/templates":{"types":"./dist/host-config/templates/index.d.ts","import":"./dist/host-config/templates/index.js","default":"./dist/host-config/templates/index.js"}},"gitHead":"0a416fc1d3728cfa342b0c66bb09745a23c63e5f","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"const root = await import('@mcpjam/sdk'); for (const n of ['driveTaskToTerminal','TaskLifecycleEngine','taskLifecycleKey','isTerminalLifecycleStatus','extensionTaskToObservation','legacyTaskToObservation','isUnknownTaskError','canDeclareTasksExtension','readDeclaredInputCapabilities','TaskInputRejectedError','createStrictElicitationContentValidator','retryAfterMsFromError']) { if (typeof root[n] !== 'function') { throw new Error('missing tasks export: ' + n); } } for (const n of ['loadEvalSuiteFile','resolveEvalSuiteFile','serializeEvalSuiteFile','formatSuiteFileFindings','suiteFilePointer']) { if (typeof root[n] !== 'function') { throw new Error('missing suite-file export: ' + n); } } for (const n of ['TERMINAL_LIFECYCLE_STATUSES','UNKNOWN_TASK_ERROR_CODE','DEFAULT_TASK_INPUT_LIMITS']) { if (root[n] === undefined) { throw new Error('missing tasks export: ' + n); } } for (const n of ['MAX_SUITE_FILE_BYTES','SUITE_FILE_VALIDITY_DEFAULTS','SUITE_FILE_DEFAULT_CAPTURE_LEVEL','SUITE_FILE_FINDING_CODES']) { if (root[n] === undefined) { throw new Error('missing suite-file export: ' + n); } } if (root.MAX_SUITE_FILE_BYTES !== 1048576) { throw new Error('MAX_SUITE_FILE_BYTES is not the pinned 1 MiB cap'); } await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); const contract = await import('@mcpjam/sdk/contract'); for (const n of ['canonicalJson','canonicalDigest','sha256Hex','resolveScoreDefinition','definitionHash','evaluationConfigHash','buildEvaluationConfigSnapshot','scorePassed','finalizeScoreResult','errorScoreResult','skippedScoreResult','notApplicableScoreResult','predicateScoreDefinition','scoreResultFromPredicateResult','toolMatchScoreDefinition','fromToolMatchResult','legacyTestScoreDefinition','fromLegacyTestOutcome','fromGoalCompletionCase','fromCriterionResult','generatedPredicateScorerId','deriveStageResults','stageDerivationToMetadata','mintCaseId','mintSuiteId','isOpaqueId','isPromptStep','isToolCallStep','isInteractStep','isAssertStep','isWidgetAssertion']) { if (typeof contract[n] !== 'function') { throw new Error('missing contract export: ' + n); } } for (const n of ['scoreResultSchema','resolvedScoreDefinitionSchema','evaluationConfigSnapshotSchema','PREDICATES_VERSION','MAX_SCORER_ID_LENGTH','TOOL_MATCH_SCORER_ID','LEGACY_TEST_SCORER_ID','opaqueIdSchema','CASE_ID_PREFIX','SUITE_ID_PREFIX','USER_VALUE_STAGES','STAGE_STATES','FAILURE_CATEGORIES','ITERATION_STATUSES','IMPORT_MAPPING_STATUSES','STAGE_ANALYZER_VERSION','STAGE_REASONS','STAGE_METADATA_KEYS','MAX_EVIDENCE_REASONS','MAX_EVIDENCE_REASON_CHARS','stageDerivationSchema','stageResultRowSchema','stageReasonSchema','TEST_STEP_KINDS','testStepSchema','stepsSchema','elementLocatorSchema','evalSuiteFileSchema','evalSuiteFileStructuralSchema','evalSuiteFileCaseSchema','evalSuiteFileJsonSchema','EVAL_SUITE_SCHEMA_ID','EVAL_SUITE_SCHEMA_VERSION','MAX_SUITE_FILE_CASES']) { if (contract[n] === undefined) { throw new Error('missing contract export: ' + n); } } if (typeof contract.evalSuiteFileJsonSchema !== 'object' || !contract.evalSuiteFileJsonSchema.properties?.cases) { throw new Error('contract export evalSuiteFileJsonSchema is not the generated JSON Schema document'); } await import('@mcpjam/sdk/host-config'); const w = await import('@mcpjam/sdk/widget-runtime'); for (const n of ['getToolVisibility','isVisibleToModelOnly','isVisibleToAppOnly','LoggingTransport','buildOuterAllowAttribute','buildOuterSandboxAttribute','resolveIframeSandboxPolicy','createHostAppBridge','registerHostBridgeHandlers']) { if (typeof w[n] !== 'function') { throw new Error('missing widget-runtime export: ' + n); } } if (w['DEFAULT_IFRAME_SANDBOX'] === undefined) { throw new Error('missing widget-runtime export: DEFAULT_IFRAME_SANDBOX'); } const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation','checkHostCompatibilityOperation','createTunnelOperation','closeTunnelOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } } const pub = await import('@mcpjam/sdk/public-api'); for (const n of ['isV1ErrorCode','mapInternalCode','v1ErrorBody','v1Page','classifyRuntimeError']) { if (typeof pub[n] !== 'function') { throw new Error('missing public-api export: ' + n); } } for (const n of ['V1_ERROR_CODES','V1_ERROR_STATUS','INTERNAL_TO_V1_CODE']) { if (pub[n] === undefined) { throw new Error('missing public-api export: ' + n); } } const hc = await import('@mcpjam/sdk/host-compat'); for (const n of ['deriveServerRequirements','evaluateHostCompat','evaluateAllHosts','buildMarketHostProfiles','evaluateMarketHosts','scanWidgetUsage','detectHostCompatBridgeFromMeta','scanWidgetSource','scanWidgetMeta','bundledHostCompatCatalog','buildHostProfilesFromCatalog','fetchHostCompatCatalog','hostConfigFieldsToImageSupport','imageSupportToHostConfigFields']) { if (typeof hc[n] !== 'function') { throw new Error('missing host-compat export: ' + n); } } if (hc['HostCompatBridge'] === undefined) { throw new Error('missing host-compat export: HostCompatBridge'); } for (const n of ['MCP_APPS_FULL','MCP_APPS_CHATGPT','MCP_APPS_MISTRAL','MCP_APPS_CURSOR','MCP_APPS_GOOSE','MCP_APPS_COPILOT','MCP_APPS_SLACK','MCP_APPS_VSCODE','MCP_APPS_NO_CLAIMS']) { if (typeof hc[n] !== 'object') { throw new Error('missing host-compat capability export: ' + n); } } for (const n of ['hostCompatCatalogSchema','hostCompatCatalogEnvelopeSchema','mcpAppsCapabilitiesSchema']) { if (hc[n] === undefined) { throw new Error('missing host-compat schema export: ' + n); } } const pb = await import('@mcpjam/sdk/plugin-bundle'); for (const n of ['parsePluginBundle','containsRootPlaceholder','containsPluginPlaceholder','selectPluginMcpServerMap','detectPluginMcpTransport']) { if (typeof pb[n] !== 'function') { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['DEFAULT_PLUGIN_BUNDLE_LIMITS','PLUGIN_ISSUE_CODES','PLUGIN_MANIFEST_SCHEMAS','PLUGIN_MCP_SCHEMAS','PLUGIN_MANIFEST_PATH','PLUGIN_ROOT_PLACEHOLDERS','PLUGIN_DATA_PLACEHOLDER','PluginBundleError','MCP_CONFIG_PATH']) { if (pb[n] === undefined) { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['normalizeBundlePath','validateBundleEntries','parseYamlLite','caseFoldPath','PluginIssueCollector','sha256HexBytes','computeAggregateHash']) { if (pb[n] !== undefined) { throw new Error('plugin-bundle should not re-export internal helper: ' + n); } } const on = await import('@mcpjam/sdk/oauth/node'); for (const n of ['assertOutboundOAuthUrlAllowed','isDisallowedIpAddress','isLoopbackOAuthUrl','isPrivateHost','OAuthOutboundUrlBlockedError','executeOAuthProxy','executeDebugOAuthProxy','fetchOAuthMetadata','fetchPinnedPublicDocument','validateUrl','OAuthProxyError']) { if (typeof on[n] !== 'function') { throw new Error('missing oauth/node export: ' + n); } }\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs","check:eval-suite-schema":"tsx scripts/generate-eval-suite-schema.ts --check","generate:eval-suite-schema":"tsx scripts/generate-eval-suite-schema.ts","check:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts --check","generate:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts","check:host-catalog-fallback:remote":"node --import tsx scripts/check-host-catalog-fallback-remote.ts"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.2.0"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","ajv":"^8.17.1","zod":"^4.2.0","yaml":"^2.9.0","jszip":"^3.10.1","xpath":"^0.0.34","xml-crypto":"^6.1.2","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@noble/hashes":"^2.3.0","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@xmldom/xmldom":"^0.8.13","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"2.0.0","@modelcontextprotocol/ext-apps":"^1.7.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.7","esbuild":"^0.27.0","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"2.0.0","@modelcontextprotocol/server":"2.0.0","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_6.5.0_1787548278629_0.3960246518251904","host":"s3://npm-registry-packages-npm-production"}},"7.0.0":{"name":"@mcpjam/sdk","version":"7.0.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@7.0.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"c5e4ce89c2b4d38c779036140b5e589cff94565d","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-7.0.0.tgz","fileCount":74,"integrity":"sha512-b7o5fv9+VxskoDHbaJbArJ6jE3sLKGtW2MbJJiQuzMncpnM9WKFhdpwEaF+l/4RIx0Cr51b0tMyWYlYY3mg5PQ==","signatures":[{"sig":"MEQCICHblSD1Ga+aUxB1fRV5Qb9xqBA1LPrqeWwpqxpatapyAiAJbOCwZB74B3mbMxaxZEfDjmWPVIbzNWN9pxBiwN28WA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22530018},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./contract":{"types":"./dist/contract/index.d.ts","import":"./dist/contract/index.js","default":"./dist/contract/index.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./oauth/node":{"types":"./dist/oauth/node.d.ts","import":"./dist/oauth/node.js","default":"./dist/oauth/node.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./public-api":{"types":"./dist/public-api/index.d.ts","import":"./dist/public-api/index.js","default":"./dist/public-api/index.js"},"./host-compat":{"types":"./dist/host-compat/index.d.ts","import":"./dist/host-compat/index.js","default":"./dist/host-compat/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./plugin-bundle":{"types":"./dist/plugin-bundle/index.d.ts","import":"./dist/plugin-bundle/index.js","default":"./dist/plugin-bundle/index.js"},"./widget-runtime":{"types":"./dist/widget-runtime/index.d.ts","import":"./dist/widget-runtime/index.js","default":"./dist/widget-runtime/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"},"./host-config/templates":{"types":"./dist/host-config/templates/index.d.ts","import":"./dist/host-config/templates/index.js","default":"./dist/host-config/templates/index.js"}},"gitHead":"89d4327ad03df75ef7cce6aa26348dfcf242d32b","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"const root = await import('@mcpjam/sdk'); for (const n of ['driveTaskToTerminal','TaskLifecycleEngine','taskLifecycleKey','isTerminalLifecycleStatus','extensionTaskToObservation','legacyTaskToObservation','isUnknownTaskError','canDeclareTasksExtension','readDeclaredInputCapabilities','TaskInputRejectedError','createStrictElicitationContentValidator','retryAfterMsFromError']) { if (typeof root[n] !== 'function') { throw new Error('missing tasks export: ' + n); } } for (const n of ['loadEvalSuiteFile','resolveEvalSuiteFile','serializeEvalSuiteFile','formatSuiteFileFindings','suiteFilePointer']) { if (typeof root[n] !== 'function') { throw new Error('missing suite-file export: ' + n); } } for (const n of ['TERMINAL_LIFECYCLE_STATUSES','UNKNOWN_TASK_ERROR_CODE','DEFAULT_TASK_INPUT_LIMITS']) { if (root[n] === undefined) { throw new Error('missing tasks export: ' + n); } } for (const n of ['MAX_SUITE_FILE_BYTES','SUITE_FILE_VALIDITY_DEFAULTS','SUITE_FILE_DEFAULT_CAPTURE_LEVEL','SUITE_FILE_FINDING_CODES']) { if (root[n] === undefined) { throw new Error('missing suite-file export: ' + n); } } if (root.MAX_SUITE_FILE_BYTES !== 1048576) { throw new Error('MAX_SUITE_FILE_BYTES is not the pinned 1 MiB cap'); } await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); const contract = await import('@mcpjam/sdk/contract'); for (const n of ['canonicalJson','canonicalDigest','sha256Hex','resolveScoreDefinition','definitionHash','evaluationConfigHash','buildEvaluationConfigSnapshot','scorePassed','finalizeScoreResult','errorScoreResult','skippedScoreResult','notApplicableScoreResult','predicateScoreDefinition','scoreResultFromPredicateResult','toolMatchScoreDefinition','fromToolMatchResult','legacyTestScoreDefinition','fromLegacyTestOutcome','fromGoalCompletionCase','fromCriterionResult','generatedPredicateScorerId','deriveStageResults','stageDerivationToMetadata','mintCaseId','mintSuiteId','isOpaqueId','isPromptStep','isToolCallStep','isInteractStep','isAssertStep','isWidgetAssertion']) { if (typeof contract[n] !== 'function') { throw new Error('missing contract export: ' + n); } } for (const n of ['scoreResultSchema','resolvedScoreDefinitionSchema','evaluationConfigSnapshotSchema','PREDICATES_VERSION','MAX_SCORER_ID_LENGTH','TOOL_MATCH_SCORER_ID','LEGACY_TEST_SCORER_ID','opaqueIdSchema','CASE_ID_PREFIX','SUITE_ID_PREFIX','USER_VALUE_STAGES','STAGE_STATES','FAILURE_CATEGORIES','ITERATION_STATUSES','IMPORT_MAPPING_STATUSES','STAGE_ANALYZER_VERSION','STAGE_REASONS','STAGE_METADATA_KEYS','MAX_EVIDENCE_REASONS','MAX_EVIDENCE_REASON_CHARS','stageDerivationSchema','stageResultRowSchema','stageReasonSchema','TEST_STEP_KINDS','testStepSchema','stepsSchema','elementLocatorSchema','evalSuiteFileSchema','evalSuiteFileStructuralSchema','evalSuiteFileCaseSchema','evalSuiteFileJsonSchema','EVAL_SUITE_SCHEMA_ID','EVAL_SUITE_SCHEMA_VERSION','MAX_SUITE_FILE_CASES']) { if (contract[n] === undefined) { throw new Error('missing contract export: ' + n); } } if (typeof contract.evalSuiteFileJsonSchema !== 'object' || !contract.evalSuiteFileJsonSchema.properties?.cases) { throw new Error('contract export evalSuiteFileJsonSchema is not the generated JSON Schema document'); } await import('@mcpjam/sdk/host-config'); const w = await import('@mcpjam/sdk/widget-runtime'); for (const n of ['getToolVisibility','isVisibleToModelOnly','isVisibleToAppOnly','LoggingTransport','buildOuterAllowAttribute','buildOuterSandboxAttribute','resolveIframeSandboxPolicy','createHostAppBridge','registerHostBridgeHandlers']) { if (typeof w[n] !== 'function') { throw new Error('missing widget-runtime export: ' + n); } } if (w['DEFAULT_IFRAME_SANDBOX'] === undefined) { throw new Error('missing widget-runtime export: DEFAULT_IFRAME_SANDBOX'); } const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation','checkHostCompatibilityOperation','createTunnelOperation','closeTunnelOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } } const pub = await import('@mcpjam/sdk/public-api'); for (const n of ['isV1ErrorCode','mapInternalCode','v1ErrorBody','v1Page','classifyRuntimeError']) { if (typeof pub[n] !== 'function') { throw new Error('missing public-api export: ' + n); } } for (const n of ['V1_ERROR_CODES','V1_ERROR_STATUS','INTERNAL_TO_V1_CODE']) { if (pub[n] === undefined) { throw new Error('missing public-api export: ' + n); } } const hc = await import('@mcpjam/sdk/host-compat'); for (const n of ['deriveServerRequirements','evaluateHostCompat','evaluateAllHosts','buildMarketHostProfiles','evaluateMarketHosts','scanWidgetUsage','detectHostCompatBridgeFromMeta','scanWidgetSource','scanWidgetMeta','bundledHostCompatCatalog','buildHostProfilesFromCatalog','fetchHostCompatCatalog','hostConfigFieldsToImageSupport','imageSupportToHostConfigFields']) { if (typeof hc[n] !== 'function') { throw new Error('missing host-compat export: ' + n); } } if (hc['HostCompatBridge'] === undefined) { throw new Error('missing host-compat export: HostCompatBridge'); } for (const n of ['MCP_APPS_FULL','MCP_APPS_CHATGPT','MCP_APPS_MISTRAL','MCP_APPS_CURSOR','MCP_APPS_GOOSE','MCP_APPS_COPILOT','MCP_APPS_SLACK','MCP_APPS_VSCODE','MCP_APPS_NO_CLAIMS']) { if (typeof hc[n] !== 'object') { throw new Error('missing host-compat capability export: ' + n); } } for (const n of ['hostCompatCatalogSchema','hostCompatCatalogEnvelopeSchema','mcpAppsCapabilitiesSchema']) { if (hc[n] === undefined) { throw new Error('missing host-compat schema export: ' + n); } } const pb = await import('@mcpjam/sdk/plugin-bundle'); for (const n of ['parsePluginBundle','containsRootPlaceholder','containsPluginPlaceholder','selectPluginMcpServerMap','detectPluginMcpTransport']) { if (typeof pb[n] !== 'function') { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['DEFAULT_PLUGIN_BUNDLE_LIMITS','PLUGIN_ISSUE_CODES','PLUGIN_MANIFEST_SCHEMAS','PLUGIN_MCP_SCHEMAS','PLUGIN_MANIFEST_PATH','PLUGIN_ROOT_PLACEHOLDERS','PLUGIN_DATA_PLACEHOLDER','PluginBundleError','MCP_CONFIG_PATH']) { if (pb[n] === undefined) { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['normalizeBundlePath','validateBundleEntries','parseYamlLite','caseFoldPath','PluginIssueCollector','sha256HexBytes','computeAggregateHash']) { if (pb[n] !== undefined) { throw new Error('plugin-bundle should not re-export internal helper: ' + n); } } const on = await import('@mcpjam/sdk/oauth/node'); for (const n of ['assertOutboundOAuthUrlAllowed','isDisallowedIpAddress','isLoopbackOAuthUrl','isPrivateHost','OAuthOutboundUrlBlockedError','executeOAuthProxy','executeDebugOAuthProxy','fetchOAuthMetadata','fetchPinnedPublicDocument','validateUrl','OAuthProxyError']) { if (typeof on[n] !== 'function') { throw new Error('missing oauth/node export: ' + n); } }\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs","check:eval-suite-schema":"tsx scripts/generate-eval-suite-schema.ts --check","generate:eval-suite-schema":"tsx scripts/generate-eval-suite-schema.ts","check:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts --check","generate:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts","check:eval-verdict-policy-schema":"tsx scripts/generate-eval-verdict-policy-schema.ts --check","check:host-catalog-fallback:remote":"node --import tsx scripts/check-host-catalog-fallback-remote.ts","generate:eval-verdict-policy-schema":"tsx scripts/generate-eval-verdict-policy-schema.ts"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.2.0"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","ajv":"^8.17.1","zod":"^4.2.0","yaml":"^2.9.0","jszip":"^3.10.1","xpath":"^0.0.34","xml-crypto":"^6.1.2","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@noble/hashes":"^2.3.0","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@xmldom/xmldom":"^0.8.13","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"2.0.0","@modelcontextprotocol/ext-apps":"^1.7.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.7","esbuild":"^0.27.0","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"2.0.0","@modelcontextprotocol/server":"2.0.0","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_7.0.0_1787619139889_0.5481769046835518","host":"s3://npm-registry-packages-npm-production"}},"7.1.0":{"name":"@mcpjam/sdk","version":"7.1.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@7.1.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"2875eec50eda3850fa0d8da47ffbcd9c9fc306e2","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-7.1.0.tgz","fileCount":74,"integrity":"sha512-HGIVaHp27CrdWoF+3nH59uKRYiTttl2APWCJKLmnPdaxUGk/CalRr9+hje/cM+JweRJDRDBeQjtTOMgMz2ZTnA==","signatures":[{"sig":"MEYCIQCF+l3z0eBdulmd19sOHxueB1I/jW00D4bMMq/5SVqSgQIhAJRwHAsy57dUUsAYdiIYfBNxJw5v8JNBoPZWlt0tR9YJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22579888},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./contract":{"types":"./dist/contract/index.d.ts","import":"./dist/contract/index.js","default":"./dist/contract/index.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./oauth/node":{"types":"./dist/oauth/node.d.ts","import":"./dist/oauth/node.js","default":"./dist/oauth/node.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./public-api":{"types":"./dist/public-api/index.d.ts","import":"./dist/public-api/index.js","default":"./dist/public-api/index.js"},"./host-compat":{"types":"./dist/host-compat/index.d.ts","import":"./dist/host-compat/index.js","default":"./dist/host-compat/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./plugin-bundle":{"types":"./dist/plugin-bundle/index.d.ts","import":"./dist/plugin-bundle/index.js","default":"./dist/plugin-bundle/index.js"},"./widget-runtime":{"types":"./dist/widget-runtime/index.d.ts","import":"./dist/widget-runtime/index.js","default":"./dist/widget-runtime/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"},"./host-config/templates":{"types":"./dist/host-config/templates/index.d.ts","import":"./dist/host-config/templates/index.js","default":"./dist/host-config/templates/index.js"}},"gitHead":"6a3d2d7c5c204753bdd2418acfd7f419193a1f65","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"const root = await import('@mcpjam/sdk'); for (const n of ['driveTaskToTerminal','TaskLifecycleEngine','taskLifecycleKey','isTerminalLifecycleStatus','extensionTaskToObservation','legacyTaskToObservation','isUnknownTaskError','canDeclareTasksExtension','readDeclaredInputCapabilities','TaskInputRejectedError','createStrictElicitationContentValidator','retryAfterMsFromError']) { if (typeof root[n] !== 'function') { throw new Error('missing tasks export: ' + n); } } for (const n of ['loadEvalSuiteFile','resolveEvalSuiteFile','serializeEvalSuiteFile','formatSuiteFileFindings','suiteFilePointer']) { if (typeof root[n] !== 'function') { throw new Error('missing suite-file export: ' + n); } } for (const n of ['TERMINAL_LIFECYCLE_STATUSES','UNKNOWN_TASK_ERROR_CODE','DEFAULT_TASK_INPUT_LIMITS']) { if (root[n] === undefined) { throw new Error('missing tasks export: ' + n); } } for (const n of ['MAX_SUITE_FILE_BYTES','SUITE_FILE_VALIDITY_DEFAULTS','SUITE_FILE_DEFAULT_CAPTURE_LEVEL','SUITE_FILE_FINDING_CODES']) { if (root[n] === undefined) { throw new Error('missing suite-file export: ' + n); } } if (root.MAX_SUITE_FILE_BYTES !== 1048576) { throw new Error('MAX_SUITE_FILE_BYTES is not the pinned 1 MiB cap'); } await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); const contract = await import('@mcpjam/sdk/contract'); for (const n of ['canonicalJson','canonicalDigest','sha256Hex','resolveScoreDefinition','definitionHash','evaluationConfigHash','buildEvaluationConfigSnapshot','scorePassed','finalizeScoreResult','errorScoreResult','skippedScoreResult','notApplicableScoreResult','predicateScoreDefinition','scoreResultFromPredicateResult','toolMatchScoreDefinition','fromToolMatchResult','legacyTestScoreDefinition','fromLegacyTestOutcome','fromGoalCompletionCase','fromCriterionResult','generatedPredicateScorerId','deriveStageResults','stageDerivationToMetadata','mintCaseId','mintSuiteId','isOpaqueId','isPromptStep','isToolCallStep','isInteractStep','isAssertStep','isWidgetAssertion']) { if (typeof contract[n] !== 'function') { throw new Error('missing contract export: ' + n); } } for (const n of ['scoreResultSchema','resolvedScoreDefinitionSchema','evaluationConfigSnapshotSchema','PREDICATES_VERSION','MAX_SCORER_ID_LENGTH','TOOL_MATCH_SCORER_ID','LEGACY_TEST_SCORER_ID','opaqueIdSchema','CASE_ID_PREFIX','SUITE_ID_PREFIX','USER_VALUE_STAGES','STAGE_STATES','FAILURE_CATEGORIES','ITERATION_STATUSES','IMPORT_MAPPING_STATUSES','STAGE_ANALYZER_VERSION','STAGE_REASONS','STAGE_METADATA_KEYS','MAX_EVIDENCE_REASONS','MAX_EVIDENCE_REASON_CHARS','stageDerivationSchema','stageResultRowSchema','stageReasonSchema','TEST_STEP_KINDS','testStepSchema','stepsSchema','elementLocatorSchema','evalSuiteFileSchema','evalSuiteFileStructuralSchema','evalSuiteFileCaseSchema','evalSuiteFileJsonSchema','EVAL_SUITE_SCHEMA_ID','EVAL_SUITE_SCHEMA_VERSION','MAX_SUITE_FILE_CASES']) { if (contract[n] === undefined) { throw new Error('missing contract export: ' + n); } } if (typeof contract.evalSuiteFileJsonSchema !== 'object' || !contract.evalSuiteFileJsonSchema.properties?.cases) { throw new Error('contract export evalSuiteFileJsonSchema is not the generated JSON Schema document'); } await import('@mcpjam/sdk/host-config'); const w = await import('@mcpjam/sdk/widget-runtime'); for (const n of ['getToolVisibility','isVisibleToModelOnly','isVisibleToAppOnly','LoggingTransport','buildOuterAllowAttribute','buildOuterSandboxAttribute','resolveIframeSandboxPolicy','createHostAppBridge','registerHostBridgeHandlers']) { if (typeof w[n] !== 'function') { throw new Error('missing widget-runtime export: ' + n); } } if (w['DEFAULT_IFRAME_SANDBOX'] === undefined) { throw new Error('missing widget-runtime export: DEFAULT_IFRAME_SANDBOX'); } const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation','checkHostCompatibilityOperation','createTunnelOperation','closeTunnelOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } } const pub = await import('@mcpjam/sdk/public-api'); for (const n of ['isV1ErrorCode','mapInternalCode','v1ErrorBody','v1Page','classifyRuntimeError']) { if (typeof pub[n] !== 'function') { throw new Error('missing public-api export: ' + n); } } for (const n of ['V1_ERROR_CODES','V1_ERROR_STATUS','INTERNAL_TO_V1_CODE']) { if (pub[n] === undefined) { throw new Error('missing public-api export: ' + n); } } const hc = await import('@mcpjam/sdk/host-compat'); for (const n of ['deriveServerRequirements','evaluateHostCompat','evaluateAllHosts','buildMarketHostProfiles','evaluateMarketHosts','scanWidgetUsage','detectHostCompatBridgeFromMeta','scanWidgetSource','scanWidgetMeta','bundledHostCompatCatalog','buildHostProfilesFromCatalog','fetchHostCompatCatalog','hostConfigFieldsToImageSupport','imageSupportToHostConfigFields']) { if (typeof hc[n] !== 'function') { throw new Error('missing host-compat export: ' + n); } } if (hc['HostCompatBridge'] === undefined) { throw new Error('missing host-compat export: HostCompatBridge'); } for (const n of ['MCP_APPS_FULL','MCP_APPS_CHATGPT','MCP_APPS_MISTRAL','MCP_APPS_CURSOR','MCP_APPS_GOOSE','MCP_APPS_COPILOT','MCP_APPS_SLACK','MCP_APPS_VSCODE','MCP_APPS_NO_CLAIMS']) { if (typeof hc[n] !== 'object') { throw new Error('missing host-compat capability export: ' + n); } } for (const n of ['hostCompatCatalogSchema','hostCompatCatalogEnvelopeSchema','mcpAppsCapabilitiesSchema']) { if (hc[n] === undefined) { throw new Error('missing host-compat schema export: ' + n); } } const pb = await import('@mcpjam/sdk/plugin-bundle'); for (const n of ['parsePluginBundle','containsRootPlaceholder','containsPluginPlaceholder','selectPluginMcpServerMap','detectPluginMcpTransport']) { if (typeof pb[n] !== 'function') { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['DEFAULT_PLUGIN_BUNDLE_LIMITS','PLUGIN_ISSUE_CODES','PLUGIN_MANIFEST_SCHEMAS','PLUGIN_MCP_SCHEMAS','PLUGIN_MANIFEST_PATH','PLUGIN_ROOT_PLACEHOLDERS','PLUGIN_DATA_PLACEHOLDER','PluginBundleError','MCP_CONFIG_PATH']) { if (pb[n] === undefined) { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['normalizeBundlePath','validateBundleEntries','parseYamlLite','caseFoldPath','PluginIssueCollector','sha256HexBytes','computeAggregateHash']) { if (pb[n] !== undefined) { throw new Error('plugin-bundle should not re-export internal helper: ' + n); } } const on = await import('@mcpjam/sdk/oauth/node'); for (const n of ['assertOutboundOAuthUrlAllowed','isDisallowedIpAddress','isLoopbackOAuthUrl','isPrivateHost','OAuthOutboundUrlBlockedError','executeOAuthProxy','executeDebugOAuthProxy','fetchOAuthMetadata','fetchPinnedPublicDocument','validateUrl','OAuthProxyError']) { if (typeof on[n] !== 'function') { throw new Error('missing oauth/node export: ' + n); } }\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs","check:eval-suite-schema":"tsx scripts/generate-eval-suite-schema.ts --check","generate:eval-suite-schema":"tsx scripts/generate-eval-suite-schema.ts","check:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts --check","generate:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts","check:eval-verdict-policy-schema":"tsx scripts/generate-eval-verdict-policy-schema.ts --check","check:host-catalog-fallback:remote":"node --import tsx scripts/check-host-catalog-fallback-remote.ts","generate:eval-verdict-policy-schema":"tsx scripts/generate-eval-verdict-policy-schema.ts"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.2.0"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","ajv":"^8.17.1","zod":"^4.2.0","yaml":"^2.9.0","jszip":"^3.10.1","xpath":"^0.0.34","xml-crypto":"^6.1.2","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@noble/hashes":"^2.3.0","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@xmldom/xmldom":"^0.8.13","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"2.0.0","@modelcontextprotocol/ext-apps":"^1.7.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.7","esbuild":"^0.27.0","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"2.0.0","@modelcontextprotocol/server":"2.0.0","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_7.1.0_1787638782510_0.010019871185493967","host":"s3://npm-registry-packages-npm-production"}},"7.1.1":{"name":"@mcpjam/sdk","version":"7.1.1","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@7.1.1","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"771c2a0b76de87ecd86bfcfe0c69b56fa6a56fba","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-7.1.1.tgz","fileCount":74,"integrity":"sha512-hmHZuAP8lyxWUx/GvukFRMc9qdg9XUzQpmfmdsOwJpe2s1I5qqdpISPFhqeJdklxunYTP3J1mReMfEEQnhfG+Q==","signatures":[{"sig":"MEQCIB+i485xnMT6nASXxxOhoaF1t/9FAOejXmp9xD1zLHXIAiAlkGTSyhba9CABTpTEvdwSsm/csQRkHDCkq+WrixnQKA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22600114},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./contract":{"types":"./dist/contract/index.d.ts","import":"./dist/contract/index.js","default":"./dist/contract/index.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./oauth/node":{"types":"./dist/oauth/node.d.ts","import":"./dist/oauth/node.js","default":"./dist/oauth/node.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./public-api":{"types":"./dist/public-api/index.d.ts","import":"./dist/public-api/index.js","default":"./dist/public-api/index.js"},"./host-compat":{"types":"./dist/host-compat/index.d.ts","import":"./dist/host-compat/index.js","default":"./dist/host-compat/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./plugin-bundle":{"types":"./dist/plugin-bundle/index.d.ts","import":"./dist/plugin-bundle/index.js","default":"./dist/plugin-bundle/index.js"},"./widget-runtime":{"types":"./dist/widget-runtime/index.d.ts","import":"./dist/widget-runtime/index.js","default":"./dist/widget-runtime/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"},"./host-config/templates":{"types":"./dist/host-config/templates/index.d.ts","import":"./dist/host-config/templates/index.js","default":"./dist/host-config/templates/index.js"}},"gitHead":"3e07702da01b0d7d1096b29fab40c990045991b0","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"const root = await import('@mcpjam/sdk'); for (const n of ['driveTaskToTerminal','TaskLifecycleEngine','taskLifecycleKey','isTerminalLifecycleStatus','extensionTaskToObservation','legacyTaskToObservation','isUnknownTaskError','canDeclareTasksExtension','readDeclaredInputCapabilities','TaskInputRejectedError','createStrictElicitationContentValidator','retryAfterMsFromError']) { if (typeof root[n] !== 'function') { throw new Error('missing tasks export: ' + n); } } for (const n of ['loadEvalSuiteFile','resolveEvalSuiteFile','serializeEvalSuiteFile','formatSuiteFileFindings','suiteFilePointer']) { if (typeof root[n] !== 'function') { throw new Error('missing suite-file export: ' + n); } } for (const n of ['TERMINAL_LIFECYCLE_STATUSES','UNKNOWN_TASK_ERROR_CODE','DEFAULT_TASK_INPUT_LIMITS']) { if (root[n] === undefined) { throw new Error('missing tasks export: ' + n); } } for (const n of ['MAX_SUITE_FILE_BYTES','SUITE_FILE_VALIDITY_DEFAULTS','SUITE_FILE_DEFAULT_CAPTURE_LEVEL','SUITE_FILE_FINDING_CODES']) { if (root[n] === undefined) { throw new Error('missing suite-file export: ' + n); } } if (root.MAX_SUITE_FILE_BYTES !== 1048576) { throw new Error('MAX_SUITE_FILE_BYTES is not the pinned 1 MiB cap'); } await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); const contract = await import('@mcpjam/sdk/contract'); for (const n of ['canonicalJson','canonicalDigest','sha256Hex','resolveScoreDefinition','definitionHash','evaluationConfigHash','buildEvaluationConfigSnapshot','aggregateEvaluationConfigHash','allGatingScorersPassed','scorePassed','finalizeScoreResult','errorScoreResult','skippedScoreResult','notApplicableScoreResult','predicateScoreDefinition','scoreResultFromPredicateResult','toolMatchScoreDefinition','fromToolMatchResult','legacyTestScoreDefinition','fromLegacyTestOutcome','fromGoalCompletionCase','fromCriterionResult','generatedPredicateScorerId','deriveStageResults','stageDerivationToMetadata','mintCaseId','mintSuiteId','isOpaqueId','isPromptStep','isToolCallStep','isInteractStep','isAssertStep','isWidgetAssertion']) { if (typeof contract[n] !== 'function') { throw new Error('missing contract export: ' + n); } } for (const n of ['scoreResultSchema','resolvedScoreDefinitionSchema','evaluationConfigSnapshotSchema','PREDICATES_VERSION','MAX_SCORER_ID_LENGTH','TOOL_MATCH_SCORER_ID','LEGACY_TEST_SCORER_ID','opaqueIdSchema','CASE_ID_PREFIX','SUITE_ID_PREFIX','USER_VALUE_STAGES','STAGE_STATES','FAILURE_CATEGORIES','ITERATION_STATUSES','IMPORT_MAPPING_STATUSES','STAGE_ANALYZER_VERSION','STAGE_REASONS','STAGE_METADATA_KEYS','MAX_EVIDENCE_REASONS','MAX_EVIDENCE_REASON_CHARS','stageDerivationSchema','stageResultRowSchema','stageReasonSchema','TEST_STEP_KINDS','testStepSchema','stepsSchema','elementLocatorSchema','evalSuiteFileSchema','evalSuiteFileStructuralSchema','evalSuiteFileCaseSchema','evalSuiteFileJsonSchema','EVAL_SUITE_SCHEMA_ID','EVAL_SUITE_SCHEMA_VERSION','MAX_SUITE_FILE_CASES']) { if (contract[n] === undefined) { throw new Error('missing contract export: ' + n); } } if (typeof contract.evalSuiteFileJsonSchema !== 'object' || !contract.evalSuiteFileJsonSchema.properties?.cases) { throw new Error('contract export evalSuiteFileJsonSchema is not the generated JSON Schema document'); } await import('@mcpjam/sdk/host-config'); const w = await import('@mcpjam/sdk/widget-runtime'); for (const n of ['getToolVisibility','isVisibleToModelOnly','isVisibleToAppOnly','LoggingTransport','buildOuterAllowAttribute','buildOuterSandboxAttribute','resolveIframeSandboxPolicy','createHostAppBridge','registerHostBridgeHandlers']) { if (typeof w[n] !== 'function') { throw new Error('missing widget-runtime export: ' + n); } } if (w['DEFAULT_IFRAME_SANDBOX'] === undefined) { throw new Error('missing widget-runtime export: DEFAULT_IFRAME_SANDBOX'); } const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation','checkHostCompatibilityOperation','createTunnelOperation','closeTunnelOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } } const pub = await import('@mcpjam/sdk/public-api'); for (const n of ['isV1ErrorCode','mapInternalCode','v1ErrorBody','v1Page','classifyRuntimeError']) { if (typeof pub[n] !== 'function') { throw new Error('missing public-api export: ' + n); } } for (const n of ['V1_ERROR_CODES','V1_ERROR_STATUS','INTERNAL_TO_V1_CODE']) { if (pub[n] === undefined) { throw new Error('missing public-api export: ' + n); } } const hc = await import('@mcpjam/sdk/host-compat'); for (const n of ['deriveServerRequirements','evaluateHostCompat','evaluateAllHosts','buildMarketHostProfiles','evaluateMarketHosts','scanWidgetUsage','detectHostCompatBridgeFromMeta','scanWidgetSource','scanWidgetMeta','bundledHostCompatCatalog','buildHostProfilesFromCatalog','fetchHostCompatCatalog','hostConfigFieldsToImageSupport','imageSupportToHostConfigFields']) { if (typeof hc[n] !== 'function') { throw new Error('missing host-compat export: ' + n); } } if (hc['HostCompatBridge'] === undefined) { throw new Error('missing host-compat export: HostCompatBridge'); } for (const n of ['MCP_APPS_FULL','MCP_APPS_CHATGPT','MCP_APPS_MISTRAL','MCP_APPS_CURSOR','MCP_APPS_GOOSE','MCP_APPS_COPILOT','MCP_APPS_SLACK','MCP_APPS_VSCODE','MCP_APPS_NO_CLAIMS']) { if (typeof hc[n] !== 'object') { throw new Error('missing host-compat capability export: ' + n); } } for (const n of ['hostCompatCatalogSchema','hostCompatCatalogEnvelopeSchema','mcpAppsCapabilitiesSchema']) { if (hc[n] === undefined) { throw new Error('missing host-compat schema export: ' + n); } } const pb = await import('@mcpjam/sdk/plugin-bundle'); for (const n of ['parsePluginBundle','containsRootPlaceholder','containsPluginPlaceholder','selectPluginMcpServerMap','detectPluginMcpTransport']) { if (typeof pb[n] !== 'function') { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['DEFAULT_PLUGIN_BUNDLE_LIMITS','PLUGIN_ISSUE_CODES','PLUGIN_MANIFEST_SCHEMAS','PLUGIN_MCP_SCHEMAS','PLUGIN_MANIFEST_PATH','PLUGIN_ROOT_PLACEHOLDERS','PLUGIN_DATA_PLACEHOLDER','PluginBundleError','MCP_CONFIG_PATH']) { if (pb[n] === undefined) { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['normalizeBundlePath','validateBundleEntries','parseYamlLite','caseFoldPath','PluginIssueCollector','sha256HexBytes','computeAggregateHash']) { if (pb[n] !== undefined) { throw new Error('plugin-bundle should not re-export internal helper: ' + n); } } const on = await import('@mcpjam/sdk/oauth/node'); for (const n of ['assertOutboundOAuthUrlAllowed','isDisallowedIpAddress','isLoopbackOAuthUrl','isPrivateHost','OAuthOutboundUrlBlockedError','executeOAuthProxy','executeDebugOAuthProxy','fetchOAuthMetadata','fetchPinnedPublicDocument','validateUrl','OAuthProxyError']) { if (typeof on[n] !== 'function') { throw new Error('missing oauth/node export: ' + n); } }\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs","check:eval-suite-schema":"tsx scripts/generate-eval-suite-schema.ts --check","generate:eval-suite-schema":"tsx scripts/generate-eval-suite-schema.ts","check:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts --check","generate:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts","check:eval-verdict-policy-schema":"tsx scripts/generate-eval-verdict-policy-schema.ts --check","check:host-catalog-fallback:remote":"node --import tsx scripts/check-host-catalog-fallback-remote.ts","generate:eval-verdict-policy-schema":"tsx scripts/generate-eval-verdict-policy-schema.ts"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.2.0"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","ajv":"^8.17.1","zod":"^4.2.0","yaml":"^2.9.0","jszip":"^3.10.1","xpath":"^0.0.34","xml-crypto":"^6.1.2","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@noble/hashes":"^2.3.0","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@xmldom/xmldom":"^0.8.13","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"2.0.0","@modelcontextprotocol/ext-apps":"^1.7.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.7","esbuild":"^0.27.0","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"2.0.0","@modelcontextprotocol/server":"2.0.0","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_7.1.1_1787684509313_0.5612635319863499","host":"s3://npm-registry-packages-npm-production"}},"8.0.0":{"name":"@mcpjam/sdk","version":"8.0.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@8.0.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"480adcc7d092d26e08fa0cf7a6f5d68b227925fa","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-8.0.0.tgz","fileCount":74,"integrity":"sha512-DhMlO9u6QE7Rpw4Zvui14OEs2WnCoOH16/PqiBwNIAUefUwJHv8MaF6ZmEfcnycx4hCYzwhHraQwvP0lQ/BQFQ==","signatures":[{"sig":"MEUCIQCxR11cJ69/agBrqEY46baAoUpqGnTTg8sEM1IZiZAZ0gIgTqbrvwVwFRNZeue0lNgMIc4Xh8N04zaxyznlwqSPDwg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23342954},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./contract":{"types":"./dist/contract/index.d.ts","import":"./dist/contract/index.js","default":"./dist/contract/index.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./oauth/node":{"types":"./dist/oauth/node.d.ts","import":"./dist/oauth/node.js","default":"./dist/oauth/node.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./public-api":{"types":"./dist/public-api/index.d.ts","import":"./dist/public-api/index.js","default":"./dist/public-api/index.js"},"./host-compat":{"types":"./dist/host-compat/index.d.ts","import":"./dist/host-compat/index.js","default":"./dist/host-compat/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./plugin-bundle":{"types":"./dist/plugin-bundle/index.d.ts","import":"./dist/plugin-bundle/index.js","default":"./dist/plugin-bundle/index.js"},"./widget-runtime":{"types":"./dist/widget-runtime/index.d.ts","import":"./dist/widget-runtime/index.js","default":"./dist/widget-runtime/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"},"./host-config/templates":{"types":"./dist/host-config/templates/index.d.ts","import":"./dist/host-config/templates/index.js","default":"./dist/host-config/templates/index.js"}},"gitHead":"b26dfa7db3b50f44dcd08754d0af6525ad2523f3","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"const root = await import('@mcpjam/sdk'); for (const n of ['driveTaskToTerminal','TaskLifecycleEngine','taskLifecycleKey','isTerminalLifecycleStatus','extensionTaskToObservation','legacyTaskToObservation','isUnknownTaskError','canDeclareTasksExtension','readDeclaredInputCapabilities','TaskInputRejectedError','createStrictElicitationContentValidator','retryAfterMsFromError']) { if (typeof root[n] !== 'function') { throw new Error('missing tasks export: ' + n); } } for (const n of ['loadEvalSuiteFile','resolveEvalSuiteFile','serializeEvalSuiteFile','formatSuiteFileFindings','suiteFilePointer']) { if (typeof root[n] !== 'function') { throw new Error('missing suite-file export: ' + n); } } for (const n of ['TERMINAL_LIFECYCLE_STATUSES','UNKNOWN_TASK_ERROR_CODE','DEFAULT_TASK_INPUT_LIMITS']) { if (root[n] === undefined) { throw new Error('missing tasks export: ' + n); } } for (const n of ['MAX_SUITE_FILE_BYTES','SUITE_FILE_VALIDITY_DEFAULTS','SUITE_FILE_DEFAULT_CAPTURE_LEVEL','SUITE_FILE_FINDING_CODES']) { if (root[n] === undefined) { throw new Error('missing suite-file export: ' + n); } } if (root.MAX_SUITE_FILE_BYTES !== 1048576) { throw new Error('MAX_SUITE_FILE_BYTES is not the pinned 1 MiB cap'); } await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); const contract = await import('@mcpjam/sdk/contract'); for (const n of ['canonicalJson','canonicalDigest','sha256Hex','resolveScoreDefinition','definitionHash','evaluationConfigHash','buildEvaluationConfigSnapshot','aggregateEvaluationConfigHash','allGatingScorersPassed','scorePassed','finalizeScoreResult','errorScoreResult','skippedScoreResult','notApplicableScoreResult','predicateScoreDefinition','scoreResultFromPredicateResult','toolMatchScoreDefinition','fromToolMatchResult','legacyTestScoreDefinition','fromLegacyTestOutcome','fromGoalCompletionCase','fromCriterionResult','generatedPredicateScorerId','deriveStageResults','stageDerivationToMetadata','mintCaseId','mintSuiteId','isOpaqueId','isPromptStep','isToolCallStep','isInteractStep','isAssertStep','isWidgetAssertion']) { if (typeof contract[n] !== 'function') { throw new Error('missing contract export: ' + n); } } for (const n of ['scoreResultSchema','resolvedScoreDefinitionSchema','evaluationConfigSnapshotSchema','PREDICATES_VERSION','MAX_SCORER_ID_LENGTH','TOOL_MATCH_SCORER_ID','LEGACY_TEST_SCORER_ID','opaqueIdSchema','CASE_ID_PREFIX','SUITE_ID_PREFIX','USER_VALUE_STAGES','STAGE_STATES','FAILURE_CATEGORIES','ITERATION_STATUSES','IMPORT_MAPPING_STATUSES','STAGE_ANALYZER_VERSION','STAGE_REASONS','STAGE_METADATA_KEYS','MAX_EVIDENCE_REASONS','MAX_EVIDENCE_REASON_CHARS','stageDerivationSchema','stageResultRowSchema','stageReasonSchema','TEST_STEP_KINDS','testStepSchema','stepsSchema','elementLocatorSchema','evalSuiteFileSchema','evalSuiteFileStructuralSchema','evalSuiteFileCaseSchema','evalSuiteFileJsonSchema','EVAL_SUITE_SCHEMA_ID','EVAL_SUITE_SCHEMA_VERSION','MAX_SUITE_FILE_CASES']) { if (contract[n] === undefined) { throw new Error('missing contract export: ' + n); } } if (typeof contract.evalSuiteFileJsonSchema !== 'object' || !contract.evalSuiteFileJsonSchema.properties?.cases) { throw new Error('contract export evalSuiteFileJsonSchema is not the generated JSON Schema document'); } await import('@mcpjam/sdk/host-config'); const w = await import('@mcpjam/sdk/widget-runtime'); for (const n of ['getToolVisibility','isVisibleToModelOnly','isVisibleToAppOnly','LoggingTransport','buildOuterAllowAttribute','buildOuterSandboxAttribute','resolveIframeSandboxPolicy','createHostAppBridge','registerHostBridgeHandlers']) { if (typeof w[n] !== 'function') { throw new Error('missing widget-runtime export: ' + n); } } if (w['DEFAULT_IFRAME_SANDBOX'] === undefined) { throw new Error('missing widget-runtime export: DEFAULT_IFRAME_SANDBOX'); } const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation','checkHostCompatibilityOperation','createTunnelOperation','closeTunnelOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } } const pub = await import('@mcpjam/sdk/public-api'); for (const n of ['isV1ErrorCode','mapInternalCode','v1ErrorBody','v1Page','classifyRuntimeError']) { if (typeof pub[n] !== 'function') { throw new Error('missing public-api export: ' + n); } } for (const n of ['V1_ERROR_CODES','V1_ERROR_STATUS','INTERNAL_TO_V1_CODE']) { if (pub[n] === undefined) { throw new Error('missing public-api export: ' + n); } } const hc = await import('@mcpjam/sdk/host-compat'); for (const n of ['deriveServerRequirements','evaluateHostCompat','evaluateAllHosts','buildMarketHostProfiles','evaluateMarketHosts','scanWidgetUsage','detectHostCompatBridgeFromMeta','scanWidgetSource','scanWidgetMeta','bundledHostCompatCatalog','buildHostProfilesFromCatalog','fetchHostCompatCatalog','hostConfigFieldsToImageSupport','imageSupportToHostConfigFields']) { if (typeof hc[n] !== 'function') { throw new Error('missing host-compat export: ' + n); } } if (hc['HostCompatBridge'] === undefined) { throw new Error('missing host-compat export: HostCompatBridge'); } for (const n of ['MCP_APPS_FULL','MCP_APPS_CHATGPT','MCP_APPS_MISTRAL','MCP_APPS_CURSOR','MCP_APPS_GOOSE','MCP_APPS_COPILOT','MCP_APPS_SLACK','MCP_APPS_VSCODE','MCP_APPS_NO_CLAIMS']) { if (typeof hc[n] !== 'object') { throw new Error('missing host-compat capability export: ' + n); } } for (const n of ['hostCompatCatalogSchema','hostCompatCatalogEnvelopeSchema','mcpAppsCapabilitiesSchema']) { if (hc[n] === undefined) { throw new Error('missing host-compat schema export: ' + n); } } const pb = await import('@mcpjam/sdk/plugin-bundle'); for (const n of ['parsePluginBundle','containsRootPlaceholder','containsPluginPlaceholder','selectPluginMcpServerMap','detectPluginMcpTransport']) { if (typeof pb[n] !== 'function') { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['DEFAULT_PLUGIN_BUNDLE_LIMITS','PLUGIN_ISSUE_CODES','PLUGIN_MANIFEST_SCHEMAS','PLUGIN_MCP_SCHEMAS','PLUGIN_MANIFEST_PATH','PLUGIN_ROOT_PLACEHOLDERS','PLUGIN_DATA_PLACEHOLDER','PluginBundleError','MCP_CONFIG_PATH']) { if (pb[n] === undefined) { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['normalizeBundlePath','validateBundleEntries','parseYamlLite','caseFoldPath','PluginIssueCollector','sha256HexBytes','computeAggregateHash']) { if (pb[n] !== undefined) { throw new Error('plugin-bundle should not re-export internal helper: ' + n); } } const on = await import('@mcpjam/sdk/oauth/node'); for (const n of ['assertOutboundOAuthUrlAllowed','isDisallowedIpAddress','isLoopbackOAuthUrl','isPrivateHost','OAuthOutboundUrlBlockedError','executeOAuthProxy','executeDebugOAuthProxy','fetchOAuthMetadata','fetchPinnedPublicDocument','validateUrl','OAuthProxyError']) { if (typeof on[n] !== 'function') { throw new Error('missing oauth/node export: ' + n); } }\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs","check:eval-suite-schema":"tsx scripts/generate-eval-suite-schema.ts --check","generate:eval-suite-schema":"tsx scripts/generate-eval-suite-schema.ts","check:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts --check","generate:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts","check:eval-verdict-policy-schema":"tsx scripts/generate-eval-verdict-policy-schema.ts --check","check:host-catalog-fallback:remote":"node --import tsx scripts/check-host-catalog-fallback-remote.ts","generate:eval-verdict-policy-schema":"tsx scripts/generate-eval-verdict-policy-schema.ts"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.2.0"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","ajv":"^8.17.1","zod":"^4.2.0","yaml":"^2.9.0","jszip":"^3.10.1","xpath":"^0.0.34","xml-crypto":"^6.1.2","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@noble/hashes":"^2.3.0","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@xmldom/xmldom":"^0.8.13","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"2.0.0","@modelcontextprotocol/ext-apps":"^1.7.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.7","esbuild":"^0.27.0","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"2.0.0","@modelcontextprotocol/server":"2.0.0","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_8.0.0_1787706790987_0.5807151540083995","host":"s3://npm-registry-packages-npm-production"}},"8.1.0":{"name":"@mcpjam/sdk","version":"8.1.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@8.1.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"7ac0f20e2dc0c4227bd838bf0f01274c4470eb0b","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-8.1.0.tgz","fileCount":74,"integrity":"sha512-KjBVKbiWGGMwEWdRbQsLC7AgJbN2nq5pdI/qST+o+tIiQkObAr6AxGlIikBEoiSI4LdmpB0g/hKQz5tsa9ZeRg==","signatures":[{"sig":"MEUCIHOcjgXnkn7WtYiCW4vMInRQhW87vvIy+w9xyiMLIMoIAiEAsv/9iV+B5Hkav6Ftb+7WycqMvMBDKlSjJ5/wdz/F5/8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23980233},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./contract":{"types":"./dist/contract/index.d.ts","import":"./dist/contract/index.js","default":"./dist/contract/index.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./oauth/node":{"types":"./dist/oauth/node.d.ts","import":"./dist/oauth/node.js","default":"./dist/oauth/node.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./public-api":{"types":"./dist/public-api/index.d.ts","import":"./dist/public-api/index.js","default":"./dist/public-api/index.js"},"./host-compat":{"types":"./dist/host-compat/index.d.ts","import":"./dist/host-compat/index.js","default":"./dist/host-compat/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./plugin-bundle":{"types":"./dist/plugin-bundle/index.d.ts","import":"./dist/plugin-bundle/index.js","default":"./dist/plugin-bundle/index.js"},"./widget-runtime":{"types":"./dist/widget-runtime/index.d.ts","import":"./dist/widget-runtime/index.js","default":"./dist/widget-runtime/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"},"./host-config/templates":{"types":"./dist/host-config/templates/index.d.ts","import":"./dist/host-config/templates/index.js","default":"./dist/host-config/templates/index.js"}},"gitHead":"16c6b68914be3379a3f53b04917d1d1dc667b7b7","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"const root = await import('@mcpjam/sdk'); for (const n of ['driveTaskToTerminal','TaskLifecycleEngine','taskLifecycleKey','isTerminalLifecycleStatus','extensionTaskToObservation','legacyTaskToObservation','isUnknownTaskError','canDeclareTasksExtension','readDeclaredInputCapabilities','TaskInputRejectedError','createStrictElicitationContentValidator','retryAfterMsFromError']) { if (typeof root[n] !== 'function') { throw new Error('missing tasks export: ' + n); } } for (const n of ['loadEvalSuiteFile','resolveEvalSuiteFile','serializeEvalSuiteFile','formatSuiteFileFindings','suiteFilePointer']) { if (typeof root[n] !== 'function') { throw new Error('missing suite-file export: ' + n); } } for (const n of ['TERMINAL_LIFECYCLE_STATUSES','UNKNOWN_TASK_ERROR_CODE','DEFAULT_TASK_INPUT_LIMITS']) { if (root[n] === undefined) { throw new Error('missing tasks export: ' + n); } } for (const n of ['MAX_SUITE_FILE_BYTES','SUITE_FILE_VALIDITY_DEFAULTS','SUITE_FILE_DEFAULT_CAPTURE_LEVEL','SUITE_FILE_FINDING_CODES']) { if (root[n] === undefined) { throw new Error('missing suite-file export: ' + n); } } if (root.MAX_SUITE_FILE_BYTES !== 1048576) { throw new Error('MAX_SUITE_FILE_BYTES is not the pinned 1 MiB cap'); } await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); const contract = await import('@mcpjam/sdk/contract'); for (const n of ['canonicalJson','canonicalDigest','sha256Hex','resolveScoreDefinition','definitionHash','evaluationConfigHash','buildEvaluationConfigSnapshot','aggregateEvaluationConfigHash','allGatingScorersPassed','scorePassed','finalizeScoreResult','errorScoreResult','skippedScoreResult','notApplicableScoreResult','predicateScoreDefinition','scoreResultFromPredicateResult','toolMatchScoreDefinition','fromToolMatchResult','legacyTestScoreDefinition','fromLegacyTestOutcome','fromGoalCompletionCase','fromCriterionResult','generatedPredicateScorerId','deriveStageResults','stageDerivationToMetadata','mintCaseId','mintSuiteId','isOpaqueId','isPromptStep','isToolCallStep','isInteractStep','isAssertStep','isWidgetAssertion']) { if (typeof contract[n] !== 'function') { throw new Error('missing contract export: ' + n); } } for (const n of ['scoreResultSchema','resolvedScoreDefinitionSchema','evaluationConfigSnapshotSchema','PREDICATES_VERSION','MAX_SCORER_ID_LENGTH','TOOL_MATCH_SCORER_ID','LEGACY_TEST_SCORER_ID','opaqueIdSchema','CASE_ID_PREFIX','SUITE_ID_PREFIX','USER_VALUE_STAGES','STAGE_STATES','FAILURE_CATEGORIES','ITERATION_STATUSES','IMPORT_MAPPING_STATUSES','STAGE_ANALYZER_VERSION','STAGE_REASONS','STAGE_METADATA_KEYS','MAX_EVIDENCE_REASONS','MAX_EVIDENCE_REASON_CHARS','stageDerivationSchema','stageResultRowSchema','stageReasonSchema','TEST_STEP_KINDS','testStepSchema','stepsSchema','elementLocatorSchema','evalSuiteFileSchema','evalSuiteFileStructuralSchema','evalSuiteFileCaseSchema','evalSuiteFileJsonSchema','EVAL_SUITE_SCHEMA_ID','EVAL_SUITE_SCHEMA_VERSION','MAX_SUITE_FILE_CASES']) { if (contract[n] === undefined) { throw new Error('missing contract export: ' + n); } } if (typeof contract.evalSuiteFileJsonSchema !== 'object' || !contract.evalSuiteFileJsonSchema.properties?.cases) { throw new Error('contract export evalSuiteFileJsonSchema is not the generated JSON Schema document'); } await import('@mcpjam/sdk/host-config'); const w = await import('@mcpjam/sdk/widget-runtime'); for (const n of ['getToolVisibility','isVisibleToModelOnly','isVisibleToAppOnly','LoggingTransport','buildOuterAllowAttribute','buildOuterSandboxAttribute','resolveIframeSandboxPolicy','createHostAppBridge','registerHostBridgeHandlers']) { if (typeof w[n] !== 'function') { throw new Error('missing widget-runtime export: ' + n); } } if (w['DEFAULT_IFRAME_SANDBOX'] === undefined) { throw new Error('missing widget-runtime export: DEFAULT_IFRAME_SANDBOX'); } const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation','checkHostCompatibilityOperation','createTunnelOperation','closeTunnelOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } } const pub = await import('@mcpjam/sdk/public-api'); for (const n of ['isV1ErrorCode','mapInternalCode','v1ErrorBody','v1Page','classifyRuntimeError']) { if (typeof pub[n] !== 'function') { throw new Error('missing public-api export: ' + n); } } for (const n of ['V1_ERROR_CODES','V1_ERROR_STATUS','INTERNAL_TO_V1_CODE']) { if (pub[n] === undefined) { throw new Error('missing public-api export: ' + n); } } const hc = await import('@mcpjam/sdk/host-compat'); for (const n of ['deriveServerRequirements','evaluateHostCompat','evaluateAllHosts','buildMarketHostProfiles','evaluateMarketHosts','scanWidgetUsage','detectHostCompatBridgeFromMeta','scanWidgetSource','scanWidgetMeta','bundledHostCompatCatalog','buildHostProfilesFromCatalog','fetchHostCompatCatalog','hostConfigFieldsToImageSupport','imageSupportToHostConfigFields']) { if (typeof hc[n] !== 'function') { throw new Error('missing host-compat export: ' + n); } } if (hc['HostCompatBridge'] === undefined) { throw new Error('missing host-compat export: HostCompatBridge'); } for (const n of ['MCP_APPS_FULL','MCP_APPS_CHATGPT','MCP_APPS_MISTRAL','MCP_APPS_CURSOR','MCP_APPS_GOOSE','MCP_APPS_COPILOT','MCP_APPS_SLACK','MCP_APPS_VSCODE','MCP_APPS_NO_CLAIMS']) { if (typeof hc[n] !== 'object') { throw new Error('missing host-compat capability export: ' + n); } } for (const n of ['hostCompatCatalogSchema','hostCompatCatalogEnvelopeSchema','mcpAppsCapabilitiesSchema']) { if (hc[n] === undefined) { throw new Error('missing host-compat schema export: ' + n); } } const pb = await import('@mcpjam/sdk/plugin-bundle'); for (const n of ['parsePluginBundle','containsRootPlaceholder','containsPluginPlaceholder','selectPluginMcpServerMap','detectPluginMcpTransport']) { if (typeof pb[n] !== 'function') { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['DEFAULT_PLUGIN_BUNDLE_LIMITS','PLUGIN_ISSUE_CODES','PLUGIN_MANIFEST_SCHEMAS','PLUGIN_MCP_SCHEMAS','PLUGIN_MANIFEST_PATH','PLUGIN_ROOT_PLACEHOLDERS','PLUGIN_DATA_PLACEHOLDER','PluginBundleError','MCP_CONFIG_PATH']) { if (pb[n] === undefined) { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['normalizeBundlePath','validateBundleEntries','parseYamlLite','caseFoldPath','PluginIssueCollector','sha256HexBytes','computeAggregateHash']) { if (pb[n] !== undefined) { throw new Error('plugin-bundle should not re-export internal helper: ' + n); } } const on = await import('@mcpjam/sdk/oauth/node'); for (const n of ['assertOutboundOAuthUrlAllowed','isDisallowedIpAddress','isLoopbackOAuthUrl','isPrivateHost','OAuthOutboundUrlBlockedError','executeOAuthProxy','executeDebugOAuthProxy','fetchOAuthMetadata','fetchPinnedPublicDocument','validateUrl','OAuthProxyError']) { if (typeof on[n] !== 'function') { throw new Error('missing oauth/node export: ' + n); } }\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs","check:eval-suite-schema":"tsx scripts/generate-eval-suite-schema.ts --check","generate:eval-suite-schema":"tsx scripts/generate-eval-suite-schema.ts","check:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts --check","generate:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts","check:eval-verdict-policy-schema":"tsx scripts/generate-eval-verdict-policy-schema.ts --check","check:host-catalog-fallback:remote":"node --import tsx scripts/check-host-catalog-fallback-remote.ts","generate:eval-verdict-policy-schema":"tsx scripts/generate-eval-verdict-policy-schema.ts"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.2.0"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","ajv":"^8.17.1","zod":"^4.2.0","yaml":"^2.9.0","jszip":"^3.10.1","xpath":"^0.0.34","xml-crypto":"^6.1.2","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@noble/hashes":"^2.3.0","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@xmldom/xmldom":"^0.8.13","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"2.0.0","@modelcontextprotocol/ext-apps":"^1.7.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.7","esbuild":"^0.27.0","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"2.0.0","@modelcontextprotocol/server":"2.0.0","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_8.1.0_1787735287005_0.43470028590348764","host":"s3://npm-registry-packages-npm-production"}},"8.2.0":{"name":"@mcpjam/sdk","version":"8.2.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@8.2.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"f6527417006842e21957fda6ba9526338d2dfd8d","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-8.2.0.tgz","fileCount":74,"integrity":"sha512-Rl8gFsW3UrG0n5ZHCAnVfAVlQ1J7VOqyMzmsvu6e9G/yVKu+lTPaZdkV2vKtwGhpsp+oBBFSPsdjiovTqhsF3Q==","signatures":[{"sig":"MEUCIHdwmbE+VPoUW4qqrwjxv7xA1TFM5RunsGDEGo35meIsAiEA8IuJJRgXCtyKuX/FmVWBEcIIvAQP4B84QKXQwCgCzlo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24645400},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./contract":{"types":"./dist/contract/index.d.ts","import":"./dist/contract/index.js","default":"./dist/contract/index.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./oauth/node":{"types":"./dist/oauth/node.d.ts","import":"./dist/oauth/node.js","default":"./dist/oauth/node.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./public-api":{"types":"./dist/public-api/index.d.ts","import":"./dist/public-api/index.js","default":"./dist/public-api/index.js"},"./host-compat":{"types":"./dist/host-compat/index.d.ts","import":"./dist/host-compat/index.js","default":"./dist/host-compat/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./plugin-bundle":{"types":"./dist/plugin-bundle/index.d.ts","import":"./dist/plugin-bundle/index.js","default":"./dist/plugin-bundle/index.js"},"./widget-runtime":{"types":"./dist/widget-runtime/index.d.ts","import":"./dist/widget-runtime/index.js","default":"./dist/widget-runtime/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"},"./host-config/templates":{"types":"./dist/host-config/templates/index.d.ts","import":"./dist/host-config/templates/index.js","default":"./dist/host-config/templates/index.js"}},"gitHead":"bfd4353fcac16afb037571ded6b1e454aedb070f","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"const root = await import('@mcpjam/sdk'); for (const n of ['driveTaskToTerminal','TaskLifecycleEngine','taskLifecycleKey','isTerminalLifecycleStatus','extensionTaskToObservation','legacyTaskToObservation','isUnknownTaskError','canDeclareTasksExtension','readDeclaredInputCapabilities','TaskInputRejectedError','createStrictElicitationContentValidator','retryAfterMsFromError']) { if (typeof root[n] !== 'function') { throw new Error('missing tasks export: ' + n); } } for (const n of ['loadEvalSuiteFile','resolveEvalSuiteFile','serializeEvalSuiteFile','formatSuiteFileFindings','suiteFilePointer']) { if (typeof root[n] !== 'function') { throw new Error('missing suite-file export: ' + n); } } for (const n of ['TERMINAL_LIFECYCLE_STATUSES','UNKNOWN_TASK_ERROR_CODE','DEFAULT_TASK_INPUT_LIMITS']) { if (root[n] === undefined) { throw new Error('missing tasks export: ' + n); } } for (const n of ['MAX_SUITE_FILE_BYTES','SUITE_FILE_VALIDITY_DEFAULTS','SUITE_FILE_DEFAULT_CAPTURE_LEVEL','SUITE_FILE_FINDING_CODES']) { if (root[n] === undefined) { throw new Error('missing suite-file export: ' + n); } } if (root.MAX_SUITE_FILE_BYTES !== 1048576) { throw new Error('MAX_SUITE_FILE_BYTES is not the pinned 1 MiB cap'); } await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); const contract = await import('@mcpjam/sdk/contract'); for (const n of ['canonicalJson','canonicalDigest','sha256Hex','resolveScoreDefinition','definitionHash','evaluationConfigHash','buildEvaluationConfigSnapshot','aggregateEvaluationConfigHash','allGatingScorersPassed','scorePassed','finalizeScoreResult','errorScoreResult','skippedScoreResult','notApplicableScoreResult','predicateScoreDefinition','scoreResultFromPredicateResult','toolMatchScoreDefinition','fromToolMatchResult','legacyTestScoreDefinition','fromLegacyTestOutcome','fromGoalCompletionCase','fromCriterionResult','generatedPredicateScorerId','deriveStageResults','stageDerivationToMetadata','mintCaseId','mintSuiteId','isOpaqueId','isPromptStep','isToolCallStep','isInteractStep','isAssertStep','isWidgetAssertion']) { if (typeof contract[n] !== 'function') { throw new Error('missing contract export: ' + n); } } for (const n of ['scoreResultSchema','resolvedScoreDefinitionSchema','evaluationConfigSnapshotSchema','PREDICATES_VERSION','MAX_SCORER_ID_LENGTH','TOOL_MATCH_SCORER_ID','LEGACY_TEST_SCORER_ID','opaqueIdSchema','CASE_ID_PREFIX','SUITE_ID_PREFIX','USER_VALUE_STAGES','STAGE_STATES','FAILURE_CATEGORIES','ITERATION_STATUSES','IMPORT_MAPPING_STATUSES','STAGE_ANALYZER_VERSION','STAGE_REASONS','STAGE_METADATA_KEYS','MAX_EVIDENCE_REASONS','MAX_EVIDENCE_REASON_CHARS','stageDerivationSchema','stageResultRowSchema','stageReasonSchema','TEST_STEP_KINDS','testStepSchema','stepsSchema','elementLocatorSchema','evalSuiteFileSchema','evalSuiteFileStructuralSchema','evalSuiteFileCaseSchema','evalSuiteFileJsonSchema','EVAL_SUITE_SCHEMA_ID','EVAL_SUITE_SCHEMA_VERSION','MAX_SUITE_FILE_CASES']) { if (contract[n] === undefined) { throw new Error('missing contract export: ' + n); } } if (typeof contract.evalSuiteFileJsonSchema !== 'object' || !contract.evalSuiteFileJsonSchema.properties?.cases) { throw new Error('contract export evalSuiteFileJsonSchema is not the generated JSON Schema document'); } await import('@mcpjam/sdk/host-config'); const w = await import('@mcpjam/sdk/widget-runtime'); for (const n of ['getToolVisibility','isVisibleToModelOnly','isVisibleToAppOnly','LoggingTransport','buildOuterAllowAttribute','buildOuterSandboxAttribute','resolveIframeSandboxPolicy','createHostAppBridge','registerHostBridgeHandlers']) { if (typeof w[n] !== 'function') { throw new Error('missing widget-runtime export: ' + n); } } if (w['DEFAULT_IFRAME_SANDBOX'] === undefined) { throw new Error('missing widget-runtime export: DEFAULT_IFRAME_SANDBOX'); } const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation','checkHostCompatibilityOperation','createTunnelOperation','closeTunnelOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } } const pub = await import('@mcpjam/sdk/public-api'); for (const n of ['isV1ErrorCode','mapInternalCode','v1ErrorBody','v1Page','classifyRuntimeError']) { if (typeof pub[n] !== 'function') { throw new Error('missing public-api export: ' + n); } } for (const n of ['V1_ERROR_CODES','V1_ERROR_STATUS','INTERNAL_TO_V1_CODE']) { if (pub[n] === undefined) { throw new Error('missing public-api export: ' + n); } } const hc = await import('@mcpjam/sdk/host-compat'); for (const n of ['deriveServerRequirements','evaluateHostCompat','evaluateAllHosts','buildMarketHostProfiles','evaluateMarketHosts','scanWidgetUsage','detectHostCompatBridgeFromMeta','scanWidgetSource','scanWidgetMeta','bundledHostCompatCatalog','buildHostProfilesFromCatalog','fetchHostCompatCatalog','hostConfigFieldsToImageSupport','imageSupportToHostConfigFields']) { if (typeof hc[n] !== 'function') { throw new Error('missing host-compat export: ' + n); } } if (hc['HostCompatBridge'] === undefined) { throw new Error('missing host-compat export: HostCompatBridge'); } for (const n of ['MCP_APPS_FULL','MCP_APPS_CHATGPT','MCP_APPS_MISTRAL','MCP_APPS_CURSOR','MCP_APPS_GOOSE','MCP_APPS_COPILOT','MCP_APPS_SLACK','MCP_APPS_VSCODE','MCP_APPS_NO_CLAIMS']) { if (typeof hc[n] !== 'object') { throw new Error('missing host-compat capability export: ' + n); } } for (const n of ['hostCompatCatalogSchema','hostCompatCatalogEnvelopeSchema','mcpAppsCapabilitiesSchema']) { if (hc[n] === undefined) { throw new Error('missing host-compat schema export: ' + n); } } const pb = await import('@mcpjam/sdk/plugin-bundle'); for (const n of ['parsePluginBundle','containsRootPlaceholder','containsPluginPlaceholder','selectPluginMcpServerMap','detectPluginMcpTransport']) { if (typeof pb[n] !== 'function') { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['DEFAULT_PLUGIN_BUNDLE_LIMITS','PLUGIN_ISSUE_CODES','PLUGIN_MANIFEST_SCHEMAS','PLUGIN_MCP_SCHEMAS','PLUGIN_MANIFEST_PATH','PLUGIN_ROOT_PLACEHOLDERS','PLUGIN_DATA_PLACEHOLDER','PluginBundleError','MCP_CONFIG_PATH']) { if (pb[n] === undefined) { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['normalizeBundlePath','validateBundleEntries','parseYamlLite','caseFoldPath','PluginIssueCollector','sha256HexBytes','computeAggregateHash']) { if (pb[n] !== undefined) { throw new Error('plugin-bundle should not re-export internal helper: ' + n); } } const on = await import('@mcpjam/sdk/oauth/node'); for (const n of ['assertOutboundOAuthUrlAllowed','isDisallowedIpAddress','isLoopbackOAuthUrl','isPrivateHost','OAuthOutboundUrlBlockedError','executeOAuthProxy','executeDebugOAuthProxy','fetchOAuthMetadata','fetchPinnedPublicDocument','validateUrl','OAuthProxyError']) { if (typeof on[n] !== 'function') { throw new Error('missing oauth/node export: ' + n); } }\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs","check:eval-suite-schema":"tsx scripts/generate-eval-suite-schema.ts --check","generate:eval-suite-schema":"tsx scripts/generate-eval-suite-schema.ts","check:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts --check","generate:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts","check:eval-verdict-policy-schema":"tsx scripts/generate-eval-verdict-policy-schema.ts --check","check:host-catalog-fallback:remote":"node --import tsx scripts/check-host-catalog-fallback-remote.ts","generate:eval-verdict-policy-schema":"tsx scripts/generate-eval-verdict-policy-schema.ts"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.2.0"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","ajv":"^8.17.1","zod":"^4.2.0","yaml":"^2.9.0","jszip":"^3.10.1","xpath":"^0.0.34","xml-crypto":"^6.1.2","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@noble/hashes":"^2.3.0","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@xmldom/xmldom":"^0.8.13","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"2.0.0","@modelcontextprotocol/ext-apps":"^1.7.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.7","esbuild":"^0.27.0","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"2.0.0","@modelcontextprotocol/server":"2.0.0","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_8.2.0_1787814449938_0.4667344316432609","host":"s3://npm-registry-packages-npm-production"}},"8.3.0":{"name":"@mcpjam/sdk","version":"8.3.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@8.3.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"25c37f0f84461d393fabcae4a41878885abd8a37","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-8.3.0.tgz","fileCount":74,"integrity":"sha512-ZH9l65WHb13kFB2JXyGsR1U5tmIRX9vg5Xa7niEfWgKp5ASnNDU/0FHH6ogTLUvJw22rYlq6Ya+X/Iaq6hHf5g==","signatures":[{"sig":"MEUCIHTkEVkxb6AoDnet/5bce3ig6bNSctqNuugZ95U69NwDAiEA6nR8+axNmCqC5Kgquqnp+nsRpO6xYnoF0SgQuD36Mk8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24791982},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./contract":{"types":"./dist/contract/index.d.ts","import":"./dist/contract/index.js","default":"./dist/contract/index.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./oauth/node":{"types":"./dist/oauth/node.d.ts","import":"./dist/oauth/node.js","default":"./dist/oauth/node.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./public-api":{"types":"./dist/public-api/index.d.ts","import":"./dist/public-api/index.js","default":"./dist/public-api/index.js"},"./host-compat":{"types":"./dist/host-compat/index.d.ts","import":"./dist/host-compat/index.js","default":"./dist/host-compat/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./plugin-bundle":{"types":"./dist/plugin-bundle/index.d.ts","import":"./dist/plugin-bundle/index.js","default":"./dist/plugin-bundle/index.js"},"./widget-runtime":{"types":"./dist/widget-runtime/index.d.ts","import":"./dist/widget-runtime/index.js","default":"./dist/widget-runtime/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"},"./host-config/templates":{"types":"./dist/host-config/templates/index.d.ts","import":"./dist/host-config/templates/index.js","default":"./dist/host-config/templates/index.js"}},"gitHead":"896f0b5650fff0c467038388b19d688735c86859","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"const root = await import('@mcpjam/sdk'); for (const n of ['driveTaskToTerminal','TaskLifecycleEngine','taskLifecycleKey','isTerminalLifecycleStatus','extensionTaskToObservation','legacyTaskToObservation','isUnknownTaskError','canDeclareTasksExtension','readDeclaredInputCapabilities','TaskInputRejectedError','createStrictElicitationContentValidator','retryAfterMsFromError']) { if (typeof root[n] !== 'function') { throw new Error('missing tasks export: ' + n); } } for (const n of ['loadEvalSuiteFile','resolveEvalSuiteFile','serializeEvalSuiteFile','formatSuiteFileFindings','suiteFilePointer']) { if (typeof root[n] !== 'function') { throw new Error('missing suite-file export: ' + n); } } for (const n of ['TERMINAL_LIFECYCLE_STATUSES','UNKNOWN_TASK_ERROR_CODE','DEFAULT_TASK_INPUT_LIMITS']) { if (root[n] === undefined) { throw new Error('missing tasks export: ' + n); } } for (const n of ['MAX_SUITE_FILE_BYTES','SUITE_FILE_VALIDITY_DEFAULTS','SUITE_FILE_DEFAULT_CAPTURE_LEVEL','SUITE_FILE_FINDING_CODES']) { if (root[n] === undefined) { throw new Error('missing suite-file export: ' + n); } } if (root.MAX_SUITE_FILE_BYTES !== 1048576) { throw new Error('MAX_SUITE_FILE_BYTES is not the pinned 1 MiB cap'); } await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); const contract = await import('@mcpjam/sdk/contract'); for (const n of ['canonicalJson','canonicalDigest','sha256Hex','resolveScoreDefinition','definitionHash','evaluationConfigHash','buildEvaluationConfigSnapshot','aggregateEvaluationConfigHash','allGatingScorersPassed','scorePassed','finalizeScoreResult','errorScoreResult','skippedScoreResult','notApplicableScoreResult','predicateScoreDefinition','scoreResultFromPredicateResult','toolMatchScoreDefinition','fromToolMatchResult','legacyTestScoreDefinition','fromLegacyTestOutcome','fromGoalCompletionCase','fromCriterionResult','generatedPredicateScorerId','deriveStageResults','stageDerivationToMetadata','mintCaseId','mintSuiteId','isOpaqueId','isPromptStep','isToolCallStep','isInteractStep','isAssertStep','isWidgetAssertion']) { if (typeof contract[n] !== 'function') { throw new Error('missing contract export: ' + n); } } for (const n of ['scoreResultSchema','resolvedScoreDefinitionSchema','evaluationConfigSnapshotSchema','PREDICATES_VERSION','MAX_SCORER_ID_LENGTH','TOOL_MATCH_SCORER_ID','LEGACY_TEST_SCORER_ID','opaqueIdSchema','CASE_ID_PREFIX','SUITE_ID_PREFIX','USER_VALUE_STAGES','STAGE_STATES','FAILURE_CATEGORIES','ITERATION_STATUSES','IMPORT_MAPPING_STATUSES','STAGE_ANALYZER_VERSION','STAGE_REASONS','STAGE_METADATA_KEYS','MAX_EVIDENCE_REASONS','MAX_EVIDENCE_REASON_CHARS','stageDerivationSchema','stageResultRowSchema','stageReasonSchema','TEST_STEP_KINDS','testStepSchema','stepsSchema','elementLocatorSchema','evalSuiteFileSchema','evalSuiteFileStructuralSchema','evalSuiteFileCaseSchema','evalSuiteFileJsonSchema','EVAL_SUITE_SCHEMA_ID','EVAL_SUITE_SCHEMA_VERSION','MAX_SUITE_FILE_CASES']) { if (contract[n] === undefined) { throw new Error('missing contract export: ' + n); } } if (typeof contract.evalSuiteFileJsonSchema !== 'object' || !contract.evalSuiteFileJsonSchema.properties?.cases) { throw new Error('contract export evalSuiteFileJsonSchema is not the generated JSON Schema document'); } await import('@mcpjam/sdk/host-config'); const w = await import('@mcpjam/sdk/widget-runtime'); for (const n of ['getToolVisibility','isVisibleToModelOnly','isVisibleToAppOnly','LoggingTransport','buildOuterAllowAttribute','buildOuterSandboxAttribute','resolveIframeSandboxPolicy','createHostAppBridge','registerHostBridgeHandlers']) { if (typeof w[n] !== 'function') { throw new Error('missing widget-runtime export: ' + n); } } if (w['DEFAULT_IFRAME_SANDBOX'] === undefined) { throw new Error('missing widget-runtime export: DEFAULT_IFRAME_SANDBOX'); } const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation','checkHostCompatibilityOperation','createTunnelOperation','closeTunnelOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } } const pub = await import('@mcpjam/sdk/public-api'); for (const n of ['isV1ErrorCode','mapInternalCode','v1ErrorBody','v1Page','classifyRuntimeError']) { if (typeof pub[n] !== 'function') { throw new Error('missing public-api export: ' + n); } } for (const n of ['V1_ERROR_CODES','V1_ERROR_STATUS','INTERNAL_TO_V1_CODE']) { if (pub[n] === undefined) { throw new Error('missing public-api export: ' + n); } } const hc = await import('@mcpjam/sdk/host-compat'); for (const n of ['deriveServerRequirements','evaluateHostCompat','evaluateAllHosts','buildMarketHostProfiles','evaluateMarketHosts','scanWidgetUsage','detectHostCompatBridgeFromMeta','scanWidgetSource','scanWidgetMeta','bundledHostCompatCatalog','buildHostProfilesFromCatalog','fetchHostCompatCatalog','hostConfigFieldsToImageSupport','imageSupportToHostConfigFields']) { if (typeof hc[n] !== 'function') { throw new Error('missing host-compat export: ' + n); } } if (hc['HostCompatBridge'] === undefined) { throw new Error('missing host-compat export: HostCompatBridge'); } for (const n of ['MCP_APPS_FULL','MCP_APPS_CHATGPT','MCP_APPS_MISTRAL','MCP_APPS_CURSOR','MCP_APPS_GOOSE','MCP_APPS_COPILOT','MCP_APPS_SLACK','MCP_APPS_VSCODE','MCP_APPS_NO_CLAIMS']) { if (typeof hc[n] !== 'object') { throw new Error('missing host-compat capability export: ' + n); } } for (const n of ['hostCompatCatalogSchema','hostCompatCatalogEnvelopeSchema','mcpAppsCapabilitiesSchema']) { if (hc[n] === undefined) { throw new Error('missing host-compat schema export: ' + n); } } const pb = await import('@mcpjam/sdk/plugin-bundle'); for (const n of ['parsePluginBundle','containsRootPlaceholder','containsPluginPlaceholder','selectPluginMcpServerMap','detectPluginMcpTransport']) { if (typeof pb[n] !== 'function') { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['DEFAULT_PLUGIN_BUNDLE_LIMITS','PLUGIN_ISSUE_CODES','PLUGIN_MANIFEST_SCHEMAS','PLUGIN_MCP_SCHEMAS','PLUGIN_MANIFEST_PATH','PLUGIN_ROOT_PLACEHOLDERS','PLUGIN_DATA_PLACEHOLDER','PluginBundleError','MCP_CONFIG_PATH']) { if (pb[n] === undefined) { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['normalizeBundlePath','validateBundleEntries','parseYamlLite','caseFoldPath','PluginIssueCollector','sha256HexBytes','computeAggregateHash']) { if (pb[n] !== undefined) { throw new Error('plugin-bundle should not re-export internal helper: ' + n); } } const on = await import('@mcpjam/sdk/oauth/node'); for (const n of ['assertOutboundOAuthUrlAllowed','isDisallowedIpAddress','isLoopbackOAuthUrl','isPrivateHost','OAuthOutboundUrlBlockedError','executeOAuthProxy','executeDebugOAuthProxy','fetchOAuthMetadata','fetchPinnedPublicDocument','validateUrl','OAuthProxyError']) { if (typeof on[n] !== 'function') { throw new Error('missing oauth/node export: ' + n); } }\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs","check:eval-suite-schema":"tsx scripts/generate-eval-suite-schema.ts --check","generate:eval-suite-schema":"tsx scripts/generate-eval-suite-schema.ts","check:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts --check","generate:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts","check:eval-verdict-policy-schema":"tsx scripts/generate-eval-verdict-policy-schema.ts --check","check:host-catalog-fallback:remote":"node --import tsx scripts/check-host-catalog-fallback-remote.ts","generate:eval-verdict-policy-schema":"tsx scripts/generate-eval-verdict-policy-schema.ts"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.2.0"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","ajv":"^8.17.1","zod":"^4.2.0","yaml":"^2.9.0","jszip":"^3.10.1","xpath":"^0.0.34","xml-crypto":"^6.1.2","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@noble/hashes":"^2.3.0","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@xmldom/xmldom":"^0.8.13","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"2.0.0","@modelcontextprotocol/ext-apps":"^1.7.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.7","esbuild":"^0.27.0","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"2.0.0","@modelcontextprotocol/server":"2.0.0","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_8.3.0_1787913758698_0.9444345518917459","host":"s3://npm-registry-packages-npm-production"}},"8.3.1":{"name":"@mcpjam/sdk","version":"8.3.1","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@8.3.1","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"23f1bc47306d337adbf4dc5fc66184b6be41dee9","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-8.3.1.tgz","fileCount":74,"integrity":"sha512-CW3ib9430GEBsTs++musd/nTFUR+iB+QqdaUesO1yItzj++35zLy66TcCjlk4Pz6d8fIpQl9avWan5r4I9jbKw==","signatures":[{"sig":"MEQCIHkQjJIfhJNSqYwiaDtayLOPBycc9xR8Xv772umKTE18AiAos2qgx12pzfp4H23XVuQ9kxh8kBXKmwCj+Y2VgOsf3g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24802633},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./contract":{"types":"./dist/contract/index.d.ts","import":"./dist/contract/index.js","default":"./dist/contract/index.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./oauth/node":{"types":"./dist/oauth/node.d.ts","import":"./dist/oauth/node.js","default":"./dist/oauth/node.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./public-api":{"types":"./dist/public-api/index.d.ts","import":"./dist/public-api/index.js","default":"./dist/public-api/index.js"},"./host-compat":{"types":"./dist/host-compat/index.d.ts","import":"./dist/host-compat/index.js","default":"./dist/host-compat/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./plugin-bundle":{"types":"./dist/plugin-bundle/index.d.ts","import":"./dist/plugin-bundle/index.js","default":"./dist/plugin-bundle/index.js"},"./widget-runtime":{"types":"./dist/widget-runtime/index.d.ts","import":"./dist/widget-runtime/index.js","default":"./dist/widget-runtime/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"},"./host-config/templates":{"types":"./dist/host-config/templates/index.d.ts","import":"./dist/host-config/templates/index.js","default":"./dist/host-config/templates/index.js"}},"gitHead":"51294e7013936a0a7fa6eaa57d41325af4961e93","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"const root = await import('@mcpjam/sdk'); for (const n of ['driveTaskToTerminal','TaskLifecycleEngine','taskLifecycleKey','isTerminalLifecycleStatus','extensionTaskToObservation','legacyTaskToObservation','isUnknownTaskError','canDeclareTasksExtension','readDeclaredInputCapabilities','TaskInputRejectedError','createStrictElicitationContentValidator','retryAfterMsFromError']) { if (typeof root[n] !== 'function') { throw new Error('missing tasks export: ' + n); } } for (const n of ['loadEvalSuiteFile','resolveEvalSuiteFile','serializeEvalSuiteFile','formatSuiteFileFindings','suiteFilePointer']) { if (typeof root[n] !== 'function') { throw new Error('missing suite-file export: ' + n); } } for (const n of ['TERMINAL_LIFECYCLE_STATUSES','UNKNOWN_TASK_ERROR_CODE','DEFAULT_TASK_INPUT_LIMITS']) { if (root[n] === undefined) { throw new Error('missing tasks export: ' + n); } } for (const n of ['MAX_SUITE_FILE_BYTES','SUITE_FILE_VALIDITY_DEFAULTS','SUITE_FILE_DEFAULT_CAPTURE_LEVEL','SUITE_FILE_FINDING_CODES']) { if (root[n] === undefined) { throw new Error('missing suite-file export: ' + n); } } if (root.MAX_SUITE_FILE_BYTES !== 1048576) { throw new Error('MAX_SUITE_FILE_BYTES is not the pinned 1 MiB cap'); } await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); const contract = await import('@mcpjam/sdk/contract'); for (const n of ['canonicalJson','canonicalDigest','sha256Hex','resolveScoreDefinition','definitionHash','evaluationConfigHash','buildEvaluationConfigSnapshot','aggregateEvaluationConfigHash','allGatingScorersPassed','scorePassed','finalizeScoreResult','errorScoreResult','skippedScoreResult','notApplicableScoreResult','predicateScoreDefinition','scoreResultFromPredicateResult','toolMatchScoreDefinition','fromToolMatchResult','legacyTestScoreDefinition','fromLegacyTestOutcome','fromGoalCompletionCase','fromCriterionResult','generatedPredicateScorerId','deriveStageResults','stageDerivationToMetadata','mintCaseId','mintSuiteId','isOpaqueId','isPromptStep','isToolCallStep','isInteractStep','isAssertStep','isWidgetAssertion']) { if (typeof contract[n] !== 'function') { throw new Error('missing contract export: ' + n); } } for (const n of ['scoreResultSchema','resolvedScoreDefinitionSchema','evaluationConfigSnapshotSchema','PREDICATES_VERSION','MAX_SCORER_ID_LENGTH','TOOL_MATCH_SCORER_ID','LEGACY_TEST_SCORER_ID','opaqueIdSchema','CASE_ID_PREFIX','SUITE_ID_PREFIX','USER_VALUE_STAGES','STAGE_STATES','FAILURE_CATEGORIES','ITERATION_STATUSES','IMPORT_MAPPING_STATUSES','STAGE_ANALYZER_VERSION','STAGE_REASONS','STAGE_METADATA_KEYS','MAX_EVIDENCE_REASONS','MAX_EVIDENCE_REASON_CHARS','stageDerivationSchema','stageResultRowSchema','stageReasonSchema','TEST_STEP_KINDS','testStepSchema','stepsSchema','elementLocatorSchema','evalSuiteFileSchema','evalSuiteFileStructuralSchema','evalSuiteFileCaseSchema','evalSuiteFileJsonSchema','EVAL_SUITE_SCHEMA_ID','EVAL_SUITE_SCHEMA_VERSION','MAX_SUITE_FILE_CASES']) { if (contract[n] === undefined) { throw new Error('missing contract export: ' + n); } } if (typeof contract.evalSuiteFileJsonSchema !== 'object' || !contract.evalSuiteFileJsonSchema.properties?.cases) { throw new Error('contract export evalSuiteFileJsonSchema is not the generated JSON Schema document'); } await import('@mcpjam/sdk/host-config'); const w = await import('@mcpjam/sdk/widget-runtime'); for (const n of ['getToolVisibility','isVisibleToModelOnly','isVisibleToAppOnly','LoggingTransport','buildOuterAllowAttribute','buildOuterSandboxAttribute','resolveIframeSandboxPolicy','createHostAppBridge','registerHostBridgeHandlers']) { if (typeof w[n] !== 'function') { throw new Error('missing widget-runtime export: ' + n); } } if (w['DEFAULT_IFRAME_SANDBOX'] === undefined) { throw new Error('missing widget-runtime export: DEFAULT_IFRAME_SANDBOX'); } const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation','checkHostCompatibilityOperation','createTunnelOperation','closeTunnelOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } } const pub = await import('@mcpjam/sdk/public-api'); for (const n of ['isV1ErrorCode','mapInternalCode','v1ErrorBody','v1Page','classifyRuntimeError']) { if (typeof pub[n] !== 'function') { throw new Error('missing public-api export: ' + n); } } for (const n of ['V1_ERROR_CODES','V1_ERROR_STATUS','INTERNAL_TO_V1_CODE']) { if (pub[n] === undefined) { throw new Error('missing public-api export: ' + n); } } const hc = await import('@mcpjam/sdk/host-compat'); for (const n of ['deriveServerRequirements','evaluateHostCompat','evaluateAllHosts','buildMarketHostProfiles','evaluateMarketHosts','scanWidgetUsage','detectHostCompatBridgeFromMeta','scanWidgetSource','scanWidgetMeta','bundledHostCompatCatalog','buildHostProfilesFromCatalog','fetchHostCompatCatalog','hostConfigFieldsToImageSupport','imageSupportToHostConfigFields']) { if (typeof hc[n] !== 'function') { throw new Error('missing host-compat export: ' + n); } } if (hc['HostCompatBridge'] === undefined) { throw new Error('missing host-compat export: HostCompatBridge'); } for (const n of ['MCP_APPS_FULL','MCP_APPS_CHATGPT','MCP_APPS_MISTRAL','MCP_APPS_CURSOR','MCP_APPS_GOOSE','MCP_APPS_COPILOT','MCP_APPS_SLACK','MCP_APPS_VSCODE','MCP_APPS_NO_CLAIMS']) { if (typeof hc[n] !== 'object') { throw new Error('missing host-compat capability export: ' + n); } } for (const n of ['hostCompatCatalogSchema','hostCompatCatalogEnvelopeSchema','mcpAppsCapabilitiesSchema']) { if (hc[n] === undefined) { throw new Error('missing host-compat schema export: ' + n); } } const pb = await import('@mcpjam/sdk/plugin-bundle'); for (const n of ['parsePluginBundle','containsRootPlaceholder','containsPluginPlaceholder','selectPluginMcpServerMap','detectPluginMcpTransport']) { if (typeof pb[n] !== 'function') { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['DEFAULT_PLUGIN_BUNDLE_LIMITS','PLUGIN_ISSUE_CODES','PLUGIN_MANIFEST_SCHEMAS','PLUGIN_MCP_SCHEMAS','PLUGIN_MANIFEST_PATH','PLUGIN_ROOT_PLACEHOLDERS','PLUGIN_DATA_PLACEHOLDER','PluginBundleError','MCP_CONFIG_PATH']) { if (pb[n] === undefined) { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['normalizeBundlePath','validateBundleEntries','parseYamlLite','caseFoldPath','PluginIssueCollector','sha256HexBytes','computeAggregateHash']) { if (pb[n] !== undefined) { throw new Error('plugin-bundle should not re-export internal helper: ' + n); } } const on = await import('@mcpjam/sdk/oauth/node'); for (const n of ['assertOutboundOAuthUrlAllowed','isDisallowedIpAddress','isLoopbackOAuthUrl','isPrivateHost','OAuthOutboundUrlBlockedError','executeOAuthProxy','executeDebugOAuthProxy','fetchOAuthMetadata','fetchPinnedPublicDocument','validateUrl','OAuthProxyError']) { if (typeof on[n] !== 'function') { throw new Error('missing oauth/node export: ' + n); } }\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs","check:eval-suite-schema":"tsx scripts/generate-eval-suite-schema.ts --check","generate:eval-suite-schema":"tsx scripts/generate-eval-suite-schema.ts","check:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts --check","generate:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts","check:eval-verdict-policy-schema":"tsx scripts/generate-eval-verdict-policy-schema.ts --check","check:host-catalog-fallback:remote":"node --import tsx scripts/check-host-catalog-fallback-remote.ts","generate:eval-verdict-policy-schema":"tsx scripts/generate-eval-verdict-policy-schema.ts"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.2.0"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","ajv":"^8.17.1","zod":"^4.2.0","yaml":"^2.9.0","jszip":"^3.10.1","xpath":"^0.0.34","xml-crypto":"^6.1.2","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@noble/hashes":"^2.3.0","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@xmldom/xmldom":"^0.8.13","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"2.0.0","@modelcontextprotocol/ext-apps":"^1.7.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.7","esbuild":"^0.27.0","ts-jest":"^29.1.2","prettier":"^3.8.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"2.0.0","@modelcontextprotocol/server":"2.0.0","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_8.3.1_1787951240276_0.37966491784870615","host":"s3://npm-registry-packages-npm-production"}},"8.4.0":{"name":"@mcpjam/sdk","version":"8.4.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@8.4.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"068506496060dece9f44a11d14646e1b6e6811c9","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-8.4.0.tgz","fileCount":74,"integrity":"sha512-bkN+9Bqe9Y/ENrD7CsZTMIs3HLcXwFmIFKQD8nV/A6Mjx7BZwJaYNvQavKOkZRc9UWY2PAO3PpJCX21qqyQXaw==","signatures":[{"sig":"MEQCIHIlnu1Baj/o1GRKa8AN3BLHg9vAHgLit77JXe1W9EgmAiAXU5iFgv1exQdFd+F944Mkz6eDKRTCEfTyrQcOU6w5kg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25103046},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./contract":{"types":"./dist/contract/index.d.ts","import":"./dist/contract/index.js","default":"./dist/contract/index.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./oauth/node":{"types":"./dist/oauth/node.d.ts","import":"./dist/oauth/node.js","default":"./dist/oauth/node.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./public-api":{"types":"./dist/public-api/index.d.ts","import":"./dist/public-api/index.js","default":"./dist/public-api/index.js"},"./host-compat":{"types":"./dist/host-compat/index.d.ts","import":"./dist/host-compat/index.js","default":"./dist/host-compat/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./plugin-bundle":{"types":"./dist/plugin-bundle/index.d.ts","import":"./dist/plugin-bundle/index.js","default":"./dist/plugin-bundle/index.js"},"./widget-runtime":{"types":"./dist/widget-runtime/index.d.ts","import":"./dist/widget-runtime/index.js","default":"./dist/widget-runtime/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"},"./host-config/templates":{"types":"./dist/host-config/templates/index.d.ts","import":"./dist/host-config/templates/index.js","default":"./dist/host-config/templates/index.js"}},"gitHead":"f9c3bc0b80fbf6f69b31c811673a49f196c800be","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && cross-env NODE_OPTIONS=--max-old-space-size=8192 tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"const root = await import('@mcpjam/sdk'); for (const n of ['driveTaskToTerminal','TaskLifecycleEngine','taskLifecycleKey','isTerminalLifecycleStatus','extensionTaskToObservation','legacyTaskToObservation','isUnknownTaskError','canDeclareTasksExtension','readDeclaredInputCapabilities','TaskInputRejectedError','createStrictElicitationContentValidator','retryAfterMsFromError']) { if (typeof root[n] !== 'function') { throw new Error('missing tasks export: ' + n); } } for (const n of ['loadEvalSuiteFile','resolveEvalSuiteFile','serializeEvalSuiteFile','formatSuiteFileFindings','suiteFilePointer']) { if (typeof root[n] !== 'function') { throw new Error('missing suite-file export: ' + n); } } for (const n of ['TERMINAL_LIFECYCLE_STATUSES','UNKNOWN_TASK_ERROR_CODE','DEFAULT_TASK_INPUT_LIMITS']) { if (root[n] === undefined) { throw new Error('missing tasks export: ' + n); } } for (const n of ['MAX_SUITE_FILE_BYTES','SUITE_FILE_VALIDITY_DEFAULTS','SUITE_FILE_DEFAULT_CAPTURE_LEVEL','SUITE_FILE_FINDING_CODES']) { if (root[n] === undefined) { throw new Error('missing suite-file export: ' + n); } } if (root.MAX_SUITE_FILE_BYTES !== 1048576) { throw new Error('MAX_SUITE_FILE_BYTES is not the pinned 1 MiB cap'); } await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); const contract = await import('@mcpjam/sdk/contract'); for (const n of ['canonicalJson','canonicalDigest','sha256Hex','resolveScoreDefinition','definitionHash','evaluationConfigHash','buildEvaluationConfigSnapshot','aggregateEvaluationConfigHash','allGatingScorersPassed','scorePassed','finalizeScoreResult','errorScoreResult','skippedScoreResult','notApplicableScoreResult','predicateScoreDefinition','scoreResultFromPredicateResult','toolMatchScoreDefinition','fromToolMatchResult','legacyTestScoreDefinition','fromLegacyTestOutcome','fromGoalCompletionCase','fromCriterionResult','generatedPredicateScorerId','deriveStageResults','stageDerivationToMetadata','mintCaseId','mintSuiteId','isOpaqueId','isPromptStep','isToolCallStep','isInteractStep','isAssertStep','isWidgetAssertion']) { if (typeof contract[n] !== 'function') { throw new Error('missing contract export: ' + n); } } for (const n of ['scoreResultSchema','resolvedScoreDefinitionSchema','evaluationConfigSnapshotSchema','PREDICATES_VERSION','MAX_SCORER_ID_LENGTH','TOOL_MATCH_SCORER_ID','LEGACY_TEST_SCORER_ID','opaqueIdSchema','CASE_ID_PREFIX','SUITE_ID_PREFIX','USER_VALUE_STAGES','STAGE_STATES','FAILURE_CATEGORIES','ITERATION_STATUSES','IMPORT_MAPPING_STATUSES','STAGE_ANALYZER_VERSION','STAGE_REASONS','STAGE_METADATA_KEYS','MAX_EVIDENCE_REASONS','MAX_EVIDENCE_REASON_CHARS','stageDerivationSchema','stageResultRowSchema','stageReasonSchema','TEST_STEP_KINDS','testStepSchema','stepsSchema','elementLocatorSchema','evalSuiteFileSchema','evalSuiteFileStructuralSchema','evalSuiteFileCaseSchema','evalSuiteFileJsonSchema','EVAL_SUITE_SCHEMA_ID','EVAL_SUITE_SCHEMA_VERSION','MAX_SUITE_FILE_CASES']) { if (contract[n] === undefined) { throw new Error('missing contract export: ' + n); } } if (typeof contract.evalSuiteFileJsonSchema !== 'object' || !contract.evalSuiteFileJsonSchema.properties?.cases) { throw new Error('contract export evalSuiteFileJsonSchema is not the generated JSON Schema document'); } await import('@mcpjam/sdk/host-config'); const w = await import('@mcpjam/sdk/widget-runtime'); for (const n of ['getToolVisibility','isVisibleToModelOnly','isVisibleToAppOnly','LoggingTransport','buildOuterAllowAttribute','buildOuterSandboxAttribute','resolveIframeSandboxPolicy','createHostAppBridge','registerHostBridgeHandlers']) { if (typeof w[n] !== 'function') { throw new Error('missing widget-runtime export: ' + n); } } if (w['DEFAULT_IFRAME_SANDBOX'] === undefined) { throw new Error('missing widget-runtime export: DEFAULT_IFRAME_SANDBOX'); } const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation','checkHostCompatibilityOperation','createTunnelOperation','closeTunnelOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } } const pub = await import('@mcpjam/sdk/public-api'); for (const n of ['isV1ErrorCode','mapInternalCode','v1ErrorBody','v1Page','classifyRuntimeError']) { if (typeof pub[n] !== 'function') { throw new Error('missing public-api export: ' + n); } } for (const n of ['V1_ERROR_CODES','V1_ERROR_STATUS','INTERNAL_TO_V1_CODE']) { if (pub[n] === undefined) { throw new Error('missing public-api export: ' + n); } } const hc = await import('@mcpjam/sdk/host-compat'); for (const n of ['deriveServerRequirements','evaluateHostCompat','evaluateAllHosts','buildMarketHostProfiles','evaluateMarketHosts','scanWidgetUsage','detectHostCompatBridgeFromMeta','scanWidgetSource','scanWidgetMeta','bundledHostCompatCatalog','buildHostProfilesFromCatalog','fetchHostCompatCatalog','hostConfigFieldsToImageSupport','imageSupportToHostConfigFields']) { if (typeof hc[n] !== 'function') { throw new Error('missing host-compat export: ' + n); } } if (hc['HostCompatBridge'] === undefined) { throw new Error('missing host-compat export: HostCompatBridge'); } for (const n of ['MCP_APPS_FULL','MCP_APPS_CHATGPT','MCP_APPS_MISTRAL','MCP_APPS_CURSOR','MCP_APPS_GOOSE','MCP_APPS_COPILOT','MCP_APPS_SLACK','MCP_APPS_VSCODE','MCP_APPS_NO_CLAIMS']) { if (typeof hc[n] !== 'object') { throw new Error('missing host-compat capability export: ' + n); } } for (const n of ['hostCompatCatalogSchema','hostCompatCatalogEnvelopeSchema','mcpAppsCapabilitiesSchema']) { if (hc[n] === undefined) { throw new Error('missing host-compat schema export: ' + n); } } const pb = await import('@mcpjam/sdk/plugin-bundle'); for (const n of ['parsePluginBundle','containsRootPlaceholder','containsPluginPlaceholder','selectPluginMcpServerMap','detectPluginMcpTransport']) { if (typeof pb[n] !== 'function') { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['DEFAULT_PLUGIN_BUNDLE_LIMITS','PLUGIN_ISSUE_CODES','PLUGIN_MANIFEST_SCHEMAS','PLUGIN_MCP_SCHEMAS','PLUGIN_MANIFEST_PATH','PLUGIN_ROOT_PLACEHOLDERS','PLUGIN_DATA_PLACEHOLDER','PluginBundleError','MCP_CONFIG_PATH']) { if (pb[n] === undefined) { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['normalizeBundlePath','validateBundleEntries','parseYamlLite','caseFoldPath','PluginIssueCollector','sha256HexBytes','computeAggregateHash']) { if (pb[n] !== undefined) { throw new Error('plugin-bundle should not re-export internal helper: ' + n); } } const on = await import('@mcpjam/sdk/oauth/node'); for (const n of ['assertOutboundOAuthUrlAllowed','isDisallowedIpAddress','isLoopbackOAuthUrl','isPrivateHost','OAuthOutboundUrlBlockedError','executeOAuthProxy','executeDebugOAuthProxy','fetchOAuthMetadata','fetchPinnedPublicDocument','validateUrl','OAuthProxyError']) { if (typeof on[n] !== 'function') { throw new Error('missing oauth/node export: ' + n); } }\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs","check:eval-suite-schema":"tsx scripts/generate-eval-suite-schema.ts --check","generate:eval-suite-schema":"tsx scripts/generate-eval-suite-schema.ts","check:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts --check","generate:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts","check:eval-verdict-policy-schema":"tsx scripts/generate-eval-verdict-policy-schema.ts --check","check:host-catalog-fallback:remote":"node --import tsx scripts/check-host-catalog-fallback-remote.ts","generate:eval-verdict-policy-schema":"tsx scripts/generate-eval-verdict-policy-schema.ts"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.2.0"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","ajv":"^8.17.1","zod":"^4.2.0","yaml":"^2.9.0","jszip":"^3.10.1","xpath":"^0.0.34","xml-crypto":"^6.1.2","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@noble/hashes":"^2.3.0","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@xmldom/xmldom":"^0.8.13","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"2.0.0","@modelcontextprotocol/ext-apps":"^1.7.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.7","esbuild":"^0.27.0","ts-jest":"^29.1.2","prettier":"^3.8.0","cross-env":"^10.1.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.53.1","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.53.1","@modelcontextprotocol/node":"2.0.0","@modelcontextprotocol/server":"2.0.0","@typescript-eslint/eslint-plugin":"^8.53.1","@modelcontextprotocol/server-everything":"^2026.1.26"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_8.4.0_1788243303376_0.5996171419587111","host":"s3://npm-registry-packages-npm-production"}},"8.5.0":{"name":"@mcpjam/sdk","version":"8.5.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@8.5.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"efaaead03c86dfec1c602a9030b331301d21e73a","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-8.5.0.tgz","fileCount":74,"integrity":"sha512-AR33YnuN5qV75y1NUvp9OKhqlwZt2x3R6N4u4zaWLOxbt6qS+BgkRJsebNv0zrd7GbtGcSUtRo7V19CGQ+HNxA==","signatures":[{"sig":"MEYCIQClV6zQ2KaZxHPhKw1lRLpkmExtDRTvyttECFqggGXILwIhAK7UIkRkPjtA608ZdLZy069E47/tEjcnx0HWoJwKofBZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25286516},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./contract":{"types":"./dist/contract/index.d.ts","import":"./dist/contract/index.js","default":"./dist/contract/index.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./oauth/node":{"types":"./dist/oauth/node.d.ts","import":"./dist/oauth/node.js","default":"./dist/oauth/node.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./public-api":{"types":"./dist/public-api/index.d.ts","import":"./dist/public-api/index.js","default":"./dist/public-api/index.js"},"./host-compat":{"types":"./dist/host-compat/index.d.ts","import":"./dist/host-compat/index.js","default":"./dist/host-compat/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./plugin-bundle":{"types":"./dist/plugin-bundle/index.d.ts","import":"./dist/plugin-bundle/index.js","default":"./dist/plugin-bundle/index.js"},"./widget-runtime":{"types":"./dist/widget-runtime/index.d.ts","import":"./dist/widget-runtime/index.js","default":"./dist/widget-runtime/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"},"./host-config/templates":{"types":"./dist/host-config/templates/index.d.ts","import":"./dist/host-config/templates/index.js","default":"./dist/host-config/templates/index.js"}},"gitHead":"a355c772ce48915f52ad1285f23bb61e89f3026c","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && cross-env NODE_OPTIONS=--max-old-space-size=8192 tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"const root = await import('@mcpjam/sdk'); for (const n of ['driveTaskToTerminal','TaskLifecycleEngine','taskLifecycleKey','isTerminalLifecycleStatus','extensionTaskToObservation','legacyTaskToObservation','isUnknownTaskError','canDeclareTasksExtension','readDeclaredInputCapabilities','TaskInputRejectedError','createStrictElicitationContentValidator','retryAfterMsFromError']) { if (typeof root[n] !== 'function') { throw new Error('missing tasks export: ' + n); } } for (const n of ['loadEvalSuiteFile','resolveEvalSuiteFile','serializeEvalSuiteFile','formatSuiteFileFindings','suiteFilePointer']) { if (typeof root[n] !== 'function') { throw new Error('missing suite-file export: ' + n); } } for (const n of ['TERMINAL_LIFECYCLE_STATUSES','UNKNOWN_TASK_ERROR_CODE','DEFAULT_TASK_INPUT_LIMITS']) { if (root[n] === undefined) { throw new Error('missing tasks export: ' + n); } } for (const n of ['MAX_SUITE_FILE_BYTES','SUITE_FILE_VALIDITY_DEFAULTS','SUITE_FILE_DEFAULT_CAPTURE_LEVEL','SUITE_FILE_FINDING_CODES']) { if (root[n] === undefined) { throw new Error('missing suite-file export: ' + n); } } if (root.MAX_SUITE_FILE_BYTES !== 1048576) { throw new Error('MAX_SUITE_FILE_BYTES is not the pinned 1 MiB cap'); } await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); const contract = await import('@mcpjam/sdk/contract'); for (const n of ['canonicalJson','canonicalDigest','sha256Hex','resolveScoreDefinition','definitionHash','evaluationConfigHash','buildEvaluationConfigSnapshot','aggregateEvaluationConfigHash','allGatingScorersPassed','scorePassed','finalizeScoreResult','errorScoreResult','skippedScoreResult','notApplicableScoreResult','predicateScoreDefinition','scoreResultFromPredicateResult','toolMatchScoreDefinition','fromToolMatchResult','legacyTestScoreDefinition','fromLegacyTestOutcome','fromGoalCompletionCase','fromCriterionResult','generatedPredicateScorerId','deriveStageResults','stageDerivationToMetadata','mintCaseId','mintSuiteId','isOpaqueId','isPromptStep','isToolCallStep','isInteractStep','isAssertStep','isWidgetAssertion']) { if (typeof contract[n] !== 'function') { throw new Error('missing contract export: ' + n); } } for (const n of ['scoreResultSchema','resolvedScoreDefinitionSchema','evaluationConfigSnapshotSchema','PREDICATES_VERSION','MAX_SCORER_ID_LENGTH','TOOL_MATCH_SCORER_ID','LEGACY_TEST_SCORER_ID','opaqueIdSchema','CASE_ID_PREFIX','SUITE_ID_PREFIX','USER_VALUE_STAGES','STAGE_STATES','FAILURE_CATEGORIES','ITERATION_STATUSES','IMPORT_MAPPING_STATUSES','STAGE_ANALYZER_VERSION','STAGE_REASONS','STAGE_METADATA_KEYS','MAX_EVIDENCE_REASONS','MAX_EVIDENCE_REASON_CHARS','stageDerivationSchema','stageResultRowSchema','stageReasonSchema','TEST_STEP_KINDS','testStepSchema','stepsSchema','elementLocatorSchema','evalSuiteFileSchema','evalSuiteFileStructuralSchema','evalSuiteFileCaseSchema','evalSuiteFileJsonSchema','EVAL_SUITE_SCHEMA_ID','EVAL_SUITE_SCHEMA_VERSION','MAX_SUITE_FILE_CASES']) { if (contract[n] === undefined) { throw new Error('missing contract export: ' + n); } } if (typeof contract.evalSuiteFileJsonSchema !== 'object' || !contract.evalSuiteFileJsonSchema.properties?.cases) { throw new Error('contract export evalSuiteFileJsonSchema is not the generated JSON Schema document'); } await import('@mcpjam/sdk/host-config'); const w = await import('@mcpjam/sdk/widget-runtime'); for (const n of ['getToolVisibility','isVisibleToModelOnly','isVisibleToAppOnly','LoggingTransport','buildOuterAllowAttribute','buildOuterSandboxAttribute','resolveIframeSandboxPolicy','createHostAppBridge','registerHostBridgeHandlers']) { if (typeof w[n] !== 'function') { throw new Error('missing widget-runtime export: ' + n); } } if (w['DEFAULT_IFRAME_SANDBOX'] === undefined) { throw new Error('missing widget-runtime export: DEFAULT_IFRAME_SANDBOX'); } const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation','checkHostCompatibilityOperation','createTunnelOperation','closeTunnelOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } } const pub = await import('@mcpjam/sdk/public-api'); for (const n of ['isV1ErrorCode','mapInternalCode','v1ErrorBody','v1Page','classifyRuntimeError']) { if (typeof pub[n] !== 'function') { throw new Error('missing public-api export: ' + n); } } for (const n of ['V1_ERROR_CODES','V1_ERROR_STATUS','INTERNAL_TO_V1_CODE']) { if (pub[n] === undefined) { throw new Error('missing public-api export: ' + n); } } const hc = await import('@mcpjam/sdk/host-compat'); for (const n of ['deriveServerRequirements','evaluateHostCompat','evaluateAllHosts','buildMarketHostProfiles','evaluateMarketHosts','scanWidgetUsage','detectHostCompatBridgeFromMeta','scanWidgetSource','scanWidgetMeta','bundledHostCompatCatalog','buildHostProfilesFromCatalog','fetchHostCompatCatalog','hostConfigFieldsToImageSupport','imageSupportToHostConfigFields']) { if (typeof hc[n] !== 'function') { throw new Error('missing host-compat export: ' + n); } } if (hc['HostCompatBridge'] === undefined) { throw new Error('missing host-compat export: HostCompatBridge'); } for (const n of ['MCP_APPS_FULL','MCP_APPS_CHATGPT','MCP_APPS_MISTRAL','MCP_APPS_CURSOR','MCP_APPS_GOOSE','MCP_APPS_COPILOT','MCP_APPS_SLACK','MCP_APPS_VSCODE','MCP_APPS_NO_CLAIMS']) { if (typeof hc[n] !== 'object') { throw new Error('missing host-compat capability export: ' + n); } } for (const n of ['hostCompatCatalogSchema','hostCompatCatalogEnvelopeSchema','mcpAppsCapabilitiesSchema']) { if (hc[n] === undefined) { throw new Error('missing host-compat schema export: ' + n); } } const pb = await import('@mcpjam/sdk/plugin-bundle'); for (const n of ['parsePluginBundle','containsRootPlaceholder','containsPluginPlaceholder','selectPluginMcpServerMap','detectPluginMcpTransport']) { if (typeof pb[n] !== 'function') { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['DEFAULT_PLUGIN_BUNDLE_LIMITS','PLUGIN_ISSUE_CODES','PLUGIN_MANIFEST_SCHEMAS','PLUGIN_MCP_SCHEMAS','PLUGIN_MANIFEST_PATH','PLUGIN_ROOT_PLACEHOLDERS','PLUGIN_DATA_PLACEHOLDER','PluginBundleError','MCP_CONFIG_PATH']) { if (pb[n] === undefined) { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['normalizeBundlePath','validateBundleEntries','parseYamlLite','caseFoldPath','PluginIssueCollector','sha256HexBytes','computeAggregateHash']) { if (pb[n] !== undefined) { throw new Error('plugin-bundle should not re-export internal helper: ' + n); } } const on = await import('@mcpjam/sdk/oauth/node'); for (const n of ['assertOutboundOAuthUrlAllowed','isDisallowedIpAddress','isLoopbackOAuthUrl','isPrivateHost','OAuthOutboundUrlBlockedError','executeOAuthProxy','executeDebugOAuthProxy','fetchOAuthMetadata','fetchPinnedPublicDocument','validateUrl','OAuthProxyError']) { if (typeof on[n] !== 'function') { throw new Error('missing oauth/node export: ' + n); } }\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs","check:eval-suite-schema":"tsx scripts/generate-eval-suite-schema.ts --check","generate:eval-suite-schema":"tsx scripts/generate-eval-suite-schema.ts","check:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts --check","generate:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts","check:eval-verdict-policy-schema":"tsx scripts/generate-eval-verdict-policy-schema.ts --check","check:host-catalog-fallback:remote":"node --import tsx scripts/check-host-catalog-fallback-remote.ts","generate:eval-verdict-policy-schema":"tsx scripts/generate-eval-verdict-policy-schema.ts"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.2.0"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","ajv":"^8.17.1","zod":"^4.2.0","yaml":"^2.9.0","jszip":"^3.10.1","xpath":"^0.0.34","xml-crypto":"^6.1.2","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@noble/hashes":"^2.3.0","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@xmldom/xmldom":"^0.8.13","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"2.0.0","@modelcontextprotocol/ext-apps":"^1.7.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.7","esbuild":"^0.28.2","ts-jest":"^29.4.12","prettier":"^3.9.6","cross-env":"^10.1.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.68.0","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.6","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.68.0","@modelcontextprotocol/node":"2.0.0","@modelcontextprotocol/server":"2.0.0","@typescript-eslint/eslint-plugin":"^8.68.0","@modelcontextprotocol/server-everything":"^2026.8.18"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_8.5.0_1788304689691_0.6061996797381417","host":"s3://npm-registry-packages-npm-production"}},"8.5.1":{"name":"@mcpjam/sdk","version":"8.5.1","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@8.5.1","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"47980e0e1329a51c25a15937f7fce7821d78c5e9","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-8.5.1.tgz","fileCount":74,"integrity":"sha512-8a0dgwfL3BBwm0Jime6ZyCp9B9TQfVsgxY8Gk5pbrJDBtn0wTNWMNTV7YQlzHgSBDKuDLqyFjuIPg4gv3r5imQ==","signatures":[{"sig":"MEUCIQDxhuI+lACOZegbdWVfgNZ12teYwBM7aJRlhmyuYZmjDgIgbnC4rkC5L7Od1HtjUJNMY+WsAyc4oyl0RwuAo69buy4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25294831},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./contract":{"types":"./dist/contract/index.d.ts","import":"./dist/contract/index.js","default":"./dist/contract/index.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./oauth/node":{"types":"./dist/oauth/node.d.ts","import":"./dist/oauth/node.js","default":"./dist/oauth/node.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./public-api":{"types":"./dist/public-api/index.d.ts","import":"./dist/public-api/index.js","default":"./dist/public-api/index.js"},"./host-compat":{"types":"./dist/host-compat/index.d.ts","import":"./dist/host-compat/index.js","default":"./dist/host-compat/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./plugin-bundle":{"types":"./dist/plugin-bundle/index.d.ts","import":"./dist/plugin-bundle/index.js","default":"./dist/plugin-bundle/index.js"},"./widget-runtime":{"types":"./dist/widget-runtime/index.d.ts","import":"./dist/widget-runtime/index.js","default":"./dist/widget-runtime/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"},"./host-config/templates":{"types":"./dist/host-config/templates/index.d.ts","import":"./dist/host-config/templates/index.js","default":"./dist/host-config/templates/index.js"}},"gitHead":"c0d373a334445d09a8acb52368ff1d09da5eff73","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && cross-env NODE_OPTIONS=--max-old-space-size=8192 tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"const root = await import('@mcpjam/sdk'); for (const n of ['driveTaskToTerminal','TaskLifecycleEngine','taskLifecycleKey','isTerminalLifecycleStatus','extensionTaskToObservation','legacyTaskToObservation','isUnknownTaskError','canDeclareTasksExtension','readDeclaredInputCapabilities','TaskInputRejectedError','createStrictElicitationContentValidator','retryAfterMsFromError']) { if (typeof root[n] !== 'function') { throw new Error('missing tasks export: ' + n); } } for (const n of ['loadEvalSuiteFile','resolveEvalSuiteFile','serializeEvalSuiteFile','formatSuiteFileFindings','suiteFilePointer']) { if (typeof root[n] !== 'function') { throw new Error('missing suite-file export: ' + n); } } for (const n of ['TERMINAL_LIFECYCLE_STATUSES','UNKNOWN_TASK_ERROR_CODE','DEFAULT_TASK_INPUT_LIMITS']) { if (root[n] === undefined) { throw new Error('missing tasks export: ' + n); } } for (const n of ['MAX_SUITE_FILE_BYTES','SUITE_FILE_VALIDITY_DEFAULTS','SUITE_FILE_DEFAULT_CAPTURE_LEVEL','SUITE_FILE_FINDING_CODES']) { if (root[n] === undefined) { throw new Error('missing suite-file export: ' + n); } } if (root.MAX_SUITE_FILE_BYTES !== 1048576) { throw new Error('MAX_SUITE_FILE_BYTES is not the pinned 1 MiB cap'); } await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); const contract = await import('@mcpjam/sdk/contract'); for (const n of ['canonicalJson','canonicalDigest','sha256Hex','resolveScoreDefinition','definitionHash','evaluationConfigHash','buildEvaluationConfigSnapshot','aggregateEvaluationConfigHash','allGatingScorersPassed','scorePassed','finalizeScoreResult','errorScoreResult','skippedScoreResult','notApplicableScoreResult','predicateScoreDefinition','scoreResultFromPredicateResult','toolMatchScoreDefinition','fromToolMatchResult','legacyTestScoreDefinition','fromLegacyTestOutcome','fromGoalCompletionCase','fromCriterionResult','generatedPredicateScorerId','deriveStageResults','stageDerivationToMetadata','mintCaseId','mintSuiteId','isOpaqueId','isPromptStep','isToolCallStep','isInteractStep','isAssertStep','isWidgetAssertion']) { if (typeof contract[n] !== 'function') { throw new Error('missing contract export: ' + n); } } for (const n of ['scoreResultSchema','resolvedScoreDefinitionSchema','evaluationConfigSnapshotSchema','PREDICATES_VERSION','MAX_SCORER_ID_LENGTH','TOOL_MATCH_SCORER_ID','LEGACY_TEST_SCORER_ID','opaqueIdSchema','CASE_ID_PREFIX','SUITE_ID_PREFIX','USER_VALUE_STAGES','STAGE_STATES','FAILURE_CATEGORIES','ITERATION_STATUSES','IMPORT_MAPPING_STATUSES','STAGE_ANALYZER_VERSION','STAGE_REASONS','STAGE_METADATA_KEYS','MAX_EVIDENCE_REASONS','MAX_EVIDENCE_REASON_CHARS','stageDerivationSchema','stageResultRowSchema','stageReasonSchema','TEST_STEP_KINDS','testStepSchema','stepsSchema','elementLocatorSchema','evalSuiteFileSchema','evalSuiteFileStructuralSchema','evalSuiteFileCaseSchema','evalSuiteFileJsonSchema','EVAL_SUITE_SCHEMA_ID','EVAL_SUITE_SCHEMA_VERSION','MAX_SUITE_FILE_CASES']) { if (contract[n] === undefined) { throw new Error('missing contract export: ' + n); } } if (typeof contract.evalSuiteFileJsonSchema !== 'object' || !contract.evalSuiteFileJsonSchema.properties?.cases) { throw new Error('contract export evalSuiteFileJsonSchema is not the generated JSON Schema document'); } await import('@mcpjam/sdk/host-config'); const w = await import('@mcpjam/sdk/widget-runtime'); for (const n of ['getToolVisibility','isVisibleToModelOnly','isVisibleToAppOnly','LoggingTransport','buildOuterAllowAttribute','buildOuterSandboxAttribute','resolveIframeSandboxPolicy','createHostAppBridge','registerHostBridgeHandlers']) { if (typeof w[n] !== 'function') { throw new Error('missing widget-runtime export: ' + n); } } if (w['DEFAULT_IFRAME_SANDBOX'] === undefined) { throw new Error('missing widget-runtime export: DEFAULT_IFRAME_SANDBOX'); } const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation','checkHostCompatibilityOperation','createTunnelOperation','closeTunnelOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } } const pub = await import('@mcpjam/sdk/public-api'); for (const n of ['isV1ErrorCode','mapInternalCode','v1ErrorBody','v1Page','classifyRuntimeError']) { if (typeof pub[n] !== 'function') { throw new Error('missing public-api export: ' + n); } } for (const n of ['V1_ERROR_CODES','V1_ERROR_STATUS','INTERNAL_TO_V1_CODE']) { if (pub[n] === undefined) { throw new Error('missing public-api export: ' + n); } } const hc = await import('@mcpjam/sdk/host-compat'); for (const n of ['deriveServerRequirements','evaluateHostCompat','evaluateAllHosts','buildMarketHostProfiles','evaluateMarketHosts','scanWidgetUsage','detectHostCompatBridgeFromMeta','scanWidgetSource','scanWidgetMeta','bundledHostCompatCatalog','buildHostProfilesFromCatalog','fetchHostCompatCatalog','hostConfigFieldsToImageSupport','imageSupportToHostConfigFields']) { if (typeof hc[n] !== 'function') { throw new Error('missing host-compat export: ' + n); } } if (hc['HostCompatBridge'] === undefined) { throw new Error('missing host-compat export: HostCompatBridge'); } for (const n of ['MCP_APPS_FULL','MCP_APPS_CHATGPT','MCP_APPS_MISTRAL','MCP_APPS_CURSOR','MCP_APPS_GOOSE','MCP_APPS_COPILOT','MCP_APPS_SLACK','MCP_APPS_VSCODE','MCP_APPS_NO_CLAIMS']) { if (typeof hc[n] !== 'object') { throw new Error('missing host-compat capability export: ' + n); } } for (const n of ['hostCompatCatalogSchema','hostCompatCatalogEnvelopeSchema','mcpAppsCapabilitiesSchema']) { if (hc[n] === undefined) { throw new Error('missing host-compat schema export: ' + n); } } const pb = await import('@mcpjam/sdk/plugin-bundle'); for (const n of ['parsePluginBundle','containsRootPlaceholder','containsPluginPlaceholder','selectPluginMcpServerMap','detectPluginMcpTransport']) { if (typeof pb[n] !== 'function') { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['DEFAULT_PLUGIN_BUNDLE_LIMITS','PLUGIN_ISSUE_CODES','PLUGIN_MANIFEST_SCHEMAS','PLUGIN_MCP_SCHEMAS','PLUGIN_MANIFEST_PATH','PLUGIN_ROOT_PLACEHOLDERS','PLUGIN_DATA_PLACEHOLDER','PluginBundleError','MCP_CONFIG_PATH']) { if (pb[n] === undefined) { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['normalizeBundlePath','validateBundleEntries','parseYamlLite','caseFoldPath','PluginIssueCollector','sha256HexBytes','computeAggregateHash']) { if (pb[n] !== undefined) { throw new Error('plugin-bundle should not re-export internal helper: ' + n); } } const on = await import('@mcpjam/sdk/oauth/node'); for (const n of ['assertOutboundOAuthUrlAllowed','isDisallowedIpAddress','isLoopbackOAuthUrl','isPrivateHost','OAuthOutboundUrlBlockedError','executeOAuthProxy','executeDebugOAuthProxy','fetchOAuthMetadata','fetchPinnedPublicDocument','validateUrl','OAuthProxyError']) { if (typeof on[n] !== 'function') { throw new Error('missing oauth/node export: ' + n); } }\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs","check:eval-suite-schema":"tsx scripts/generate-eval-suite-schema.ts --check","generate:eval-suite-schema":"tsx scripts/generate-eval-suite-schema.ts","check:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts --check","generate:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts","check:eval-verdict-policy-schema":"tsx scripts/generate-eval-verdict-policy-schema.ts --check","check:host-catalog-fallback:remote":"node --import tsx scripts/check-host-catalog-fallback-remote.ts","generate:eval-verdict-policy-schema":"tsx scripts/generate-eval-verdict-policy-schema.ts"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.2.0"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","ajv":"^8.17.1","zod":"^4.2.0","yaml":"^2.9.0","jszip":"^3.10.1","xpath":"^0.0.34","xml-crypto":"^6.1.2","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@noble/hashes":"^2.3.0","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@xmldom/xmldom":"^0.8.13","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"2.0.0","@modelcontextprotocol/ext-apps":"^1.7.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.7","esbuild":"^0.28.2","ts-jest":"^29.4.12","prettier":"^3.9.6","cross-env":"^10.1.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.68.0","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.6","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.68.0","@modelcontextprotocol/node":"2.0.0","@modelcontextprotocol/server":"2.0.0","@typescript-eslint/eslint-plugin":"^8.68.0","@modelcontextprotocol/server-everything":"^2026.8.18"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_8.5.1_1788311100702_0.922656008361479","host":"s3://npm-registry-packages-npm-production"}},"8.5.2":{"name":"@mcpjam/sdk","version":"8.5.2","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@8.5.2","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"2b4f82d2f5c36b32e9b644a39dce345aca4eb203","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-8.5.2.tgz","fileCount":74,"integrity":"sha512-Wi8rWRzsHKx1pOhbrlN9/rxrQzHj3tbCZEvZHMSBqH/BYXZY2bbUpNBvMSPdFu3bGDizPA/U9fjVrjqO7jGyJg==","signatures":[{"sig":"MEQCIDhLCEg8yO0juSXpNgGFaeX0HyAO4mI3rFijeGbcL9epAiAf3XWAbbE9HFJhLFKLUB3Xag4xuemtC6nC899halko1g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25350113},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./contract":{"types":"./dist/contract/index.d.ts","import":"./dist/contract/index.js","default":"./dist/contract/index.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./oauth/node":{"types":"./dist/oauth/node.d.ts","import":"./dist/oauth/node.js","default":"./dist/oauth/node.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./public-api":{"types":"./dist/public-api/index.d.ts","import":"./dist/public-api/index.js","default":"./dist/public-api/index.js"},"./host-compat":{"types":"./dist/host-compat/index.d.ts","import":"./dist/host-compat/index.js","default":"./dist/host-compat/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./plugin-bundle":{"types":"./dist/plugin-bundle/index.d.ts","import":"./dist/plugin-bundle/index.js","default":"./dist/plugin-bundle/index.js"},"./widget-runtime":{"types":"./dist/widget-runtime/index.d.ts","import":"./dist/widget-runtime/index.js","default":"./dist/widget-runtime/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"},"./host-config/templates":{"types":"./dist/host-config/templates/index.d.ts","import":"./dist/host-config/templates/index.js","default":"./dist/host-config/templates/index.js"}},"gitHead":"f8ec625dec91cb9540048f5218c84f25691bf0af","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && cross-env NODE_OPTIONS=--max-old-space-size=8192 tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"const root = await import('@mcpjam/sdk'); for (const n of ['driveTaskToTerminal','TaskLifecycleEngine','taskLifecycleKey','isTerminalLifecycleStatus','extensionTaskToObservation','legacyTaskToObservation','isUnknownTaskError','canDeclareTasksExtension','readDeclaredInputCapabilities','TaskInputRejectedError','createStrictElicitationContentValidator','retryAfterMsFromError']) { if (typeof root[n] !== 'function') { throw new Error('missing tasks export: ' + n); } } for (const n of ['loadEvalSuiteFile','resolveEvalSuiteFile','serializeEvalSuiteFile','formatSuiteFileFindings','suiteFilePointer']) { if (typeof root[n] !== 'function') { throw new Error('missing suite-file export: ' + n); } } for (const n of ['TERMINAL_LIFECYCLE_STATUSES','UNKNOWN_TASK_ERROR_CODE','DEFAULT_TASK_INPUT_LIMITS']) { if (root[n] === undefined) { throw new Error('missing tasks export: ' + n); } } for (const n of ['MAX_SUITE_FILE_BYTES','SUITE_FILE_VALIDITY_DEFAULTS','SUITE_FILE_DEFAULT_CAPTURE_LEVEL','SUITE_FILE_FINDING_CODES']) { if (root[n] === undefined) { throw new Error('missing suite-file export: ' + n); } } if (root.MAX_SUITE_FILE_BYTES !== 1048576) { throw new Error('MAX_SUITE_FILE_BYTES is not the pinned 1 MiB cap'); } await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); const contract = await import('@mcpjam/sdk/contract'); for (const n of ['canonicalJson','canonicalDigest','sha256Hex','resolveScoreDefinition','definitionHash','evaluationConfigHash','buildEvaluationConfigSnapshot','aggregateEvaluationConfigHash','allGatingScorersPassed','scorePassed','finalizeScoreResult','errorScoreResult','skippedScoreResult','notApplicableScoreResult','predicateScoreDefinition','scoreResultFromPredicateResult','toolMatchScoreDefinition','fromToolMatchResult','legacyTestScoreDefinition','fromLegacyTestOutcome','fromGoalCompletionCase','fromCriterionResult','generatedPredicateScorerId','deriveStageResults','stageDerivationToMetadata','mintCaseId','mintSuiteId','isOpaqueId','isPromptStep','isToolCallStep','isInteractStep','isAssertStep','isWidgetAssertion']) { if (typeof contract[n] !== 'function') { throw new Error('missing contract export: ' + n); } } for (const n of ['scoreResultSchema','resolvedScoreDefinitionSchema','evaluationConfigSnapshotSchema','PREDICATES_VERSION','MAX_SCORER_ID_LENGTH','TOOL_MATCH_SCORER_ID','LEGACY_TEST_SCORER_ID','opaqueIdSchema','CASE_ID_PREFIX','SUITE_ID_PREFIX','USER_VALUE_STAGES','STAGE_STATES','FAILURE_CATEGORIES','ITERATION_STATUSES','IMPORT_MAPPING_STATUSES','STAGE_ANALYZER_VERSION','STAGE_REASONS','STAGE_METADATA_KEYS','MAX_EVIDENCE_REASONS','MAX_EVIDENCE_REASON_CHARS','stageDerivationSchema','stageResultRowSchema','stageReasonSchema','TEST_STEP_KINDS','testStepSchema','stepsSchema','elementLocatorSchema','evalSuiteFileSchema','evalSuiteFileStructuralSchema','evalSuiteFileCaseSchema','evalSuiteFileJsonSchema','EVAL_SUITE_SCHEMA_ID','EVAL_SUITE_SCHEMA_VERSION','MAX_SUITE_FILE_CASES']) { if (contract[n] === undefined) { throw new Error('missing contract export: ' + n); } } if (typeof contract.evalSuiteFileJsonSchema !== 'object' || !contract.evalSuiteFileJsonSchema.properties?.cases) { throw new Error('contract export evalSuiteFileJsonSchema is not the generated JSON Schema document'); } await import('@mcpjam/sdk/host-config'); const w = await import('@mcpjam/sdk/widget-runtime'); for (const n of ['getToolVisibility','isVisibleToModelOnly','isVisibleToAppOnly','LoggingTransport','buildOuterAllowAttribute','buildOuterSandboxAttribute','resolveIframeSandboxPolicy','createHostAppBridge','registerHostBridgeHandlers']) { if (typeof w[n] !== 'function') { throw new Error('missing widget-runtime export: ' + n); } } if (w['DEFAULT_IFRAME_SANDBOX'] === undefined) { throw new Error('missing widget-runtime export: DEFAULT_IFRAME_SANDBOX'); } const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation','checkHostCompatibilityOperation','createTunnelOperation','closeTunnelOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } } const pub = await import('@mcpjam/sdk/public-api'); for (const n of ['isV1ErrorCode','mapInternalCode','v1ErrorBody','v1Page','classifyRuntimeError']) { if (typeof pub[n] !== 'function') { throw new Error('missing public-api export: ' + n); } } for (const n of ['V1_ERROR_CODES','V1_ERROR_STATUS','INTERNAL_TO_V1_CODE']) { if (pub[n] === undefined) { throw new Error('missing public-api export: ' + n); } } const hc = await import('@mcpjam/sdk/host-compat'); for (const n of ['deriveServerRequirements','evaluateHostCompat','evaluateAllHosts','buildMarketHostProfiles','evaluateMarketHosts','scanWidgetUsage','detectHostCompatBridgeFromMeta','scanWidgetSource','scanWidgetMeta','bundledHostCompatCatalog','buildHostProfilesFromCatalog','fetchHostCompatCatalog','hostConfigFieldsToImageSupport','imageSupportToHostConfigFields']) { if (typeof hc[n] !== 'function') { throw new Error('missing host-compat export: ' + n); } } if (hc['HostCompatBridge'] === undefined) { throw new Error('missing host-compat export: HostCompatBridge'); } for (const n of ['MCP_APPS_FULL','MCP_APPS_CHATGPT','MCP_APPS_MISTRAL','MCP_APPS_CURSOR','MCP_APPS_GOOSE','MCP_APPS_COPILOT','MCP_APPS_SLACK','MCP_APPS_VSCODE','MCP_APPS_NO_CLAIMS']) { if (typeof hc[n] !== 'object') { throw new Error('missing host-compat capability export: ' + n); } } for (const n of ['hostCompatCatalogSchema','hostCompatCatalogEnvelopeSchema','mcpAppsCapabilitiesSchema']) { if (hc[n] === undefined) { throw new Error('missing host-compat schema export: ' + n); } } const pb = await import('@mcpjam/sdk/plugin-bundle'); for (const n of ['parsePluginBundle','containsRootPlaceholder','containsPluginPlaceholder','selectPluginMcpServerMap','detectPluginMcpTransport']) { if (typeof pb[n] !== 'function') { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['DEFAULT_PLUGIN_BUNDLE_LIMITS','PLUGIN_ISSUE_CODES','PLUGIN_MANIFEST_SCHEMAS','PLUGIN_MCP_SCHEMAS','PLUGIN_MANIFEST_PATH','PLUGIN_ROOT_PLACEHOLDERS','PLUGIN_DATA_PLACEHOLDER','PluginBundleError','MCP_CONFIG_PATH']) { if (pb[n] === undefined) { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['normalizeBundlePath','validateBundleEntries','parseYamlLite','caseFoldPath','PluginIssueCollector','sha256HexBytes','computeAggregateHash']) { if (pb[n] !== undefined) { throw new Error('plugin-bundle should not re-export internal helper: ' + n); } } const on = await import('@mcpjam/sdk/oauth/node'); for (const n of ['assertOutboundOAuthUrlAllowed','isDisallowedIpAddress','isLoopbackOAuthUrl','isPrivateHost','OAuthOutboundUrlBlockedError','executeOAuthProxy','executeDebugOAuthProxy','fetchOAuthMetadata','fetchPinnedPublicDocument','validateUrl','OAuthProxyError']) { if (typeof on[n] !== 'function') { throw new Error('missing oauth/node export: ' + n); } }\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs","check:eval-suite-schema":"tsx scripts/generate-eval-suite-schema.ts --check","generate:eval-suite-schema":"tsx scripts/generate-eval-suite-schema.ts","check:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts --check","generate:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts","check:eval-verdict-policy-schema":"tsx scripts/generate-eval-verdict-policy-schema.ts --check","check:host-catalog-fallback:remote":"node --import tsx scripts/check-host-catalog-fallback-remote.ts","generate:eval-verdict-policy-schema":"tsx scripts/generate-eval-verdict-policy-schema.ts"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.2.0"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","ajv":"^8.17.1","zod":"^4.2.0","yaml":"^2.9.0","jszip":"^3.10.1","xpath":"^0.0.34","xml-crypto":"^6.1.2","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@noble/hashes":"^2.3.0","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@xmldom/xmldom":"^0.8.13","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"2.0.0","@modelcontextprotocol/ext-apps":"^1.7.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.7","esbuild":"^0.28.2","ts-jest":"^29.4.12","prettier":"^3.9.6","cross-env":"^10.1.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.68.0","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.6","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.68.0","@modelcontextprotocol/node":"2.0.0","@modelcontextprotocol/server":"2.0.0","@typescript-eslint/eslint-plugin":"^8.68.0","@modelcontextprotocol/server-everything":"^2026.8.18"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_8.5.2_1788381224543_0.801643722882085","host":"s3://npm-registry-packages-npm-production"}},"8.6.0":{"name":"@mcpjam/sdk","version":"8.6.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@8.6.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"843a157bf9aca7661ddc9937fd94a6229ac988d8","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-8.6.0.tgz","fileCount":74,"integrity":"sha512-pAFfYjiEAPdWcH+Av3dQ2GZZwLsrthLP57FYcZMHAEGO36nB2jhiM/+3c/jwiSflSFOSDRgSLV+RH41agdIbcg==","signatures":[{"sig":"MEQCIHa8E4AT68MxHoOtTfvICyTrFc0f8afeRCuI8WokGrX7AiBkrjRBYDxo086nmhz1xki/+mF2VOuv0J3ReN0cXjJGdQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQC6cZLFHwWGln2By30xTrftWJb9LFevhXNozINBFSru7wIgL//5ywkdcZaWyi17oc0xibKb30cd1rasrM2eKIv7eoY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25696778},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./contract":{"types":"./dist/contract/index.d.ts","import":"./dist/contract/index.js","default":"./dist/contract/index.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./oauth/node":{"types":"./dist/oauth/node.d.ts","import":"./dist/oauth/node.js","default":"./dist/oauth/node.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./public-api":{"types":"./dist/public-api/index.d.ts","import":"./dist/public-api/index.js","default":"./dist/public-api/index.js"},"./host-compat":{"types":"./dist/host-compat/index.d.ts","import":"./dist/host-compat/index.js","default":"./dist/host-compat/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./plugin-bundle":{"types":"./dist/plugin-bundle/index.d.ts","import":"./dist/plugin-bundle/index.js","default":"./dist/plugin-bundle/index.js"},"./widget-runtime":{"types":"./dist/widget-runtime/index.d.ts","import":"./dist/widget-runtime/index.js","default":"./dist/widget-runtime/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"},"./host-config/templates":{"types":"./dist/host-config/templates/index.d.ts","import":"./dist/host-config/templates/index.js","default":"./dist/host-config/templates/index.js"}},"gitHead":"f652b521365f7bbc1249a01e057d58127e6cfb07","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && cross-env NODE_OPTIONS=--max-old-space-size=8192 tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && node --input-type=module -e \"const root = await import('@mcpjam/sdk'); for (const n of ['driveTaskToTerminal','TaskLifecycleEngine','taskLifecycleKey','isTerminalLifecycleStatus','extensionTaskToObservation','legacyTaskToObservation','isUnknownTaskError','canDeclareTasksExtension','readDeclaredInputCapabilities','TaskInputRejectedError','createStrictElicitationContentValidator','retryAfterMsFromError']) { if (typeof root[n] !== 'function') { throw new Error('missing tasks export: ' + n); } } for (const n of ['loadEvalSuiteFile','resolveEvalSuiteFile','serializeEvalSuiteFile','formatSuiteFileFindings','suiteFilePointer']) { if (typeof root[n] !== 'function') { throw new Error('missing suite-file export: ' + n); } } for (const n of ['TERMINAL_LIFECYCLE_STATUSES','UNKNOWN_TASK_ERROR_CODE','DEFAULT_TASK_INPUT_LIMITS']) { if (root[n] === undefined) { throw new Error('missing tasks export: ' + n); } } for (const n of ['MAX_SUITE_FILE_BYTES','SUITE_FILE_VALIDITY_DEFAULTS','SUITE_FILE_DEFAULT_CAPTURE_LEVEL','SUITE_FILE_FINDING_CODES']) { if (root[n] === undefined) { throw new Error('missing suite-file export: ' + n); } } if (root.MAX_SUITE_FILE_BYTES !== 1048576) { throw new Error('MAX_SUITE_FILE_BYTES is not the pinned 1 MiB cap'); } await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); const contract = await import('@mcpjam/sdk/contract'); for (const n of ['canonicalJson','canonicalDigest','sha256Hex','resolveScoreDefinition','definitionHash','evaluationConfigHash','buildEvaluationConfigSnapshot','aggregateEvaluationConfigHash','allGatingScorersPassed','scorePassed','finalizeScoreResult','errorScoreResult','skippedScoreResult','notApplicableScoreResult','predicateScoreDefinition','scoreResultFromPredicateResult','toolMatchScoreDefinition','fromToolMatchResult','legacyTestScoreDefinition','fromLegacyTestOutcome','fromGoalCompletionCase','fromCriterionResult','generatedPredicateScorerId','deriveStageResults','stageDerivationToMetadata','mintCaseId','mintSuiteId','isOpaqueId','isPromptStep','isToolCallStep','isInteractStep','isAssertStep','isWidgetAssertion']) { if (typeof contract[n] !== 'function') { throw new Error('missing contract export: ' + n); } } for (const n of ['scoreResultSchema','resolvedScoreDefinitionSchema','evaluationConfigSnapshotSchema','PREDICATES_VERSION','MAX_SCORER_ID_LENGTH','TOOL_MATCH_SCORER_ID','LEGACY_TEST_SCORER_ID','opaqueIdSchema','CASE_ID_PREFIX','SUITE_ID_PREFIX','USER_VALUE_STAGES','STAGE_STATES','FAILURE_CATEGORIES','ITERATION_STATUSES','IMPORT_MAPPING_STATUSES','STAGE_ANALYZER_VERSION','STAGE_REASONS','STAGE_METADATA_KEYS','MAX_EVIDENCE_REASONS','MAX_EVIDENCE_REASON_CHARS','stageDerivationSchema','stageResultRowSchema','stageReasonSchema','TEST_STEP_KINDS','testStepSchema','stepsSchema','elementLocatorSchema','evalSuiteFileSchema','evalSuiteFileStructuralSchema','evalSuiteFileCaseSchema','evalSuiteFileJsonSchema','EVAL_SUITE_SCHEMA_ID','EVAL_SUITE_SCHEMA_VERSION','MAX_SUITE_FILE_CASES']) { if (contract[n] === undefined) { throw new Error('missing contract export: ' + n); } } if (typeof contract.evalSuiteFileJsonSchema !== 'object' || !contract.evalSuiteFileJsonSchema.properties?.cases) { throw new Error('contract export evalSuiteFileJsonSchema is not the generated JSON Schema document'); } await import('@mcpjam/sdk/host-config'); const w = await import('@mcpjam/sdk/widget-runtime'); for (const n of ['getToolVisibility','isVisibleToModelOnly','isVisibleToAppOnly','LoggingTransport','buildOuterAllowAttribute','buildOuterSandboxAttribute','resolveIframeSandboxPolicy','createHostAppBridge','registerHostBridgeHandlers']) { if (typeof w[n] !== 'function') { throw new Error('missing widget-runtime export: ' + n); } } if (w['DEFAULT_IFRAME_SANDBOX'] === undefined) { throw new Error('missing widget-runtime export: DEFAULT_IFRAME_SANDBOX'); } const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation','checkHostCompatibilityOperation','createTunnelOperation','closeTunnelOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } } const pub = await import('@mcpjam/sdk/public-api'); for (const n of ['isV1ErrorCode','mapInternalCode','v1ErrorBody','v1Page','classifyRuntimeError']) { if (typeof pub[n] !== 'function') { throw new Error('missing public-api export: ' + n); } } for (const n of ['V1_ERROR_CODES','V1_ERROR_STATUS','INTERNAL_TO_V1_CODE']) { if (pub[n] === undefined) { throw new Error('missing public-api export: ' + n); } } const hc = await import('@mcpjam/sdk/host-compat'); for (const n of ['deriveServerRequirements','evaluateHostCompat','evaluateAllHosts','buildMarketHostProfiles','evaluateMarketHosts','scanWidgetUsage','detectHostCompatBridgeFromMeta','scanWidgetSource','scanWidgetMeta','bundledHostCompatCatalog','buildHostProfilesFromCatalog','fetchHostCompatCatalog','hostConfigFieldsToImageSupport','imageSupportToHostConfigFields']) { if (typeof hc[n] !== 'function') { throw new Error('missing host-compat export: ' + n); } } if (hc['HostCompatBridge'] === undefined) { throw new Error('missing host-compat export: HostCompatBridge'); } for (const n of ['MCP_APPS_FULL','MCP_APPS_CHATGPT','MCP_APPS_MISTRAL','MCP_APPS_CURSOR','MCP_APPS_GOOSE','MCP_APPS_COPILOT','MCP_APPS_SLACK','MCP_APPS_VSCODE','MCP_APPS_NO_CLAIMS']) { if (typeof hc[n] !== 'object') { throw new Error('missing host-compat capability export: ' + n); } } for (const n of ['hostCompatCatalogSchema','hostCompatCatalogEnvelopeSchema','mcpAppsCapabilitiesSchema']) { if (hc[n] === undefined) { throw new Error('missing host-compat schema export: ' + n); } } const pb = await import('@mcpjam/sdk/plugin-bundle'); for (const n of ['parsePluginBundle','containsRootPlaceholder','containsPluginPlaceholder','selectPluginMcpServerMap','detectPluginMcpTransport']) { if (typeof pb[n] !== 'function') { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['DEFAULT_PLUGIN_BUNDLE_LIMITS','PLUGIN_ISSUE_CODES','PLUGIN_MANIFEST_SCHEMAS','PLUGIN_MCP_SCHEMAS','PLUGIN_MANIFEST_PATH','PLUGIN_ROOT_PLACEHOLDERS','PLUGIN_DATA_PLACEHOLDER','PluginBundleError','MCP_CONFIG_PATH']) { if (pb[n] === undefined) { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['normalizeBundlePath','validateBundleEntries','parseYamlLite','caseFoldPath','PluginIssueCollector','sha256HexBytes','computeAggregateHash']) { if (pb[n] !== undefined) { throw new Error('plugin-bundle should not re-export internal helper: ' + n); } } const on = await import('@mcpjam/sdk/oauth/node'); for (const n of ['assertOutboundOAuthUrlAllowed','isDisallowedIpAddress','isLoopbackOAuthUrl','isPrivateHost','OAuthOutboundUrlBlockedError','executeOAuthProxy','executeDebugOAuthProxy','fetchOAuthMetadata','fetchPinnedPublicDocument','validateUrl','OAuthProxyError']) { if (typeof on[n] !== 'function') { throw new Error('missing oauth/node export: ' + n); } }\"","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs","check:eval-suite-schema":"tsx scripts/generate-eval-suite-schema.ts --check","generate:eval-suite-schema":"tsx scripts/generate-eval-suite-schema.ts","check:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts --check","generate:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts","check:eval-verdict-policy-schema":"tsx scripts/generate-eval-verdict-policy-schema.ts --check","check:host-catalog-fallback:remote":"node --import tsx scripts/check-host-catalog-fallback-remote.ts","generate:eval-verdict-policy-schema":"tsx scripts/generate-eval-verdict-policy-schema.ts"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.2.0"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","ajv":"^8.17.1","zod":"^4.2.0","yaml":"^2.9.0","jszip":"^3.10.1","xpath":"^0.0.34","xml-crypto":"^6.1.2","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@noble/hashes":"^2.3.0","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@xmldom/xmldom":"^0.8.13","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"2.0.0","@modelcontextprotocol/ext-apps":"^1.7.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.7","esbuild":"^0.28.2","ts-jest":"^29.4.12","prettier":"^3.9.6","cross-env":"^10.1.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.68.0","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.6","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.68.0","@modelcontextprotocol/node":"2.0.0","@modelcontextprotocol/server":"2.0.0","@typescript-eslint/eslint-plugin":"^8.68.0","@modelcontextprotocol/server-everything":"^2026.8.18"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_8.6.0_1788487863790_0.4035166189016415","host":"s3://npm-registry-packages-npm-production"}},"8.7.0":{"name":"@mcpjam/sdk","version":"8.7.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@8.7.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"574f81272af84ed9051d41d06c941f5a1bc050e1","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-8.7.0.tgz","fileCount":74,"integrity":"sha512-YVnt+Q1iaULyeLEQL3b5R4NGL+8JDwd1ZDRkgEcz1NmZThI9nKr8a4XT8pKhRncW9o2IHkJaAmYWDXnYhPWldg==","signatures":[{"sig":"MEUCIQC34zDtcHnObpA6VoGLSH6WOJyf/kpRFuXoGUorH1JwZAIgRkpBWCzW/CZtlrH7HEKirM0mv8ySLtCoXlwsFim+yP8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIGD29qlThxQ0IBbaylSolR7RSY35OUnuX8fYfNGKbMryAiEA5UasOk/KI6qBa/d/peHB1IJ3AgkWL3RntXJFxn/b/Lo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28431847},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./contract":{"types":"./dist/contract/index.d.ts","import":"./dist/contract/index.js","default":"./dist/contract/index.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./oauth/node":{"types":"./dist/oauth/node.d.ts","import":"./dist/oauth/node.js","default":"./dist/oauth/node.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./public-api":{"types":"./dist/public-api/index.d.ts","import":"./dist/public-api/index.js","default":"./dist/public-api/index.js"},"./host-compat":{"types":"./dist/host-compat/index.d.ts","import":"./dist/host-compat/index.js","default":"./dist/host-compat/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./plugin-bundle":{"types":"./dist/plugin-bundle/index.d.ts","import":"./dist/plugin-bundle/index.js","default":"./dist/plugin-bundle/index.js"},"./widget-runtime":{"types":"./dist/widget-runtime/index.d.ts","import":"./dist/widget-runtime/index.js","default":"./dist/widget-runtime/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"},"./host-config/templates":{"types":"./dist/host-config/templates/index.d.ts","import":"./dist/host-config/templates/index.js","default":"./dist/host-config/templates/index.js"}},"gitHead":"fed74ac632067c666798ed99eff887f8d321b881","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && cross-env NODE_OPTIONS=--max-old-space-size=8192 tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && npm run test:packaging:assert","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","test:packaging:assert":"node --input-type=module -e \"const root = await import('@mcpjam/sdk'); for (const n of ['driveTaskToTerminal','TaskLifecycleEngine','taskLifecycleKey','isTerminalLifecycleStatus','extensionTaskToObservation','legacyTaskToObservation','isUnknownTaskError','canDeclareTasksExtension','readDeclaredInputCapabilities','TaskInputRejectedError','createStrictElicitationContentValidator','retryAfterMsFromError']) { if (typeof root[n] !== 'function') { throw new Error('missing tasks export: ' + n); } } for (const n of ['loadEvalSuiteFile','resolveEvalSuiteFile','serializeEvalSuiteFile','formatSuiteFileFindings','suiteFilePointer']) { if (typeof root[n] !== 'function') { throw new Error('missing suite-file export: ' + n); } } for (const n of ['TERMINAL_LIFECYCLE_STATUSES','UNKNOWN_TASK_ERROR_CODE','DEFAULT_TASK_INPUT_LIMITS']) { if (root[n] === undefined) { throw new Error('missing tasks export: ' + n); } } for (const n of ['MAX_SUITE_FILE_BYTES','SUITE_FILE_VALIDITY_DEFAULTS','SUITE_FILE_DEFAULT_CAPTURE_LEVEL','SUITE_FILE_FINDING_CODES']) { if (root[n] === undefined) { throw new Error('missing suite-file export: ' + n); } } if (root.MAX_SUITE_FILE_BYTES !== 1048576) { throw new Error('MAX_SUITE_FILE_BYTES is not the pinned 1 MiB cap'); } await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); const contract = await import('@mcpjam/sdk/contract'); for (const n of ['canonicalJson','canonicalDigest','sha256Hex','resolveScoreDefinition','definitionHash','evaluationConfigHash','buildEvaluationConfigSnapshot','aggregateEvaluationConfigHash','allGatingScorersPassed','scorePassed','finalizeScoreResult','errorScoreResult','skippedScoreResult','notApplicableScoreResult','predicateScoreDefinition','scoreResultFromPredicateResult','toolMatchScoreDefinition','fromToolMatchResult','legacyTestScoreDefinition','fromLegacyTestOutcome','fromGoalCompletionCase','fromCriterionResult','generatedPredicateScorerId','deriveStageResults','stageDerivationToMetadata','mintCaseId','mintSuiteId','isOpaqueId','buildEvalRunRouteFacts','deriveTrialRoute','classifyRouteTrial','evalTrialRate','buildDescriptionExperimentReport','isPromptStep','isToolCallStep','isInteractStep','isAssertStep','isWidgetAssertion','evaluateSuiteGateEvidence','composeSuiteGateWithBaseReport','parseSuiteGatePolicyForAuthoring','parseSuiteGatePolicyForRead','normalizeSuiteGatePolicy','suiteGatePolicyHash']) { if (typeof contract[n] !== 'function') { throw new Error('missing contract export: ' + n); } } for (const n of ['scoreResultSchema','resolvedScoreDefinitionSchema','evaluationConfigSnapshotSchema','PREDICATES_VERSION','MAX_SCORER_ID_LENGTH','TOOL_MATCH_SCORER_ID','LEGACY_TEST_SCORER_ID','opaqueIdSchema','CASE_ID_PREFIX','SUITE_ID_PREFIX','USER_VALUE_STAGES','STAGE_STATES','FAILURE_CATEGORIES','ITERATION_STATUSES','IMPORT_MAPPING_STATUSES','STAGE_ANALYZER_VERSION','STAGE_REASONS','STAGE_METADATA_KEYS','MAX_EVIDENCE_REASONS','MAX_EVIDENCE_REASON_CHARS','stageDerivationSchema','stageResultRowSchema','stageReasonSchema','TEST_STEP_KINDS','testStepSchema','stepsSchema','elementLocatorSchema','evalSuiteFileSchema','evalSuiteFileStructuralSchema','evalSuiteFileCaseSchema','evalSuiteFileJsonSchema','EVAL_SUITE_SCHEMA_ID','EVAL_SUITE_SCHEMA_VERSION','MAX_SUITE_FILE_CASES','EVAL_RUN_ROUTE_FACTS_SCHEMA_VERSION','ROUTE_FACTS_VERSION','evalRunRouteFactsSchema','EVAL_ROUTE_TAGS','NO_TOOL_PATH_KEY','buildDescriptionExperimentReport','descriptionExperimentReportSchema','DESCRIPTION_EXPERIMENT_SCHEMA_VERSION','SUITE_GATE_SCHEMA_VERSION','SUITE_GATE_EVALUATOR_VERSION','suiteGatePolicySchema','suiteGateEvidenceSchema','suiteGateReportSchema']) { if (contract[n] === undefined) { throw new Error('missing contract export: ' + n); } } if (typeof contract.evalSuiteFileJsonSchema !== 'object' || !contract.evalSuiteFileJsonSchema.properties?.cases) { throw new Error('contract export evalSuiteFileJsonSchema is not the generated JSON Schema document'); } await import('@mcpjam/sdk/host-config'); const w = await import('@mcpjam/sdk/widget-runtime'); for (const n of ['getToolVisibility','isVisibleToModelOnly','isVisibleToAppOnly','LoggingTransport','buildOuterAllowAttribute','buildOuterSandboxAttribute','resolveIframeSandboxPolicy','createHostAppBridge','registerHostBridgeHandlers']) { if (typeof w[n] !== 'function') { throw new Error('missing widget-runtime export: ' + n); } } if (w['DEFAULT_IFRAME_SANDBOX'] === undefined) { throw new Error('missing widget-runtime export: DEFAULT_IFRAME_SANDBOX'); } const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation','checkHostCompatibilityOperation','createTunnelOperation','closeTunnelOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','applyToolDescriptionOverrides','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } } const pub = await import('@mcpjam/sdk/public-api'); for (const n of ['isV1ErrorCode','mapInternalCode','v1ErrorBody','v1Page','classifyRuntimeError']) { if (typeof pub[n] !== 'function') { throw new Error('missing public-api export: ' + n); } } for (const n of ['V1_ERROR_CODES','V1_ERROR_STATUS','INTERNAL_TO_V1_CODE']) { if (pub[n] === undefined) { throw new Error('missing public-api export: ' + n); } } const hc = await import('@mcpjam/sdk/host-compat'); for (const n of ['deriveServerRequirements','evaluateHostCompat','evaluateAllHosts','buildMarketHostProfiles','evaluateMarketHosts','scanWidgetUsage','detectHostCompatBridgeFromMeta','scanWidgetSource','scanWidgetMeta','bundledHostCompatCatalog','buildHostProfilesFromCatalog','fetchHostCompatCatalog','hostConfigFieldsToImageSupport','imageSupportToHostConfigFields']) { if (typeof hc[n] !== 'function') { throw new Error('missing host-compat export: ' + n); } } if (hc['HostCompatBridge'] === undefined) { throw new Error('missing host-compat export: HostCompatBridge'); } for (const n of ['MCP_APPS_FULL','MCP_APPS_CHATGPT','MCP_APPS_MISTRAL','MCP_APPS_CURSOR','MCP_APPS_GOOSE','MCP_APPS_COPILOT','MCP_APPS_SLACK','MCP_APPS_VSCODE','MCP_APPS_NO_CLAIMS']) { if (typeof hc[n] !== 'object') { throw new Error('missing host-compat capability export: ' + n); } } for (const n of ['hostCompatCatalogSchema','hostCompatCatalogEnvelopeSchema','mcpAppsCapabilitiesSchema']) { if (hc[n] === undefined) { throw new Error('missing host-compat schema export: ' + n); } } const pb = await import('@mcpjam/sdk/plugin-bundle'); for (const n of ['parsePluginBundle','containsRootPlaceholder','containsPluginPlaceholder','selectPluginMcpServerMap','detectPluginMcpTransport']) { if (typeof pb[n] !== 'function') { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['DEFAULT_PLUGIN_BUNDLE_LIMITS','PLUGIN_ISSUE_CODES','PLUGIN_MANIFEST_SCHEMAS','PLUGIN_MCP_SCHEMAS','PLUGIN_MANIFEST_PATH','PLUGIN_ROOT_PLACEHOLDERS','PLUGIN_DATA_PLACEHOLDER','PluginBundleError','MCP_CONFIG_PATH']) { if (pb[n] === undefined) { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['normalizeBundlePath','validateBundleEntries','parseYamlLite','caseFoldPath','PluginIssueCollector','sha256HexBytes','computeAggregateHash']) { if (pb[n] !== undefined) { throw new Error('plugin-bundle should not re-export internal helper: ' + n); } } const on = await import('@mcpjam/sdk/oauth/node'); for (const n of ['assertOutboundOAuthUrlAllowed','isDisallowedIpAddress','isLoopbackOAuthUrl','isPrivateHost','OAuthOutboundUrlBlockedError','executeOAuthProxy','executeDebugOAuthProxy','fetchOAuthMetadata','fetchPinnedPublicDocument','validateUrl','OAuthProxyError']) { if (typeof on[n] !== 'function') { throw new Error('missing oauth/node export: ' + n); } }\"","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs","check:eval-suite-schema":"tsx scripts/generate-eval-suite-schema.ts --check","generate:eval-suite-schema":"tsx scripts/generate-eval-suite-schema.ts","check:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts --check","generate:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts","check:eval-verdict-policy-schema":"tsx scripts/generate-eval-verdict-policy-schema.ts --check","check:host-catalog-fallback:remote":"node --import tsx scripts/check-host-catalog-fallback-remote.ts","generate:eval-verdict-policy-schema":"tsx scripts/generate-eval-verdict-policy-schema.ts"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.2.0"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","ajv":"^8.17.1","zod":"^4.2.0","yaml":"^2.9.0","jszip":"^3.10.1","xpath":"^0.0.34","xml-crypto":"^6.1.2","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@noble/hashes":"^2.3.0","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@xmldom/xmldom":"^0.8.13","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"2.0.0","@modelcontextprotocol/ext-apps":"^1.7.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.7","esbuild":"^0.28.2","ts-jest":"^29.4.12","prettier":"^3.9.6","cross-env":"^10.1.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.68.0","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.6","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.68.0","@modelcontextprotocol/node":"2.0.0","@modelcontextprotocol/server":"2.0.0","@typescript-eslint/eslint-plugin":"^8.68.0","@modelcontextprotocol/server-everything":"^2026.8.18"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_8.7.0_1789017774864_0.09344402553456543","host":"s3://npm-registry-packages-npm-production"}},"8.7.1":{"name":"@mcpjam/sdk","version":"8.7.1","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@8.7.1","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"482015c3491d661bc83bb35ef1bca347027a6b6e","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-8.7.1.tgz","fileCount":74,"integrity":"sha512-YzN/iD1I1u3m/twQjdJ2soTm4C226AfRTtgit0E6Y08rAgkISLUlpA6WDRhJhwW4ty65J6LI58atRrCxk3E5NA==","signatures":[{"sig":"MEYCIQClPZd++ocsyMo6MMjMfvcW2u/VuJ0xV/Lzg49klOzqNwIhALWskfym84+xJ672NGMzqf1CwdugHUBUNGIjz40ePjBJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCID/e1J3hyuAcIUZWGF7VLGYPMXONWdDkqiCFNHxoYY27AiAqm7NQK5diaRwsRFiWscGZKUbe+F4iIW5oYI7hOyPvow==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28431847},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./contract":{"types":"./dist/contract/index.d.ts","import":"./dist/contract/index.js","default":"./dist/contract/index.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./oauth/node":{"types":"./dist/oauth/node.d.ts","import":"./dist/oauth/node.js","default":"./dist/oauth/node.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./public-api":{"types":"./dist/public-api/index.d.ts","import":"./dist/public-api/index.js","default":"./dist/public-api/index.js"},"./host-compat":{"types":"./dist/host-compat/index.d.ts","import":"./dist/host-compat/index.js","default":"./dist/host-compat/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./plugin-bundle":{"types":"./dist/plugin-bundle/index.d.ts","import":"./dist/plugin-bundle/index.js","default":"./dist/plugin-bundle/index.js"},"./widget-runtime":{"types":"./dist/widget-runtime/index.d.ts","import":"./dist/widget-runtime/index.js","default":"./dist/widget-runtime/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"},"./host-config/templates":{"types":"./dist/host-config/templates/index.d.ts","import":"./dist/host-config/templates/index.js","default":"./dist/host-config/templates/index.js"}},"gitHead":"b691adf73acb5bd334020334d46077292f8eb69f","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run bundle:runtimes && cross-env NODE_OPTIONS=--max-old-space-size=8192 tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && npm run test:packaging:assert","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","test:packaging:assert":"node --input-type=module -e \"const root = await import('@mcpjam/sdk'); for (const n of ['driveTaskToTerminal','TaskLifecycleEngine','taskLifecycleKey','isTerminalLifecycleStatus','extensionTaskToObservation','legacyTaskToObservation','isUnknownTaskError','canDeclareTasksExtension','readDeclaredInputCapabilities','TaskInputRejectedError','createStrictElicitationContentValidator','retryAfterMsFromError']) { if (typeof root[n] !== 'function') { throw new Error('missing tasks export: ' + n); } } for (const n of ['loadEvalSuiteFile','resolveEvalSuiteFile','serializeEvalSuiteFile','formatSuiteFileFindings','suiteFilePointer']) { if (typeof root[n] !== 'function') { throw new Error('missing suite-file export: ' + n); } } for (const n of ['TERMINAL_LIFECYCLE_STATUSES','UNKNOWN_TASK_ERROR_CODE','DEFAULT_TASK_INPUT_LIMITS']) { if (root[n] === undefined) { throw new Error('missing tasks export: ' + n); } } for (const n of ['MAX_SUITE_FILE_BYTES','SUITE_FILE_VALIDITY_DEFAULTS','SUITE_FILE_DEFAULT_CAPTURE_LEVEL','SUITE_FILE_FINDING_CODES']) { if (root[n] === undefined) { throw new Error('missing suite-file export: ' + n); } } if (root.MAX_SUITE_FILE_BYTES !== 1048576) { throw new Error('MAX_SUITE_FILE_BYTES is not the pinned 1 MiB cap'); } await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); await import('@mcpjam/sdk/predicates'); const contract = await import('@mcpjam/sdk/contract'); for (const n of ['canonicalJson','canonicalDigest','sha256Hex','resolveScoreDefinition','definitionHash','evaluationConfigHash','buildEvaluationConfigSnapshot','aggregateEvaluationConfigHash','allGatingScorersPassed','scorePassed','finalizeScoreResult','errorScoreResult','skippedScoreResult','notApplicableScoreResult','predicateScoreDefinition','scoreResultFromPredicateResult','toolMatchScoreDefinition','fromToolMatchResult','legacyTestScoreDefinition','fromLegacyTestOutcome','fromGoalCompletionCase','fromCriterionResult','generatedPredicateScorerId','deriveStageResults','stageDerivationToMetadata','mintCaseId','mintSuiteId','isOpaqueId','buildEvalRunRouteFacts','deriveTrialRoute','classifyRouteTrial','evalTrialRate','buildDescriptionExperimentReport','isPromptStep','isToolCallStep','isInteractStep','isAssertStep','isWidgetAssertion','evaluateSuiteGateEvidence','composeSuiteGateWithBaseReport','parseSuiteGatePolicyForAuthoring','parseSuiteGatePolicyForRead','normalizeSuiteGatePolicy','suiteGatePolicyHash']) { if (typeof contract[n] !== 'function') { throw new Error('missing contract export: ' + n); } } for (const n of ['scoreResultSchema','resolvedScoreDefinitionSchema','evaluationConfigSnapshotSchema','PREDICATES_VERSION','MAX_SCORER_ID_LENGTH','TOOL_MATCH_SCORER_ID','LEGACY_TEST_SCORER_ID','opaqueIdSchema','CASE_ID_PREFIX','SUITE_ID_PREFIX','USER_VALUE_STAGES','STAGE_STATES','FAILURE_CATEGORIES','ITERATION_STATUSES','IMPORT_MAPPING_STATUSES','STAGE_ANALYZER_VERSION','STAGE_REASONS','STAGE_METADATA_KEYS','MAX_EVIDENCE_REASONS','MAX_EVIDENCE_REASON_CHARS','stageDerivationSchema','stageResultRowSchema','stageReasonSchema','TEST_STEP_KINDS','testStepSchema','stepsSchema','elementLocatorSchema','evalSuiteFileSchema','evalSuiteFileStructuralSchema','evalSuiteFileCaseSchema','evalSuiteFileJsonSchema','EVAL_SUITE_SCHEMA_ID','EVAL_SUITE_SCHEMA_VERSION','MAX_SUITE_FILE_CASES','EVAL_RUN_ROUTE_FACTS_SCHEMA_VERSION','ROUTE_FACTS_VERSION','evalRunRouteFactsSchema','EVAL_ROUTE_TAGS','NO_TOOL_PATH_KEY','buildDescriptionExperimentReport','descriptionExperimentReportSchema','DESCRIPTION_EXPERIMENT_SCHEMA_VERSION','SUITE_GATE_SCHEMA_VERSION','SUITE_GATE_EVALUATOR_VERSION','suiteGatePolicySchema','suiteGateEvidenceSchema','suiteGateReportSchema']) { if (contract[n] === undefined) { throw new Error('missing contract export: ' + n); } } if (typeof contract.evalSuiteFileJsonSchema !== 'object' || !contract.evalSuiteFileJsonSchema.properties?.cases) { throw new Error('contract export evalSuiteFileJsonSchema is not the generated JSON Schema document'); } await import('@mcpjam/sdk/host-config'); const w = await import('@mcpjam/sdk/widget-runtime'); for (const n of ['getToolVisibility','isVisibleToModelOnly','isVisibleToAppOnly','LoggingTransport','buildOuterAllowAttribute','buildOuterSandboxAttribute','resolveIframeSandboxPolicy','createHostAppBridge','registerHostBridgeHandlers']) { if (typeof w[n] !== 'function') { throw new Error('missing widget-runtime export: ' + n); } } if (w['DEFAULT_IFRAME_SANDBOX'] === undefined) { throw new Error('missing widget-runtime export: DEFAULT_IFRAME_SANDBOX'); } const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation','checkHostCompatibilityOperation','createTunnelOperation','closeTunnelOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','applyToolDescriptionOverrides','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } } const pub = await import('@mcpjam/sdk/public-api'); for (const n of ['isV1ErrorCode','mapInternalCode','v1ErrorBody','v1Page','classifyRuntimeError']) { if (typeof pub[n] !== 'function') { throw new Error('missing public-api export: ' + n); } } for (const n of ['V1_ERROR_CODES','V1_ERROR_STATUS','INTERNAL_TO_V1_CODE']) { if (pub[n] === undefined) { throw new Error('missing public-api export: ' + n); } } const hc = await import('@mcpjam/sdk/host-compat'); for (const n of ['deriveServerRequirements','evaluateHostCompat','evaluateAllHosts','buildMarketHostProfiles','evaluateMarketHosts','scanWidgetUsage','detectHostCompatBridgeFromMeta','scanWidgetSource','scanWidgetMeta','bundledHostCompatCatalog','buildHostProfilesFromCatalog','fetchHostCompatCatalog','hostConfigFieldsToImageSupport','imageSupportToHostConfigFields']) { if (typeof hc[n] !== 'function') { throw new Error('missing host-compat export: ' + n); } } if (hc['HostCompatBridge'] === undefined) { throw new Error('missing host-compat export: HostCompatBridge'); } for (const n of ['MCP_APPS_FULL','MCP_APPS_CHATGPT','MCP_APPS_MISTRAL','MCP_APPS_CURSOR','MCP_APPS_GOOSE','MCP_APPS_COPILOT','MCP_APPS_SLACK','MCP_APPS_VSCODE','MCP_APPS_NO_CLAIMS']) { if (typeof hc[n] !== 'object') { throw new Error('missing host-compat capability export: ' + n); } } for (const n of ['hostCompatCatalogSchema','hostCompatCatalogEnvelopeSchema','mcpAppsCapabilitiesSchema']) { if (hc[n] === undefined) { throw new Error('missing host-compat schema export: ' + n); } } const pb = await import('@mcpjam/sdk/plugin-bundle'); for (const n of ['parsePluginBundle','containsRootPlaceholder','containsPluginPlaceholder','selectPluginMcpServerMap','detectPluginMcpTransport']) { if (typeof pb[n] !== 'function') { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['DEFAULT_PLUGIN_BUNDLE_LIMITS','PLUGIN_ISSUE_CODES','PLUGIN_MANIFEST_SCHEMAS','PLUGIN_MCP_SCHEMAS','PLUGIN_MANIFEST_PATH','PLUGIN_ROOT_PLACEHOLDERS','PLUGIN_DATA_PLACEHOLDER','PluginBundleError','MCP_CONFIG_PATH']) { if (pb[n] === undefined) { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['normalizeBundlePath','validateBundleEntries','parseYamlLite','caseFoldPath','PluginIssueCollector','sha256HexBytes','computeAggregateHash']) { if (pb[n] !== undefined) { throw new Error('plugin-bundle should not re-export internal helper: ' + n); } } const on = await import('@mcpjam/sdk/oauth/node'); for (const n of ['assertOutboundOAuthUrlAllowed','isDisallowedIpAddress','isLoopbackOAuthUrl','isPrivateHost','OAuthOutboundUrlBlockedError','executeOAuthProxy','executeDebugOAuthProxy','fetchOAuthMetadata','fetchPinnedPublicDocument','validateUrl','OAuthProxyError']) { if (typeof on[n] !== 'function') { throw new Error('missing oauth/node export: ' + n); } }\"","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs","check:eval-suite-schema":"tsx scripts/generate-eval-suite-schema.ts --check","generate:eval-suite-schema":"tsx scripts/generate-eval-suite-schema.ts","check:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts --check","generate:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts","check:eval-verdict-policy-schema":"tsx scripts/generate-eval-verdict-policy-schema.ts --check","check:host-catalog-fallback:remote":"node --import tsx scripts/check-host-catalog-fallback-remote.ts","generate:eval-verdict-policy-schema":"tsx scripts/generate-eval-verdict-policy-schema.ts"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.2.0"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","ajv":"^8.17.1","zod":"^4.2.0","yaml":"^2.9.0","jszip":"^3.10.1","xpath":"^0.0.34","xml-crypto":"^6.1.2","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@noble/hashes":"^2.3.0","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@xmldom/xmldom":"^0.8.13","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"2.0.0","@modelcontextprotocol/ext-apps":"^1.7.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.7","esbuild":"^0.28.2","ts-jest":"^29.4.12","prettier":"^3.9.6","cross-env":"^10.1.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.68.0","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.6","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.68.0","@modelcontextprotocol/node":"2.0.0","@modelcontextprotocol/server":"2.0.0","@typescript-eslint/eslint-plugin":"^8.68.0","@modelcontextprotocol/server-everything":"^2026.8.18"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_8.7.1_1789018085836_0.8697670395227568","host":"s3://npm-registry-packages-npm-production"}},"8.8.0":{"name":"@mcpjam/sdk","version":"8.8.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@8.8.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"f3f8f264e4f8fe9633fb9954e9b7366193ad8247","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-8.8.0.tgz","fileCount":76,"integrity":"sha512-IMQa7XK1VzwTcJc+71o/smT537StE7rPNnQi/x0c+l76yMS/KLUeqLb/Ulk65hiT3rhezy0PsuG3VYJFl5FB+A==","signatures":[{"sig":"MEYCIQDP8GuxzxYpA7g2UM2JmJ9V9VBPubP0f5uI7E44YUmpcwIhAIV/PiDa6y6LrYVrhhQK2txFRO9mkZ3fXtdAd/8ODS+z","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDN6RW9pzNjF2LvWE+p5cabdz5TSoqifWNbuEHuaKDRNwIgYQ/ShEHku1lh+CyotbqixK3eXliRcXAcncWyWQHqLqw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29127766},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./contract":{"types":"./dist/contract/index.d.ts","import":"./dist/contract/index.js","default":"./dist/contract/index.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./assertions":{"types":"./dist/assertions/index.d.ts","import":"./dist/assertions/index.js","default":"./dist/assertions/index.js"},"./oauth/node":{"types":"./dist/oauth/node.d.ts","import":"./dist/oauth/node.js","default":"./dist/oauth/node.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./public-api":{"types":"./dist/public-api/index.d.ts","import":"./dist/public-api/index.js","default":"./dist/public-api/index.js"},"./host-compat":{"types":"./dist/host-compat/index.d.ts","import":"./dist/host-compat/index.js","default":"./dist/host-compat/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./plugin-bundle":{"types":"./dist/plugin-bundle/index.d.ts","import":"./dist/plugin-bundle/index.js","default":"./dist/plugin-bundle/index.js"},"./widget-runtime":{"types":"./dist/widget-runtime/index.d.ts","import":"./dist/widget-runtime/index.js","default":"./dist/widget-runtime/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"},"./host-config/templates":{"types":"./dist/host-config/templates/index.d.ts","import":"./dist/host-config/templates/index.js","default":"./dist/host-config/templates/index.js"}},"gitHead":"3aaab050bb73711017674e270fca79ab69608deb","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run build -w @mcpjam/evaluators && npm run bundle:runtimes && cross-env NODE_OPTIONS=--max-old-space-size=8192 tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","pretest":"npm run build -w @mcpjam/evaluators","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","pretypecheck":"npm run build -w @mcpjam/evaluators","pretest:watch":"npm run build -w @mcpjam/evaluators","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && npm run test:packaging:assert","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","pretest:coverage":"npm run build -w @mcpjam/evaluators","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","test:packaging:assert":"node --input-type=module -e \"const root = await import('@mcpjam/sdk'); for (const n of ['driveTaskToTerminal','TaskLifecycleEngine','taskLifecycleKey','isTerminalLifecycleStatus','extensionTaskToObservation','legacyTaskToObservation','isUnknownTaskError','canDeclareTasksExtension','readDeclaredInputCapabilities','TaskInputRejectedError','createStrictElicitationContentValidator','retryAfterMsFromError']) { if (typeof root[n] !== 'function') { throw new Error('missing tasks export: ' + n); } } for (const n of ['loadEvalSuiteFile','resolveEvalSuiteFile','serializeEvalSuiteFile','formatSuiteFileFindings','suiteFilePointer']) { if (typeof root[n] !== 'function') { throw new Error('missing suite-file export: ' + n); } } for (const n of ['gradingPolicyFromLoadedSuiteFile','gradingPolicyFromPlatformSuiteSettings','planPlatformSuiteGradingUpdate','gradingPolicyForReportedRun']) { if (typeof root[n] !== 'function') { throw new Error('missing grading-policy export: ' + n); } } for (const n of ['TERMINAL_LIFECYCLE_STATUSES','UNKNOWN_TASK_ERROR_CODE','DEFAULT_TASK_INPUT_LIMITS']) { if (root[n] === undefined) { throw new Error('missing tasks export: ' + n); } } for (const n of ['MAX_SUITE_FILE_BYTES','SUITE_FILE_VALIDITY_DEFAULTS','SUITE_FILE_DEFAULT_CAPTURE_LEVEL','SUITE_FILE_FINDING_CODES']) { if (root[n] === undefined) { throw new Error('missing suite-file export: ' + n); } } if (root.MAX_SUITE_FILE_BYTES !== 1048576) { throw new Error('MAX_SUITE_FILE_BYTES is not the pinned 1 MiB cap'); } for (const n of ['GRADING_POLICY_READ_REFUSALS','LEGACY_SUITE_WIDE_THRESHOLD_PERCENT']) { if (root[n] === undefined) { throw new Error('missing grading-policy export: ' + n); } } if (root.LEGACY_SUITE_WIDE_THRESHOLD_PERCENT !== 100) { throw new Error('the legacy suite-wide producer fallback is not the historical 100 percent'); } if (!root.GRADING_POLICY_READ_REFUSALS.includes('deploymentDoesNotReportPolicy')) { throw new Error('the capability refusal for a deployment that cannot name the policy is gone'); } await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); const predicatesSubpath = await import('@mcpjam/sdk/predicates'); const assertionsSubpath = await import('@mcpjam/sdk/assertions'); for (const n of ['evaluatePredicates','stripCheckPolicy']) { if (typeof predicatesSubpath[n] !== 'function') { throw new Error('missing predicates export: ' + n); } } for (const n of ['evaluateAssertion','evaluateAssertions','allAssertionsPassed','stripAssertionPolicy','assertionRole','requiresRenderObservations']) { if (typeof assertionsSubpath[n] !== 'function') { throw new Error('missing assertions export: ' + n); } } for (const n of ['assertionSchema','assertionUnion','ASSERTION_POLICY_KEYS']) { if (assertionsSubpath[n] === undefined) { throw new Error('missing assertions export: ' + n); } } for (const n of ['assertion','judge','runEvaluators']) { if (typeof root[n] !== 'function') { throw new Error('missing evaluator runtime export: ' + n); } } const contract = await import('@mcpjam/sdk/contract'); for (const n of ['canonicalJson','canonicalDigest','sha256Hex','resolveScoreDefinition','definitionHash','evaluationConfigHash','buildEvaluationConfigSnapshot','aggregateEvaluationConfigHash','allGatingScorersPassed','scorePassed','finalizeScoreResult','errorScoreResult','skippedScoreResult','notApplicableScoreResult','predicateScoreDefinition','scoreResultFromPredicateResult','toolMatchScoreDefinition','fromToolMatchResult','legacyTestScoreDefinition','fromLegacyTestOutcome','fromGoalCompletionCase','fromCriterionResult','generatedPredicateScorerId','toEvaluatorResult','fromEvaluatorResult','finalizeEvaluatorResult','errorEvaluatorResult','skippedEvaluatorResult','notApplicableEvaluatorResult','toScoreRawOutcome','resolveEvaluatorDefinition','evaluatorDefinitionHash','allGatingEvaluatorsPassed','evaluatorKindOf','isSelectionStageAssertionKind','isRecommendedDefaultAssertionKind','deriveStageResults','stageDerivationToMetadata','mintCaseId','mintSuiteId','isOpaqueId','buildEvalRunRouteFacts','deriveTrialRoute','classifyRouteTrial','evalTrialRate','buildDescriptionExperimentReport','isPromptStep','isToolCallStep','isInteractStep','isAssertStep','isWidgetAssertion','evaluateSuiteGateEvidence','composeSuiteGateWithBaseReport','parseSuiteGatePolicyForAuthoring','parseSuiteGatePolicyForRead','normalizeSuiteGatePolicy','suiteGatePolicyHash','resolveGradingPolicyFromSuiteFile','resolveGradingPolicyFromHostedSuite','resolveGradingPolicyFromRunReporting','planEvalGradingPolicyEdit','resolveEvalGradingIterations','resolveEvalGradingValidityPolicy','evalPassCriterionFraction','hostedGradingStorageFromDto']) { if (typeof contract[n] !== 'function') { throw new Error('missing contract export: ' + n); } } for (const n of ['scoreResultSchema','evaluatorResultSchema','evaluatorResultArraySchema','evaluatorKindSchema','evaluatorStatusSchema','EVALUATOR_KINDS','EVALUATOR_RESULT_SCHEMA_VERSION','EVALUATOR_STAGE','ASSERTION_STAGE','ASSERTION_KINDS','EVALUATOR_PRESENTATION_GROUP','RECOMMENDED_DEFAULT_ASSERTIONS','PREDICATE_STAGE','GRADER_STAGE','resolvedScoreDefinitionSchema','evaluationConfigSnapshotSchema','PREDICATES_VERSION','MAX_SCORER_ID_LENGTH','TOOL_MATCH_SCORER_ID','LEGACY_TEST_SCORER_ID','opaqueIdSchema','CASE_ID_PREFIX','SUITE_ID_PREFIX','USER_VALUE_STAGES','STAGE_STATES','FAILURE_CATEGORIES','ITERATION_STATUSES','IMPORT_MAPPING_STATUSES','STAGE_ANALYZER_VERSION','STAGE_REASONS','STAGE_METADATA_KEYS','MAX_EVIDENCE_REASONS','MAX_EVIDENCE_REASON_CHARS','stageDerivationSchema','stageResultRowSchema','stageReasonSchema','TEST_STEP_KINDS','testStepSchema','stepsSchema','elementLocatorSchema','evalSuiteFileSchema','evalSuiteFileStructuralSchema','evalSuiteFileV2StructuralSchema','evalSuiteFileV2JsonSchema','EVAL_SUITE_SCHEMA_ID_V2','EVAL_SUITE_SCHEMA_VERSION_2','EVAL_SUITE_SCHEMA_VERSIONS','MAX_ITERATIONS','evalSuiteFileCaseSchema','evalSuiteFileJsonSchema','EVAL_SUITE_SCHEMA_ID','EVAL_SUITE_SCHEMA_VERSION','MAX_SUITE_FILE_CASES','EVAL_RUN_ROUTE_FACTS_SCHEMA_VERSION','ROUTE_FACTS_VERSION','evalRunRouteFactsSchema','EVAL_ROUTE_TAGS','NO_TOOL_PATH_KEY','buildDescriptionExperimentReport','descriptionExperimentReportSchema','DESCRIPTION_EXPERIMENT_SCHEMA_VERSION','SUITE_GATE_SCHEMA_VERSION','SUITE_GATE_EVALUATOR_VERSION','suiteGatePolicySchema','suiteGateEvidenceSchema','suiteGateReportSchema','EVAL_GRADING_POLICY_ORIGINS','EVAL_GRADING_POLICY_REFUSALS','EVAL_SUITE_WIDE_POPULATIONS','EVAL_RUN_REPORTING_PRODUCERS','LEGACY_SUITE_WIDE_THRESHOLD_PERCENT','MAX_MINIMUM_ITERATIONS','SUITE_FILE_VALIDITY_DEFAULTS','SUITE_FILE_DEFAULT_COVERAGE','evalGradingPolicySchema','evalPassCriterionSchema','evalIterationRuleSchema','evalGradingValiditySchema']) { if (contract[n] === undefined) { throw new Error('missing contract export: ' + n); } } if (contract.PREDICATE_STAGE !== contract.ASSERTION_STAGE) { throw new Error('legacy contract export PREDICATE_STAGE is not the ASSERTION_STAGE object'); } if (contract.GRADER_STAGE !== contract.EVALUATOR_STAGE) { throw new Error('legacy contract export GRADER_STAGE is not the EVALUATOR_STAGE object'); } for (const n of ['SUITE_FILE_VALIDITY_DEFAULTS','SUITE_FILE_DEFAULT_COVERAGE']) { if (JSON.stringify(contract[n]) !== JSON.stringify(root[n])) { throw new Error('contract and root disagree on ' + n + ': the validity table has been forked'); } } if (contract.SUITE_FILE_VALIDITY_DEFAULTS.minCompletionRate !== 0.8 || contract.SUITE_FILE_VALIDITY_DEFAULTS.maxEvaluatorErrorRate !== 0.1) { throw new Error('suite-file validity defaults are not the documented 0.8/0.1'); } if (contract.SUITE_FILE_DEFAULT_COVERAGE.kind !== 'allConfiguredTrialsAttempted') { throw new Error('an omitted minEligibleTrials must select the stricter coverage rule'); } if (typeof contract.evalSuiteFileJsonSchema !== 'object' || !contract.evalSuiteFileJsonSchema.properties?.cases) { throw new Error('contract export evalSuiteFileJsonSchema is not the generated JSON Schema document'); } await import('@mcpjam/sdk/host-config'); const w = await import('@mcpjam/sdk/widget-runtime'); for (const n of ['getToolVisibility','isVisibleToModelOnly','isVisibleToAppOnly','LoggingTransport','buildOuterAllowAttribute','buildOuterSandboxAttribute','resolveIframeSandboxPolicy','createHostAppBridge','registerHostBridgeHandlers']) { if (typeof w[n] !== 'function') { throw new Error('missing widget-runtime export: ' + n); } } if (w['DEFAULT_IFRAME_SANDBOX'] === undefined) { throw new Error('missing widget-runtime export: DEFAULT_IFRAME_SANDBOX'); } const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation','checkHostCompatibilityOperation','createTunnelOperation','closeTunnelOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','applyToolDescriptionOverrides','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } } const pub = await import('@mcpjam/sdk/public-api'); for (const n of ['isV1ErrorCode','mapInternalCode','v1ErrorBody','v1Page','classifyRuntimeError']) { if (typeof pub[n] !== 'function') { throw new Error('missing public-api export: ' + n); } } for (const n of ['V1_ERROR_CODES','V1_ERROR_STATUS','INTERNAL_TO_V1_CODE']) { if (pub[n] === undefined) { throw new Error('missing public-api export: ' + n); } } const hc = await import('@mcpjam/sdk/host-compat'); for (const n of ['deriveServerRequirements','evaluateHostCompat','evaluateAllHosts','buildMarketHostProfiles','evaluateMarketHosts','scanWidgetUsage','detectHostCompatBridgeFromMeta','scanWidgetSource','scanWidgetMeta','bundledHostCompatCatalog','buildHostProfilesFromCatalog','fetchHostCompatCatalog','hostConfigFieldsToImageSupport','imageSupportToHostConfigFields']) { if (typeof hc[n] !== 'function') { throw new Error('missing host-compat export: ' + n); } } if (hc['HostCompatBridge'] === undefined) { throw new Error('missing host-compat export: HostCompatBridge'); } for (const n of ['MCP_APPS_FULL','MCP_APPS_CHATGPT','MCP_APPS_MISTRAL','MCP_APPS_CURSOR','MCP_APPS_GOOSE','MCP_APPS_COPILOT','MCP_APPS_SLACK','MCP_APPS_VSCODE','MCP_APPS_NO_CLAIMS']) { if (typeof hc[n] !== 'object') { throw new Error('missing host-compat capability export: ' + n); } } for (const n of ['hostCompatCatalogSchema','hostCompatCatalogEnvelopeSchema','mcpAppsCapabilitiesSchema']) { if (hc[n] === undefined) { throw new Error('missing host-compat schema export: ' + n); } } const pb = await import('@mcpjam/sdk/plugin-bundle'); for (const n of ['parsePluginBundle','containsRootPlaceholder','containsPluginPlaceholder','selectPluginMcpServerMap','detectPluginMcpTransport']) { if (typeof pb[n] !== 'function') { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['DEFAULT_PLUGIN_BUNDLE_LIMITS','PLUGIN_ISSUE_CODES','PLUGIN_MANIFEST_SCHEMAS','PLUGIN_MCP_SCHEMAS','PLUGIN_MANIFEST_PATH','PLUGIN_ROOT_PLACEHOLDERS','PLUGIN_DATA_PLACEHOLDER','PluginBundleError','MCP_CONFIG_PATH']) { if (pb[n] === undefined) { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['normalizeBundlePath','validateBundleEntries','parseYamlLite','caseFoldPath','PluginIssueCollector','sha256HexBytes','computeAggregateHash']) { if (pb[n] !== undefined) { throw new Error('plugin-bundle should not re-export internal helper: ' + n); } } const on = await import('@mcpjam/sdk/oauth/node'); for (const n of ['assertOutboundOAuthUrlAllowed','isDisallowedIpAddress','isLoopbackOAuthUrl','isPrivateHost','OAuthOutboundUrlBlockedError','executeOAuthProxy','executeDebugOAuthProxy','fetchOAuthMetadata','fetchPinnedPublicDocument','validateUrl','OAuthProxyError']) { if (typeof on[n] !== 'function') { throw new Error('missing oauth/node export: ' + n); } }\"","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs","check:eval-suite-schema":"tsx scripts/generate-eval-suite-schema.ts --check","generate:eval-suite-schema":"tsx scripts/generate-eval-suite-schema.ts","precheck:eval-suite-schema":"npm run build -w @mcpjam/evaluators","check:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts --check","pregenerate:eval-suite-schema":"npm run build -w @mcpjam/evaluators","generate:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts","check:eval-verdict-policy-schema":"tsx scripts/generate-eval-verdict-policy-schema.ts --check","check:host-catalog-fallback:remote":"node --import tsx scripts/check-host-catalog-fallback-remote.ts","generate:eval-verdict-policy-schema":"tsx scripts/generate-eval-verdict-policy-schema.ts","precheck:eval-verdict-policy-schema":"npm run build -w @mcpjam/evaluators","pregenerate:eval-verdict-policy-schema":"npm run build -w @mcpjam/evaluators"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.2.0"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","ajv":"^8.17.1","zod":"^4.2.0","yaml":"^2.9.0","jszip":"^3.10.1","xpath":"^0.0.34","xml-crypto":"^6.1.2","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@noble/hashes":"^2.3.0","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@xmldom/xmldom":"^0.8.13","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@mcpjam/evaluators":"^0.2.0","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"2.0.0","@modelcontextprotocol/ext-apps":"^1.7.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.7","esbuild":"^0.28.2","ts-jest":"^29.4.12","prettier":"^3.9.6","cross-env":"^10.1.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.68.0","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.6","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.68.0","@modelcontextprotocol/node":"2.0.0","@modelcontextprotocol/server":"2.0.0","@typescript-eslint/eslint-plugin":"^8.68.0","@modelcontextprotocol/server-everything":"^2026.8.18"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_8.8.0_1789508051709_0.608244598559041","host":"s3://npm-registry-packages-npm-production"}},"8.9.0":{"name":"@mcpjam/sdk","version":"8.9.0","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"author":{"name":"MCPJam"},"license":"MIT","_id":"@mcpjam/sdk@8.9.0","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"dist":{"shasum":"54efdbaaf5beaa92a3ffd2a7b27fc759d9a4c5a4","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-8.9.0.tgz","fileCount":77,"integrity":"sha512-XveKTZcJwzRGEIQiyCVprUQFnrb/YEZbEjlXAJgTaU1fxSrD0E185TTcrRTn0OFz7zxwghNTMNt5EBuNcAvlTQ==","signatures":[{"sig":"MEUCIQC33TaHKpd/m9v2RQgQ7vtwfXGdgeGnmVPPGJopVk1iawIgG/AgGMve9CPl/yWnnXXBTwBsEr/BPJkUgDsCpa5/mK4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIHAUjoRqvLMBOnFlov7xzIs8czCjxmhWeifR3KocYSbCAiBxxZcSwY1dpuBBNNTGC3VqPt8tRemHrMjjkeWNeKeFnA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29969510},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./contract":{"types":"./dist/contract/index.d.ts","import":"./dist/contract/index.js","default":"./dist/contract/index.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./assertions":{"types":"./dist/assertions/index.d.ts","import":"./dist/assertions/index.js","default":"./dist/assertions/index.js"},"./oauth/node":{"types":"./dist/oauth/node.d.ts","import":"./dist/oauth/node.js","default":"./dist/oauth/node.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./public-api":{"types":"./dist/public-api/index.d.ts","import":"./dist/public-api/index.js","default":"./dist/public-api/index.js"},"./host-compat":{"types":"./dist/host-compat/index.d.ts","import":"./dist/host-compat/index.js","default":"./dist/host-compat/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./plugin-bundle":{"types":"./dist/plugin-bundle/index.d.ts","import":"./dist/plugin-bundle/index.js","default":"./dist/plugin-bundle/index.js"},"./widget-runtime":{"types":"./dist/widget-runtime/index.d.ts","import":"./dist/widget-runtime/index.js","default":"./dist/widget-runtime/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"},"./host-config/templates":{"types":"./dist/host-config/templates/index.d.ts","import":"./dist/host-config/templates/index.js","default":"./dist/host-config/templates/index.js"}},"gitHead":"54ea622919e4a717dc765f03293c175692b0f248","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run build -w @mcpjam/evaluators && npm run bundle:runtimes && cross-env NODE_OPTIONS=--max-old-space-size=8192 tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","pretest":"npm run build -w @mcpjam/evaluators","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","pretypecheck":"npm run build -w @mcpjam/evaluators","pretest:watch":"npm run build -w @mcpjam/evaluators","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && npm run test:packaging:assert","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","pretest:coverage":"npm run build -w @mcpjam/evaluators","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","test:packaging:assert":"node --input-type=module -e \"const root = await import('@mcpjam/sdk'); for (const n of ['driveTaskToTerminal','TaskLifecycleEngine','taskLifecycleKey','isTerminalLifecycleStatus','extensionTaskToObservation','legacyTaskToObservation','isUnknownTaskError','canDeclareTasksExtension','readDeclaredInputCapabilities','TaskInputRejectedError','createStrictElicitationContentValidator','retryAfterMsFromError']) { if (typeof root[n] !== 'function') { throw new Error('missing tasks export: ' + n); } } for (const n of ['loadEvalSuiteFile','resolveEvalSuiteFile','serializeEvalSuiteFile','formatSuiteFileFindings','suiteFilePointer']) { if (typeof root[n] !== 'function') { throw new Error('missing suite-file export: ' + n); } } for (const n of ['releaseMcpjamModelLeases','McpjamLeaseClient','McpjamLeaseError']) { if (typeof root[n] !== 'function') { throw new Error('missing mcpjam-lease export: ' + n); } } for (const n of ['gradingPolicyFromLoadedSuiteFile','gradingPolicyFromPlatformSuiteSettings','planPlatformSuiteGradingUpdate','gradingPolicyForReportedRun']) { if (typeof root[n] !== 'function') { throw new Error('missing grading-policy export: ' + n); } } for (const n of ['TERMINAL_LIFECYCLE_STATUSES','UNKNOWN_TASK_ERROR_CODE','DEFAULT_TASK_INPUT_LIMITS']) { if (root[n] === undefined) { throw new Error('missing tasks export: ' + n); } } for (const n of ['MAX_SUITE_FILE_BYTES','SUITE_FILE_VALIDITY_DEFAULTS','SUITE_FILE_DEFAULT_CAPTURE_LEVEL','SUITE_FILE_FINDING_CODES']) { if (root[n] === undefined) { throw new Error('missing suite-file export: ' + n); } } if (root.MAX_SUITE_FILE_BYTES !== 1048576) { throw new Error('MAX_SUITE_FILE_BYTES is not the pinned 1 MiB cap'); } for (const n of ['GRADING_POLICY_READ_REFUSALS','LEGACY_SUITE_WIDE_THRESHOLD_PERCENT']) { if (root[n] === undefined) { throw new Error('missing grading-policy export: ' + n); } } if (root.LEGACY_SUITE_WIDE_THRESHOLD_PERCENT !== 100) { throw new Error('the legacy suite-wide producer fallback is not the historical 100 percent'); } if (!root.GRADING_POLICY_READ_REFUSALS.includes('deploymentDoesNotReportPolicy')) { throw new Error('the capability refusal for a deployment that cannot name the policy is gone'); } await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); const predicatesSubpath = await import('@mcpjam/sdk/predicates'); const assertionsSubpath = await import('@mcpjam/sdk/assertions'); for (const n of ['evaluatePredicates','stripCheckPolicy']) { if (typeof predicatesSubpath[n] !== 'function') { throw new Error('missing predicates export: ' + n); } } for (const n of ['evaluateAssertion','evaluateAssertions','allAssertionsPassed','stripAssertionPolicy','assertionRole','requiresRenderObservations']) { if (typeof assertionsSubpath[n] !== 'function') { throw new Error('missing assertions export: ' + n); } } for (const n of ['assertionSchema','assertionUnion','ASSERTION_POLICY_KEYS']) { if (assertionsSubpath[n] === undefined) { throw new Error('missing assertions export: ' + n); } } for (const n of ['assertion','judge','runEvaluators']) { if (typeof root[n] !== 'function') { throw new Error('missing evaluator runtime export: ' + n); } } const contract = await import('@mcpjam/sdk/contract'); for (const n of ['canonicalJson','canonicalDigest','sha256Hex','resolveScoreDefinition','definitionHash','evaluationConfigHash','buildEvaluationConfigSnapshot','aggregateEvaluationConfigHash','allGatingScorersPassed','scorePassed','finalizeScoreResult','errorScoreResult','skippedScoreResult','notApplicableScoreResult','predicateScoreDefinition','scoreResultFromPredicateResult','toolMatchScoreDefinition','fromToolMatchResult','legacyTestScoreDefinition','fromLegacyTestOutcome','fromGoalCompletionCase','fromCriterionResult','generatedPredicateScorerId','toEvaluatorResult','fromEvaluatorResult','finalizeEvaluatorResult','errorEvaluatorResult','skippedEvaluatorResult','notApplicableEvaluatorResult','toScoreRawOutcome','resolveEvaluatorDefinition','evaluatorDefinitionHash','allGatingEvaluatorsPassed','evaluatorKindOf','isSelectionStageAssertionKind','isRecommendedDefaultAssertionKind','deriveStageResults','stageDerivationToMetadata','mintCaseId','mintSuiteId','isOpaqueId','buildEvalRunRouteFacts','deriveTrialRoute','classifyRouteTrial','evalTrialRate','buildDescriptionExperimentReport','isPromptStep','isToolCallStep','isInteractStep','isAssertStep','isWidgetAssertion','evaluateSuiteGateEvidence','composeSuiteGateWithBaseReport','parseSuiteGatePolicyForAuthoring','parseSuiteGatePolicyForRead','normalizeSuiteGatePolicy','suiteGatePolicyHash','resolveGradingPolicyFromSuiteFile','resolveGradingPolicyFromHostedSuite','resolveGradingPolicyFromRunReporting','planEvalGradingPolicyEdit','resolveEvalGradingIterations','resolveEvalGradingValidityPolicy','evalPassCriterionFraction','hostedGradingStorageFromDto']) { if (typeof contract[n] !== 'function') { throw new Error('missing contract export: ' + n); } } for (const n of ['scoreResultSchema','evaluatorResultSchema','evaluatorResultArraySchema','evaluatorKindSchema','evaluatorStatusSchema','EVALUATOR_KINDS','EVALUATOR_RESULT_SCHEMA_VERSION','EVALUATOR_STAGE','ASSERTION_STAGE','ASSERTION_KINDS','EVALUATOR_PRESENTATION_GROUP','RECOMMENDED_DEFAULT_ASSERTIONS','PREDICATE_STAGE','GRADER_STAGE','resolvedScoreDefinitionSchema','evaluationConfigSnapshotSchema','PREDICATES_VERSION','MAX_SCORER_ID_LENGTH','TOOL_MATCH_SCORER_ID','LEGACY_TEST_SCORER_ID','opaqueIdSchema','CASE_ID_PREFIX','SUITE_ID_PREFIX','USER_VALUE_STAGES','STAGE_STATES','FAILURE_CATEGORIES','ITERATION_STATUSES','IMPORT_MAPPING_STATUSES','STAGE_ANALYZER_VERSION','STAGE_REASONS','STAGE_METADATA_KEYS','MAX_EVIDENCE_REASONS','MAX_EVIDENCE_REASON_CHARS','stageDerivationSchema','stageResultRowSchema','stageReasonSchema','TEST_STEP_KINDS','testStepSchema','stepsSchema','elementLocatorSchema','evalSuiteFileSchema','evalSuiteFileStructuralSchema','evalSuiteFileV2StructuralSchema','evalSuiteFileV2JsonSchema','EVAL_SUITE_SCHEMA_ID_V2','EVAL_SUITE_SCHEMA_VERSION_2','EVAL_SUITE_SCHEMA_VERSIONS','MAX_ITERATIONS','evalSuiteFileCaseSchema','evalSuiteFileJsonSchema','EVAL_SUITE_SCHEMA_ID','EVAL_SUITE_SCHEMA_VERSION','MAX_SUITE_FILE_CASES','EVAL_RUN_ROUTE_FACTS_SCHEMA_VERSION','ROUTE_FACTS_VERSION','evalRunRouteFactsSchema','EVAL_ROUTE_TAGS','NO_TOOL_PATH_KEY','buildDescriptionExperimentReport','descriptionExperimentReportSchema','DESCRIPTION_EXPERIMENT_SCHEMA_VERSION','SUITE_GATE_SCHEMA_VERSION','SUITE_GATE_EVALUATOR_VERSION','suiteGatePolicySchema','suiteGateEvidenceSchema','suiteGateReportSchema','EVAL_GRADING_POLICY_ORIGINS','EVAL_GRADING_POLICY_REFUSALS','EVAL_SUITE_WIDE_POPULATIONS','EVAL_RUN_REPORTING_PRODUCERS','LEGACY_SUITE_WIDE_THRESHOLD_PERCENT','MAX_MINIMUM_ITERATIONS','SUITE_FILE_VALIDITY_DEFAULTS','SUITE_FILE_DEFAULT_COVERAGE','evalGradingPolicySchema','evalPassCriterionSchema','evalIterationRuleSchema','evalGradingValiditySchema']) { if (contract[n] === undefined) { throw new Error('missing contract export: ' + n); } } if (contract.PREDICATE_STAGE !== contract.ASSERTION_STAGE) { throw new Error('legacy contract export PREDICATE_STAGE is not the ASSERTION_STAGE object'); } if (contract.GRADER_STAGE !== contract.EVALUATOR_STAGE) { throw new Error('legacy contract export GRADER_STAGE is not the EVALUATOR_STAGE object'); } for (const n of ['SUITE_FILE_VALIDITY_DEFAULTS','SUITE_FILE_DEFAULT_COVERAGE']) { if (JSON.stringify(contract[n]) !== JSON.stringify(root[n])) { throw new Error('contract and root disagree on ' + n + ': the validity table has been forked'); } } if (contract.SUITE_FILE_VALIDITY_DEFAULTS.minCompletionRate !== 0.8 || contract.SUITE_FILE_VALIDITY_DEFAULTS.maxEvaluatorErrorRate !== 0.1) { throw new Error('suite-file validity defaults are not the documented 0.8/0.1'); } if (contract.SUITE_FILE_DEFAULT_COVERAGE.kind !== 'allConfiguredTrialsAttempted') { throw new Error('an omitted minEligibleTrials must select the stricter coverage rule'); } if (typeof contract.evalSuiteFileJsonSchema !== 'object' || !contract.evalSuiteFileJsonSchema.properties?.cases) { throw new Error('contract export evalSuiteFileJsonSchema is not the generated JSON Schema document'); } await import('@mcpjam/sdk/host-config'); const w = await import('@mcpjam/sdk/widget-runtime'); for (const n of ['getToolVisibility','isVisibleToModelOnly','isVisibleToAppOnly','LoggingTransport','buildOuterAllowAttribute','buildOuterSandboxAttribute','resolveIframeSandboxPolicy','createHostAppBridge','registerHostBridgeHandlers']) { if (typeof w[n] !== 'function') { throw new Error('missing widget-runtime export: ' + n); } } if (w['DEFAULT_IFRAME_SANDBOX'] === undefined) { throw new Error('missing widget-runtime export: DEFAULT_IFRAME_SANDBOX'); } const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation','checkHostCompatibilityOperation','createTunnelOperation','closeTunnelOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','applyToolDescriptionOverrides','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } } const pub = await import('@mcpjam/sdk/public-api'); for (const n of ['isV1ErrorCode','mapInternalCode','v1ErrorBody','v1Page','classifyRuntimeError']) { if (typeof pub[n] !== 'function') { throw new Error('missing public-api export: ' + n); } } for (const n of ['V1_ERROR_CODES','V1_ERROR_STATUS','INTERNAL_TO_V1_CODE']) { if (pub[n] === undefined) { throw new Error('missing public-api export: ' + n); } } const hc = await import('@mcpjam/sdk/host-compat'); for (const n of ['deriveServerRequirements','evaluateHostCompat','evaluateAllHosts','buildMarketHostProfiles','evaluateMarketHosts','scanWidgetUsage','detectHostCompatBridgeFromMeta','scanWidgetSource','scanWidgetMeta','bundledHostCompatCatalog','buildHostProfilesFromCatalog','fetchHostCompatCatalog','hostConfigFieldsToImageSupport','imageSupportToHostConfigFields']) { if (typeof hc[n] !== 'function') { throw new Error('missing host-compat export: ' + n); } } if (hc['HostCompatBridge'] === undefined) { throw new Error('missing host-compat export: HostCompatBridge'); } for (const n of ['MCP_APPS_FULL','MCP_APPS_CHATGPT','MCP_APPS_MISTRAL','MCP_APPS_CURSOR','MCP_APPS_GOOSE','MCP_APPS_COPILOT','MCP_APPS_SLACK','MCP_APPS_VSCODE','MCP_APPS_NO_CLAIMS']) { if (typeof hc[n] !== 'object') { throw new Error('missing host-compat capability export: ' + n); } } for (const n of ['hostCompatCatalogSchema','hostCompatCatalogEnvelopeSchema','mcpAppsCapabilitiesSchema']) { if (hc[n] === undefined) { throw new Error('missing host-compat schema export: ' + n); } } const pb = await import('@mcpjam/sdk/plugin-bundle'); for (const n of ['parsePluginBundle','containsRootPlaceholder','containsPluginPlaceholder','selectPluginMcpServerMap','detectPluginMcpTransport']) { if (typeof pb[n] !== 'function') { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['DEFAULT_PLUGIN_BUNDLE_LIMITS','PLUGIN_ISSUE_CODES','PLUGIN_MANIFEST_SCHEMAS','PLUGIN_MCP_SCHEMAS','PLUGIN_MANIFEST_PATH','PLUGIN_ROOT_PLACEHOLDERS','PLUGIN_DATA_PLACEHOLDER','PluginBundleError','MCP_CONFIG_PATH']) { if (pb[n] === undefined) { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['normalizeBundlePath','validateBundleEntries','parseYamlLite','caseFoldPath','PluginIssueCollector','sha256HexBytes','computeAggregateHash']) { if (pb[n] !== undefined) { throw new Error('plugin-bundle should not re-export internal helper: ' + n); } } const on = await import('@mcpjam/sdk/oauth/node'); for (const n of ['assertOutboundOAuthUrlAllowed','isDisallowedIpAddress','isLoopbackOAuthUrl','isPrivateHost','OAuthOutboundUrlBlockedError','executeOAuthProxy','executeDebugOAuthProxy','fetchOAuthMetadata','fetchPinnedPublicDocument','validateUrl','OAuthProxyError']) { if (typeof on[n] !== 'function') { throw new Error('missing oauth/node export: ' + n); } }\"","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs","check:eval-suite-schema":"tsx scripts/generate-eval-suite-schema.ts --check","generate:eval-suite-schema":"tsx scripts/generate-eval-suite-schema.ts","precheck:eval-suite-schema":"npm run build -w @mcpjam/evaluators","check:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts --check","pregenerate:eval-suite-schema":"npm run build -w @mcpjam/evaluators","generate:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts","check:eval-verdict-policy-schema":"tsx scripts/generate-eval-verdict-policy-schema.ts --check","check:host-catalog-fallback:remote":"node --import tsx scripts/check-host-catalog-fallback-remote.ts","generate:eval-verdict-policy-schema":"tsx scripts/generate-eval-verdict-policy-schema.ts","precheck:eval-verdict-policy-schema":"npm run build -w @mcpjam/evaluators","pregenerate:eval-verdict-policy-schema":"npm run build -w @mcpjam/evaluators"},"_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"overrides":{"zod":"^4.2.0"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","ajv":"^8.17.1","zod":"^4.2.0","yaml":"^2.9.0","jszip":"^3.10.1","xpath":"^0.0.34","xml-crypto":"^6.1.2","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@noble/hashes":"^2.3.0","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@xmldom/xmldom":"^0.8.13","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@mcpjam/evaluators":"^0.3.0","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"2.0.0","@modelcontextprotocol/ext-apps":"^1.7.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.7","esbuild":"^0.28.2","ts-jest":"^29.4.12","prettier":"^3.9.6","cross-env":"^10.1.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.68.0","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.6","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.68.0","@modelcontextprotocol/node":"2.0.0","@modelcontextprotocol/server":"2.0.0","@typescript-eslint/eslint-plugin":"^8.68.0","@modelcontextprotocol/server-everything":"^2026.8.18"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_8.9.0_1789630283020_0.7996885859943454","host":"s3://npm-registry-packages-npm-production"}},"8.10.0":{"_id":"@mcpjam/sdk@8.10.0","dist":{"shasum":"8d446a13a9e51319eefb110a2dfddf7b5b2db89a","tarball":"https://registry.npmjs.org/@mcpjam/sdk/-/sdk-8.10.0.tgz","fileCount":77,"integrity":"sha512-Xn9qSrUUBeXGEM7YuARsXz2qLxJ96yJT5wXQToqoSZZNQHR7a9uiDe93RrQDzwA4n7vuinAMZdK4db+qSC15eg==","signatures":[{"sig":"MEQCIGZvXuhueHzH2YHinbSdeclq9gnjO6ge7acC/1Jn75h2AiBuJlXPW/6zm+ItM5CJNMD4PNBZZbRPwUn85NDVqV/QDg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDFJCP72pDNVHb0IIyPSIYFqUrcnPBdyOa08dGAWBY8xAiBGzQYHcPbHo5hQ3mmlE1hTd08HRjJFPah5i92jPRuUeA=="}],"unpackedSize":30292172},"main":"dist/index.js","name":"@mcpjam/sdk","type":"module","types":"dist/index.d.ts","author":{"name":"MCPJam"},"module":"dist/index.js","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./worker":{"types":"./dist/worker.d.ts","import":"./dist/worker.js","default":"./dist/worker.js"},"./browser":{"types":"./dist/browser.d.ts","import":"./dist/browser.js","default":"./dist/browser.js"},"./contract":{"types":"./dist/contract/index.d.ts","import":"./dist/contract/index.js","default":"./dist/contract/index.js"},"./matchers":{"types":"./dist/matchers.d.ts","import":"./dist/matchers.js","default":"./dist/matchers.js"},"./platform":{"types":"./dist/platform/index.d.ts","import":"./dist/platform/index.js","default":"./dist/platform/index.js"},"./assertions":{"types":"./dist/assertions/index.d.ts","import":"./dist/assertions/index.js","default":"./dist/assertions/index.js"},"./oauth/node":{"types":"./dist/oauth/node.d.ts","import":"./dist/oauth/node.js","default":"./dist/oauth/node.js"},"./operations":{"types":"./dist/operations.d.ts","import":"./dist/operations.js","default":"./dist/operations.js"},"./predicates":{"types":"./dist/predicates/index.d.ts","import":"./dist/predicates/index.js","default":"./dist/predicates/index.js"},"./public-api":{"types":"./dist/public-api/index.d.ts","import":"./dist/public-api/index.js","default":"./dist/public-api/index.js"},"./host-compat":{"types":"./dist/host-compat/index.d.ts","import":"./dist/host-compat/index.js","default":"./dist/host-compat/index.js"},"./host-config":{"types":"./dist/host-config/index.d.ts","import":"./dist/host-config/index.js","default":"./dist/host-config/index.js"},"./model-factory":{"types":"./dist/model-factory.d.ts","import":"./dist/model-factory.js","default":"./dist/model-factory.js"},"./plugin-bundle":{"types":"./dist/plugin-bundle/index.d.ts","import":"./dist/plugin-bundle/index.js","default":"./dist/plugin-bundle/index.js"},"./widget-runtime":{"types":"./dist/widget-runtime/index.d.ts","import":"./dist/widget-runtime/index.js","default":"./dist/widget-runtime/index.js"},"./skill-reference":{"types":"./dist/skill-reference.d.ts","import":"./dist/skill-reference.js","default":"./dist/skill-reference.js"},"./host-config/internal":{"types":"./dist/host-config/internal.d.ts","import":"./dist/host-config/internal.js","default":"./dist/host-config/internal.js"},"./host-config/templates":{"types":"./dist/host-config/templates/index.d.ts","import":"./dist/host-config/templates/index.js","default":"./dist/host-config/templates/index.js"}},"gitHead":"fdea8c676cce28a171bcac1c7f136ff3a9a6e77c","license":"MIT","scripts":{"dev":"tsup --watch","lint":"eslint src tests","test":"vitest run","build":"npm run build -w @mcpjam/evaluators && npm run bundle:runtimes && cross-env NODE_OPTIONS=--max-old-space-size=8192 tsup","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","pretest":"npm run build -w @mcpjam/evaluators","lint:fix":"eslint src tests --fix","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","prettier-fix":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","pretypecheck":"npm run build -w @mcpjam/evaluators","pretest:watch":"npm run build -w @mcpjam/evaluators","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build","test:packaging":"npm run build && npm run test:packaging:assert","bundle:runtimes":"npm run bundle:chatgpt-runtime && npm run bundle:mcp-apps-runtime","pretest:coverage":"npm run build -w @mcpjam/evaluators","sentry:sourcemaps":"sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload --release=@mcpjam/sdk@$(node -p \"require('./package.json').version\") --org=mcpjam-gh --project=mcpjam-sdk ./dist","test:packaging:assert":"node --input-type=module -e \"const root = await import('@mcpjam/sdk'); for (const n of ['driveTaskToTerminal','TaskLifecycleEngine','taskLifecycleKey','isTerminalLifecycleStatus','extensionTaskToObservation','legacyTaskToObservation','isUnknownTaskError','canDeclareTasksExtension','readDeclaredInputCapabilities','TaskInputRejectedError','createStrictElicitationContentValidator','retryAfterMsFromError']) { if (typeof root[n] !== 'function') { throw new Error('missing tasks export: ' + n); } } for (const n of ['loadEvalSuiteFile','resolveEvalSuiteFile','serializeEvalSuiteFile','formatSuiteFileFindings','suiteFilePointer']) { if (typeof root[n] !== 'function') { throw new Error('missing suite-file export: ' + n); } } for (const n of ['releaseMcpjamModelLeases','McpjamLeaseClient','McpjamLeaseError']) { if (typeof root[n] !== 'function') { throw new Error('missing mcpjam-lease export: ' + n); } } for (const n of ['gradingPolicyFromLoadedSuiteFile','gradingPolicyFromPlatformSuiteSettings','planPlatformSuiteGradingUpdate','gradingPolicyForReportedRun']) { if (typeof root[n] !== 'function') { throw new Error('missing grading-policy export: ' + n); } } for (const n of ['TERMINAL_LIFECYCLE_STATUSES','UNKNOWN_TASK_ERROR_CODE','DEFAULT_TASK_INPUT_LIMITS']) { if (root[n] === undefined) { throw new Error('missing tasks export: ' + n); } } for (const n of ['MAX_SUITE_FILE_BYTES','SUITE_FILE_VALIDITY_DEFAULTS','SUITE_FILE_DEFAULT_CAPTURE_LEVEL','SUITE_FILE_FINDING_CODES']) { if (root[n] === undefined) { throw new Error('missing suite-file export: ' + n); } } if (root.MAX_SUITE_FILE_BYTES !== 1048576) { throw new Error('MAX_SUITE_FILE_BYTES is not the pinned 1 MiB cap'); } for (const n of ['GRADING_POLICY_READ_REFUSALS','LEGACY_SUITE_WIDE_THRESHOLD_PERCENT']) { if (root[n] === undefined) { throw new Error('missing grading-policy export: ' + n); } } if (root.LEGACY_SUITE_WIDE_THRESHOLD_PERCENT !== 100) { throw new Error('the legacy suite-wide producer fallback is not the historical 100 percent'); } if (!root.GRADING_POLICY_READ_REFUSALS.includes('deploymentDoesNotReportPolicy')) { throw new Error('the capability refusal for a deployment that cannot name the policy is gone'); } await import('@mcpjam/sdk/browser'); await import('@mcpjam/sdk/worker'); await import('@mcpjam/sdk/operations'); await import('@mcpjam/sdk/skill-reference'); await import('@mcpjam/sdk/model-factory'); await import('@mcpjam/sdk/matchers'); const predicatesSubpath = await import('@mcpjam/sdk/predicates'); const assertionsSubpath = await import('@mcpjam/sdk/assertions'); for (const n of ['evaluatePredicates','stripCheckPolicy']) { if (typeof predicatesSubpath[n] !== 'function') { throw new Error('missing predicates export: ' + n); } } for (const n of ['evaluateAssertion','evaluateAssertions','allAssertionsPassed','stripAssertionPolicy','assertionRole','requiresRenderObservations']) { if (typeof assertionsSubpath[n] !== 'function') { throw new Error('missing assertions export: ' + n); } } for (const n of ['assertionSchema','assertionUnion','ASSERTION_POLICY_KEYS']) { if (assertionsSubpath[n] === undefined) { throw new Error('missing assertions export: ' + n); } } for (const n of ['assertion','judge','runEvaluators']) { if (typeof root[n] !== 'function') { throw new Error('missing evaluator runtime export: ' + n); } } const contract = await import('@mcpjam/sdk/contract'); for (const n of ['canonicalJson','canonicalDigest','sha256Hex','resolveScoreDefinition','definitionHash','evaluationConfigHash','buildEvaluationConfigSnapshot','aggregateEvaluationConfigHash','allGatingScorersPassed','scorePassed','finalizeScoreResult','errorScoreResult','skippedScoreResult','notApplicableScoreResult','predicateScoreDefinition','scoreResultFromPredicateResult','toolMatchScoreDefinition','fromToolMatchResult','legacyTestScoreDefinition','fromLegacyTestOutcome','fromGoalCompletionCase','fromCriterionResult','generatedPredicateScorerId','toEvaluatorResult','fromEvaluatorResult','finalizeEvaluatorResult','errorEvaluatorResult','skippedEvaluatorResult','notApplicableEvaluatorResult','toScoreRawOutcome','resolveEvaluatorDefinition','evaluatorDefinitionHash','allGatingEvaluatorsPassed','evaluatorKindOf','isSelectionStageAssertionKind','isRecommendedDefaultAssertionKind','deriveStageResults','stageDerivationToMetadata','mintCaseId','mintSuiteId','isOpaqueId','buildEvalRunRouteFacts','deriveTrialRoute','classifyRouteTrial','evalTrialRate','buildDescriptionExperimentReport','isPromptStep','isToolCallStep','isInteractStep','isAssertStep','isWidgetAssertion','evaluateSuiteGateEvidence','composeSuiteGateWithBaseReport','parseSuiteGatePolicyForAuthoring','parseSuiteGatePolicyForRead','normalizeSuiteGatePolicy','suiteGatePolicyHash','resolveGradingPolicyFromSuiteFile','resolveGradingPolicyFromHostedSuite','resolveGradingPolicyFromRunReporting','planEvalGradingPolicyEdit','resolveEvalGradingIterations','resolveEvalGradingValidityPolicy','evalPassCriterionFraction','hostedGradingStorageFromDto']) { if (typeof contract[n] !== 'function') { throw new Error('missing contract export: ' + n); } } for (const n of ['scoreResultSchema','evaluatorResultSchema','evaluatorResultArraySchema','evaluatorKindSchema','evaluatorStatusSchema','EVALUATOR_KINDS','EVALUATOR_RESULT_SCHEMA_VERSION','EVALUATOR_STAGE','ASSERTION_STAGE','ASSERTION_KINDS','EVALUATOR_PRESENTATION_GROUP','RECOMMENDED_DEFAULT_ASSERTIONS','PREDICATE_STAGE','GRADER_STAGE','resolvedScoreDefinitionSchema','evaluationConfigSnapshotSchema','PREDICATES_VERSION','MAX_SCORER_ID_LENGTH','TOOL_MATCH_SCORER_ID','LEGACY_TEST_SCORER_ID','opaqueIdSchema','CASE_ID_PREFIX','SUITE_ID_PREFIX','USER_VALUE_STAGES','STAGE_STATES','FAILURE_CATEGORIES','ITERATION_STATUSES','IMPORT_MAPPING_STATUSES','STAGE_ANALYZER_VERSION','STAGE_REASONS','STAGE_METADATA_KEYS','MAX_EVIDENCE_REASONS','MAX_EVIDENCE_REASON_CHARS','stageDerivationSchema','stageResultRowSchema','stageReasonSchema','TEST_STEP_KINDS','testStepSchema','stepsSchema','elementLocatorSchema','evalSuiteFileSchema','evalSuiteFileStructuralSchema','evalSuiteFileV2StructuralSchema','evalSuiteFileV2JsonSchema','EVAL_SUITE_SCHEMA_ID_V2','EVAL_SUITE_SCHEMA_VERSION_2','EVAL_SUITE_SCHEMA_VERSIONS','MAX_ITERATIONS','evalSuiteFileCaseSchema','evalSuiteFileJsonSchema','EVAL_SUITE_SCHEMA_ID','EVAL_SUITE_SCHEMA_VERSION','MAX_SUITE_FILE_CASES','EVAL_RUN_ROUTE_FACTS_SCHEMA_VERSION','ROUTE_FACTS_VERSION','evalRunRouteFactsSchema','EVAL_ROUTE_TAGS','NO_TOOL_PATH_KEY','buildDescriptionExperimentReport','descriptionExperimentReportSchema','DESCRIPTION_EXPERIMENT_SCHEMA_VERSION','SUITE_GATE_SCHEMA_VERSION','SUITE_GATE_EVALUATOR_VERSION','suiteGatePolicySchema','suiteGateEvidenceSchema','suiteGateReportSchema','EVAL_GRADING_POLICY_ORIGINS','EVAL_GRADING_POLICY_REFUSALS','EVAL_SUITE_WIDE_POPULATIONS','EVAL_RUN_REPORTING_PRODUCERS','LEGACY_SUITE_WIDE_THRESHOLD_PERCENT','MAX_MINIMUM_ITERATIONS','SUITE_FILE_VALIDITY_DEFAULTS','SUITE_FILE_DEFAULT_COVERAGE','evalGradingPolicySchema','evalPassCriterionSchema','evalIterationRuleSchema','evalGradingValiditySchema']) { if (contract[n] === undefined) { throw new Error('missing contract export: ' + n); } } if (contract.PREDICATE_STAGE !== contract.ASSERTION_STAGE) { throw new Error('legacy contract export PREDICATE_STAGE is not the ASSERTION_STAGE object'); } if (contract.GRADER_STAGE !== contract.EVALUATOR_STAGE) { throw new Error('legacy contract export GRADER_STAGE is not the EVALUATOR_STAGE object'); } for (const n of ['SUITE_FILE_VALIDITY_DEFAULTS','SUITE_FILE_DEFAULT_COVERAGE']) { if (JSON.stringify(contract[n]) !== JSON.stringify(root[n])) { throw new Error('contract and root disagree on ' + n + ': the validity table has been forked'); } } if (contract.SUITE_FILE_VALIDITY_DEFAULTS.minCompletionRate !== 0.8 || contract.SUITE_FILE_VALIDITY_DEFAULTS.maxEvaluatorErrorRate !== 0.1) { throw new Error('suite-file validity defaults are not the documented 0.8/0.1'); } if (contract.SUITE_FILE_DEFAULT_COVERAGE.kind !== 'allConfiguredTrialsAttempted') { throw new Error('an omitted minEligibleTrials must select the stricter coverage rule'); } if (typeof contract.evalSuiteFileJsonSchema !== 'object' || !contract.evalSuiteFileJsonSchema.properties?.cases) { throw new Error('contract export evalSuiteFileJsonSchema is not the generated JSON Schema document'); } await import('@mcpjam/sdk/host-config'); const w = await import('@mcpjam/sdk/widget-runtime'); for (const n of ['getToolVisibility','isVisibleToModelOnly','isVisibleToAppOnly','LoggingTransport','buildOuterAllowAttribute','buildOuterSandboxAttribute','resolveIframeSandboxPolicy','createHostAppBridge','registerHostBridgeHandlers']) { if (typeof w[n] !== 'function') { throw new Error('missing widget-runtime export: ' + n); } } if (w['DEFAULT_IFRAME_SANDBOX'] === undefined) { throw new Error('missing widget-runtime export: DEFAULT_IFRAME_SANDBOX'); } const p = await import('@mcpjam/sdk/platform'); for (const n of ['PlatformApiClient','PlatformApiError','buildShowServersPayload','resolveProject','listProjectsOperation','listProjectServersOperation','showServersOperation','checkHostCompatibilityOperation','createTunnelOperation','closeTunnelOperation']) { if (p[n] === undefined) { throw new Error('missing platform export: ' + n); } } const m = await import('@mcpjam/sdk/host-config/internal'); for (const n of ['canonicalizeHostConfigV2','computeHostConfigHashV2','isAppOnlyTool','filterAppOnlyTools','applyVisibilityPolicyAndCountSignals','applyToolDescriptionOverrides','extractHostExecutionPolicy','buildHostIterationMetadata','resolveOpenAiCompatForHostConfig','readOpenAiCompatOverride','compatPresetForHostStyle','normalizeSdkEvalHostConfigForWire']) { if (typeof m[n] !== 'function') { throw new Error('missing export: ' + n); } } const pub = await import('@mcpjam/sdk/public-api'); for (const n of ['isV1ErrorCode','mapInternalCode','v1ErrorBody','v1Page','classifyRuntimeError']) { if (typeof pub[n] !== 'function') { throw new Error('missing public-api export: ' + n); } } for (const n of ['V1_ERROR_CODES','V1_ERROR_STATUS','INTERNAL_TO_V1_CODE']) { if (pub[n] === undefined) { throw new Error('missing public-api export: ' + n); } } const hc = await import('@mcpjam/sdk/host-compat'); for (const n of ['deriveServerRequirements','evaluateHostCompat','evaluateAllHosts','buildMarketHostProfiles','evaluateMarketHosts','scanWidgetUsage','detectHostCompatBridgeFromMeta','scanWidgetSource','scanWidgetMeta','bundledHostCompatCatalog','buildHostProfilesFromCatalog','fetchHostCompatCatalog','hostConfigFieldsToImageSupport','imageSupportToHostConfigFields']) { if (typeof hc[n] !== 'function') { throw new Error('missing host-compat export: ' + n); } } if (hc['HostCompatBridge'] === undefined) { throw new Error('missing host-compat export: HostCompatBridge'); } for (const n of ['MCP_APPS_FULL','MCP_APPS_CHATGPT','MCP_APPS_MISTRAL','MCP_APPS_CURSOR','MCP_APPS_GOOSE','MCP_APPS_COPILOT','MCP_APPS_SLACK','MCP_APPS_VSCODE','MCP_APPS_NO_CLAIMS']) { if (typeof hc[n] !== 'object') { throw new Error('missing host-compat capability export: ' + n); } } for (const n of ['hostCompatCatalogSchema','hostCompatCatalogEnvelopeSchema','mcpAppsCapabilitiesSchema']) { if (hc[n] === undefined) { throw new Error('missing host-compat schema export: ' + n); } } const pb = await import('@mcpjam/sdk/plugin-bundle'); for (const n of ['parsePluginBundle','containsRootPlaceholder','containsPluginPlaceholder','selectPluginMcpServerMap','detectPluginMcpTransport']) { if (typeof pb[n] !== 'function') { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['DEFAULT_PLUGIN_BUNDLE_LIMITS','PLUGIN_ISSUE_CODES','PLUGIN_MANIFEST_SCHEMAS','PLUGIN_MCP_SCHEMAS','PLUGIN_MANIFEST_PATH','PLUGIN_ROOT_PLACEHOLDERS','PLUGIN_DATA_PLACEHOLDER','PluginBundleError','MCP_CONFIG_PATH']) { if (pb[n] === undefined) { throw new Error('missing plugin-bundle export: ' + n); } } for (const n of ['normalizeBundlePath','validateBundleEntries','parseYamlLite','caseFoldPath','PluginIssueCollector','sha256HexBytes','computeAggregateHash']) { if (pb[n] !== undefined) { throw new Error('plugin-bundle should not re-export internal helper: ' + n); } } const on = await import('@mcpjam/sdk/oauth/node'); for (const n of ['assertOutboundOAuthUrlAllowed','isDisallowedIpAddress','isLoopbackOAuthUrl','isPrivateHost','OAuthOutboundUrlBlockedError','executeOAuthProxy','executeDebugOAuthProxy','fetchOAuthMetadata','fetchPinnedPublicDocument','validateUrl','OAuthProxyError']) { if (typeof on[n] !== 'function') { throw new Error('missing oauth/node export: ' + n); } }\"","bundle:chatgpt-runtime":"node scripts/bundle-chatgpt-apps-runtime.mjs","bundle:mcp-apps-runtime":"node scripts/bundle-mcp-apps-openai-compatible-runtime.mjs","check:eval-suite-schema":"tsx scripts/generate-eval-suite-schema.ts --check","generate:eval-suite-schema":"tsx scripts/generate-eval-suite-schema.ts","precheck:eval-suite-schema":"npm run build -w @mcpjam/evaluators","check:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts --check","pregenerate:eval-suite-schema":"npm run build -w @mcpjam/evaluators","generate:host-catalog-fallback":"tsx scripts/generate-host-catalog-fallback.ts","check:eval-verdict-policy-schema":"tsx scripts/generate-eval-verdict-policy-schema.ts --check","check:host-catalog-fallback:remote":"node --import tsx scripts/check-host-catalog-fallback-remote.ts","generate:eval-verdict-policy-schema":"tsx scripts/generate-eval-verdict-policy-schema.ts","precheck:eval-verdict-policy-schema":"npm run build -w @mcpjam/evaluators","pregenerate:eval-verdict-policy-schema":"npm run build -w @mcpjam/evaluators"},"version":"8.10.0","_npmUser":{"name":"mcpjam-founders","email":"founders@mcpjam.com"},"keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"overrides":{"zod":"^4.2.0"},"_npmVersion":"11.9.0","description":"MCP server unit testing, end to end (e2e) testing, and server evals","directories":{},"maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"_nodeVersion":"24.14.0","dependencies":{"ai":"^6.0.141","ajv":"^8.17.1","zod":"^4.2.0","yaml":"^2.9.0","jszip":"^3.10.1","xpath":"^0.0.34","xml-crypto":"^6.1.2","@ai-sdk/xai":"^2.0.29","posthog-node":"^5.24.10","@ai-sdk/azure":"^2.0.79","@noble/hashes":"^2.3.0","@ai-sdk/google":"^2.0.11","@ai-sdk/openai":"^2.0.32","@xmldom/xmldom":"^0.8.13","@ai-sdk/mistral":"^2.0.19","@ai-sdk/deepseek":"^1.0.5","@ai-sdk/anthropic":"^2.0.17","@mcpjam/evaluators":"^0.3.0","@cfworker/json-schema":"^4.1.1","ollama-ai-provider-v2":"^1.5.2","@ai-sdk/amazon-bedrock":"^3.0.101","@openrouter/ai-sdk-provider":"^2.2.0","@modelcontextprotocol/client":"2.0.0","@modelcontextprotocol/ext-apps":"^1.7.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","jest":"^29.7.0","tsup":"^8.0.1","eslint":"^9.39.2","vitest":"^3.2.7","esbuild":"^0.28.2","ts-jest":"^29.4.12","prettier":"^3.9.6","cross-env":"^10.1.0","@eslint/js":"^9.39.2","typescript":"^5.3.3","@sentry/cli":"^2.58.4","@types/jest":"^29.5.12","@types/node":"^20.11.0","@sentry/node":"^8.55.0","typescript-eslint":"^8.68.0","@types/json-schema":"^7.0.15","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.6","@modelcontextprotocol/sdk":"^1.26.0","@typescript-eslint/parser":"^8.68.0","@modelcontextprotocol/node":"2.0.0","@modelcontextprotocol/server":"2.0.0","@typescript-eslint/eslint-plugin":"^8.68.0","@modelcontextprotocol/server-everything":"^2026.8.18"},"peerDependencies":{"@sentry/node":"^8.55.0"},"peerDependenciesMeta":{"@sentry/node":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sdk_8.10.0_1789650551416_0.1966479023259764"}}},"time":{"created":"2025-10-13T21:55:45.394Z","modified":"2026-09-17T13:09:11.879Z","0.1.0":"2025-10-13T21:55:45.696Z","0.1.1":"2025-10-13T22:04:26.167Z","0.1.2":"2025-10-13T22:10:57.960Z","0.1.3":"2025-10-20T03:44:56.611Z","0.1.4":"2025-10-21T16:00:18.062Z","0.8.0":"2026-01-26T21:43:39.830Z","0.8.1":"2026-01-29T18:40:36.357Z","0.8.2":"2026-02-04T22:21:36.406Z","0.8.3":"2026-02-06T19:14:14.371Z","0.8.4":"2026-02-10T00:05:50.660Z","0.8.5":"2026-02-12T21:18:40.399Z","0.8.6":"2026-02-23T08:43:38.393Z","0.8.7":"2026-03-09T20:49:32.556Z","0.8.8":"2026-03-10T20:11:04.611Z","0.8.9":"2026-03-11T16:06:42.556Z","0.8.10":"2026-03-11T18:44:32.803Z","0.8.11":"2026-03-24T19:49:37.525Z","0.8.12":"2026-03-26T00:53:26.434Z","0.8.13":"2026-03-29T07:51:45.196Z","0.8.14":"2026-03-31T09:36:16.014Z","0.8.16":"2026-04-10T06:39:53.961Z","0.9.0":"2026-04-10T08:58:19.812Z","0.9.1":"2026-04-11T00:57:57.467Z","0.9.2":"2026-04-11T22:03:09.819Z","0.9.3":"2026-04-13T05:21:19.989Z","0.10.0":"2026-04-16T02:42:27.908Z","1.1.0":"2026-04-27T08:14:28.412Z","1.2.0":"2026-04-27T10:59:37.880Z","1.3.0":"2026-04-27T19:42:21.564Z","1.2.1":"2026-04-27T22:31:25.387Z","1.2.2":"2026-04-28T01:35:51.155Z","1.2.3":"2026-04-28T07:14:03.946Z","1.3.1":"2026-04-28T07:58:37.598Z","1.3.2":"2026-05-07T03:27:48.190Z","1.5.0":"2026-05-12T23:17:17.621Z","1.6.0":"2026-05-14T07:36:15.737Z","1.7.0":"2026-05-18T21:14:35.463Z","1.7.1":"2026-05-20T21:04:00.442Z","1.8.0":"2026-05-22T11:43:09.166Z","1.9.0":"2026-05-28T19:00:28.595Z","1.10.0":"2026-06-02T02:14:39.243Z","1.10.1":"2026-06-02T08:57:08.591Z","1.11.0":"2026-06-04T00:44:58.921Z","1.12.0":"2026-06-05T19:20:10.067Z","1.13.0":"2026-06-08T08:12:09.196Z","1.14.0":"2026-06-09T06:12:06.702Z","1.15.0":"2026-06-10T06:20:34.463Z","1.16.0":"2026-06-11T19:15:43.158Z","1.17.0":"2026-06-12T20:49:40.004Z","1.18.0":"2026-06-16T23:05:50.601Z","1.19.0":"2026-06-17T01:57:21.578Z","1.20.0":"2026-06-17T19:34:04.860Z","1.21.0":"2026-06-18T20:50:39.625Z","1.22.0":"2026-06-19T04:48:28.823Z","1.23.0":"2026-06-22T18:07:47.034Z","1.24.0":"2026-06-25T04:35:50.759Z","1.25.0":"2026-06-26T07:18:22.597Z","1.26.0":"2026-06-27T05:15:02.775Z","1.27.0":"2026-07-01T20:19:14.578Z","1.28.0":"2026-07-07T03:17:43.767Z","1.29.0":"2026-07-08T05:16:39.782Z","1.30.0":"2026-07-10T05:20:55.266Z","1.31.0":"2026-07-14T16:59:37.065Z","1.32.0":"2026-07-15T03:27:34.730Z","1.32.1":"2026-07-15T07:02:43.550Z","1.33.0":"2026-07-15T09:01:19.286Z","2.0.0":"2026-07-21T08:07:04.450Z","2.0.1":"2026-07-21T22:08:36.911Z","2.1.0":"2026-07-29T17:30:36.534Z","2.2.0":"2026-08-01T05:45:14.196Z","2.3.0":"2026-08-03T18:25:13.212Z","2.4.0":"2026-08-05T03:16:23.694Z","3.0.0":"2026-08-10T17:40:52.161Z","3.1.0":"2026-08-11T21:37:57.891Z","4.0.0":"2026-08-13T02:50:09.120Z","4.1.0":"2026-08-14T00:10:33.792Z","4.2.0":"2026-08-14T03:37:30.952Z","4.3.0":"2026-08-15T01:34:16.443Z","5.0.0":"2026-08-18T01:01:58.690Z","6.0.0":"2026-08-18T22:45:18.062Z","6.1.0":"2026-08-19T21:53:16.628Z","6.2.0":"2026-08-20T01:51:15.394Z","6.3.0":"2026-08-20T18:14:28.862Z","6.4.0":"2026-08-22T00:38:49.168Z","6.5.0":"2026-08-24T05:11:18.894Z","7.0.0":"2026-08-25T00:52:20.131Z","7.1.0":"2026-08-25T06:19:42.743Z","7.1.1":"2026-08-25T19:01:49.644Z","8.0.0":"2026-08-26T01:13:11.282Z","8.1.0":"2026-08-26T09:08:07.275Z","8.2.0":"2026-08-27T07:07:30.275Z","8.3.0":"2026-08-28T10:42:38.930Z","8.3.1":"2026-08-28T21:07:20.528Z","8.4.0":"2026-09-01T06:15:03.816Z","8.5.0":"2026-09-01T23:18:09.963Z","8.5.1":"2026-09-02T01:05:01.004Z","8.5.2":"2026-09-02T20:33:44.763Z","8.6.0":"2026-09-04T02:11:03.984Z","8.7.0":"2026-09-10T05:22:55.094Z","8.7.1":"2026-09-10T05:28:06.090Z","8.8.0":"2026-09-15T21:34:11.887Z","8.9.0":"2026-09-17T07:31:23.195Z","8.10.0":"2026-09-17T13:09:11.610Z"},"author":{"name":"MCPJam"},"license":"MIT","keywords":["mcp","model-context-protocol","testing","evals","unit-testing","e2e"],"description":"MCP server unit testing, end to end (e2e) testing, and server evals","maintainers":[{"name":"mcpjam-founders","email":"founders@mcpjam.com"},{"name":"mcpjamming","email":"mcpjams@gmail.com"}],"readme":"# @mcpjam/sdk\n\nUse the MCPJam SDK to write unit tests and evals for your MCP server.\n\n## Installation\n\n```bash\nnpm install @mcpjam/sdk\n```\n\nCompatible with your favorite testing framework like [Jest](https://jestjs.io/) and [Vitest](https://vitest.dev/)\n\n## Quick Start\n\n### Unit Test\n\nTest the individual parts, request response flow of your MCP server. MCP unit tests are deterministic.\n\n```ts\nimport { MCPClientManager, assertCallToolResult } from \"@mcpjam/sdk\";\n\ndescribe(\"Everything MCP example\", () => {\n  let manager: MCPClientManager;\n\n  beforeAll(async () => {\n    manager = new MCPClientManager();\n    await manager.connectToServer(\"everything\", {\n      command: \"npx\",\n      args: [\"-y\", \"@modelcontextprotocol/server-everything\"],\n    });\n  });\n\n  afterAll(async () => {\n    await manager.disconnectServer(\"everything\");\n  });\n\n  test(\"server has expected tools\", async () => {\n    const tools = await manager.listTools(\"everything\");\n    expect(tools.tools.map((t) => t.name)).toContain(\"get-sum\");\n  });\n\n  test(\"get-sum tool returns correct result\", async () => {\n    // `executeTool` can also resolve to a task envelope, and a content block\n    // can be an image or a resource, so narrow both before reading the text.\n    const result = assertCallToolResult(\n      await manager.executeTool(\"everything\", \"get-sum\", { a: 2, b: 3 }),\n    );\n    const [block] = result.content;\n    if (block.type !== \"text\") throw new Error(\"Expected a text block\");\n    expect(block.text).toBe(\"The sum of 2 and 3 is 5.\");\n  });\n});\n```\n\n### MCP evals\n\nTest that an LLM correctly understands how to use your MCP server. Evals are non-deterministic and multiple runs are needed.\n\n> **Heads up: renames in 1.11.** `TestAgent` → `HostRunner`, `EvalAgent` → `HostExecutor`, `.prompt()` → `.run()`, `Host.addServer()` → `Host.requireServer()`. No deprecation aliases. See the [changelog](./CHANGELOG.md) for the codemod.\n\n```ts\nimport { MCPClientManager, HostRunner, EvalTest } from \"@mcpjam/sdk\";\n\ndescribe(\"Asana MCP Evals\", () => {\n  let manager: MCPClientManager;\n  let runner: HostRunner;\n\n  beforeAll(async () => {\n    manager = new MCPClientManager();\n    await manager.connectToServer(\"asana\", {\n      url: \"https://mcp.asana.com/sse\",\n      requestInit: {\n        headers: { Authorization: `Bearer ${process.env.ASANA_TOKEN}` },\n      },\n    });\n\n    runner = new HostRunner({\n      tools: await manager.getToolsForAiSdk([\"asana\"]),\n      model: \"openai/gpt-4o\",\n      apiKey: process.env.OPENAI_API_KEY!,\n    });\n  });\n\n  afterAll(async () => {\n    await manager.disconnectServer(\"asana\");\n  });\n\n  // Single-turn eval\n  test(\"list workspaces > 80% accuracy\", async () => {\n    const evalTest = new EvalTest({\n      id: \"c_list_workspaces\",\n      name: \"list-workspaces\",\n      test: async (runner) => {\n        const result = await runner.run(\"Show me all my Asana workspaces\");\n        return result.hasToolCall(\"asana_list_workspaces\");\n      },\n    });\n\n    await evalTest.run(runner, {\n      iterations: 10,\n      onFailure: (report) => console.error(report), // Print the report when a test iteration fails.\n    });\n\n    expect(evalTest.accuracy()).toBeGreaterThan(0.8); // Pass threshold\n  });\n\n  // Multi-turn eval\n  test(\"get user then list projects > 80% accuracy\", async () => {\n    const evalTest = new EvalTest({\n      id: \"c_user_then_projects\",\n      name: \"user-then-projects\",\n      test: async (runner) => {\n        const r1 = await runner.run(\"Who am I in Asana?\");\n        if (!r1.hasToolCall(\"asana_get_user\")) return false;\n\n        const r2 = await runner.run(\"Now list my projects\", {\n          context: [r1],\n        }); // Continue the conversation from the previous prompt\n        return r2.hasToolCall(\"asana_get_projects\");\n      },\n    });\n\n    await evalTest.run(runner, {\n      iterations: 5,\n      onFailure: (report) => console.error(report),\n    });\n\n    expect(evalTest.accuracy()).toBeGreaterThan(0.8);\n  });\n\n  // Validating tool arguments\n  test(\"search tasks passes correct workspace_gid\", async () => {\n    const evalTest = new EvalTest({\n      id: \"c_search_args\",\n      name: \"search-args\",\n      test: async (runner) => {\n        const result = await runner.run(\n          \"Search for tasks containing 'bug' in my workspace\"\n        );\n        const args = result.getToolArguments(\"asana_search_tasks\");\n        return (\n          result.hasToolCall(\"asana_search_tasks\") &&\n          typeof args?.workspace_gid === \"string\"\n        );\n      },\n    });\n\n    await evalTest.run(runner, {\n      iterations: 5,\n      onFailure: (report) => console.error(report),\n    });\n\n    expect(evalTest.accuracy()).toBeGreaterThan(0.8);\n  });\n});\n```\n\n### Host + HostRuntime: bring your own runtime\n\n`Host` is the portable host-configuration spec — the same object the MCPJam Inspector uses to drive its Playground and eval suites. You can build one in your own code and run evals against it, so the inspector and your CI exercise the same host behavior (style, model, MCP profile, sandbox/permission policy, OpenAI-Apps compat, tool-visibility policy, etc.).\n\n```ts\nimport { MCPClientManager, Host, EvalTest } from \"@mcpjam/sdk\";\n\nconst manager = new MCPClientManager();\nawait manager.connectToServer(\"everything\", {\n  command: \"npx\",\n  args: [\"-y\", \"@modelcontextprotocol/server-everything\"],\n});\n\n// Build the spec — Host is just an editable wrapper around the canonical JSON.\nconst host = new Host({\n  style: \"mcpjam\",\n  model: \"openai/gpt-4o\",\n  systemPrompt: \"You are a helpful assistant.\",\n}).requireServer(\"everything\");\n\n// Bind the spec to a live MCP manager. `apiKey` lives on the runtime, not per-call.\nconst runtime = host.withManager(manager, {\n  apiKey: process.env.OPENAI_API_KEY!,\n});\n\nconst evalTest = new EvalTest({\n  id: \"c_add\",\n  name: \"add\",\n  test: async (runner) => (await runner.run(\"Add 2 and 3\")).hasToolCall(\"add\"),\n});\nawait evalTest.run(runtime, { iterations: 10 });\n```\n\n**`HostRuntime.run()` is stateless across turns.** Prior `PromptResult`s accumulate in `runtime.getPromptHistory()` for inspection but are NOT auto-replayed. Multi-turn continuity stays explicit via `PromptOptions.context`:\n\n```ts\nconst r1 = await runtime.run(\"Who am I?\");\nconst r2 = await runtime.run(\"List my projects\", { context: [r1] });\n```\n\n**Static specs use `HostRunner` directly.** When you've already resolved the tool set and don't need live-binding to a manager, skip the runtime and pass `host` straight into `HostRunner`:\n\n```ts\nimport { HostRunner } from \"@mcpjam/sdk\";\n\nconst runner = new HostRunner({\n  host: host.toJSON(),\n  tools: await manager.getToolsForAiSdk([\"everything\"]),\n  apiKey: process.env.OPENAI_API_KEY!,\n});\n```\n\n`HostRunner` snapshots the host once at construction; post-construction mutations to the original `Host` do NOT affect the runner. `HostRuntime` snapshots on every `.run()` so live mutations to the bound `Host` take effect on the next iteration.\n\n**One-shot sugar:**\n\n```ts\nawait host.run(\"write me a haiku\", {\n  apiKey: process.env.OPENAI_API_KEY!,\n  mcpClientManager: manager,\n});\n```\n\n#### Eval reporting (Stage 5)\n\nWhen the inspector backend advertises the `evalsHostConfig` capability at `GET /sdk/v1/info`, the eval reporter additionally sends `{ hostConfig, hostConfigHash }` so the persisted run row in the MCPJam UI shows the exact host you ran with. Source order:\n\n1. `iteration.hostSnapshot` (per-iteration capture from `HostRuntime`)\n2. `executor.getHostSnapshot?.()` (fallback for executors that don't expose per-iteration snapshots)\n3. `MCPJamReportingConfig.host` (explicit override, compatibility path)\n\nPass-1 only sends a run-level host config when all iteration snapshots canonicalize to the same hash. If you mutate the bound `Host` between iterations, the reporter omits the run-level field (per-iteration wire support is a later stage). Old backends without the capability are unaffected.\n\n#### `@mcpjam/sdk/host-config/internal`\n\nThe `internal` subpath exposes the canonicalizer, hasher, normalizer, and policy resolvers (`canonicalizeHostConfigV2`, `computeHostConfigHashV2`, `normalizeSdkEvalHostConfigForWire`, `extractHostExecutionPolicy`, `resolveOpenAiCompatForHostConfig`, …) that the MCPJam backend and the inspector server both import. It is **first-party-only, not semver-stable** — external consumers should use the `Host` facade. The MCPJam backend `convex/lib/hostConfigV2.ts` imports the canonicalizer directly from this subpath so there is exactly one source of truth shared between the SDK and the persisted `hostConfigs` rows.\n\n---\n\n### OAuth Conformance\n\nTest that your MCP server's OAuth implementation works across all registration methods and protocol versions.\n\n```ts\nimport { OAuthConformanceTest, OAuthConformanceSuite } from \"@mcpjam/sdk\";\n\n// Single flow\nconst test = new OAuthConformanceTest({\n  serverUrl: \"https://your-server.com/mcp\",\n  protocolVersion: \"2025-11-25\",\n  registrationStrategy: \"dcr\",\n  auth: { mode: \"headless\" },\n  verification: { listTools: true },\n});\n\nconst result = await test.run();\nconsole.log(result.passed); // true\nconsole.log(result.summary); // \"OAuth conformance passed for ...\"\n\n// Suite: test multiple flows at once\nconst suite = new OAuthConformanceSuite({\n  serverUrl: \"https://your-server.com/mcp\",\n  defaults: { verification: { listTools: true } },\n  flows: [\n    {\n      protocolVersion: \"2025-11-25\",\n      registrationStrategy: \"cimd\",\n      auth: { mode: \"interactive\" },\n    },\n    {\n      protocolVersion: \"2025-11-25\",\n      registrationStrategy: \"dcr\",\n      auth: { mode: \"interactive\" },\n    },\n    {\n      protocolVersion: \"2025-11-25\",\n      registrationStrategy: \"preregistered\",\n      auth: {\n        mode: \"client_credentials\",\n        clientId: \"id\",\n        clientSecret: \"secret\",\n      },\n      client: { preregistered: { clientId: \"id\", clientSecret: \"secret\" } },\n    },\n  ],\n});\n\nconst suiteResult = await suite.run();\nconsole.log(suiteResult.summary); // \"All 3 flows passed for ...\"\n```\n\nOr use the CLI:\n\n```bash\n# Single flow (M2M, no browser needed)\nnpx @mcpjam/cli oauth conformance \\\n  --url https://your-server.com/mcp \\\n  --protocol-version 2025-11-25 \\\n  --registration preregistered \\\n  --auth-mode client_credentials \\\n  --redirect-url https://app.example.com/oauth/callback \\\n  --client-id \"$CLIENT_ID\" --client-secret \"$CLIENT_SECRET\" \\\n  --verify-tools\n\n# Suite from config file\nnpx @mcpjam/cli oauth conformance-suite --config ./oauth-tests.json\n\n# Force human-readable output\nnpx @mcpjam/cli oauth conformance --url https://your-server.com/mcp --protocol-version 2025-11-25 --registration dcr --format human\n\n# JUnit XML for CI\nnpx @mcpjam/cli oauth conformance-suite --config ./oauth-tests.json --format junit-xml > report.xml\n```\n\n### MCP Apps Conformance\n\nValidate the server-side MCP Apps surface your server exposes through tools and `ui://` resources.\n\n```ts\nimport { MCPAppsConformanceTest } from \"@mcpjam/sdk\";\n\nconst test = new MCPAppsConformanceTest({\n  url: \"https://your-server.com/mcp\",\n  timeout: 30_000,\n});\n\nconst result = await test.run();\nconsole.log(result.passed);\nconsole.log(result.summary);\n```\n\nOr use the CLI:\n\n```bash\n# Full MCP Apps surface check\nnpx @mcpjam/cli apps conformance \\\n  --url https://your-server.com/mcp \\\n  --format human\n\n# Focus on resource checks only\nnpx @mcpjam/cli apps conformance \\\n  --url https://your-server.com/mcp \\\n  --category resources\n```\n\nThe current runner validates tool metadata, `ui://` resource discovery, `resources/read`, HTML payload shape, and `_meta.ui` metadata such as `csp`, `permissions`, `domain`, and `prefersBorder`.\n\nIt does **not** yet validate full host-side SEP-1865 behavior such as `ui/initialize`, sandbox proxy behavior, or host notification ordering.\n\n---\n\n## API Reference\n\n<details>\n<summary><strong>MCPClientManager</strong></summary>\n\nManages connections to one or more MCP servers.\n\n```ts\nconst manager = new MCPClientManager();\n\n// Connect to STDIO server\nawait manager.connectToServer(\"everything\", {\n  command: \"npx\",\n  args: [\"-y\", \"@modelcontextprotocol/server-everything\"],\n});\n\n// Connect to HTTP/SSE server\nawait manager.connectToServer(\"asana\", {\n  url: \"https://mcp.asana.com/sse\",\n  requestInit: {\n    headers: { Authorization: \"Bearer TOKEN\" },\n  },\n});\n\n// Get tools for HostRunner\nconst tools = await manager.getToolsForAiSdk([\"everything\", \"asana\"]);\n\n// Direct MCP operations\nawait manager.listTools(\"everything\");\nawait manager.executeTool(\"everything\", \"add\", { a: 1, b: 2 });\nawait manager.listResources(\"everything\");\nawait manager.readResource(\"everything\", { uri: \"file:///tmp/test.txt\" });\nawait manager.listPrompts(\"everything\");\nawait manager.getPrompt(\"everything\", { name: \"greeting\" });\nawait manager.pingServer(\"everything\");\n\n// Disconnect\nawait manager.disconnectServer(\"everything\");\n```\n\nRetry policy is SDK-owned and disabled by default. To enable transient retries for connection and read-style manager operations, pass a manager-level policy:\n\n```ts\nconst manager = new MCPClientManager(\n  {},\n  {\n    retryPolicy: {\n      retries: 2,\n      retryDelayMs: 3000,\n    },\n  }\n);\n```\n\nThe manager applies that policy to `connectToServer()` when called directly and to read/diagnostic methods such as `listTools`, `listResources`, `readResource`, `listPrompts`, `getPrompt`, `pingServer`, and task reads. Read retries wrap the full connect plus RPC operation, so a single retry budget covers reconnect and the follow-on request together.\n\nTool execution stays single-shot unless you opt in explicitly at the call site:\n\n```ts\nawait manager.executeTool(\n  \"everything\",\n  \"add\",\n  { a: 1, b: 2 },\n  {\n    retry: {\n      retries: 1,\n      retryDelayMs: 1000,\n    },\n  }\n);\n```\n\n`withEphemeralClient()`, `probeMcpServer()`, and `runServerDoctor()` also accept the same `retryPolicy` shape. Retry classifiers are intentionally conservative in v1: transient network/connect/reset/DNS/timeout failures and HTTP `408`, `425`, `429`, and `5xx` are retryable; auth, validation, and method-unavailable errors are not.\n\n</details>\n\n<details>\n<summary><strong>HostRunner</strong></summary>\n\nRuns LLM prompts with MCP tool access.\n\n```ts\nimport { hasToolCall } from \"@mcpjam/sdk\";\n\nconst runner = new HostRunner({\n  tools: await manager.getToolsForAiSdk(),\n  model: \"openai/gpt-4o\", // provider/model format\n  apiKey: process.env.OPENAI_API_KEY!,\n  systemPrompt: \"You are a helpful assistant.\", // optional\n  temperature: 0.7, // optional, omit for reasoning models\n  maxSteps: 10, // optional, max tool call loops\n});\n\n// Run a prompt\nconst result = await runner.run(\"Add 2 and 3\");\n\n// Multi-turn with context\nconst r1 = await runner.run(\"Who am I?\");\nconst r2 = await runner.run(\"List my projects\", { context: [r1] });\n\n// Stop the loop after the step where a tool is called\nconst r3 = await runner.run(\"Search tasks\", {\n  stopWhen: hasToolCall(\"search_tasks\"),\n});\nr3.hasToolCall(\"search_tasks\"); // true\n\n// Bound prompt runtime\nconst r4 = await runner.run(\"Run a long workflow\", {\n  timeout: { totalMs: 10_000, stepMs: 2_500 },\n});\nr4.hasError(); // true if the prompt timed out\n\n// Exit early after selecting a tool without waiting for the MCP round-trip\nconst r5 = await runner.run(\"Search tasks\", {\n  stopAfterToolCall: \"search_tasks\",\n  timeoutMs: 5_000,\n});\nr5.getToolArguments(\"search_tasks\"); // captured even if the prompt stops early\n```\n\nNo provider key? Prefix the model with `mcpjam/` and MCPJam runs it on your\norganization's credits, with an MCPJam API key as the only secret:\n\n```ts\nconst runner = new HostRunner({\n  tools: await manager.getToolsForAiSdk(),\n  model: \"mcpjam/anthropic/claude-sonnet-4.5\",\n  apiKey: process.env.MCPJAM_API_KEY!, // or omit it and set MCPJAM_API_KEY\n});\n```\n\nHosted models are `mcpjam/anthropic/claude-*` and `mcpjam/openai/gpt-5*`. An\n`EvalSuite` releases its leases when it finishes; if you build runs by hand,\ncall `releaseMcpjamModelLeases()` when you are done.\n\n`stopWhen` does not skip tool execution. It controls whether the prompt loop continues after the current step completes, and `HostRunner` also applies `stepCountIs(maxSteps)` as a safety guard.\n\n`timeout` bounds prompt runtime. `number` and `totalMs` cap the full prompt, `stepMs` caps each step, and `chunkMs` is accepted for parity but mainly matters in streaming flows. The runtime creates an internal abort signal, so tools can stop early if their implementation respects the provided `abortSignal`.\n\n`stopAfterToolCall` is intended for evals that only care about tool selection and arguments. The targeted tool is short-circuited with a stub result, and the `PromptResult` still includes the tool name and args. If multiple tools are emitted in the same step, non-target siblings may still execute before the loop stops.\n\n**Supported providers:** `openai`, `anthropic`, `azure`, `google`, `mistral`, `deepseek`, `ollama`, `openrouter`, `xai`\n\n</details>\n\n<details>\n<summary><strong>PromptResult</strong></summary>\n\nReturned by `runner.run()`. Contains the LLM response and tool calls.\n\n```ts\nconst result = await runner.run(\"Add 2 and 3\");\n\n// Tool calls\nresult.hasToolCall(\"add\"); // boolean\nresult.toolsCalled(); // [\"add\"]\nresult.getToolCalls(); // [{ toolName: \"add\", arguments: { a: 2, b: 3 } }]\nresult.getToolArguments(\"add\"); // { a: 2, b: 3 }\n\n// Response\nresult.text; // \"The result is 5\"\n\n// Messages (full conversation)\nresult.getMessages(); // CoreMessage[]\nresult.getUserMessages(); // user messages only\nresult.getAssistantMessages(); // assistant messages only\nresult.getToolMessages(); // tool result messages only\n\n// Latency\nresult.e2eLatencyMs(); // total wall-clock time\nresult.llmLatencyMs(); // LLM API time\nresult.mcpLatencyMs(); // MCP tool execution time\n\n// Tokens\nresult.totalTokens();\nresult.inputTokens();\nresult.outputTokens();\n\n// Errors\nresult.hasError();\nresult.getError();\n\n// Debug trace (JSON dump of messages)\nresult.formatTrace();\n```\n\n</details>\n\n<details>\n<summary><strong>EvalTest</strong></summary>\n\nRuns a single test scenario with multiple iterations.\n\n```ts\nconst test = new EvalTest({\n  id: \"c_addition\",\n  name: \"addition\",\n  test: async (runner) => {\n    const result = await runner.run(\"Add 2 and 3\");\n    return result.hasToolCall(\"add\");\n  },\n});\n\nawait test.run(runner, {\n  iterations: 30,\n  concurrency: 5, // parallel iterations (default: 5)\n  retries: 2, // retry failed iterations (default: 0)\n  timeoutMs: 30000, // aborts the active prompt at 30s, then waits up to 1s for it to settle\n  onProgress: (completed, total) => console.log(`${completed}/${total}`),\n  onFailure: (report) => console.error(report), // called if any iteration fails\n});\n\n// Metrics\ntest.accuracy(); // success rate (0-1)\ntest.averageTokenUse(); // avg tokens per iteration\n\n// Iteration details\ntest.getAllIterations(); // all iteration results\ntest.getFailedIterations(); // failed iterations only\ntest.getSuccessfulIterations(); // successful iterations only\ntest.getFailureReport(); // formatted string of failed traces\n```\n\n</details>\n\n<details>\n<summary><strong>EvalSuite</strong></summary>\n\nGroups multiple `EvalTest` instances for aggregate metrics.\n\n```ts\nconst suite = new EvalSuite({ name: \"Math Operations\" });\n\nsuite.add(\n  new EvalTest({\n    id: \"c_addition\",\n    name: \"addition\",\n    test: async (runner) => {\n      const r = await runner.run(\"Add 2+3\");\n      return r.hasToolCall(\"add\");\n    },\n  })\n);\n\nsuite.add(\n  new EvalTest({\n    id: \"c_multiply\",\n    name: \"multiply\",\n    test: async (runner) => {\n      const r = await runner.run(\"Multiply 4*5\");\n      return r.hasToolCall(\"multiply\");\n    },\n  })\n);\n\nawait suite.run(runner, { iterations: 30 });\n\n// Aggregate metrics\nsuite.accuracy(); // overall accuracy\nsuite.averageTokenUse();\n\n// Individual test access\nsuite.get(\"addition\")?.accuracy();\nsuite.get(\"multiply\")?.accuracy();\nsuite.getAll(); // all EvalTest instances\n```\n\n</details>\n\n<details>\n<summary><strong>Validators</strong></summary>\n\nHelper functions for matching tool calls.\n\n```ts\nimport {\n  matchToolCalls,\n  matchToolCallsSubset,\n  matchAnyToolCall,\n  matchToolCallCount,\n  matchNoToolCalls,\n  matchToolCallWithArgs,\n  matchToolCallWithPartialArgs,\n  matchToolArgument,\n  matchToolArgumentWith,\n} from \"@mcpjam/sdk\";\n\nconst tools = result.toolsCalled(); // [\"add\", \"multiply\"]\nconst calls = result.getToolCalls(); // ToolCall[]\n\n// Exact match (order matters)\nmatchToolCalls([\"add\", \"multiply\"], tools); // true\nmatchToolCalls([\"multiply\", \"add\"], tools); // false\n\n// Subset match (order doesn't matter)\nmatchToolCallsSubset([\"add\"], tools); // true\n\n// Any match (at least one)\nmatchAnyToolCall([\"add\", \"subtract\"], tools); // true\n\n// Count match\nmatchToolCallCount(\"add\", tools, 1); // true\n\n// No tools called\nmatchNoToolCalls([]); // true\n\n// Argument matching\nmatchToolCallWithArgs(\"add\", { a: 2, b: 3 }, calls); // exact match\nmatchToolCallWithPartialArgs(\"add\", { a: 2 }, calls); // partial match\nmatchToolArgument(\"add\", \"a\", 2, calls); // single arg\nmatchToolArgumentWith(\"add\", \"a\", (v) => v > 0, calls); // predicate\n```\n\n</details>\n\n---\n\n## Telemetry\n\nThe SDK collects anonymous usage metrics (e.g., eval test run counts) to help improve the product. No personal data is collected.\n\nTo disable telemetry, set either of these environment variables:\n\n```bash\nexport DO_NOT_TRACK=1\n# or\nexport MCPJAM_TELEMETRY_DISABLED=1\n```\n\n### Goal-completion grading\n\n`judge({ mode: \"goalCompletion\", ... })` uses the same versioned policy as hosted\nMCPJam evals. It receives the recorded trace, tool definitions (including uncalled\ntools), runtime context and captured media. Supply provider-verified `modelLimits`\nand an `evidence` resolver if your runner stores evidence outside the trace.\nMissing captured evidence, unsupported media and context overflow produce an\nunscored error. The judge never shortens evidence to make it fit.\n\nUse `rubric.instructions` for optional grading instructions. They supplement the\ncase objective and expected outcome; structured `rubric.criteria` remain supported.\nInstructions alone do not raise objective-only scores above 0.85. Hosted suites\ninherit automatic advisory grading, while explicit manual/off settings survive.\n\nFor recorded runs, `client.requestEvalRunJudge({ projectId, runId, scope: \"failed\" })`\nretries only failed or ungraded iterations without rerunning the agent. Use\n`client.backtestEvalRunJudge({ projectId, runId, rubric })` to preview a draft on one\niteration without changing the recorded verdict. Continue with the same rubric and\n`continuation: { cursor, sourceHash, reservationId }` from the preceding response.\nCompleted page retries reuse their saved result. New pages use model budget.\nThe matching CLI is `mcpjam cloud eval judge-backtest --run <id> --json <request>`;\nthe MCP operation is `backtest_eval_run_judge`.\n","readmeFilename":"README.md"}