{"_id":"jevcore-mcp","_rev":"9-d44f6c7adec97ebb1fa98e8a5f5e58cb","name":"jevcore-mcp","dist-tags":{"latest":"0.4.1"},"versions":{"0.1.0":{"name":"jevcore-mcp","version":"0.1.0","keywords":["mcp","model-context-protocol","jev","typesafe","typesafe-ai","system-one","decision-model"],"license":"MIT","_id":"jevcore-mcp@0.1.0","maintainers":[{"name":"perrylink","email":"novelnexusai@outlook.com"}],"homepage":"https://github.com/PerryLink/jevcore#readme","bugs":{"url":"https://github.com/PerryLink/jevcore/issues"},"bin":{"jevcore-mcp":"./lib/bin.js"},"dist":{"shasum":"3d5134c04b6063eb10d3bd4a185ed87da5ae087e","tarball":"https://registry.npmjs.org/jevcore-mcp/-/jevcore-mcp-0.1.0.tgz","fileCount":26,"integrity":"sha512-v9iUq/w4NnMIRwhkZm48gCEUTIwsYp3Fuxb4B3yo0fodrDLin7uVyePFbUwOfU1h2ITDXbsODk/UVtH9/Er6oA==","signatures":[{"sig":"MEUCIQDkUic91MWnuJeMirnIlj7Fj5Dfh4dDYD2ChzNXxoCXBgIgHRO7JXnk2VDry751tJ9O16mcIbXC2YiCkJLeAwd9aLk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":57167},"main":"./lib/index.js","type":"module","types":"./lib/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","clean":"node -e \"require('node:fs').rmSync('lib',{recursive:true,force:true})\"","smoke":"node scripts/mcp-smoke.mjs","typecheck":"tsc -p tsconfig.json --noEmit","smoke:live":"node scripts/mcp-smoke-live.mjs","test:watch":"vitest"},"_npmUser":{"name":"perrylink","email":"novelnexusai@outlook.com"},"repository":{"url":"git+https://github.com/PerryLink/jevcore.git","type":"git"},"description":"TypeSafe Jev over the Model Context Protocol: typed judgments (ask, rank, check) that return calibrated probabilities instead of prose.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^3.25.0","jevcore":"0.1.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.10.0"},"optionalDependencies":{"@openrouter/sdk":"^1.3.6"},"_npmOperationalInternal":{"tmp":"tmp/jevcore-mcp_0.1.0_1789880015304_0.035969068793029635","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"jevcore-mcp","version":"0.1.1","keywords":["mcp","model-context-protocol","jev","typesafe","typesafe-ai","system-one","decision-model"],"license":"MIT","_id":"jevcore-mcp@0.1.1","maintainers":[{"name":"perrylink","email":"novelnexusai@outlook.com"}],"homepage":"https://github.com/PerryLink/jevcore#readme","bugs":{"url":"https://github.com/PerryLink/jevcore/issues"},"bin":{"jevcore-mcp":"./lib/bin.js"},"dist":{"shasum":"d4b27f8bf1dc4ea94816052f427be7b055d70bdb","tarball":"https://registry.npmjs.org/jevcore-mcp/-/jevcore-mcp-0.1.1.tgz","fileCount":26,"integrity":"sha512-PJcKz2213L8CNWmNN5rFdhl2ZY2uZ4aB3ypgfSem/KiPMuyeDbGY91uFZsrK30ekty1rZhWSIr6Y/RUmsQ1tAQ==","signatures":[{"sig":"MEYCIQDS67XRtM1Yrq8Yf4h90akk44mYYzr7ShraeR2g/wZV7wIhAI13YrjB4EhjAOR6HiQA4i5mJnfDxP4fLo3xEnpiQMdB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQD/CVg/EjaXvLe5OTbkFfkmQ+F+m17lrWm+Am0MNB61zwIgCVz2czm8gx5As8amiEBLG3Tb7sQGEEXGFVQuPbnv0lw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":57167},"main":"./lib/index.js","type":"module","types":"./lib/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","clean":"node -e \"require('node:fs').rmSync('lib',{recursive:true,force:true})\"","smoke":"node scripts/mcp-smoke.mjs","typecheck":"tsc -p tsconfig.json --noEmit","smoke:live":"node scripts/mcp-smoke-live.mjs","test:watch":"vitest"},"_npmUser":{"name":"perrylink","email":"novelnexusai@outlook.com"},"repository":{"url":"git+https://github.com/PerryLink/jevcore.git","type":"git"},"description":"TypeSafe Jev over the Model Context Protocol: typed judgments (ask, rank, check) that return calibrated probabilities instead of prose.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^3.25.0","jevcore":"0.1.1","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.10.0"},"optionalDependencies":{"@openrouter/sdk":"^1.3.6"},"_npmOperationalInternal":{"tmp":"tmp/jevcore-mcp_0.1.1_1789880800813_0.10478557261410715","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"jevcore-mcp","version":"0.2.0","keywords":["mcp","model-context-protocol","jev","typesafe","typesafe-ai","system-one","decision-model"],"license":"MIT","_id":"jevcore-mcp@0.2.0","maintainers":[{"name":"perrylink","email":"novelnexusai@outlook.com"}],"homepage":"https://github.com/PerryLink/jevcore#readme","bugs":{"url":"https://github.com/PerryLink/jevcore/issues"},"bin":{"jevcore-mcp":"./lib/bin.js"},"dist":{"shasum":"d611c2a4518345c3489ecb9d0440e5165bac10d1","tarball":"https://registry.npmjs.org/jevcore-mcp/-/jevcore-mcp-0.2.0.tgz","fileCount":26,"integrity":"sha512-ggQ0SBIg78YEX5oPc2DpA/n2iEEgGBzWuPXeKg53+3/0OmRs7LOWAUsSs87GuT43Pg82Pg6r/AKjCk4FT+98yg==","signatures":[{"sig":"MEQCIAio7TeLqAUyGqw4Q9DHo8YG4DlsCQCiRuW+1nsheeTDAiAgdUhxhKAcye168rzWmwyAdJ0/tjS7po3CUQR+9jkgnQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDByPSOc/nGr8yO7myzgtAdq8FZl18o/e99wICQj5lvvgIgSXeRc/txzZRB6Vq2XKaXGpCB98q+VJhUVXOp8gufkaA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":58872},"main":"./lib/index.js","type":"module","types":"./lib/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","clean":"node -e \"require('node:fs').rmSync('lib',{recursive:true,force:true})\"","smoke":"node scripts/mcp-smoke.mjs","typecheck":"tsc -p tsconfig.json --noEmit","smoke:live":"node scripts/mcp-smoke-live.mjs","test:watch":"vitest"},"_npmUser":{"name":"perrylink","email":"novelnexusai@outlook.com"},"repository":{"url":"git+https://github.com/PerryLink/jevcore.git","type":"git"},"description":"TypeSafe Jev over the Model Context Protocol: typed judgments (ask, rank, check) that return calibrated probabilities instead of prose.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^3.25.0","jevcore":"0.2.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.10.0"},"_npmOperationalInternal":{"tmp":"tmp/jevcore-mcp_0.2.0_1789891956240_0.2884852381223755","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"jevcore-mcp","version":"0.2.1","keywords":["mcp","model-context-protocol","jev","typesafe","typesafe-ai","system-one","decision-model"],"license":"MIT","_id":"jevcore-mcp@0.2.1","maintainers":[{"name":"perrylink","email":"novelnexusai@outlook.com"}],"homepage":"https://github.com/PerryLink/jevcore#readme","bugs":{"url":"https://github.com/PerryLink/jevcore/issues"},"bin":{"jevcore-mcp":"./lib/bin.js"},"dist":{"shasum":"afff2e603fb1febfc80ffbe412df31fd1b2839e0","tarball":"https://registry.npmjs.org/jevcore-mcp/-/jevcore-mcp-0.2.1.tgz","fileCount":26,"integrity":"sha512-3gSdGmYARNItw1il2nNmY5lDrXLFYkZh0oNr0RRLd+/7TubBMsRcfFxvCVrYiN9oGySbXu1PVo/GZ2aEO/yJcg==","signatures":[{"sig":"MEUCIDpivkHAtpYOMXU1mnGczd/KYvAq+onSseYN//820C5RAiEAsVhUcnWSOxNxNa6WE41qtcCKylwRScyEowjTFsKFiFY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDriWt5WonS3VXyW3B/PisYqkTFLYWfHowU9vFBtYWJigIhAJ1Wj6zgIWd6P2xywq/JohpVhRJ3nCkC307cf+MT/QFC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":58872},"main":"./lib/index.js","type":"module","types":"./lib/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","clean":"node -e \"require('node:fs').rmSync('lib',{recursive:true,force:true})\"","smoke":"node scripts/mcp-smoke.mjs","typecheck":"tsc -p tsconfig.json --noEmit","smoke:live":"node scripts/mcp-smoke-live.mjs","test:watch":"vitest"},"_npmUser":{"name":"perrylink","email":"novelnexusai@outlook.com"},"repository":{"url":"git+https://github.com/PerryLink/jevcore.git","type":"git"},"description":"TypeSafe Jev over the Model Context Protocol: typed judgments (ask, rank, check) that return calibrated probabilities instead of prose.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^3.25.0","jevcore":"0.2.1","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.10.0"},"_npmOperationalInternal":{"tmp":"tmp/jevcore-mcp_0.2.1_1789892107732_0.8140521535485319","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"jevcore-mcp","version":"0.2.2","keywords":["mcp","model-context-protocol","jev","typesafe","typesafe-ai","system-one","decision-model"],"license":"Apache-2.0","_id":"jevcore-mcp@0.2.2","maintainers":[{"name":"perrylink","email":"novelnexusai@outlook.com"}],"homepage":"https://github.com/PerryLink/jevcore#readme","bugs":{"url":"https://github.com/PerryLink/jevcore/issues"},"bin":{"jevcore-mcp":"./lib/bin.js"},"dist":{"shasum":"a14cb46be33760f1668e50bbdf1189eef2a677e2","tarball":"https://registry.npmjs.org/jevcore-mcp/-/jevcore-mcp-0.2.2.tgz","fileCount":36,"integrity":"sha512-9lRLAYNgL22OXaa4hXx4Q5y5TsXLhQQl0C7txfM41BbR4Mtie3QqAWunKlIjDJqTrdTpinIPlYkUfImlRfEOGw==","signatures":[{"sig":"MEUCIQCDLRAw4faQOPgnrvT094dJBaXK0Yy3VwWoiKIx0yfoEQIgXTVQtuUFbEIbOnEK6d5JIK9/BsTdxLKsvXkiMQ1cOeU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIDxA03CS9DnJsHVMI+zXYYQUn2kWvp3slVUpOLo6M0mNAiBUzjLKj70Fmx8Q6J6903JuUrPwzLyCho7+N5pI/xIllg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":136366},"main":"./lib/index.js","type":"module","types":"./lib/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./package.json":"./package.json"},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","clean":"node -e \"require('node:fs').rmSync('lib',{recursive:true,force:true})\"","smoke":"node scripts/mcp-smoke.mjs","typecheck":"tsc -p tsconfig.json --noEmit","smoke:live":"node scripts/mcp-smoke-live.mjs","test:watch":"vitest"},"_npmUser":{"name":"perrylink","email":"novelnexusai@outlook.com"},"repository":{"url":"git+https://github.com/PerryLink/jevcore.git","type":"git"},"description":"TypeSafe Jev over the Model Context Protocol: typed judgments (ask, rank, check) that return calibrated probabilities instead of prose.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^3.25.0","jevcore":"0.2.2","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.10.0"},"_npmOperationalInternal":{"tmp":"tmp/jevcore-mcp_0.2.2_1789900584364_0.5209482128976921","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"jevcore-mcp","version":"0.3.0","keywords":["mcp","mcp-server","model-context-protocol","jev","typesafe","typesafe-ai","system-one","decision-model"],"license":"Apache-2.0","_id":"jevcore-mcp@0.3.0","maintainers":[{"name":"perrylink","email":"novelnexusai@outlook.com"}],"homepage":"https://github.com/PerryLink/jevcore#readme","bugs":{"url":"https://github.com/PerryLink/jevcore/issues"},"bin":{"jevcore-mcp":"./lib/bin.js"},"dist":{"shasum":"4979313bfd269938604ae9f624d0f99b2485c4bd","tarball":"https://registry.npmjs.org/jevcore-mcp/-/jevcore-mcp-0.3.0.tgz","fileCount":37,"integrity":"sha512-j5RPr6mZHFs8CgGwk0IXTTCo5qiVJyQZF6HHeeKvsWD6kORuVo7MwGyEz8/U3JVNCFLK0N1OKYj8MMIya3EE6g==","signatures":[{"sig":"MEUCIGfPr0KyLpQUPLdw85JNiSPF22xjnar+1cCPSBbD1da6AiEAl+ah5yljNWaS9NB81jcBhHEv2y6MdmPtEeFmq7D3mWo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIF4pCc+uWrs+jkmwS7mFvzMy9F5uO0/upL/LOL/HMbYiAiALG3lkDPZbDABrToss9jT7gcHD4Y7XhNRoFwuF/kLgzA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":182115},"main":"./lib/index.js","type":"module","types":"./lib/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./package.json":"./package.json"},"mcpName":"io.github.PerryLink/jevcore","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","clean":"node -e \"require('node:fs').rmSync('lib',{recursive:true,force:true})\"","smoke":"node scripts/mcp-smoke.mjs","typecheck":"tsc -p tsconfig.json --noEmit","smoke:live":"node scripts/mcp-smoke-live.mjs","test:watch":"vitest"},"_npmUser":{"name":"perrylink","email":"novelnexusai@outlook.com"},"repository":{"url":"git+https://github.com/PerryLink/jevcore.git","type":"git"},"description":"TypeSafe Jev over the Model Context Protocol: typed judgments (ask, rank, check) that return calibrated probabilities instead of prose.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^3.25.0","jevcore":"0.3.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.10.0"},"_npmOperationalInternal":{"tmp":"tmp/jevcore-mcp_0.3.0_1789920351161_0.32252714027638874","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"jevcore-mcp","version":"0.3.1","keywords":["mcp","mcp-server","model-context-protocol","jev","typesafe","typesafe-ai","system-one","decision-model"],"license":"Apache-2.0","_id":"jevcore-mcp@0.3.1","maintainers":[{"name":"perrylink","email":"novelnexusai@outlook.com"}],"homepage":"https://github.com/PerryLink/jevcore#readme","bugs":{"url":"https://github.com/PerryLink/jevcore/issues"},"bin":{"jevcore-mcp":"./lib/bin.js"},"dist":{"shasum":"5bd438ed755f5ba314f26dd9328391e283dd620b","tarball":"https://registry.npmjs.org/jevcore-mcp/-/jevcore-mcp-0.3.1.tgz","fileCount":37,"integrity":"sha512-gXHamAN+ygIHm6HTgYkLskkD8HmcUi887KtzEN63/n4rDUkL/ShpvUyhGFoPlnhI4o8LmZVKo1z6C0l0yCW/rA==","signatures":[{"sig":"MEQCIBDVMiaArEoXmWp8pU17lGdptYC8SB1tIS0Pe9XQMdwPAiBAAIvuU4kCzpyKtxKz5ZJH8NJSCEV/KLt/55W0b5OKtQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIE5mXRh+ZXcBCQUVxB0FV2wLdPGSBLEm/+3Qt+pd0D6tAiAvNAkNrBh8lvpW2B2ENXL+xWBLlTblfaznlq/ByMFqAA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":185796},"main":"./lib/index.js","type":"module","types":"./lib/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./package.json":"./package.json"},"mcpName":"io.github.PerryLink/jevcore","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","clean":"node -e \"require('node:fs').rmSync('lib',{recursive:true,force:true})\"","smoke":"node scripts/mcp-smoke.mjs","typecheck":"tsc -p tsconfig.json --noEmit","smoke:live":"node scripts/mcp-smoke-live.mjs","test:watch":"vitest"},"_npmUser":{"name":"perrylink","email":"novelnexusai@outlook.com"},"repository":{"url":"git+https://github.com/PerryLink/jevcore.git","type":"git"},"description":"TypeSafe Jev over the Model Context Protocol: typed judgments (ask, rank, check) that return calibrated probabilities instead of prose.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^3.25.0","jevcore":"0.3.1","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.10.0"},"_npmOperationalInternal":{"tmp":"tmp/jevcore-mcp_0.3.1_1789921532520_0.7471798206226652","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"jevcore-mcp","version":"0.4.0","keywords":["mcp","mcp-server","model-context-protocol","jev","typesafe","typesafe-ai","system-one","decision-model"],"license":"Apache-2.0","_id":"jevcore-mcp@0.4.0","maintainers":[{"name":"perrylink","email":"novelnexusai@outlook.com"}],"homepage":"https://github.com/PerryLink/jevcore#readme","bugs":{"url":"https://github.com/PerryLink/jevcore/issues"},"bin":{"jevcore-mcp":"./lib/bin.js"},"dist":{"shasum":"4d36c4b2a60b59512f97c6f22db64789a3751f5e","tarball":"https://registry.npmjs.org/jevcore-mcp/-/jevcore-mcp-0.4.0.tgz","fileCount":41,"integrity":"sha512-ObOw3pyH5wOwFpnDg3jFL6AeAS/eCVelo3V4osF/f1Xx4H+Hu3On8R0aZsLckZa1ZDfo9QzEdHE/fZz7qdtjFA==","signatures":[{"sig":"MEUCIAmKcDhffAY5BfBQCVNqcEBIo4Kkj8BGWVqgErzq/VQdAiEA3uToENITClzoLpmWY12ynjkcU7IOHUhwILhIaxwHUnw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIEde+KZO3D5OOxCuK/7Azy2kqmHUOpOWtQjqpo36mARaAiA8HQvnhySjgRB0fOd1LUeZCSphuLR0GhEi3tsBH7msag==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":279325},"main":"./lib/index.js","type":"module","types":"./lib/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./package.json":"./package.json"},"mcpName":"io.github.PerryLink/jevcore","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","clean":"node -e \"require('node:fs').rmSync('lib',{recursive:true,force:true})\"","smoke":"node scripts/mcp-smoke.mjs","typecheck":"tsc -p tsconfig.json --noEmit","smoke:live":"node scripts/mcp-smoke-live.mjs","test:watch":"vitest"},"_npmUser":{"name":"perrylink","email":"novelnexusai@outlook.com"},"repository":{"url":"git+https://github.com/PerryLink/jevcore.git","type":"git"},"description":"TypeSafe Jev over the Model Context Protocol: typed judgments (ask, rank, check) that return calibrated probabilities instead of prose.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^3.25.0","jevcore":"0.4.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.10.0"},"_npmOperationalInternal":{"tmp":"tmp/jevcore-mcp_0.4.0_1789923453123_0.9869714293962621","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"_id":"jevcore-mcp@0.4.1","bin":{"jevcore-mcp":"./lib/bin.js"},"bugs":{"url":"https://github.com/PerryLink/jevcore/issues"},"dist":{"shasum":"4f63ec1bdde2fb10326275f89e9e8f4c59134259","tarball":"https://registry.npmjs.org/jevcore-mcp/-/jevcore-mcp-0.4.1.tgz","fileCount":41,"integrity":"sha512-M/huQ8ANdu5Dmlj/WcmgJtkdSpku8dTWsPl8wrW/IQ72e0Iij+uoHE0fOQdtnBxLtWDUhaDx98vn/hEUz5zvSw==","signatures":[{"sig":"MEUCIHAxR/X8rJd1KAFyn+nKFYot07xjGg/WnnNSjavHf1lRAiEAj1DDciKRNAGp6kSwAx9MjFku3iBeeH7feNruSLz5O+Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIAjcsmvNWSy+GZi3wbYV5rJgHBOJKaoCu8qCdr1lRM0OAiEAlq8TFxMLTjiU7srDKLU5NYZC92Uhj7rHA7CvC29gEK4="}],"unpackedSize":284286},"main":"./lib/index.js","name":"jevcore-mcp","type":"module","types":"./lib/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./package.json":"./package.json"},"license":"Apache-2.0","mcpName":"io.github.PerryLink/jevcore","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","clean":"node -e \"require('node:fs').rmSync('lib',{recursive:true,force:true})\"","smoke":"node scripts/mcp-smoke.mjs","typecheck":"tsc -p tsconfig.json --noEmit","smoke:live":"node scripts/mcp-smoke-live.mjs","test:watch":"vitest"},"version":"0.4.1","_npmUser":{"name":"perrylink","email":"novelnexusai@outlook.com"},"homepage":"https://github.com/PerryLink/jevcore#readme","keywords":["mcp","mcp-server","model-context-protocol","jev","typesafe","typesafe-ai","system-one","decision-model"],"repository":{"url":"git+https://github.com/PerryLink/jevcore.git","type":"git"},"description":"TypeSafe Jev over the Model Context Protocol: typed judgments (ask, rank, check) that return calibrated probabilities instead of prose.","directories":{},"maintainers":[{"name":"perrylink","email":"novelnexusai@outlook.com"}],"_nodeVersion":"22.22.3","dependencies":{"zod":"^3.25.0","jevcore":"0.4.1","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.0.0","typescript":"^5.7.0","@types/node":"^22.10.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/jevcore-mcp_0.4.1_1789924179364_0.8263435451412444"}}},"time":{"created":"2026-09-20T04:53:35.103Z","modified":"2026-09-20T17:09:39.618Z","0.1.0":"2026-09-20T04:53:35.449Z","0.1.1":"2026-09-20T05:06:40.884Z","0.2.0":"2026-09-20T08:12:36.324Z","0.2.1":"2026-09-20T08:15:07.804Z","0.2.2":"2026-09-20T10:36:24.482Z","0.3.0":"2026-09-20T16:05:51.246Z","0.3.1":"2026-09-20T16:25:32.603Z","0.4.0":"2026-09-20T16:57:33.228Z","0.4.1":"2026-09-20T17:09:39.469Z"},"bugs":{"url":"https://github.com/PerryLink/jevcore/issues"},"license":"Apache-2.0","homepage":"https://github.com/PerryLink/jevcore#readme","keywords":["mcp","mcp-server","model-context-protocol","jev","typesafe","typesafe-ai","system-one","decision-model"],"repository":{"url":"git+https://github.com/PerryLink/jevcore.git","type":"git"},"description":"TypeSafe Jev over the Model Context Protocol: typed judgments (ask, rank, check) that return calibrated probabilities instead of prose.","maintainers":[{"name":"perrylink","email":"novelnexusai@outlook.com"}],"readme":"# jevcore-mcp\n\nTypeSafe [Jev](https://typesafe.ai) over the Model Context Protocol.\n\nJev is not a chat model. It answers typed questions — `noul` (yes/no), `choice`,\n`score` — and returns calibrated probabilities. It does not write prose, and\nasking it to is a category error. This server exposes exactly that surface.\n\n**Offline by default. Egress disclosed. Nothing default-on.**\n\n## Install\n\n```sh\nnpx -y jevcore-mcp\n```\n\nRegister it as a stdio MCP server with your host. For DeepSeek Harness, that is a\nconfiguration-only bundle whose patch inserts the harness's MCP client:\n\n```yml\n- insert:\n    - id: jev-mcp\n      name: '@deepseek-ai/dsh-mcp-client'\n      config:\n        serverName: jev\n        transport: stdio\n        command: npx\n        args: ['-y', 'jevcore-mcp']\n        env:\n          TYPESAFE_API_KEY: '<the key>'\n        failOnStartupError: true\n```\n\nThe env map is not optional: DSH strips every credential-shaped name — anything\ncontaining KEY, PASSWORD, SECRET or TOKEN, in any case — from the environment it\nhands a spawned server, then merges this map back in afterwards. A key exported in\nyour shell never arrives, and the server stays on the offline mock without\nreporting an error.\n\n## Configuration\n\n| Variable | Effect |\n|---|---|\n| `TYPESAFE_API_KEY` | Selects the TypeSafe route when present |\n| `OPENROUTER_API_KEY` | Selects the OpenRouter route when present and no TypeSafe key is set |\n| `JEV_PROVIDER` | `mock`, `live`, or `openrouter` — overrides the heuristic above |\n| `TYPESAFE_MODEL` / `OPENROUTER_MODEL` | Model id for the selected route |\n| `TYPESAFE_BASE_URL` / `OPENROUTER_BASE_URL` | API root for the selected route |\n\nTwo routes reach the same models. TypeSafe serves them directly; OpenRouter serves\nthe System One models at the same `POST /v1/systemone` path TypeSafe does, one\nlevel below its own API root, which is the way in when a TypeSafe key is\nimpractical. They differ in whose servers see your state, so the startup report\nnames the endpoint rather than leaving it implied by the provider's name. On the\nOpenRouter route the model id must be a System One one: bare `jev-latest` needs no\nprefix, `typesafe/` is accepted on a versioned id such as `typesafe/jev-1.13`, and\n`typesafe/jev-latest` is not accepted. Anything else answers with prose this\nserver cannot interpret as a decision.\n\nUnlike a per-call adapter, this server resolves its credential **once at\nstartup** — it is a long-lived process and its credential does not change\nmid-session. `JEV_PROVIDER=live` with no key is therefore a startup error with a\nreadable message, not a failure on the first tool call.\n\n## The tools\n\n| Tool | Purpose |\n|---|---|\n| `jev_ask` | One or more typed questions over one state; batch them into a single call |\n| `jev_rank` | Score and sort candidates against one criterion, one question per candidate |\n| `jev_check` | Does this evidence support this claim? `supported`, `contradicted`, `conflicted`, `insufficient`, `undecided`, or `unknown` |\n\nThree tools, deliberately few and orthogonal. Two existing Jev MCP servers already\nship ten tools each; this one exists for the case where a host wants the three\nprimitives and nothing else, built on the same core as the DeepSeek Harness\nplugin so the two cannot drift.\n\n`jev_rank` accepts a bounded list rather than the best of any list. Each candidate adds one question\nto a fixed 4,000-character budget on the question map, and a list that does not fit is refused with an\nerror, not truncated to the first N that do: with the default criterion 20 candidates fit, with a\n100-character criterion 17, and with a 500-character one 6. Keep candidate lists short, keep the\ncriterion terse, and split a long list into batches.\n\nEvery result carries probabilities, not decisions. Apply your own confidence\nthreshold before acting, and treat a low-confidence answer as unknown rather than\npicking for it.\n\n## The egress report\n\nThe server prints its contract to **stderr** on startup:\n\n```\n[jevcore] provider=mock  endpoint=none  egress=OFF  (no network calls will be made; every answer is synthetic)\n[jevcore]   armed  tool:jev_ask  (runs against the offline mock; would transmit if the provider became \"live\" or \"openrouter\")\n```\n\nStderr, never stdout: on a stdio transport stdout is the protocol channel and a\nstray line there would corrupt the stream.\n\nRedaction runs before anything is sent. It is a mitigation, not a guarantee — an\nunrecognised secret in free text will pass through. If that possibility is\nunacceptable, do not set a key.\n\n## Status\n\nTools, provider selection, and egress enforcement are covered by tests, and the\ntransport has been driven end to end by a real MCP client over stdio:\n\n```sh\npnpm --filter jevcore-mcp run smoke        # offline, mock provider, no credential\npnpm --filter jevcore-mcp run smoke:live   # real answers, needs OPENROUTER_API_KEY\n```\n\nThe offline run exercises the handshake, tool discovery, three successful calls,\nand the error path for an invalid batch.\n\nThe live run drives the same surface against real System One models through\nOpenRouter: all three tools answered, a three-primitive batch returned a `score`\nof `1.08` on a three-level rubric with its legend intact, `jev_rank` ordered a\ncredential runbook above a billing guide, `jev_check` returned `contradicted`, and\nthe startup egress report named the OpenRouter endpoint on stderr without\ndisturbing the protocol channel.\n\n**The TypeSafe route is exercised, but only lightly.** `packages/core/scripts/probe-live.mjs`\n(`pnpm --filter jevcore run probe:typesafe`) asks the real API three things: ten claim/evidence\npairs whose verdict is known in advance, one question repeated six times, and a noul carrying a\n`criteria: {true, false}` boundary. Two separate runs agreed — supporting evidence scored 0.95,\ncontradicting evidence 0.10, evidence silent about the claim 0.03, and the repeated question varied\nby 0.01 or less. The boundary was accepted. What remains untested is everything around the request\nrather than the request itself: quota, rate-limit and entitlement behaviour on a real account.\n\n## License\n\n[Apache License 2.0](LICENSE) © 2026 jevcore contributors. TypeSafe, Jev, and\nSystem One are trademarks of TypeSafe AI; this is an independent integration and\nis not affiliated with or endorsed by them.\n","readmeFilename":""}