{"_id":"@battlegrid/mcp-server","_rev":"46-fcb329f7b7b80f2ca41542bb62fdcc5f","name":"@battlegrid/mcp-server","dist-tags":{"latest":"31.2.26"},"versions":{"1.0.0":{"name":"@battlegrid/mcp-server","version":"1.0.0","keywords":["mcp","model-context-protocol","ai","claude","cursor","battlegrid","crypto","prediction","gaming"],"license":"MIT","_id":"@battlegrid/mcp-server@1.0.0","maintainers":[{"name":"blockferrp","email":"ramon@blockfer.com"}],"homepage":"https://battlegrid.gg","bugs":{"url":"https://github.com/blockfer-rp/battlegrid-app/issues"},"bin":{"battlegrid-mcp":"dist/index.js"},"dist":{"shasum":"ca9cf86e5d0ef159f21d05713c3f5b0e255b57d1","tarball":"https://registry.npmjs.org/@battlegrid/mcp-server/-/mcp-server-1.0.0.tgz","fileCount":7,"integrity":"sha512-HLvJIO28QIhfRKEeZejjB/n9LACkJI/kl1mpFQ6HlRFACn0oTOsvsbImxWEVKGMLTOSKnAvc88ITQTOK3ntizg==","signatures":[{"sig":"MEUCIQDTwF460jnGEV+6Cq55JI4kMelqD6ko5XmCDWjFyT1kQAIgIorzs3zkk3Bv57D0LK6aO7HcNDzOyar7/0u0gaBAiXs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20880},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"7ad9ada48aec9090c390f2dda9c2d4b381245326","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"blockferrp","email":"ramon@blockfer.com"},"repository":{"url":"git+https://github.com/blockfer-rp/battlegrid-app.git","type":"git","directory":"packages/mcp-server"},"_npmVersion":"11.6.4","description":"BattleGrid MCP server — play crypto prediction games from AI agents","directories":{},"_nodeVersion":"23.6.1","dependencies":{"@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.7.0","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_1.0.0_1772417693387_0.9262674333510073","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@battlegrid/mcp-server","version":"1.0.1","keywords":["mcp","model-context-protocol","ai","claude","cursor","battlegrid","crypto","prediction","gaming"],"license":"MIT","_id":"@battlegrid/mcp-server@1.0.1","maintainers":[{"name":"blockferrp","email":"ramon@blockfer.com"}],"homepage":"https://battlegrid.trade","bugs":{"url":"https://github.com/blockfer-rp/battlegrid-app/issues"},"bin":{"battlegrid-mcp":"dist/index.js"},"dist":{"shasum":"6466d692f08fb118006a294c2261ae14bf92a311","tarball":"https://registry.npmjs.org/@battlegrid/mcp-server/-/mcp-server-1.0.1.tgz","fileCount":7,"integrity":"sha512-CyUaK7IILExAMb4CeRPNR7zlotB3G5A8sMAu4i4M8A5vazg7UZYO8npb4sNwdxfRiPeFL9RtzCUlRXK5WkbyBQ==","signatures":[{"sig":"MEYCIQDp2ll7wquEefr6vQohzYxMSpQsu6rjGszNw2y9cWfNlgIhAIs4caZZoDDuoNtEwQxFsZf8Z2NXiGBM5yvUCYmNnnBP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20906},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"138dd73845a8c0ba780992a40186972dde517ec9","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"blockferrp","email":"ramon@blockfer.com"},"repository":{"url":"git+https://github.com/blockfer-rp/battlegrid-app.git","type":"git","directory":"packages/mcp-server"},"_npmVersion":"11.6.4","description":"BattleGrid MCP server — play crypto prediction games from AI agents","directories":{},"_nodeVersion":"23.6.1","dependencies":{"@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.7.0","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_1.0.1_1772419039110_0.12090172843467784","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@battlegrid/mcp-server","version":"1.0.2","keywords":["mcp","model-context-protocol","ai","claude","cursor","battlegrid","crypto","prediction","gaming"],"license":"MIT","_id":"@battlegrid/mcp-server@1.0.2","maintainers":[{"name":"blockferrp","email":"admin@battlegrid.trade"}],"homepage":"https://battlegrid.trade","bugs":{"url":"https://github.com/playbattlegrid/battlegrid-mcp/issues"},"bin":{"battlegrid-mcp":"dist/index.js"},"dist":{"shasum":"7179f7673b2549ff6af1a1f71b432837889f0c7e","tarball":"https://registry.npmjs.org/@battlegrid/mcp-server/-/mcp-server-1.0.2.tgz","fileCount":7,"integrity":"sha512-s4X4YTKYsm4idoagcXCEzmM+3urfYOWjg9BNjne6dTrODZC+JlkkuBnkyc4h4j9QNdXeNnpGkxcN/o9palyKPw==","signatures":[{"sig":"MEQCIG53bFqqcCfcasINSvgMABL/eXwmwgJXyIxC8CFatJ2iAiBn6dDEckVVv7t0IlSsq88Nm8ElfdzWR/6QGBnLdJCc5A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@battlegrid%2fmcp-server@1.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":19812},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"75166863a1a9c6fab861d1f380529438446d08d5","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0e5a8ea5-8fd4-49d0-bb45-a28dd1099710"}},"repository":{"url":"git+https://github.com/playbattlegrid/battlegrid-mcp.git","type":"git"},"_npmVersion":"11.9.0","description":"BattleGrid MCP server — play crypto prediction games from AI agents","directories":{},"_nodeVersion":"24.14.0","dependencies":{"@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.7.0","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_1.0.2_1773068892893_0.37602784390360067","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@battlegrid/mcp-server","version":"1.1.0","keywords":["mcp","model-context-protocol","ai","claude","cursor","battlegrid","crypto","prediction","gaming"],"license":"MIT","_id":"@battlegrid/mcp-server@1.1.0","maintainers":[{"name":"blockferrp","email":"admin@battlegrid.trade"}],"homepage":"https://battlegrid.trade","bugs":{"url":"https://github.com/playbattlegrid/battlegrid-mcp/issues"},"bin":{"battlegrid-mcp":"dist/index.js"},"dist":{"shasum":"f00098581ecbbd47c9483386cfd08342ef99245d","tarball":"https://registry.npmjs.org/@battlegrid/mcp-server/-/mcp-server-1.1.0.tgz","fileCount":7,"integrity":"sha512-ko9qYORwVBilxqr8jRnvNCMwSyfjPb6C5TVzYK95elk6Bx3lTfqELRt8Kr3Ml9uyYJICJZhYRR8W9hLUdsqpRg==","signatures":[{"sig":"MEQCIA9cpvmudjnR7aW/YHn7j4CzYTA/CakmM8A8fDlbIi7aAiBeBKNJz8qDd/ONycuY1vpQtotXQrS+fPiEObKnyPIHOA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@battlegrid%2fmcp-server@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":30312},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"4224fddb0c995e6dd6f4c30fa7b94f03c8072c6a","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0e5a8ea5-8fd4-49d0-bb45-a28dd1099710"}},"repository":{"url":"git+https://github.com/playbattlegrid/battlegrid-mcp.git","type":"git"},"_npmVersion":"11.9.0","description":"BattleGrid MCP server — play crypto prediction games from AI agents","directories":{},"_nodeVersion":"24.14.0","dependencies":{"@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.7.0","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_1.1.0_1774168456152_0.34585575508284494","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@battlegrid/mcp-server","version":"1.1.2","keywords":["mcp","model-context-protocol","ai","claude","cursor","battlegrid","crypto","prediction","gaming"],"license":"MIT","_id":"@battlegrid/mcp-server@1.1.2","maintainers":[{"name":"blockferrp","email":"admin@battlegrid.trade"}],"homepage":"https://battlegrid.trade","bugs":{"url":"https://github.com/playbattlegrid/battlegrid-mcp/issues"},"bin":{"battlegrid-mcp":"dist/index.js"},"dist":{"shasum":"7b9ec47c57318b1d41a80bd3d1aceec40b4238be","tarball":"https://registry.npmjs.org/@battlegrid/mcp-server/-/mcp-server-1.1.2.tgz","fileCount":7,"integrity":"sha512-JIknxOcYkZrvZN1Tg8awpwLBb644HuKjcvYPsZXtpZcJwFGMGA9S4pV5YxY3m2h7j3OJM6dETwEEzNZVC46Sfw==","signatures":[{"sig":"MEQCIDnv16luJ3URSlLUByz+AqAli9L7q95/lT9mTqWVCuH9AiANoeT8qrakXtxg6rYTPH658Q0naza+zVsgHrDqMSqnBA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@battlegrid%2fmcp-server@1.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":30282},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"a76a90c112d2f05d34baa5b684b71fc5a58a327c","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0e5a8ea5-8fd4-49d0-bb45-a28dd1099710"}},"repository":{"url":"git+https://github.com/playbattlegrid/battlegrid-mcp.git","type":"git"},"_npmVersion":"11.9.0","description":"BattleGrid MCP server — play crypto prediction games from AI agents","directories":{},"_nodeVersion":"24.14.0","dependencies":{"@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.7.0","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_1.1.2_1774215170690_0.6693731868646013","host":"s3://npm-registry-packages-npm-production"}},"1.1.4":{"name":"@battlegrid/mcp-server","version":"1.1.4","keywords":["mcp","model-context-protocol","ai","claude","cursor","battlegrid","crypto","prediction","gaming"],"license":"MIT","_id":"@battlegrid/mcp-server@1.1.4","maintainers":[{"name":"blockferrp","email":"admin@battlegrid.trade"}],"homepage":"https://battlegrid.trade","bugs":{"url":"https://github.com/playbattlegrid/battlegrid-mcp/issues"},"bin":{"battlegrid-mcp":"dist/index.js"},"dist":{"shasum":"c66afd949519c5ab6bfa41152c02da658e581d20","tarball":"https://registry.npmjs.org/@battlegrid/mcp-server/-/mcp-server-1.1.4.tgz","fileCount":7,"integrity":"sha512-/sJ5Zm+KpjkaxzVdq3MB1xY0Wrm7X67erUXU83MpXvvS+U1SG5wTWY5XMmhz3g26P3yNd2acpeuaNRikYgJQ9w==","signatures":[{"sig":"MEQCIBdvdZNpOCj9add2ETRI9cPk+LW2vbee7GB3gBSwo09UAiAv+ltjkb2vh1iLsYSWWjJVqFtkOO66VqXPd0Dtk16Log==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35409},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"4f2d7310be9e442c29b15bfc11ccc0a09f1b8708","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"blockferrp","email":"admin@battlegrid.trade"},"repository":{"url":"git+https://github.com/playbattlegrid/battlegrid-mcp.git","type":"git"},"_npmVersion":"11.6.4","description":"BattleGrid MCP server — play crypto prediction games from AI agents","directories":{},"_nodeVersion":"23.6.1","dependencies":{"@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.7.0","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_1.1.4_1774228761424_0.8702215716917856","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@battlegrid/mcp-server","version":"2.0.0","keywords":["mcp","model-context-protocol","ai","claude","cursor","battlegrid","crypto","prediction","gaming"],"license":"MIT","_id":"@battlegrid/mcp-server@2.0.0","maintainers":[{"name":"blockferrp","email":"admin@battlegrid.trade"}],"homepage":"https://battlegrid.trade","bugs":{"url":"https://github.com/playbattlegrid/battlegrid-mcp/issues"},"bin":{"battlegrid-mcp":"dist/index.js"},"dist":{"shasum":"668b5e70af33c8d256e02b913d2b7bc1a25e11b3","tarball":"https://registry.npmjs.org/@battlegrid/mcp-server/-/mcp-server-2.0.0.tgz","fileCount":7,"integrity":"sha512-YirzYT1Ih57tKb8HFaBCBtBCBXxiSshJI2E/VYx6RA6Vqf/xXhu6F5U32GEuVyXNFegk3H72OGa9qjRjg8czxQ==","signatures":[{"sig":"MEYCIQDluaOi8GIcE+hwUnc2OiRUROWNGsQ7CJj/gZERuRxHLwIhAJy+k39oMHHNmb5boGIt/uJimdjGsJTSLt5sSF0bQT4O","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@battlegrid%2fmcp-server@2.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":35433},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"7bbc7d62d13123cdb6a5ab22ed228630e394e17a","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0e5a8ea5-8fd4-49d0-bb45-a28dd1099710"}},"repository":{"url":"git+https://github.com/playbattlegrid/battlegrid-mcp.git","type":"git"},"_npmVersion":"11.11.0","description":"BattleGrid MCP server — play crypto prediction games from AI agents","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.7.0","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_2.0.0_1776080903357_0.9267061917119495","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"@battlegrid/mcp-server","version":"3.0.0","keywords":["mcp","model-context-protocol","ai","claude","cursor","battlegrid","crypto","prediction","gaming"],"license":"MIT","_id":"@battlegrid/mcp-server@3.0.0","maintainers":[{"name":"blockferrp","email":"admin@battlegrid.trade"}],"homepage":"https://battlegrid.trade","bugs":{"url":"https://github.com/playbattlegrid/battlegrid-mcp/issues"},"bin":{"battlegrid-mcp":"dist/index.js"},"dist":{"shasum":"2b892f58b16d7509112172231a6ceebfbefc97ec","tarball":"https://registry.npmjs.org/@battlegrid/mcp-server/-/mcp-server-3.0.0.tgz","fileCount":7,"integrity":"sha512-q05sp+JjO/5R5W91Nov9dZjRPZj0Fhdv/KwqOLJH7D84sPpSnBQivfn4hv8X+DHqNp3wHd4GtM729WmdZg41Vw==","signatures":[{"sig":"MEUCIQCm34cE/U+DfzDDxesPEq1TVNDtOvmqVx4msiwEdRp+dQIgD6vlQW3X82G72C2CoXu6lAejVgzOS6BPwtUEtdi7ItQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@battlegrid%2fmcp-server@3.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":46521},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"868fc1408496fcc0bcaf3356903b6f96a4410d8a","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0e5a8ea5-8fd4-49d0-bb45-a28dd1099710"}},"repository":{"url":"git+https://github.com/playbattlegrid/battlegrid-mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"BattleGrid MCP server — play crypto prediction games from AI agents","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.7.0","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_3.0.0_1784951259362_0.8478892410275294","host":"s3://npm-registry-packages-npm-production"}},"3.0.1":{"name":"@battlegrid/mcp-server","version":"3.0.1","keywords":["mcp","model-context-protocol","ai","claude","cursor","battlegrid","crypto","prediction","gaming"],"license":"MIT","_id":"@battlegrid/mcp-server@3.0.1","maintainers":[{"name":"blockferrp","email":"admin@battlegrid.trade"}],"homepage":"https://battlegrid.trade","bugs":{"url":"https://github.com/playbattlegrid/battlegrid-mcp/issues"},"bin":{"battlegrid-mcp":"dist/index.js"},"dist":{"shasum":"5e52cf394f12d93fef3da5befbb4ad71858e2740","tarball":"https://registry.npmjs.org/@battlegrid/mcp-server/-/mcp-server-3.0.1.tgz","fileCount":7,"integrity":"sha512-EOoIw0URrk6uX4TkhyOwBGVBPFAWnCDNO2+87toOq8lTCpjngSTSC4BzyrrnPHLcDiS2u/P9Hsz5N2U5RbU/4g==","signatures":[{"sig":"MEUCIQCon+xoRyhR7YfMhs0vVbpEhiRq9lNKYxBftO9nSAR09AIgeeApo+zo9A19DlB6HMM3fb2EtNzgsdJozuf/44+Mk4w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@battlegrid%2fmcp-server@3.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":51540},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"f715dc28c834df50887280fc96d48617f01152f5","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0e5a8ea5-8fd4-49d0-bb45-a28dd1099710"}},"repository":{"url":"git+https://github.com/playbattlegrid/battlegrid-mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"BattleGrid MCP server — play crypto prediction games from AI agents","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.7.0","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_3.0.1_1785150977240_0.18747165729043425","host":"s3://npm-registry-packages-npm-production"}},"4.0.0":{"name":"@battlegrid/mcp-server","version":"4.0.0","keywords":["mcp","model-context-protocol","ai","claude","cursor","battlegrid","crypto","prediction","gaming"],"license":"MIT","_id":"@battlegrid/mcp-server@4.0.0","maintainers":[{"name":"blockferrp","email":"admin@battlegrid.trade"}],"homepage":"https://battlegrid.trade","bugs":{"url":"https://github.com/playbattlegrid/battlegrid-mcp/issues"},"bin":{"battlegrid-mcp":"dist/index.js"},"dist":{"shasum":"681782cc5793818b3b9d83ff27f4465b04ed4de7","tarball":"https://registry.npmjs.org/@battlegrid/mcp-server/-/mcp-server-4.0.0.tgz","fileCount":7,"integrity":"sha512-GuMfYEPIKN/WO6pZXNqTuBJrH49yw5yNur+dFGpylrMHtnFIY0f8GINsgBpxZ8l3QsEON2SqgIwy81NQenbwGg==","signatures":[{"sig":"MEUCIEDUd0vUxTdJYYPQHCsffQSsKJ2LW86oXi7xT5fobYv1AiEA8rKgB1+nrHYq3HstjlipCvvKg+07icUCRmhGHN0vHKI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@battlegrid%2fmcp-server@4.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":53513},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"646a7a615efa6419daf2912c1340c905732a3a6a","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0e5a8ea5-8fd4-49d0-bb45-a28dd1099710"}},"repository":{"url":"git+https://github.com/playbattlegrid/battlegrid-mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"BattleGrid MCP server — play crypto prediction games from AI agents","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.7.0","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_4.0.0_1785304574281_0.7970969748765333","host":"s3://npm-registry-packages-npm-production"}},"5.0.0":{"name":"@battlegrid/mcp-server","version":"5.0.0","keywords":["mcp","model-context-protocol","ai","claude","cursor","battlegrid","crypto","prediction","gaming"],"license":"MIT","_id":"@battlegrid/mcp-server@5.0.0","maintainers":[{"name":"blockferrp","email":"admin@battlegrid.trade"}],"homepage":"https://battlegrid.trade","bugs":{"url":"https://github.com/playbattlegrid/battlegrid-mcp/issues"},"bin":{"battlegrid-mcp":"dist/index.js"},"dist":{"shasum":"c076d9d770aa78fe47ea0c1467cd989d85f0f0f9","tarball":"https://registry.npmjs.org/@battlegrid/mcp-server/-/mcp-server-5.0.0.tgz","fileCount":7,"integrity":"sha512-2FdiMfeOVIRGMA3Y5GQM5vmWn3K9YwJBD+iBwOQ3qRzhZ949wTZwCpS3oM0yrE2jLt+v6woilw35Lzcf1CSg0w==","signatures":[{"sig":"MEUCIQDFacSLe+7eLXYEJyNl5na99+I6kUb5ZePd6UAHWkwEqAIgQK2zSsSjOXio8jRT7od0sPtZqHtcsd/Om2BItJN2i5U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@battlegrid%2fmcp-server@5.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":56729},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"65e52e11ef26eebc2d0b7cdd10ad04d999c83fda","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0e5a8ea5-8fd4-49d0-bb45-a28dd1099710"}},"repository":{"url":"git+https://github.com/playbattlegrid/battlegrid-mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"BattleGrid MCP server — play crypto prediction games from AI agents","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.7.0","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_5.0.0_1785774876712_0.7972017289469822","host":"s3://npm-registry-packages-npm-production"}},"11.0.0":{"name":"@battlegrid/mcp-server","version":"11.0.0","keywords":["mcp","model-context-protocol","ai","claude","cursor","battlegrid","crypto","prediction","gaming"],"license":"MIT","_id":"@battlegrid/mcp-server@11.0.0","maintainers":[{"name":"blockferrp","email":"admin@battlegrid.trade"}],"homepage":"https://battlegrid.trade","bugs":{"url":"https://github.com/playbattlegrid/battlegrid-mcp/issues"},"bin":{"battlegrid-mcp":"dist/index.js"},"dist":{"shasum":"5a464a938eb4c83ddc237e3c60fa99dbd61af084","tarball":"https://registry.npmjs.org/@battlegrid/mcp-server/-/mcp-server-11.0.0.tgz","fileCount":7,"integrity":"sha512-r0z8me2uwsJbxtxU5ctqp9VUEVghSvO9mw3tGdgOTlEwMBYOpV85gVBl7dDzs8VhkkpPm839xSZMPnSoncejTQ==","signatures":[{"sig":"MEUCIHqB3M1MMPtpFbslMfkiyXdb3dqIhnIaLpUHKO/T3gCHAiEAx0VjlkoXOouGpKVhoQpN4MOLY0sYPx5ADvBiWL+beQk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@battlegrid%2fmcp-server@11.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":76681},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"f38570058c51e32c81b0fad1d44c8881001f9ffb","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0e5a8ea5-8fd4-49d0-bb45-a28dd1099710"}},"repository":{"url":"git+https://github.com/playbattlegrid/battlegrid-mcp.git","type":"git"},"_npmVersion":"11.17.0","description":"BattleGrid MCP server — play crypto prediction games from AI agents","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.7.0","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_11.0.0_1786079907091_0.924489529519726","host":"s3://npm-registry-packages-npm-production"}},"30.0.0":{"name":"@battlegrid/mcp-server","version":"30.0.0","keywords":["mcp","model-context-protocol","ai","claude","cursor","battlegrid","crypto","prediction","gaming"],"license":"MIT","_id":"@battlegrid/mcp-server@30.0.0","maintainers":[{"name":"blockferrp","email":"admin@battlegrid.trade"}],"homepage":"https://battlegrid.trade","bugs":{"url":"https://github.com/playbattlegrid/battlegrid-mcp/issues"},"bin":{"battlegrid-mcp":"dist/index.js"},"dist":{"shasum":"9fdd4b833a9c31dd794ef44f626ed21d9693fb1a","tarball":"https://registry.npmjs.org/@battlegrid/mcp-server/-/mcp-server-30.0.0.tgz","fileCount":7,"integrity":"sha512-pO+OoyR/BkHpQoMJTHQUEMeZNTP1bqbmfsZUeheQT+l67WTLPaFpHwtmOCmg60PBeHGJno5fcpekrSTcg+ap6g==","signatures":[{"sig":"MEUCIQCBclvmGkpgpp7s4uNyqyP4B0Um16dK+ATZNqK+OvHe6AIgA+w2A0p8RGgiN2nKOnTT0ZzTUXuF12LMxLra3cnTagA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@battlegrid%2fmcp-server@30.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":99333},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"c0893c57a2afb4dfc47a9f1970ebb53b3feb6ddb","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0e5a8ea5-8fd4-49d0-bb45-a28dd1099710"}},"repository":{"url":"git+https://github.com/playbattlegrid/battlegrid-mcp.git","type":"git"},"_npmVersion":"11.17.0","description":"BattleGrid MCP server — play crypto prediction games from AI agents","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.7.0","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_30.0.0_1787476269860_0.49503622644252765","host":"s3://npm-registry-packages-npm-production"}},"31.0.0":{"name":"@battlegrid/mcp-server","version":"31.0.0","keywords":["mcp","model-context-protocol","ai","claude","cursor","battlegrid","crypto","prediction","gaming"],"license":"MIT","_id":"@battlegrid/mcp-server@31.0.0","maintainers":[{"name":"blockferrp","email":"admin@battlegrid.trade"}],"homepage":"https://battlegrid.trade","bugs":{"url":"https://github.com/playbattlegrid/battlegrid-mcp/issues"},"bin":{"battlegrid-mcp":"dist/index.js"},"dist":{"shasum":"3057ee6bc88d594461b588f6f446ffe811a79053","tarball":"https://registry.npmjs.org/@battlegrid/mcp-server/-/mcp-server-31.0.0.tgz","fileCount":7,"integrity":"sha512-+5PxW/InnN2VHyogYxjE806KTP9gJAERsOoFti7G3hv5RThGPjH9b53qeOrBQNPP326SxgK15sTXqyhj0jruUw==","signatures":[{"sig":"MEUCIQDzIgd4nydQOQ1g3E5W1RK71rQWoZS3TYZo/H3BwCi91wIgUHQ4kxTPTRE/1hZgUlxLHviX0kwZk9RMq5hFNbCsvSM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@battlegrid%2fmcp-server@31.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":105756},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"2ff57d44eb6fec6b373c1bfa4a3a97a00aea5fc7","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0e5a8ea5-8fd4-49d0-bb45-a28dd1099710"}},"repository":{"url":"git+https://github.com/playbattlegrid/battlegrid-mcp.git","type":"git"},"_npmVersion":"11.17.0","description":"BattleGrid MCP server — play crypto prediction games from AI agents","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.7.0","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_31.0.0_1787477161825_0.9569682736924985","host":"s3://npm-registry-packages-npm-production"}},"31.0.1":{"name":"@battlegrid/mcp-server","version":"31.0.1","keywords":["mcp","model-context-protocol","ai","claude","cursor","battlegrid","crypto","prediction","gaming"],"license":"MIT","_id":"@battlegrid/mcp-server@31.0.1","maintainers":[{"name":"blockferrp","email":"admin@battlegrid.trade"}],"homepage":"https://battlegrid.trade","bugs":{"url":"https://github.com/playbattlegrid/battlegrid-mcp/issues"},"bin":{"battlegrid-mcp":"dist/index.js"},"dist":{"shasum":"f5605ad587acf39ff5a9725f8fc21d6e47e09f40","tarball":"https://registry.npmjs.org/@battlegrid/mcp-server/-/mcp-server-31.0.1.tgz","fileCount":7,"integrity":"sha512-a/ZYSgRjcjZZliQNXufKw4w4RAgLqqnFFkGgjzMAkEavivatWLzB9HH4SM1VuePoi3QgW3D7Src2USU9QZuTzA==","signatures":[{"sig":"MEYCIQDGIPSLkso6OOPeNGT4XHGiMOEUAdAXpN3xbtsafJxSJQIhAOzi3t4Pyc46oBuKyuLIKRLljKWxOwS9GNzybtT3NIX/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@battlegrid%2fmcp-server@31.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":108938},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"076e7e87421c96a7ca2c98cb8af5e3196b68777e","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0e5a8ea5-8fd4-49d0-bb45-a28dd1099710"}},"repository":{"url":"git+https://github.com/playbattlegrid/battlegrid-mcp.git","type":"git"},"_npmVersion":"11.17.0","description":"BattleGrid MCP server — play crypto prediction games from AI agents","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.7.0","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_31.0.1_1787504049893_0.8013005497843275","host":"s3://npm-registry-packages-npm-production"}},"31.0.2":{"name":"@battlegrid/mcp-server","version":"31.0.2","keywords":["mcp","model-context-protocol","ai","claude","cursor","battlegrid","crypto","prediction","gaming"],"license":"MIT","_id":"@battlegrid/mcp-server@31.0.2","maintainers":[{"name":"blockferrp","email":"admin@battlegrid.trade"}],"homepage":"https://battlegrid.trade","bugs":{"url":"https://github.com/playbattlegrid/battlegrid-mcp/issues"},"bin":{"battlegrid-mcp":"dist/index.js"},"dist":{"shasum":"0b53a478cd5cef22f565a35dc4145f1ad46a76a5","tarball":"https://registry.npmjs.org/@battlegrid/mcp-server/-/mcp-server-31.0.2.tgz","fileCount":7,"integrity":"sha512-trs10wx3XJMYXNsLAmME2CMECBtGq3TVSRACIDpNfTtowKYnPzETGz2EAzT6PvhyBITwsx1L+nraTLaHdOXK1A==","signatures":[{"sig":"MEQCIHdcY8gy8xpUW394UsEktvWzUMwYpp09/zKx4mGLa/9GAiAGRiJDrbo/iWmzGaxW5UCb61do0Pnbb3+KH6+y+PhCqQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@battlegrid%2fmcp-server@31.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":112891},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"c99f4ddf6f370d3eed6f3d7a76819b7b1f418ac3","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0e5a8ea5-8fd4-49d0-bb45-a28dd1099710"}},"repository":{"url":"git+https://github.com/playbattlegrid/battlegrid-mcp.git","type":"git"},"_npmVersion":"11.17.0","description":"BattleGrid MCP server — play crypto prediction games from AI agents","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.7.0","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_31.0.2_1787590404037_0.8016031579815623","host":"s3://npm-registry-packages-npm-production"}},"31.0.3":{"name":"@battlegrid/mcp-server","version":"31.0.3","keywords":["mcp","model-context-protocol","ai","claude","cursor","battlegrid","crypto","prediction","gaming"],"license":"MIT","_id":"@battlegrid/mcp-server@31.0.3","maintainers":[{"name":"blockferrp","email":"admin@battlegrid.trade"}],"homepage":"https://battlegrid.trade","bugs":{"url":"https://github.com/playbattlegrid/battlegrid-mcp/issues"},"bin":{"battlegrid-mcp":"dist/index.js"},"dist":{"shasum":"c800f6d65b73e0790f3507f9aff9633212c4b42c","tarball":"https://registry.npmjs.org/@battlegrid/mcp-server/-/mcp-server-31.0.3.tgz","fileCount":7,"integrity":"sha512-rm6f3mp108j7lCwIR0heBk3lxDHPK2+5UFA9lh7J20KWMQprITgc3jDqGAUDTCry3jtpJtga1YHbbewjeL9fLg==","signatures":[{"sig":"MEYCIQCWzr2F+wSRsMXQRQEjfNX66sLZofKE0OFCfpV9tdT3ZAIhAOW0LKiCF2l6dByr7BpbGqsJNSai1038HDLrBnaAfkYu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@battlegrid%2fmcp-server@31.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":114239},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"145b05257ad57c8e5ef41df4e97b7de263642f88","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0e5a8ea5-8fd4-49d0-bb45-a28dd1099710"}},"repository":{"url":"git+https://github.com/playbattlegrid/battlegrid-mcp.git","type":"git"},"_npmVersion":"11.17.0","description":"BattleGrid MCP server — play crypto prediction games from AI agents","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.7.0","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_31.0.3_1787594115648_0.7989177740152864","host":"s3://npm-registry-packages-npm-production"}},"31.1.0":{"name":"@battlegrid/mcp-server","version":"31.1.0","keywords":["mcp","model-context-protocol","ai","claude","cursor","battlegrid","crypto","prediction","gaming"],"license":"MIT","_id":"@battlegrid/mcp-server@31.1.0","maintainers":[{"name":"blockferrp","email":"admin@battlegrid.trade"}],"homepage":"https://battlegrid.trade","bugs":{"url":"https://github.com/playbattlegrid/battlegrid-mcp/issues"},"bin":{"battlegrid-mcp":"dist/index.js"},"dist":{"shasum":"6344affe96581b99b0d3b6bf4bdae89f6fc56434","tarball":"https://registry.npmjs.org/@battlegrid/mcp-server/-/mcp-server-31.1.0.tgz","fileCount":12,"integrity":"sha512-0+92nVtvYh4IZnXdznwLjFbfG0L+EsV5pFMrIonm+3Q0mWtHSz+Jo7XUr5MRlZAP6omt8BGyYwyxJGzSdf+ikw==","signatures":[{"sig":"MEYCIQDNrwDViWk1yVQZvorAq1zbKOmdcN5z0U6BIw0QEIfO9wIhAOa6l5WQkVcZqZz4H5UVmwwVKeRx9Fidq9OHcjEvv3xt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@battlegrid%2fmcp-server@31.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":193073},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"5b14520c0513c5b88a63135a676a59bb468c54c5","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0e5a8ea5-8fd4-49d0-bb45-a28dd1099710"}},"repository":{"url":"git+https://github.com/playbattlegrid/battlegrid-mcp.git","type":"git"},"_npmVersion":"11.17.0","description":"BattleGrid MCP server — play crypto prediction games from AI agents","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.7.0","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_31.1.0_1787980544552_0.7511352176261881","host":"s3://npm-registry-packages-npm-production"}},"31.1.5":{"name":"@battlegrid/mcp-server","version":"31.1.5","keywords":["mcp","model-context-protocol","ai","claude","cursor","battlegrid","crypto","prediction","gaming"],"license":"MIT","_id":"@battlegrid/mcp-server@31.1.5","maintainers":[{"name":"blockferrp","email":"admin@battlegrid.trade"}],"homepage":"https://battlegrid.trade","bugs":{"url":"https://github.com/playbattlegrid/battlegrid-mcp/issues"},"bin":{"battlegrid-mcp":"dist/index.js"},"dist":{"shasum":"1f6174b4d420f536ac4e38b5c49f6972f250ab2a","tarball":"https://registry.npmjs.org/@battlegrid/mcp-server/-/mcp-server-31.1.5.tgz","fileCount":12,"integrity":"sha512-wQQpDpm2K0Z4LktJHt0qmdaU9PNy6M9chyaLsov3wBV2E88mln4pu7HBhtLTzz5Xe17b6ipaBpTZe97jXmxzUg==","signatures":[{"sig":"MEQCIB1O2ss09vlv7yQR4/o795z7ka0ZqUN3e46rSLy6OLr8AiA0OH/4UIWzeQ6PqIMBIy/mgUIi/zrKq0C6Wj9SINl/Qg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@battlegrid%2fmcp-server@31.1.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":216885},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"5a86e648ce7d6eeb353b38719dd685e746b4fce7","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0e5a8ea5-8fd4-49d0-bb45-a28dd1099710"}},"repository":{"url":"git+https://github.com/playbattlegrid/battlegrid-mcp.git","type":"git"},"_npmVersion":"11.17.0","description":"BattleGrid MCP server — play crypto prediction games from AI agents","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.7.0","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_31.1.5_1788337515779_0.5973513857611461","host":"s3://npm-registry-packages-npm-production"}},"31.2.0":{"name":"@battlegrid/mcp-server","version":"31.2.0","keywords":["mcp","model-context-protocol","ai","claude","cursor","battlegrid","crypto","prediction","gaming"],"license":"MIT","_id":"@battlegrid/mcp-server@31.2.0","maintainers":[{"name":"blockferrp","email":"admin@battlegrid.trade"}],"homepage":"https://battlegrid.trade","bugs":{"url":"https://github.com/playbattlegrid/battlegrid-mcp/issues"},"bin":{"battlegrid-mcp":"dist/index.js"},"dist":{"shasum":"c0fe7edb4813a708d61927dc153f7e3eb3790cb4","tarball":"https://registry.npmjs.org/@battlegrid/mcp-server/-/mcp-server-31.2.0.tgz","fileCount":12,"integrity":"sha512-n+xvClqUx59DJLGANObGAd+6GK7h2mLa3MyL3LivV0UggV9Kr4rn5dAkl78mLKmneyIkjw4X43z4ud/IH/GQdA==","signatures":[{"sig":"MEUCIQCq16hegTet8q4tL4cMyRManyUhGCLg5bonQNlI182qxwIgJ9daD2xiz8+yC1o8vDKnS752xfyQfYvXnMyLlov9I40=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@battlegrid%2fmcp-server@31.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":229316},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"7b4cbf242591be23191b9019d52d6c4128968c21","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0e5a8ea5-8fd4-49d0-bb45-a28dd1099710"}},"repository":{"url":"git+https://github.com/playbattlegrid/battlegrid-mcp.git","type":"git"},"_npmVersion":"11.17.0","description":"BattleGrid MCP server — play crypto prediction games from AI agents","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.7.0","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_31.2.0_1788403702502_0.3727160317030853","host":"s3://npm-registry-packages-npm-production"}},"31.2.1":{"name":"@battlegrid/mcp-server","version":"31.2.1","keywords":["mcp","model-context-protocol","ai","claude","cursor","battlegrid","crypto","prediction","gaming"],"license":"MIT","_id":"@battlegrid/mcp-server@31.2.1","maintainers":[{"name":"blockferrp","email":"admin@battlegrid.trade"}],"homepage":"https://battlegrid.trade","bugs":{"url":"https://github.com/playbattlegrid/battlegrid-mcp/issues"},"bin":{"battlegrid-mcp":"dist/index.js"},"dist":{"shasum":"cbaed85bc3be3e9c5ea8b32ea9a7263e74fe406e","tarball":"https://registry.npmjs.org/@battlegrid/mcp-server/-/mcp-server-31.2.1.tgz","fileCount":12,"integrity":"sha512-46cxFv2F8tmMcIkuG5mgU9j1/E4nQhQ01UMKOgKXWh07K2G96CavKoMI6zv0pFn0qCf5S+F6SLlJzWBV0nv9ig==","signatures":[{"sig":"MEUCIQCXebyKBnfouv3pUA/SaqTJNaWb0KCFjFGP8KPncQTkSQIgVBsc5Sv6hgbzPnpg4kHUW07ff8mSp2Da/WWW2Oegq4Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@battlegrid%2fmcp-server@31.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":231970},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"fdfaa0bc18830b948fae6aa80da2c601f088f13a","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0e5a8ea5-8fd4-49d0-bb45-a28dd1099710"}},"repository":{"url":"git+https://github.com/playbattlegrid/battlegrid-mcp.git","type":"git"},"_npmVersion":"11.17.0","description":"BattleGrid MCP server — play crypto prediction games from AI agents","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.7.0","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_31.2.1_1788434931274_0.6070924539140377","host":"s3://npm-registry-packages-npm-production"}},"31.2.2":{"name":"@battlegrid/mcp-server","version":"31.2.2","keywords":["mcp","model-context-protocol","ai","claude","cursor","battlegrid","crypto","prediction","gaming"],"license":"MIT","_id":"@battlegrid/mcp-server@31.2.2","maintainers":[{"name":"blockferrp","email":"admin@battlegrid.trade"}],"homepage":"https://battlegrid.trade","bugs":{"url":"https://github.com/playbattlegrid/battlegrid-mcp/issues"},"bin":{"battlegrid-mcp":"dist/index.js"},"dist":{"shasum":"dd447ee5e0fd3173d095e839485c4621179f9154","tarball":"https://registry.npmjs.org/@battlegrid/mcp-server/-/mcp-server-31.2.2.tgz","fileCount":12,"integrity":"sha512-A0fhtw1W9cyfxo6/y4ZaidktesqVCX/h5voTOrnKba3djNWb+zzGma/briEyYtsHJIRwG1PZ3nq+F1lF1oUl9w==","signatures":[{"sig":"MEUCIFaHL5b11QhQT62gDDdOssmQVJvqd1BkNtgM2BgzXZ8GAiEAs0255rZU+AZ+SrXzXBSbA2O8T0H2zngh9eNvT3bODUM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@battlegrid%2fmcp-server@31.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":233260},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"f6ea3c0e3b23e228dc411da9b3f681136f40dd53","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0e5a8ea5-8fd4-49d0-bb45-a28dd1099710"}},"repository":{"url":"git+https://github.com/playbattlegrid/battlegrid-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"BattleGrid MCP server — play crypto prediction games from AI agents","directories":{},"_nodeVersion":"24.20.0","dependencies":{"@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.7.0","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_31.2.2_1788451057931_0.7980354365512761","host":"s3://npm-registry-packages-npm-production"}},"31.2.3":{"name":"@battlegrid/mcp-server","version":"31.2.3","keywords":["mcp","model-context-protocol","ai","claude","cursor","battlegrid","crypto","prediction","gaming"],"license":"MIT","_id":"@battlegrid/mcp-server@31.2.3","maintainers":[{"name":"blockferrp","email":"admin@battlegrid.trade"}],"homepage":"https://battlegrid.trade","bugs":{"url":"https://github.com/playbattlegrid/battlegrid-mcp/issues"},"bin":{"battlegrid-mcp":"dist/index.js"},"dist":{"shasum":"bc624723d27365ee4367a6e082a5e3090bde6098","tarball":"https://registry.npmjs.org/@battlegrid/mcp-server/-/mcp-server-31.2.3.tgz","fileCount":12,"integrity":"sha512-PmcDXT+nKIq06SRft2nuBBzeoppg86iEm6cgKq/9DZEvsaoRsQGj2xLs2sBsUwrF5ZXwXHcbmk5Xr3lbgYrADA==","signatures":[{"sig":"MEQCIBWnBp/taLaxIO4SBO2ctrrFzZrOL0TeUVTEUrjvWEjJAiBV/QFkEvu09gXWnqxQdyKjg5bje9AD+6r/QpJRtRyztw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@battlegrid%2fmcp-server@31.2.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":233621},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"1422639b063b785e9f6d892dd2101e0c78fe3dc3","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0e5a8ea5-8fd4-49d0-bb45-a28dd1099710"}},"repository":{"url":"git+https://github.com/playbattlegrid/battlegrid-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"BattleGrid MCP server — play crypto prediction games from AI agents","directories":{},"_nodeVersion":"24.20.0","dependencies":{"@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.7.0","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_31.2.3_1788451732321_0.4317100966843137","host":"s3://npm-registry-packages-npm-production"}},"31.2.4":{"name":"@battlegrid/mcp-server","version":"31.2.4","keywords":["mcp","model-context-protocol","ai","claude","cursor","battlegrid","crypto","prediction","gaming"],"license":"MIT","_id":"@battlegrid/mcp-server@31.2.4","maintainers":[{"name":"blockferrp","email":"admin@battlegrid.trade"}],"homepage":"https://battlegrid.trade","bugs":{"url":"https://github.com/playbattlegrid/battlegrid-mcp/issues"},"bin":{"battlegrid-mcp":"dist/index.js"},"dist":{"shasum":"b9be0d604d563a4d0437a6d1a77d256decb84681","tarball":"https://registry.npmjs.org/@battlegrid/mcp-server/-/mcp-server-31.2.4.tgz","fileCount":12,"integrity":"sha512-6qCHhi79Ig5INcabsfg/MmZwVDD3QrWcp9zmYU6LVboE1MQDzpQCMn7lDBYFrJDo0zlVXNQqDYLNY0P0NGUwPQ==","signatures":[{"sig":"MEYCIQDm7w5jr8unqcNJ5fXKPWeXZvXn6FEvjFwa4/5vEtjulAIhAKK//uaOrUqxmPiXAgff6h2as+7XI9M3NEX18ldSpdEf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@battlegrid%2fmcp-server@31.2.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":233621},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"9a745b2bd4e98ff58a28adf8194a75c78004647a","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0e5a8ea5-8fd4-49d0-bb45-a28dd1099710"}},"repository":{"url":"git+https://github.com/playbattlegrid/battlegrid-mcp.git","type":"git"},"_npmVersion":"11.17.0","description":"BattleGrid MCP server — play crypto prediction games from AI agents","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.7.0","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_31.2.4_1788452712972_0.9028092542517483","host":"s3://npm-registry-packages-npm-production"}},"31.2.5":{"name":"@battlegrid/mcp-server","version":"31.2.5","keywords":["mcp","model-context-protocol","ai","claude","cursor","battlegrid","crypto","prediction","gaming"],"license":"MIT","_id":"@battlegrid/mcp-server@31.2.5","maintainers":[{"name":"blockferrp","email":"admin@battlegrid.trade"}],"homepage":"https://battlegrid.trade","bugs":{"url":"https://github.com/playbattlegrid/battlegrid-mcp/issues"},"bin":{"battlegrid-mcp":"dist/index.js"},"dist":{"shasum":"2593af4732484f552cf5d1e3471065544444f36a","tarball":"https://registry.npmjs.org/@battlegrid/mcp-server/-/mcp-server-31.2.5.tgz","fileCount":12,"integrity":"sha512-jXYzjD8hMvlo38XlifbtglqkNplEwA+LleoBzqResD8Em/o7riPnckHAwVePp0TOEqWClnuVMdWlo36SlB0pXg==","signatures":[{"sig":"MEUCIQCaCboOGZkOchPjP8BBKpt8O4NkqXj/zmd8MjKBXmblbgIgNjNwMSgWrjYHtrhm0k1HxcN+m+hxmMlZhfeL+KI0V84=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@battlegrid%2fmcp-server@31.2.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":233621},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"3f048b718a1a2d676f911bf02d0d921cc5a39489","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0e5a8ea5-8fd4-49d0-bb45-a28dd1099710"}},"repository":{"url":"git+https://github.com/playbattlegrid/battlegrid-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"BattleGrid MCP server — play crypto prediction games from AI agents","directories":{},"_nodeVersion":"24.20.0","dependencies":{"@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.7.0","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_31.2.5_1788457582237_0.2873510708006244","host":"s3://npm-registry-packages-npm-production"}},"31.2.6":{"name":"@battlegrid/mcp-server","version":"31.2.6","keywords":["mcp","model-context-protocol","ai","claude","cursor","battlegrid","crypto","prediction","gaming"],"license":"MIT","_id":"@battlegrid/mcp-server@31.2.6","maintainers":[{"name":"blockferrp","email":"admin@battlegrid.trade"}],"homepage":"https://battlegrid.trade","bugs":{"url":"https://github.com/playbattlegrid/battlegrid-mcp/issues"},"bin":{"battlegrid-mcp":"dist/index.js"},"dist":{"shasum":"5d1c172d1da142fd2a83cafaec69b19b6730f6f9","tarball":"https://registry.npmjs.org/@battlegrid/mcp-server/-/mcp-server-31.2.6.tgz","fileCount":17,"integrity":"sha512-gLC6P+7iwXtg37W1SKvzn3RT7D3ECg/95I8ARLnF3k+WagF7qadqpuqPjrF9jfbgFYGi9KZxuLXNmk+LT52WNw==","signatures":[{"sig":"MEUCIGK6N4IkBHsZLAJPjGQP9oMCl2UCD3pCDGM1fYndRn8IAiEA1I+HKq8CrHtnDmzp8KmoUHdWG19NC9+MLHRi6+wRqmg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@battlegrid%2fmcp-server@31.2.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":255532},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"9a3444f3603cc34a45655eee7e92cb1db11f8edf","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0e5a8ea5-8fd4-49d0-bb45-a28dd1099710"}},"repository":{"url":"git+https://github.com/playbattlegrid/battlegrid-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"BattleGrid MCP server — play crypto prediction games from AI agents","directories":{},"_nodeVersion":"24.20.0","dependencies":{"@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.7.0","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_31.2.6_1788538723960_0.30732909598412994","host":"s3://npm-registry-packages-npm-production"}},"31.2.7":{"name":"@battlegrid/mcp-server","version":"31.2.7","keywords":["mcp","model-context-protocol","ai","claude","cursor","battlegrid","crypto","prediction","gaming"],"license":"MIT","_id":"@battlegrid/mcp-server@31.2.7","maintainers":[{"name":"blockferrp","email":"admin@battlegrid.trade"}],"homepage":"https://battlegrid.trade","bugs":{"url":"https://github.com/playbattlegrid/battlegrid-mcp/issues"},"bin":{"battlegrid-mcp":"dist/index.js"},"dist":{"shasum":"9879de8f6d6f996412929fad22d1c0ee1491e663","tarball":"https://registry.npmjs.org/@battlegrid/mcp-server/-/mcp-server-31.2.7.tgz","fileCount":20,"integrity":"sha512-acEfaw6I7kBKuzAk4SxAdDzjW+JFyIYBh6n/W93LSddBwCXJstpgzcT+dQ57otqkF8/Cjdvyk/pGaBXQNuIeXQ==","signatures":[{"sig":"MEUCIQChCPxE4Oyv8RsWSz4ZP4nd9TUrHMW10/VsUNKYR/FIpwIgW0c8LifKSimA7h9iFDxRv870q9meZKbNvY8XEtDodiA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@battlegrid%2fmcp-server@31.2.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":267537},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"5e35a5bb97e5a1825d2b5f12f9456c9f29df1bd3","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0e5a8ea5-8fd4-49d0-bb45-a28dd1099710"}},"repository":{"url":"git+https://github.com/playbattlegrid/battlegrid-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"BattleGrid MCP server — play crypto prediction games from AI agents","directories":{},"_nodeVersion":"24.20.0","dependencies":{"@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.7.0","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_31.2.7_1788541558982_0.20103839473293417","host":"s3://npm-registry-packages-npm-production"}},"31.2.8":{"name":"@battlegrid/mcp-server","version":"31.2.8","keywords":["mcp","model-context-protocol","ai","claude","cursor","battlegrid","crypto","prediction","gaming"],"license":"MIT","_id":"@battlegrid/mcp-server@31.2.8","maintainers":[{"name":"blockferrp","email":"admin@battlegrid.trade"}],"homepage":"https://battlegrid.trade","bugs":{"url":"https://github.com/playbattlegrid/battlegrid-mcp/issues"},"bin":{"battlegrid-mcp":"dist/index.js"},"dist":{"shasum":"4f09fc27fe58f7bf91d50358b2c5c09f3b36e89c","tarball":"https://registry.npmjs.org/@battlegrid/mcp-server/-/mcp-server-31.2.8.tgz","fileCount":20,"integrity":"sha512-4ybAmf5XtvCXFVql3iMvezukRzYW4r606BcqAnE+RfYRjBuh38ZGlsQcZbWZljTfbFpzHjMbls1MEHX5EwKCWg==","signatures":[{"sig":"MEYCIQDohg9OXMhsPAgpnzpKWpkgpIrMw5jysDMtc5XqZgL2XgIhAPZzv1eDCGctij8im00whmt4WDHLWck5U4RXXaTUSekc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@battlegrid%2fmcp-server@31.2.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":274218},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"99a898690cd54b645a8dfb0ef952f6cb0aaabd3c","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0e5a8ea5-8fd4-49d0-bb45-a28dd1099710"}},"repository":{"url":"git+https://github.com/playbattlegrid/battlegrid-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"BattleGrid MCP server — play crypto prediction games from AI agents","directories":{},"_nodeVersion":"24.20.0","dependencies":{"@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.7.0","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_31.2.8_1788548150892_0.11857714366064398","host":"s3://npm-registry-packages-npm-production"}},"31.2.9":{"name":"@battlegrid/mcp-server","version":"31.2.9","keywords":["mcp","model-context-protocol","ai","claude","cursor","battlegrid","crypto","prediction","gaming"],"license":"MIT","_id":"@battlegrid/mcp-server@31.2.9","maintainers":[{"name":"blockferrp","email":"admin@battlegrid.trade"}],"homepage":"https://battlegrid.trade","bugs":{"url":"https://github.com/playbattlegrid/battlegrid-mcp/issues"},"bin":{"battlegrid-mcp":"dist/index.js"},"dist":{"shasum":"e92ec69b9d526c83810198cba371e09e76bf83b5","tarball":"https://registry.npmjs.org/@battlegrid/mcp-server/-/mcp-server-31.2.9.tgz","fileCount":20,"integrity":"sha512-cTZ8qlBKErVxq8M88oAeAmXnloPduE11RiKlObYEZr7Hstpc9P0HwbR0FA5d05bIm+BhqPmsv+MbN9t0usYd4w==","signatures":[{"sig":"MEUCIQCDAk/JD/fBJrrYNQSUO/h3f+USZr72IwliQ9ze6Oi5dgIgNCWodcSwG2eRk0iclsD13BLtslHEmftOiIurK8DsNiU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@battlegrid%2fmcp-server@31.2.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":276625},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"4efbb9557991e6c665baf127831d7383b7fe5c8e","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0e5a8ea5-8fd4-49d0-bb45-a28dd1099710"}},"repository":{"url":"git+https://github.com/playbattlegrid/battlegrid-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"BattleGrid MCP server — play crypto prediction games from AI agents","directories":{},"_nodeVersion":"24.20.0","dependencies":{"@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.7.0","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_31.2.9_1788595683079_0.5052776967052581","host":"s3://npm-registry-packages-npm-production"}},"31.2.10":{"name":"@battlegrid/mcp-server","version":"31.2.10","keywords":["mcp","model-context-protocol","ai","claude","cursor","battlegrid","crypto","prediction","gaming"],"license":"MIT","_id":"@battlegrid/mcp-server@31.2.10","maintainers":[{"name":"blockferrp","email":"admin@battlegrid.trade"}],"homepage":"https://battlegrid.trade","bugs":{"url":"https://github.com/playbattlegrid/battlegrid-mcp/issues"},"bin":{"battlegrid-mcp":"dist/index.js"},"dist":{"shasum":"c8f5ab6a1f44295e34a6a56c8c8f93c4bc06fdff","tarball":"https://registry.npmjs.org/@battlegrid/mcp-server/-/mcp-server-31.2.10.tgz","fileCount":20,"integrity":"sha512-kGZBCxrDgDGQkzICeOcJ3CNWzARnOV9LaLPliKC/Zs9CDJEe26jVdCFuK7LJGi6WifqrsUoE+Yc91pprbjWXgw==","signatures":[{"sig":"MEUCIHmi0ldopJ+4hSge7wc62qPEgPRP0orkH1/SWNRsdeUBAiEAoHSj4dQdIpwF0BLJBQ/8JQRgt+XUCjmFcD9H+C3t0/s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@battlegrid%2fmcp-server@31.2.10","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":277396},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"edbd8e93678e8b615501933116910034850ccecb","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0e5a8ea5-8fd4-49d0-bb45-a28dd1099710"}},"repository":{"url":"git+https://github.com/playbattlegrid/battlegrid-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"BattleGrid MCP server — play crypto prediction games from AI agents","directories":{},"_nodeVersion":"24.20.0","dependencies":{"@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.7.0","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_31.2.10_1788595818053_0.8644587473002934","host":"s3://npm-registry-packages-npm-production"}},"31.2.11":{"name":"@battlegrid/mcp-server","version":"31.2.11","keywords":["mcp","model-context-protocol","ai","claude","cursor","battlegrid","crypto","prediction","gaming"],"license":"MIT","_id":"@battlegrid/mcp-server@31.2.11","maintainers":[{"name":"blockferrp","email":"admin@battlegrid.trade"}],"homepage":"https://battlegrid.trade","bugs":{"url":"https://github.com/playbattlegrid/battlegrid-mcp/issues"},"bin":{"battlegrid-mcp":"dist/index.js"},"dist":{"shasum":"ca892685a5367c5b98b3c88d886008260d942fe4","tarball":"https://registry.npmjs.org/@battlegrid/mcp-server/-/mcp-server-31.2.11.tgz","fileCount":20,"integrity":"sha512-2L1RZqJK7MyiBw+F3Y/inigE4IRm+QbXU8lBV5f/Zkc7EdkGjRrgB/HgrsgOU3iZNFJHEMYVn42J/SbMPBB0mQ==","signatures":[{"sig":"MEUCIBU0Orn3o3abPY8ykO9v1AyOpqLOpKBG8gtdIP4lN+zmAiEA3qiiLSsn2LMB6Kx/rExnVrS00gqB+Uss/QSSu8GNQ44=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@battlegrid%2fmcp-server@31.2.11","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":280377},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"704027a652100cc9798562787dfc58809fce5e79","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0e5a8ea5-8fd4-49d0-bb45-a28dd1099710"}},"repository":{"url":"git+https://github.com/playbattlegrid/battlegrid-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"BattleGrid MCP server — play crypto prediction games from AI agents","directories":{},"_nodeVersion":"24.20.0","dependencies":{"@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.7.0","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_31.2.11_1788622540454_0.598616704596413","host":"s3://npm-registry-packages-npm-production"}},"31.2.12":{"name":"@battlegrid/mcp-server","version":"31.2.12","keywords":["mcp","model-context-protocol","ai","claude","cursor","battlegrid","crypto","prediction","gaming"],"license":"MIT","_id":"@battlegrid/mcp-server@31.2.12","maintainers":[{"name":"blockferrp","email":"admin@battlegrid.trade"}],"homepage":"https://battlegrid.trade","bugs":{"url":"https://github.com/playbattlegrid/battlegrid-mcp/issues"},"bin":{"battlegrid-mcp":"dist/index.js"},"dist":{"shasum":"3b7b1f0fd6f60621026ce6d6c3bcd0741a8a76ac","tarball":"https://registry.npmjs.org/@battlegrid/mcp-server/-/mcp-server-31.2.12.tgz","fileCount":21,"integrity":"sha512-7mcrahkHiIhKRJHHIg3oEf92OIK0FiCXzTYxRQJ90vS8irWmUgGyvUtD3f3J1XPIP55eEl8pV3mTkPyDf3XWVg==","signatures":[{"sig":"MEYCIQCbV963og2/o5KlNOR2TjKsiLgaEdwnxLvU7dHJ0A9jlwIhALTFxjtfG6eEcewpVF0xSXbKLgBS5/NY5eoMdWAMWFYW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@battlegrid%2fmcp-server@31.2.12","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":284267},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"80cb37b2ed3f0d21e2635e9358294cb2e3c89285","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0e5a8ea5-8fd4-49d0-bb45-a28dd1099710"}},"repository":{"url":"git+https://github.com/playbattlegrid/battlegrid-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"BattleGrid MCP server — play crypto prediction games from AI agents","directories":{},"_nodeVersion":"24.20.0","dependencies":{"@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.7.0","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_31.2.12_1788627720372_0.297308484258078","host":"s3://npm-registry-packages-npm-production"}},"31.2.13":{"name":"@battlegrid/mcp-server","version":"31.2.13","keywords":["mcp","model-context-protocol","ai","claude","cursor","battlegrid","crypto","prediction","gaming"],"license":"MIT","_id":"@battlegrid/mcp-server@31.2.13","maintainers":[{"name":"blockferrp","email":"admin@battlegrid.trade"}],"homepage":"https://battlegrid.trade","bugs":{"url":"https://github.com/playbattlegrid/battlegrid-mcp/issues"},"bin":{"battlegrid-mcp":"dist/index.js"},"dist":{"shasum":"c472699db22594ff86ad75291cbd83e59bd644a3","tarball":"https://registry.npmjs.org/@battlegrid/mcp-server/-/mcp-server-31.2.13.tgz","fileCount":21,"integrity":"sha512-mTK1Ssq82znL/+hw6ffDq3NIGQPHsQElAS4tCby9/Upx9CZ6XfwovcQFHbIqqw144n9Z9NZQf1v+JNuZlLmlXg==","signatures":[{"sig":"MEQCIDacsBhFokNawlNNO7bR7IOGQFq9NFo7feTglURFqYyTAiA7WNQULOfKgyUne5a7YSFo6au2B2i01r92Rsy3iP/EVw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@battlegrid%2fmcp-server@31.2.13","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":284721},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"33acd6b20be20c254ab9f2c5d27cbdf8a8cbc09b","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0e5a8ea5-8fd4-49d0-bb45-a28dd1099710"}},"repository":{"url":"git+https://github.com/playbattlegrid/battlegrid-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"BattleGrid MCP server — play crypto prediction games from AI agents","directories":{},"_nodeVersion":"24.20.0","dependencies":{"@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.7.0","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_31.2.13_1788627959193_0.8420809489220662","host":"s3://npm-registry-packages-npm-production"}},"31.2.14":{"name":"@battlegrid/mcp-server","version":"31.2.14","keywords":["mcp","model-context-protocol","ai","claude","cursor","battlegrid","crypto","prediction","gaming"],"license":"MIT","_id":"@battlegrid/mcp-server@31.2.14","maintainers":[{"name":"blockferrp","email":"admin@battlegrid.trade"}],"homepage":"https://battlegrid.trade","bugs":{"url":"https://github.com/playbattlegrid/battlegrid-mcp/issues"},"bin":{"battlegrid-mcp":"dist/index.js"},"dist":{"shasum":"11240c166ac2131854c856e6be34ca788f7c8a06","tarball":"https://registry.npmjs.org/@battlegrid/mcp-server/-/mcp-server-31.2.14.tgz","fileCount":21,"integrity":"sha512-jeMKzTfdDVNuXnB6U/UZ30GGK5o5vmpkZuW2g8cdfADC78ziciL/VQn90YJ9kdPCHMG+w732XIU+XHEKTywijg==","signatures":[{"sig":"MEYCIQDKBqoN7rQYrKog9rSEOueDTko+obc6jT1P0AG1GJm6bwIhAKMZ2eQ2qMr1t49xeepTXm2f7v+hu6Ila8gXqCfXisvy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@battlegrid%2fmcp-server@31.2.14","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":286777},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"15f8d5a8f8ead77f78496ac628bd69c5821d7f2a","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0e5a8ea5-8fd4-49d0-bb45-a28dd1099710"}},"repository":{"url":"git+https://github.com/playbattlegrid/battlegrid-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"BattleGrid MCP server — play crypto prediction games from AI agents","directories":{},"_nodeVersion":"24.20.0","dependencies":{"@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.7.0","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_31.2.14_1788716080940_0.2761510046797697","host":"s3://npm-registry-packages-npm-production"}},"31.2.15":{"name":"@battlegrid/mcp-server","version":"31.2.15","keywords":["mcp","model-context-protocol","ai","claude","cursor","battlegrid","crypto","prediction","gaming"],"license":"MIT","_id":"@battlegrid/mcp-server@31.2.15","maintainers":[{"name":"blockferrp","email":"admin@battlegrid.trade"}],"homepage":"https://battlegrid.trade","bugs":{"url":"https://github.com/playbattlegrid/battlegrid-mcp/issues"},"bin":{"battlegrid-mcp":"dist/index.js"},"dist":{"shasum":"c096615c9e85530b6eb2a85dca318e10fcb93e59","tarball":"https://registry.npmjs.org/@battlegrid/mcp-server/-/mcp-server-31.2.15.tgz","fileCount":21,"integrity":"sha512-oWGV96vEDYDo48MPlVRaogiw4zwiy1ShO2vHLSB0dFlXq5FREYcDYmF9fAHgwG4rYlo6IcCoUuyqZXdB5TWugw==","signatures":[{"sig":"MEYCIQCTL4duopTYrUG4dGVitt3fnH072u0pf7bT8EO7Oof8ewIhAOzYosWH3PQ1EImQY9eZxKYs9sBD6Ws+p1SC+uF/Npo8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@battlegrid%2fmcp-server@31.2.15","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":288285},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"d1e84c0358f59d3b48473d161f0259e72d1bd5cd","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0e5a8ea5-8fd4-49d0-bb45-a28dd1099710"}},"repository":{"url":"git+https://github.com/playbattlegrid/battlegrid-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"BattleGrid MCP server — play crypto prediction games from AI agents","directories":{},"_nodeVersion":"24.20.0","dependencies":{"@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.7.0","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_31.2.15_1788760949211_0.24851700393195797","host":"s3://npm-registry-packages-npm-production"}},"31.2.16":{"name":"@battlegrid/mcp-server","version":"31.2.16","keywords":["mcp","model-context-protocol","ai","claude","cursor","battlegrid","crypto","prediction","gaming"],"license":"MIT","_id":"@battlegrid/mcp-server@31.2.16","maintainers":[{"name":"blockferrp","email":"admin@battlegrid.trade"}],"homepage":"https://battlegrid.trade","bugs":{"url":"https://github.com/playbattlegrid/battlegrid-mcp/issues"},"bin":{"battlegrid-mcp":"dist/index.js"},"dist":{"shasum":"661e6de89953fcfdda05e15d9fee9b0217d90547","tarball":"https://registry.npmjs.org/@battlegrid/mcp-server/-/mcp-server-31.2.16.tgz","fileCount":21,"integrity":"sha512-SujajVWc7xWzZbSSwbBrSVFBC4Hyf+1IXkQ3o+GvYYvdXeumNqqWr4SXVJyFvREl/1mveYesaXSfwMbgRuFXWw==","signatures":[{"sig":"MEYCIQDU9aMVrGtfg3pxQxm1vYAxdfjLkhVLFDd09wp+6UJRfwIhAKAnizmkeFWspW/20YqcqirCcqps6I9IGgwV5zJrL/Cg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@battlegrid%2fmcp-server@31.2.16","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":290834},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"745202d21c0a0d3d4f414efc417c1dbff309c549","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0e5a8ea5-8fd4-49d0-bb45-a28dd1099710"}},"repository":{"url":"git+https://github.com/playbattlegrid/battlegrid-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"BattleGrid MCP server — play crypto prediction games from AI agents","directories":{},"_nodeVersion":"24.20.0","dependencies":{"@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.7.0","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_31.2.16_1788837118577_0.08823858139704477","host":"s3://npm-registry-packages-npm-production"}},"31.2.17":{"name":"@battlegrid/mcp-server","version":"31.2.17","keywords":["mcp","model-context-protocol","ai","claude","cursor","battlegrid","crypto","prediction","gaming"],"license":"MIT","_id":"@battlegrid/mcp-server@31.2.17","maintainers":[{"name":"blockferrp","email":"admin@battlegrid.trade"}],"homepage":"https://battlegrid.trade","bugs":{"url":"https://github.com/playbattlegrid/battlegrid-mcp/issues"},"bin":{"battlegrid-mcp":"dist/index.js"},"dist":{"shasum":"02294787bfe550c25bfeb29b09f33f4b7a762b31","tarball":"https://registry.npmjs.org/@battlegrid/mcp-server/-/mcp-server-31.2.17.tgz","fileCount":21,"integrity":"sha512-HyCq4F8FGuNrRUosX40kgNP0Erl0D4YwXcDx1XGy4RqZEruU5k0C4+FPEZ2fhgqYF1bbce8F4LOoX0nM6EaLLw==","signatures":[{"sig":"MEUCIQCb5QQrlwZ1buFPdS0CxWcyCrOoHieEamGSX4n3ErO+gAIgciMBIzfXJP6GTvkiO2TxlVAUMilItMWDCkLKjJprvAQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@battlegrid%2fmcp-server@31.2.17","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":291114},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"8697a0b732fcd2e0f3f5ed0e29506b29cd4eb511","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0e5a8ea5-8fd4-49d0-bb45-a28dd1099710"}},"repository":{"url":"git+https://github.com/playbattlegrid/battlegrid-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"BattleGrid MCP server — play crypto prediction games from AI agents","directories":{},"_nodeVersion":"24.20.0","dependencies":{"@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.7.0","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_31.2.17_1788848574200_0.8213276145977926","host":"s3://npm-registry-packages-npm-production"}},"31.2.18":{"name":"@battlegrid/mcp-server","version":"31.2.18","keywords":["mcp","model-context-protocol","ai","claude","cursor","battlegrid","crypto","prediction","gaming"],"license":"MIT","_id":"@battlegrid/mcp-server@31.2.18","maintainers":[{"name":"blockferrp","email":"admin@battlegrid.trade"}],"homepage":"https://battlegrid.trade","bugs":{"url":"https://github.com/playbattlegrid/battlegrid-mcp/issues"},"bin":{"battlegrid-mcp":"dist/index.js"},"dist":{"shasum":"d3b25f0cae1f6987ca12a49cac1e1b7eaca60a93","tarball":"https://registry.npmjs.org/@battlegrid/mcp-server/-/mcp-server-31.2.18.tgz","fileCount":21,"integrity":"sha512-So3cG4T6OEk4gLhzAAUyMoV3sS5uOKwP7bH+xPoInAICJb/aVJqy0XD8GvUltcZ+f/y1Zjmib9MHwu8VSsYLlQ==","signatures":[{"sig":"MEUCIQCxZl71nFdPvqeVTi17ili79Mbaqjvf/AQKrWZY5PUGrQIgAzNuzWGByefVuNzFQaMRKV/HrUiG5GzZ7YEPaTnRYs8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@battlegrid%2fmcp-server@31.2.18","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":291416},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"8963d0ed172151698dcc6ebc88b358a2819b173e","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0e5a8ea5-8fd4-49d0-bb45-a28dd1099710"}},"repository":{"url":"git+https://github.com/playbattlegrid/battlegrid-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"BattleGrid MCP server — play crypto prediction games from AI agents","directories":{},"_nodeVersion":"24.20.0","dependencies":{"@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.7.0","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_31.2.18_1789117042881_0.9796194785912835","host":"s3://npm-registry-packages-npm-production"}},"31.2.19":{"name":"@battlegrid/mcp-server","version":"31.2.19","keywords":["mcp","model-context-protocol","ai","claude","cursor","battlegrid","crypto","prediction","gaming"],"license":"MIT","_id":"@battlegrid/mcp-server@31.2.19","maintainers":[{"name":"blockferrp","email":"admin@battlegrid.trade"}],"homepage":"https://battlegrid.trade","bugs":{"url":"https://github.com/playbattlegrid/battlegrid-mcp/issues"},"bin":{"battlegrid-mcp":"dist/index.js"},"dist":{"shasum":"40ad43396cf09aabec3ee7f4f8b4e26f97e3a9c4","tarball":"https://registry.npmjs.org/@battlegrid/mcp-server/-/mcp-server-31.2.19.tgz","fileCount":21,"integrity":"sha512-gOGOSDiBz5TbsxgrCuv7aMLi03u52N32gx4oTV3Rr3HHszcdmEjNpCl8aKGKql3Fn0ZN1u4NpLGpPUj4uemiig==","signatures":[{"sig":"MEYCIQCAtL65JG8V/2UbWLSbLVTPbtHYJqUr2fHujMyEod0s+QIhANNIL/cWQ0C5zGyb7WtCX2SEtWCdmkBwfPhVX1a52H6a","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@battlegrid%2fmcp-server@31.2.19","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":291416},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"e75efa59710788a2e08d57560b4ee13cc4802559","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0e5a8ea5-8fd4-49d0-bb45-a28dd1099710"}},"repository":{"url":"git+https://github.com/playbattlegrid/battlegrid-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"BattleGrid MCP server — play crypto prediction games from AI agents","directories":{},"_nodeVersion":"24.20.0","dependencies":{"@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.7.0","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_31.2.19_1789317555202_0.9205745303579198","host":"s3://npm-registry-packages-npm-production"}},"31.2.20":{"name":"@battlegrid/mcp-server","version":"31.2.20","keywords":["mcp","model-context-protocol","ai","claude","cursor","battlegrid","crypto","prediction","gaming"],"license":"MIT","_id":"@battlegrid/mcp-server@31.2.20","maintainers":[{"name":"blockferrp","email":"admin@battlegrid.trade"}],"homepage":"https://battlegrid.trade","bugs":{"url":"https://github.com/playbattlegrid/battlegrid-mcp/issues"},"bin":{"battlegrid-mcp":"dist/index.js"},"dist":{"shasum":"7787dddd62e443486d289b6bb8d20729822aa7d4","tarball":"https://registry.npmjs.org/@battlegrid/mcp-server/-/mcp-server-31.2.20.tgz","fileCount":21,"integrity":"sha512-zKGhGzivPELIhvj3COMp8OIQf08HoqL69ej+hUv26OqCn0j50xrnAyYQR6jOFFOdFVtkMMXesiSB4QDW0Fxi9w==","signatures":[{"sig":"MEQCIAKqzVqwdZP2SgYbIRBtdvUV2kS4tlsFp662xLo95+s5AiBFXM6PIlTtABnS2L5XIh4IDNGwcCfIl3oTeSj2t4Lx7w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@battlegrid%2fmcp-server@31.2.20","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":292422},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"5f51d21b0a77666ce81c64ca007c460df290170b","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0e5a8ea5-8fd4-49d0-bb45-a28dd1099710"}},"repository":{"url":"git+https://github.com/playbattlegrid/battlegrid-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"BattleGrid MCP server — play crypto prediction games from AI agents","directories":{},"_nodeVersion":"24.20.0","dependencies":{"@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.7.0","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_31.2.20_1789335759095_0.4324549505226778","host":"s3://npm-registry-packages-npm-production"}},"31.2.21":{"name":"@battlegrid/mcp-server","version":"31.2.21","keywords":["mcp","model-context-protocol","ai","claude","cursor","battlegrid","crypto","prediction","gaming"],"license":"MIT","_id":"@battlegrid/mcp-server@31.2.21","maintainers":[{"name":"blockferrp","email":"admin@battlegrid.trade"}],"homepage":"https://battlegrid.trade","bugs":{"url":"https://github.com/playbattlegrid/battlegrid-mcp/issues"},"bin":{"battlegrid-mcp":"dist/index.js"},"dist":{"shasum":"30e403746b785cd58c533e5e4a6a2d4e40e9e206","tarball":"https://registry.npmjs.org/@battlegrid/mcp-server/-/mcp-server-31.2.21.tgz","fileCount":21,"integrity":"sha512-EvIXh4h6mRdCS70Yc5VGGl41ZirGjOW7o257lZhmhnrNNig9gGRSNdHQmDDbKeIF7x2McJpXLJLXyPtsz0xbgQ==","signatures":[{"sig":"MEYCIQCXf83Muu4HWUijAJEyx8bmik0HjNjqRhfIT+lJlgvzHQIhAIWm4TrICRda0iZjy8M4u54iSA2GP0eGujQ1htwHYWL/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@battlegrid%2fmcp-server@31.2.21","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":292422},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"c9080d213bbd51a281cadc6dba95a53460838f9f","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0e5a8ea5-8fd4-49d0-bb45-a28dd1099710"}},"repository":{"url":"git+https://github.com/playbattlegrid/battlegrid-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"BattleGrid MCP server — play crypto prediction games from AI agents","directories":{},"_nodeVersion":"24.20.0","dependencies":{"@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.7.0","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_31.2.21_1789357840099_0.9362170042301425","host":"s3://npm-registry-packages-npm-production"}},"31.2.22":{"name":"@battlegrid/mcp-server","version":"31.2.22","keywords":["mcp","model-context-protocol","ai","claude","cursor","battlegrid","crypto","prediction","gaming"],"license":"MIT","_id":"@battlegrid/mcp-server@31.2.22","maintainers":[{"name":"blockferrp","email":"admin@battlegrid.trade"}],"homepage":"https://battlegrid.trade","bugs":{"url":"https://github.com/playbattlegrid/battlegrid-mcp/issues"},"bin":{"battlegrid-mcp":"dist/index.js"},"dist":{"shasum":"557e31db07d1e8f1227fd7907a2e28b50d89eebf","tarball":"https://registry.npmjs.org/@battlegrid/mcp-server/-/mcp-server-31.2.22.tgz","fileCount":21,"integrity":"sha512-T7Ya6ukGEu0ebgkeUmsyc0Qt1dvH48CXJt+6sG6Pwe2WjuVavfgU+YsHmeimXVuQpOKQsNSeg4Doi1wmT63INQ==","signatures":[{"sig":"MEQCIAaMpJXO+dXcxDHYLJWBFZv/gBf17mdiuI0FS6ZQq7BCAiAsxSUqVp2sHzsycWcO/5Hcb7Fm8EnsuiPCzHXV2Wfhrg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@battlegrid%2fmcp-server@31.2.22","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":293100},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"48e63f52c2985f51c7c1395369345ed95af1f6a8","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0e5a8ea5-8fd4-49d0-bb45-a28dd1099710"}},"repository":{"url":"git+https://github.com/playbattlegrid/battlegrid-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"BattleGrid MCP server — play crypto prediction games from AI agents","directories":{},"_nodeVersion":"24.20.0","dependencies":{"@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.7.0","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_31.2.22_1789361136744_0.1300107909433017","host":"s3://npm-registry-packages-npm-production"}},"31.2.23":{"name":"@battlegrid/mcp-server","version":"31.2.23","keywords":["mcp","model-context-protocol","ai","claude","cursor","battlegrid","crypto","prediction","gaming"],"license":"MIT","_id":"@battlegrid/mcp-server@31.2.23","maintainers":[{"name":"blockferrp","email":"admin@battlegrid.trade"}],"homepage":"https://battlegrid.trade","bugs":{"url":"https://github.com/playbattlegrid/battlegrid-mcp/issues"},"bin":{"battlegrid-mcp":"dist/index.js"},"dist":{"shasum":"23c60dd5dd1523347d24ff179a896dfb4c29fa2a","tarball":"https://registry.npmjs.org/@battlegrid/mcp-server/-/mcp-server-31.2.23.tgz","fileCount":21,"integrity":"sha512-fI/mW3ifHQqIhE3MBH6GB/tMPrNpgNExoEFo571H5dRtlZJAq+Ppi/o7CTANVwfjMbSXv8NhRZwVzS/Lxvoe8g==","signatures":[{"sig":"MEUCIFfqVfcCt2OYjagRbHq+v5h/zisdx+LGvGz6DQmx8kGqAiEA21nbsSmV0zYexr5ws6gEhNtbOpRrxA0erpHbg7C73Ts=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIG9tQd6irxfU4BLBTWLIQ/fTz9LlTOIkh8e1QeHvaeAOAiAvl3gA5jRM/swVhw6qRoA6uDSp6vttucz5lmLyRIrDkQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@battlegrid%2fmcp-server@31.2.23","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":293964},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"b3921fea10d6e2757972ba3184acc179e40102ff","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0e5a8ea5-8fd4-49d0-bb45-a28dd1099710"}},"repository":{"url":"git+https://github.com/playbattlegrid/battlegrid-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"BattleGrid MCP server — play crypto prediction games from AI agents","directories":{},"_nodeVersion":"24.20.0","dependencies":{"@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.7.0","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_31.2.23_1789464711061_0.33873673377303737","host":"s3://npm-registry-packages-npm-production"}},"31.2.24":{"name":"@battlegrid/mcp-server","version":"31.2.24","keywords":["mcp","model-context-protocol","ai","claude","cursor","battlegrid","crypto","prediction","gaming"],"license":"MIT","_id":"@battlegrid/mcp-server@31.2.24","maintainers":[{"name":"blockferrp","email":"admin@battlegrid.trade"}],"homepage":"https://battlegrid.trade","bugs":{"url":"https://github.com/playbattlegrid/battlegrid-mcp/issues"},"bin":{"battlegrid-mcp":"dist/index.js"},"dist":{"shasum":"9d5fda39c991d3e5ccd6096290a82a2069659b30","tarball":"https://registry.npmjs.org/@battlegrid/mcp-server/-/mcp-server-31.2.24.tgz","fileCount":21,"integrity":"sha512-vrLU9uUX7F5Lm5B4wQSnM+JD7qEjKdUvLQMfKhuPGw0eGNtXwPt2Z6mXBCg1EpV6zWiC+6AoBxVTqSq4SzWSMQ==","signatures":[{"sig":"MEQCIEx2qepkqJoDa0nJzSOgTPDcCUwSi58bFY9fKZb6agLoAiAw4/IbZpfgSWLNQSBiNoB1CiHH0c51noe0fmuaTuTfyw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIAN4TB7e5Y9mq5d4iTFp27X9Lm1eZLB6Fh+ziaDooYqfAiAeIyA+lvAHP6F/PGjR6bl7HsrNzpu/ju9nV6hmFy5KBA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@battlegrid%2fmcp-server@31.2.24","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":293964},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"7aa896f32b8d4d03c69f2aa757e0e5ef80537083","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0e5a8ea5-8fd4-49d0-bb45-a28dd1099710"}},"repository":{"url":"git+https://github.com/playbattlegrid/battlegrid-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"BattleGrid MCP server — play crypto prediction games from AI agents","directories":{},"_nodeVersion":"24.20.0","dependencies":{"@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.7.0","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_31.2.24_1789505633374_0.23478869293631055","host":"s3://npm-registry-packages-npm-production"}},"31.2.25":{"name":"@battlegrid/mcp-server","version":"31.2.25","keywords":["mcp","model-context-protocol","ai","claude","cursor","battlegrid","crypto","prediction","gaming"],"license":"MIT","_id":"@battlegrid/mcp-server@31.2.25","maintainers":[{"name":"blockferrp","email":"admin@battlegrid.trade"}],"homepage":"https://battlegrid.trade","bugs":{"url":"https://github.com/playbattlegrid/battlegrid-mcp/issues"},"bin":{"battlegrid-mcp":"dist/index.js"},"dist":{"shasum":"3f686075c722420ad2db97f684af0610cb680905","tarball":"https://registry.npmjs.org/@battlegrid/mcp-server/-/mcp-server-31.2.25.tgz","fileCount":21,"integrity":"sha512-keOvLZKTPtAdPtiUAk5SG8+aHYBYLlJyLrH3N7ppUP2GUUvhKEVqnWiL0hGfoekzkC6sKXc9D+cINKVbakBKyg==","signatures":[{"sig":"MEUCICOpWFtvg0v5aZmtxT7jcPOzwd6L4DkX0zJpHrG3sKzmAiEAqTCdLh+3qNV2TDhvUvwD+qtgadNYB5SkZL/+2si+9BA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQD3y4RhJNMXjW9RpqjlkTdJzFrjFozz5fakVEQlkF8M9AIhAL7PwpKliuC8Rehc9milkGblmnnPIkx3EnRYQ1b+YMMm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@battlegrid%2fmcp-server@31.2.25","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":302441},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"b5113aa2bdfc0e11823aa8f200e7c8aa0986500c","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0e5a8ea5-8fd4-49d0-bb45-a28dd1099710"}},"repository":{"url":"git+https://github.com/playbattlegrid/battlegrid-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"BattleGrid MCP server — play crypto prediction games from AI agents","directories":{},"_nodeVersion":"24.20.0","dependencies":{"@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.7.0","@types/node":"^25.3.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_31.2.25_1789526469875_0.1844810713762728","host":"s3://npm-registry-packages-npm-production"}},"31.2.26":{"_id":"@battlegrid/mcp-server@31.2.26","bin":{"battlegrid-mcp":"dist/index.js"},"bugs":{"url":"https://github.com/playbattlegrid/battlegrid-mcp/issues"},"dist":{"shasum":"1178cca9ab1c22bd53969af72380dbb260793e51","tarball":"https://registry.npmjs.org/@battlegrid/mcp-server/-/mcp-server-31.2.26.tgz","fileCount":21,"integrity":"sha512-CvUAe8e3a4LSy7eFKpGjtyHfg6tI5V5iKtJnG9nj6VIu8gF54rrUsD5D6APYwcR+DnpBACOMOvY5n/q713KtBg==","signatures":[{"sig":"MEUCIQDWCSL3s4lzq9N7XlIwqUrhgv7ZzcRdCCeIW/P5Nq/xNwIgAsgaxZ6uCjMvXNOSpvZbTEwuBaUC3aif7r+ufaV83to=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDlH07YxAnH27jgFxvoG5SY7vgc5hVbXMe72QiRqVW5ewIgLN2hofMBP7n54u94KlFV9UsNy2cgq+lPtBVIUnLTJ4I="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@battlegrid%2fmcp-server@31.2.26","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":302441},"main":"dist/index.js","name":"@battlegrid/mcp-server","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"612ad3e0b985991df51386bd966f419134fcceeb","license":"MIT","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc","test:watch":"vitest","prepublishOnly":"npm run build"},"version":"31.2.26","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0e5a8ea5-8fd4-49d0-bb45-a28dd1099710"}},"homepage":"https://battlegrid.trade","keywords":["mcp","model-context-protocol","ai","claude","cursor","battlegrid","crypto","prediction","gaming"],"repository":{"url":"git+https://github.com/playbattlegrid/battlegrid-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"BattleGrid MCP server — play crypto prediction games from AI agents","directories":{},"maintainers":[{"name":"blockferrp","email":"admin@battlegrid.trade"}],"_nodeVersion":"24.20.0","dependencies":{"@modelcontextprotocol/sdk":"^1.26.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.0.18","typescript":"^5.7.0","@types/node":"^25.3.3"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-server_31.2.26_1789529614287_0.0008628436604702916"}}},"time":{"created":"2026-03-02T02:14:53.263Z","modified":"2026-09-16T03:33:34.748Z","1.0.0":"2026-03-02T02:14:53.539Z","1.0.1":"2026-03-02T02:37:19.271Z","1.0.2":"2026-03-09T15:08:13.031Z","1.1.0":"2026-03-22T08:34:16.277Z","1.1.2":"2026-03-22T21:32:50.844Z","1.1.4":"2026-03-23T01:19:21.604Z","2.0.0":"2026-04-13T11:48:23.504Z","3.0.0":"2026-07-25T03:47:39.484Z","3.0.1":"2026-07-27T11:16:17.417Z","4.0.0":"2026-07-29T05:56:14.433Z","5.0.0":"2026-08-03T16:34:36.863Z","11.0.0":"2026-08-07T05:18:27.243Z","30.0.0":"2026-08-23T09:11:10.002Z","31.0.0":"2026-08-23T09:26:01.957Z","31.0.1":"2026-08-23T16:54:10.024Z","31.0.2":"2026-08-24T16:53:24.219Z","31.0.3":"2026-08-24T17:55:15.799Z","31.1.0":"2026-08-29T05:15:44.692Z","31.1.5":"2026-09-02T08:25:15.915Z","31.2.0":"2026-09-03T02:48:22.645Z","31.2.1":"2026-09-03T11:28:51.403Z","31.2.2":"2026-09-03T15:57:38.070Z","31.2.3":"2026-09-03T16:08:52.601Z","31.2.4":"2026-09-03T16:25:13.107Z","31.2.5":"2026-09-03T17:46:22.368Z","31.2.6":"2026-09-04T16:18:44.106Z","31.2.7":"2026-09-04T17:05:59.119Z","31.2.8":"2026-09-04T18:55:51.032Z","31.2.9":"2026-09-05T08:08:03.228Z","31.2.10":"2026-09-05T08:10:18.190Z","31.2.11":"2026-09-05T15:35:40.632Z","31.2.12":"2026-09-05T17:02:00.504Z","31.2.13":"2026-09-05T17:05:59.338Z","31.2.14":"2026-09-06T17:34:41.108Z","31.2.15":"2026-09-07T06:02:29.365Z","31.2.16":"2026-09-08T03:11:58.732Z","31.2.17":"2026-09-08T06:22:54.324Z","31.2.18":"2026-09-11T08:57:23.018Z","31.2.19":"2026-09-13T16:39:15.345Z","31.2.20":"2026-09-13T21:42:39.253Z","31.2.21":"2026-09-14T03:50:40.253Z","31.2.22":"2026-09-14T04:45:36.904Z","31.2.23":"2026-09-15T09:31:51.176Z","31.2.24":"2026-09-15T20:53:53.469Z","31.2.25":"2026-09-16T02:41:09.999Z","31.2.26":"2026-09-16T03:33:34.424Z"},"bugs":{"url":"https://github.com/playbattlegrid/battlegrid-mcp/issues"},"license":"MIT","homepage":"https://battlegrid.trade","keywords":["mcp","model-context-protocol","ai","claude","cursor","battlegrid","crypto","prediction","gaming"],"repository":{"url":"git+https://github.com/playbattlegrid/battlegrid-mcp.git","type":"git"},"description":"BattleGrid MCP server — play crypto prediction games from AI agents","maintainers":[{"name":"blockferrp","email":"admin@battlegrid.trade"}],"readme":"# @battlegrid/mcp-server\n\n[![npm version](https://img.shields.io/npm/v/@battlegrid/mcp-server)](https://www.npmjs.com/package/@battlegrid/mcp-server)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nMCP server for [BattleGrid](https://battlegrid.trade) — play crypto prediction games, author trading strategies, and manage intelligence agents from AI agents.\n\nIt is a thin, authenticated **stdio proxy** to BattleGrid's remote MCP server (Stripe `@stripe/mcp` pattern — no business logic). It discovers tools, prompts, and resources live from the server and re-exposes them to local MCP clients (Claude Desktop, Claude Code, Cursor). Capabilities are always **discovered live** — this package never hardcodes the tool catalog.\n\n## v31 — the announced contract is read from the server, not declared here\n\n**The package version no longer tracks the server's contract, and no longer claims to.** Through v30 it did: the proxy announced `battlegrid@<package version>` downstream, so the published number was read as the contract a client would reach, and keeping the two in step was a manual release chore. It did not hold — the package sat at `11.0.0` against a deployed contract of `19.3.0` for ten days, `5.1.0` was declared here and never published at all, and four of the last five releases were version bumps carrying no code change.\n\nFrom v31 the proxy reads the contract version out of the upstream handshake at connect time and relays it verbatim. What a local client reads is therefore what the connected server just announced — correct by construction, on every connection, with no release involved.\n\n**Two versions, two meanings, and they are expected to differ:**\n\n| | What it describes | Where to read it |\n|---|---|---|\n| Package version | This proxy's own code — a fix here, a dependency bump, a docs correction | `npm view @battlegrid/mcp-server version` |\n| Contract version | The server's wire contract, live | The stdio handshake (`battlegrid@<contract>`), or `GET /mcp/version` |\n\nSeeing package `31.x` alongside handshake `battlegrid@33.x` — the package **behind** the contract — is the system working, not a missed release. That is the pair that looks alarming and is not: the contract moved, and no release here was needed. Both numbers are printed to stderr at startup, labelled.\n\n**What this changes for you:** nothing about how you call anything. Upgrading the package no longer waits on a server deploy, and a server deploy no longer strands you on a package that names the wrong contract — reconnect and the announcement follows. **Contract breaking-change notes are no longer keyed to package versions**, since a contract move is no longer a release here; the v11-and-earlier notes below are kept as history, and the live vocabulary is always discovery.\n\n## Contract history — v60\n\nOne release train, four numbers, and two parts to read first: **`propose_entry_decision` no longer\ndecides in the call**, and **a closed trade's `tradeStatus` now follows its net P&L**. v55 through v59 are not written up here; the canonical record for\nevery contract move is `docs/architecture/MCP_CONTRACT_HISTORY.md` in `battlegrid-app`, and the\nserved version is what the handshake announces.\n\n### Rejected input — something you author is no longer accepted\n\n- **The entry axis names no bar but the strategy's own, and three of its keys are gone** (60.0.0,\n  `decide-entry-on-strategy-close`). The authoring schemas are `.strict()`, so `compile_strategy_plan`,\n  `apply_strategy_plan`, `fork_strategy` and `restore_strategy` REFUSE a body carrying\n  `entry.confirmTf` (the deciding bar is the strategy's own timeframe, so a required input whose only\n  legal value was another field of the same strategy is absent rather than mirrored), `entry.closes`\n  and `entry.bandAtrMultiple` (a multi-bar hold is declared on the condition that needs it; the\n  displacement band is replaced by the platform's own entry-deviation gate, measured against the\n  decided close), and the whole `exit` object (the open-position exit lane judges one closed candle\n  of the position's strategy timeframe). Exactly one input hash moves, `compile_strategy_plan`'s.\n\n- **`entry.trigger: AT_SIGNAL` is retired for authoring** (60.0.0, `retire-at-signal-trigger`, riding\n  the same number). Refused on every authoring surface and on a RESTORE, which rebuilds a stored\n  revision through the same value object. The enum member stays READABLE on every strategy read and\n  on a fired decision's provenance, so a pre-retirement revision is still legible — it just cannot be\n  re-authored. The three that remain are `ON_CANDLE_CLOSE`, `STOP_THROUGH_LEVEL` and `ON_RETEST`.\n\n### Changed meaning, unchanged shape\n\n- **`tradeStatus` follows NET P&L on every closed trade** (60.3.0, `label-trade-outcome-by-pnl`).\n  No schema hash moves for this and the values you receive change anyway. It used to map the close\n  REASON onto a verdict — every `TAKE_PROFIT` was `WON`, every `STOP_LOSS` was `LOST`, and a\n  `MARKET_CLOSE` of either sign was the neutral `CLOSED` — so a stop that filled after a break-even\n  reprice was reported as a loss and a take-profit eaten by fees as a win. `LIQUIDATED` still\n  outranks the number, because a force-close is not a verdict about the trade; `CLOSED` now means\n  only that there is no outcome row to judge. A client that counted `WON` rows was counting\n  take-profits.\n\n- **A proposal is QUEUED, not decided** (60.2.0, `queue-manual-entry-for-close`). This is the entry in\n  this section to act on. `propose_entry_decision` registers a request against the agent's next\n  strategy-bar close and returns immediately: no model runs, nothing is spent, and the call carries\n  `type: \"queued\"` with `request` — `requestId`, the bar (`barStart`), when the answer is due\n  (`decidesBy`) and the last instant that bar may still be decided (`windowEndsAt`). The answer\n  arrives later, in the agent's conversation and, when it proposes a trade, in\n  `list_pending_approvals`. A close that does not qualify, a window that passes with no sweep, and a\n  bar the agent's own radar deployment decided first are each recorded in the conversation instead.\n\n  `recommendation` and `no_trade` REMAIN in the union: the idempotency registrar replays results\n  recorded before this release for their TTL, so a client that dropped those members would fail on\n  its own retry. **A client written against 60.2 handles `queued` and `error`**; one that must also\n  replay handles all four.\n\n### Reshaped output — the same call returns a different shape\n\n- **The four retired entry keys leave every strategy read** (60.0.0) — `get_strategy`,\n  `list_strategies`, `fork_strategy` and both plan envelopes — and `confirmTimeframesByMainCandle`\n  leaves `list_strategy_vocabulary`, because there is no confirm set left to publish.\n\n- **`entryDiscipline.closes` and `.bandAtrMultiple` go `number` → `number | null`** (60.0.0) on\n  `get_trade_outcome_by_decision` and `list_trade_outcomes`. Null on every decision fired after this\n  release, which authors neither; a non-null pair dates the row to the arming era.\n\n### Widened enum — new members your own copy rejects\n\n- **`TradeConvErrorCode` gains `REQUEST_PENDING`** (60.2.0), on the SURFACE arm of\n  `propose_entry_decision`'s error: one pending request per user and coin, so a second is refused. A\n  coin already carrying a pending or live position is refused before anything is queued, as an\n  ENGINE-origin `OPEN_POSITION_CONFLICT` — a member that was already published, reaching this surface\n  for the first time.\n\n### Additive in the same span\n\n- **The exit names the leg that filled** (60.3.0, `label-trade-outcome-by-pnl`). `TradeOutcomeDTO`\n  and the pipeline outcome summary gain `exitRepriceSource`: the reprice that placed the protection\n  leg which actually closed the position — `BREAK_EVEN`, `TRAILING`, `TIME_DECAY`,\n  `MANUAL_OVERRIDE`, `UPDATED` — or null on every close no protection leg filled and on a leg that\n  was never repriced. It is the mechanism behind the verdict above, so read it beside `closeReason`\n  before calling a stopped-out trade a failure. The enum is the one `get_position_audit_history`\n  already publishes. Four output hashes move; no input schema does.\n\n- **Two tools join the catalog for the request lifecycle** (60.2.0, `queue-manual-entry-for-close`).\n  `get_entry_request` (read scope) reads a request that is still pending and is `NOT_FOUND` once it\n  has been answered, cancelled or expired — the answer is in the conversation, not there.\n  `cancel_entry_request` (`mcp:wager`) withdraws one before its bar is decided. `toolCount` 115 → 117.\n\n- **Three radar reads publish the close decision** (60.1.0, `add-radar-close-decision-state`).\n  `get_radar_deployment`, `list_radar_deployments` and `preview_radar_resolution` carry one further\n  key on `resolvesNow`: `closeDecision`, non-null whenever an agent is on duty for the pair. It\n  carries the deciding `timeframe`, the `nextCloseAt` instant, a `state` of `WAITING` or `DEFERRED`\n  (a bar has closed and no sweep has decided it yet), and `last` — the bar, the instant, the outcome\n  (`FIRED` / `NOT_QUALIFIED` / `MISSED`), the gate and the closed reading's score against its\n  minimum — or null before the pair's first close decision.\n\n  **Read it first on a close-deciding pair.** The sibling `qualified` and `qualificationBlock` fields\n  are the per-minute DISPLAY reading there and decide nothing, so an agent ranking them reports\n  \"qualified — watching for a setup\" about a pair whose last three closes were each refused. Neither\n  field is removed or reshaped. A `NOT_QUALIFIED` outcome with a NULL gate beside a score at or above\n  the minimum is the consumed edge — the close qualified and the baseline was already spent — stated\n  by the server so no client compares the two numbers.\n\n## Contract history — v37 → v54\n\nEleven majors reached authors while this section stopped at v36. That gap is the mechanism, not an\noversight: since v31 a contract move needs no release here, so nothing forced a note to be written —\nand the documentation ships inside the tarball, so a note written but unpublished reaches nobody.\nBoth halves are now closed by a rule keyed to the *served* contract rather than to a release of this\npackage.\n\n**50.0.0 and 51.0.0 arrived late, and the reason is worth naming.** The re-vendoring errand that\nused to carry these notes is now a generated export\n(`battlegrid-app/server/scripts/export-mcp-skills.mjs`), and it owns three paths — `skills/`,\n`skills/EXPORT.json`, and the vendored digest. It deliberately does not touch this file. So the\ndigest kept arriving on time while the note stopped travelling with it, and this section sat at\nv49.5 against a served contract of 51.0.0. Nothing a client could observe was wrong; what was\nmissing was the sentence telling them so. **A contract move still needs a human-authored entry\nhere, and the export lane will not remind you.**\n\n### Accepted again — input that was rejected now compiles\n\nNothing to migrate. This is the one direction that cannot break a client: a body the server used to\nrefuse is now stored. Listed because a client that special-cased the refusal can delete that branch.\n\n- **A signal rule patch no longer forces you to restate `allocation` and `required`** (51.0.0,\n  `fix-signal-rule-patch-semantics`). On `update_strategy_signal_rule`, and on the `rules` element\n  of `compile_strategy_plan`, both fields become optional and join `params` under ONE omission\n  rule: **an omitted mutable field preserves the stored value for that signal.** \"Raise this\n  signal's weight\" is now expressible.\n\n  ```jsonc\n  { \"strategyId\": \"…\", \"expectedRevision\": 7, \"signalId\": \"volume_surge\",\n    \"allocation\": 3 }               // `required` and `params` keep exactly what is stored\n  ```\n\n  **Every existing client keeps working** — a complete payload is still a valid patch — so this is\n  listed for what you can now STOP sending. Before it, both fields were mandatory on every rule\n  surface, so a caller that had not first read the current rule had to invent a value it was never\n  asked about. That is not hypothetical: revision 5 of a production strategy flipped `required`\n  false → true unasked while moving a weight 2 → 3, turning a scoring signal into a **mandatory\n  gate** — which changes whether the agent takes trades at all.\n\n  One boundary on the newly legal ground, and it breaks nothing: a patch carrying **no** mutable\n  field is refused — *\"A rule patch must change something: supply at least one of allocation,\n  required or params.\"* — rather than minting a no-op revision. Under 50.0.0 that request could not\n  be formed at all, so nothing that used to work is now refused.\n\n- **An arming trigger no longer constrains its required conditions' clock** (49.4.0,\n  `restore-arming-trigger-authoring`). `compile_strategy_plan`, `apply_strategy_plan` and\n  `fork_strategy` accept a strategy whose entry trigger is `ON_CANDLE_CLOSE`, `STOP_THROUGH_LEVEL`\n  or `ON_RETEST` **while a required condition reads the `LIVE` clock**. v48.1 announced that pairing\n  as rejected, naming the offending condition key on `VALIDATION_ERROR`; that refusal is gone.\n\n  Why it was withdrawn, since the reasoning matters more than the rule: it ran against the whole\n  assembled strategy, so it refused *every* edit to a strategy in that shape — a rename, one report\n  column, one signal weight — plus restore and fork. For a strategy whose required conditions read\n  columns that can never carry a `CLOSE` clock (zone distances, perp/spot flow), there was no legal\n  shape to move to at all. And its premise — that the pairing can never fire — was measured before\n  the arming lifecycle was corrected, and no longer holds.\n\n  The underlying question, *should an entry that waits for a close be decided on a forming bar*, is\n  now settled where the decision is made rather than by refusing the author's declaration.\n\n### Changed meaning, unchanged shape\n\n- **`blocksScanGate` reads `true` for a class it did not** (50.0.0, `own-scan-served-set-once`), on\n  `preview_radar_resolution`. Blocking is now derived from the lane's **served set** rather than\n  switched over the reach reason, so a `FEED`-reason refusal on an operand no reader in the lane\n  serves BLOCKS instead of deferring. No field changes shape, and a client that already renders the\n  key renders the new answer — but a client that treated `blocksScanGate: false` as \"this will\n  resolve once data arrives\" now sees a deployment that will not fire. Nothing in the payload tells\n  you this moved.\n\n- **Three tools serve different values for identical input** (47.3.0, `derive-scan-fetch-from-report`).\n  The radar scan leg now derives its timeframe fetch from the strategy's **report** rather than the\n  on-duty agent's three perception rungs, so a required condition addressing an absolute timeframe\n  outside those rungs — never evaluated at scan before — now is. No field moves; the values do:\n\n  | Tool | What moves |\n  |---|---|\n  | `preview_radar_resolution` | `conditionReach[].reachReason` goes `AGENT_TIMEFRAME` → `null` |\n  | `get_radar_activity` | `scanReachReason` moves the same way, **on new rows only** — rows already written keep what they were recorded with |\n  | `get_agent_coin_qualification` | `reachReason` moves the same way; its sibling `verdict` moves `UNMEASURABLE` → a decided verdict |\n\n  **Read the last one carefully:** a client treating `UNMEASURABLE` as \"this gate is switched off\"\n  will now see that gate **BLOCK**. `AGENT_TIMEFRAME` keeps its member and narrows to the one cause\n  no fetch can discharge. Nothing in the payload tells you this moved.\n\n### Rejected input — something you author is no longer accepted\n\n- **A condition naming a `swingHi` / `swingLo` header is refused — the indicator is a Donchian\n  channel** (53.0.0, `rename-donchian-channel`). The rolling-window extremes indicator computed the\n  highest high and lowest low of the trailing 20 closed bars — a Donchian channel — under a swing\n  point's name, and the name asserted a property the value does not have (a swing high survives being\n  broken; a channel edge re-anchors the instant it is). Every layer of the vocabulary moves at once,\n  with no alias: a clause on `compile_strategy_plan`, `apply_strategy_plan` or `fork_strategy` naming\n  a header on the old stems — `dist_swingLo`, `dist_swingHi_4h`, `dist_swingLo_rank_near`, any\n  timeframe- or rank-suffixed form — is refused as `CONDITION_COLUMN_UNKNOWN` where 52.0.0 accepted\n  it. The same shapes exist on the `donchianHi` / `donchianLo` stems, which\n  `get_strategy_column_contract` lists with the labels *20-bar high* / *20-bar low*. Every value is\n  the same number under its new name.\n\n  **Rename the stems** (`swingHi` → `donchianHi`, `swingLo` → `donchianLo`, suffixes unchanged) in\n  every condition and Market Read marker you author. That is the whole migration for what you send.\n\n- **`entry.levelSource` is refused — the level is derived, never authored** (52.0.0,\n  `derive-entry-level`). The strict `entry` object on `compile_strategy_plan`, `apply_strategy_plan`\n  and `fork_strategy` is six keys — `trigger`, `confirmTf`, `closes`, `bandAtrMultiple`,\n  `levelOffsetAtrMultiple`, `validForBars` — and a body carrying `levelSource` is refused naming\n  the key where 51.0.0 accepted it. `STOP_THROUGH_LEVEL` rests a stop past the swing channel's\n  CURRENT edge in the trade's direction (the 20-bar high for a long, the 20-bar low for a short);\n  `ON_RETEST` rests a limit in front of the edge a close most recently BROKE. Your two dials are the\n  unsigned distance from that edge (`levelOffsetAtrMultiple`, 0–2 ATR; a long adds, a short\n  subtracts) and the bar validity (`validForBars`, 1–24). A meaningful `validForBars` under\n  `AT_SIGNAL` or `ON_CANDLE_CLOSE` is now refused as `PARAMETER_NOT_HONOURED` like the other level\n  dials.\n\n  **Drop the key.** That is the whole migration for what you send; the six-key example below is\n  the current shape.\n\n- **`update_strategy_signal_rule` requires `confirm: true` when the strategy has bound agents**\n  (51.0.0, `fix-signal-rule-patch-semantics`). The write re-materializes scoring configuration onto\n  every bound agent immediately — including agents holding open USDC positions — and until now\n  nothing on the server asked. A rule edit on a strategy with one or more bound agents is refused\n  without the flag, and the message names the count. An edit on a strategy with **nothing bound is\n  unaffected**, and so is every path through the web editor.\n\n  **Send `confirm: true`.** That is the whole migration, and `confirm` is published on the input\n  schema — but nothing in the schema says WHEN it becomes mandatory, because the condition is the\n  bound-agent count rather than the shape of your body. The refusal rides the existing\n  `VALIDATION_ERROR` code, so a client that omits it discovers the rule at the refusal.\n\n  Why it moved to the server: the guard existed, but only as served prose the calling model could\n  decline — and did, twice in production on 2026-08-24. `archive_strategy` and\n  `rebind_intelligence_agent` have taken a server-enforced `confirm` all along; single-rule tuning\n  was the outlier among its own siblings, and it is the one that writes to scoring.\n\n- **A radar deployment is refused when its strategy reads a session-field scalar** (50.0.0,\n  `own-scan-served-set-once`). `upsert_radar_deployment` refuses a deployment whose slot agents'\n  bound strategy carries a condition reading one of five SESSION-FIELD scalars — `fieldPlayers`,\n  `fieldUpBias`, `fieldBiasDir`, `captConc`, `picksSpread` — with\n  `CONDITION_OPERAND_UNSERVED_IN_LANE`. A body accepted under 49.5.0 is refused under 50.0.0\n  without one byte of it changing.\n\n  **Why a refusal and not a warning.** Those five describe a game SESSION, and radar runs outside a\n  session at BOTH its stages — so such a condition can never resolve there. The deployment formed\n  no fire edge and the agent did nothing on that coin, silently, forever. The refusal converts a\n  permanent silence into an error at the moment you author it.\n\n  **Migrate** by moving the clause to a scalar radar reads — the Market Breadth or Reference Pairs\n  families, which are market-wide reads with no session dimension — or by binding the strategy to\n  an arena agent instead. The error carries both halves: `allowedDomain` enumerates every servable\n  header, and the message names the sections.\n\n  **Strategy authoring is untouched by this bump.** The same strategy is legal, and reads those\n  scalars correctly, on an arena agent — which is why the refusal is on the DEPLOYMENT and not on\n  `compile_strategy_plan` / `apply_strategy_plan`.\n\n- **A benchmark-bound section no longer accepts crowd metrics or rank transforms** (49.0.0,\n  `fix-benchmark-legality-save-path`). On a custom section carrying a non-null `benchmarkTicker`, a\n  column whose metric is enrichment-stage (the `CROWD_*` family, `FLOW_ALIGN`, `SMART_RETAIL`,\n  `CAPTAIN_CONF`, `CONFIDENCE`, `SETTLED_AT`, the `PERP_SPOT_*` trio) is refused with\n  `REPORT_COLUMN_BENCHMARK_METRIC_UNSUPPORTED`, and one carrying a `rank` transform in either the\n  direct or the chained position with `REPORT_COLUMN_BENCHMARK_TRANSFORM_UNSUPPORTED`. Every tool\n  accepting a section array is affected, and no other byte of your body changes.\n\n  **Fix it by moving the column, not by retrying.** Both readings are defined *relative to the\n  cohort being evaluated* — a crowd reading is what this session's players did, a rank is a position\n  among the coins under evaluation — and a benchmark is deliberately outside that cohort. Neither\n  has a value there, which is why such a column could never render. Put it on an ordinary section\n  (`benchmarkTicker: null`), or drop it.\n\n  **This is a fix, not a new rule.** The restriction shipped with benchmark sections and was already\n  enforced by the column builder, by report materialization, and by `get_strategy_column_contract` —\n  so an author who checked a column against discovery first has been seeing this refusal all along.\n  What changed is that the SAVE path now asks the same question. Previously it did not, so such a\n  section persisted and then failed at every evaluation instead of at authoring.\n\n- **A custom report section no longer accepts `timeframe`** (48.0.0,\n  `remove-section-anchor-override`). The per-section anchor override is gone. Every tool accepting a\n  section array — `compile_strategy_plan`, `preview_strategy_report`, `derive_strategy_rule_view`,\n  and `apply_strategy_plan` — refuses a section carrying it: `sections[N]: Unrecognized key(s)`,\n  with no other byte of your body changing. Drop the key. A section's columns resolve against the\n  **strategy** timeframe, and a column reaches any other timeframe by pinning it on the column\n  (`timeframe: { abs: '4h' }`) — which it could always do. Relative column references\n  (`anchor`/`lower`/`regime`) are untouched, and are the point: they track the strategy.\n\n- **A custom report section requires `notes`** (43.0.0, `add-authored-section-notes`). Every tool\n  accepting a section array — `compile_strategy_plan`, `preview_strategy_report`,\n  `derive_strategy_rule_view` — refuses a section without it: `sections[N].notes: Required`, with no\n  byte of your body changing. Send explicit `null` for \"no note\". It is required rather than optional\n  because these payloads are a FULL REPLACE: an omitted key and an explicit `null` would be the same\n  request on the wire, so every rebuild site would silently clear a note its author wrote.\n  `benchmarkTicker` carries the same required-nullable discipline for the same reason.\n\n- **Every condition requires `clock` and `closes`** (44.0.0, `add-condition-clock`), and **`exit`**\n  arrives with them. A condition entry now carries eight keys, not five. `clock` is `\"LIVE\"` (the\n  previous behaviour — the forming bar) or `\"CLOSE\"` (settled bars); `closes` is how many consecutive\n  closed bars must read true, 1–5, and is always `1` under LIVE. No wire default, for the same\n  whole-set-replacement reason as `notes`: a defaulted key would let an unrelated re-save silently\n  un-clock an enforced money gate back to forming-bar evidence.\n\n  A `CLOSE` clock is accepted only where a closed frame can change the reading — the clause must\n  resolve from the coin's own candle series at offset 0. Frame-inert operands (perp-payload scalars,\n  published rolling changes, ranks, zone entities, regime labels, enrichment metrics, session\n  scalars) are refused with `CONDITION_CLOCK_OPERAND_ILLEGAL` naming the header and the remedy: split\n  that clause into its own LIVE condition and `conditionRef` it. `exit: true` is legal only under\n  `clock: \"CLOSE\"` — an exit fired on a forming bar is an intrabar exit.\n\n- **A strategy requires a six-key `entry` object** (44.0.0 for four keys, 47.0.0 for three more —\n  `add-entry-on-close`, `add-level-trigger-execution` — and 52.0.0 removed `levelSource`,\n  `derive-entry-level`). Required on every CREATE, on `compile_strategy_plan`, `apply_strategy_plan`\n  and `update_intelligence_agent`. A client sending 44.0.0's four-key object is refused with\n  `entry.levelOffsetAtrMultiple: Required` without one byte of it changing.\n\n  ```jsonc\n  \"entry\": {\n    \"trigger\": \"AT_SIGNAL\",          // | ON_CANDLE_CLOSE | STOP_THROUGH_LEVEL | ON_RETEST\n    \"confirmTf\": \"4h\",               // the strategy timeframe or the rung below it — nothing else\n    \"closes\": 1,                     // 1–5; must be 1 unless ON_CANDLE_CLOSE\n    \"bandAtrMultiple\": 1.0,          // > 0, and <= the platform's entry-deviation gate\n    \"levelOffsetAtrMultiple\": 0,     // 0–2, UNSIGNED distance from the derived edge; 0 unless a level trigger\n    \"validForBars\": 4                // 1–24 of the strategy's own bars; 4 unless a level trigger\n  }\n  ```\n\n  `AT_SIGNAL` with those values is byte-identical to pre-44 behaviour. The legality matrix runs one\n  way: all six keys are always present, so a MEANINGFUL value under a trigger that ignores it is\n  refused rather than accepted-and-dropped — a dial never silently does nothing.\n\n- **A `strategyTimeframe` the platform does not ingest is refused** (39.0.0,\n  `move-renderer-to-rendered-section`) on `get_coin_market_context`, where it was previously\n  accepted. The number is the only signal a client gets.\n\n- **`eventType` gains `ENTRY_EXPIRED_UNCONFIRMED`** (48.1.0, `fix-entry-arming-lifecycle`) on\n  `get_radar_activity` and `get_radar_activity_summary` — an armed entry that reached its episode\n  lifetime without ever receiving a confirming close. A client holding its own closed copy of that\n  enum rejects the new member; one that switches exhaustively on it needs the branch.\n\n  `entryVoidCause` is deliberately **unchanged** and still carries exactly `BAND`, `CONDITIONS`,\n  `STRUCTURAL`. Each of those is a measurement taken *at* a close, so an episode that reached no\n  close gets its own event type rather than a fourth cause — `ENTRY_VOIDED` means \"called off at the\n  close\", a claim this outcome must not make.\n\n  The authoring boundary also gains a refusal with **no schema change**: a strategy declaring an\n  arming trigger whose `required` conditions read the `LIVE` clock is rejected on the existing\n  `VALIDATION_ERROR` code, naming the offending condition key. Same code, same shape, new reason —\n  so nothing in the published schema tells you it can now happen.\n\n### Removed — no alias exists\n\n- **`SWING_LOW` / `SWING_HIGH` leave the stop and take-profit method enums, and the four S/R\n  indicator keys leave the signal vocabulary** (53.0.0, `rename-donchian-channel`). `DONCHIAN_LOWER`\n  / `DONCHIAN_UPPER` and `donchian_upper` / `donchian_lower` / `prev_donchian_upper` /\n  `prev_donchian_lower` carry the same values; nothing answers to the old names.\n\n- **`get_coin_market_context` is REMOVED** (40.0.0, `retire-get-coin-market-context`). Calling it\n  returns an unknown-tool error. There is deliberately **no alias**: a silent redirect would hide a\n  payload shape change from a client that never asked for one. Use `get_market_context`.\n\n- **`get_macd_heatmap` leaves the published surface** (41.0.0). Same shape of break, same absence of\n  an alias.\n\n- **`isPrimary` is removed from every published `EvaluatedSignal`** (38.0.0) — `get_signal_log`,\n  `get_public_agent_signal_log_detail`, and every other tool returning a signal scorecard. Reading it\n  now finds the key absent rather than false.\n\n### Reshaped output — the same call returns a different shape\n\n- **`scan_agent_coins` returns the ranking, not an explanation of every coin** (54.0.0,\n  `fix-mcp-scan-row-altitude`). The scan used to wrap the app's full per-coin qualification verdict\n  in every row — two directions with candidate-level construction and a stop-loss policy band, four\n  gates each with its own measurement, condition reach reasons, the ATR corridor. For a 78-coin\n  catalog that was **82,147 characters, ~1,053 per row**, which is past the tool-result cap of every\n  client we know of: the calling model received a file path instead of an answer, so the tool did not\n  deliver its result even when the scan succeeded.\n\n  `rows` is gone. Three ranked arrays replace it, and `rank` is **global across all three**, so\n  reading them in this order reproduces the server's own sequence:\n\n  ```\n  qualified[]   { rank, coinTicker, scorePercent, coinDataStopped }\n  rejected[]    { rank, coinTicker, scorePercent, firstFailReason, scoreShortfallPercent }\n  unscorable[]  { rank, coinTicker, coinDataStopped }\n  ```\n\n  Array membership now carries what the row `kind` discriminator and the `qualifies` flag used to,\n  and both are gone with them; `firstFailReason` is non-nullable on a rejected row, because a\n  non-qualifying verdict always names the gate that blocked it. Rows also lose `long`, `short`,\n  `gates`, `tradeableAtrRange`, `evaluatedAt`, `coinName`, `assetClass` and `category`.\n\n  Two things are new. The agent's `agentId`, `agentName`, `strategyTimeframe` and `minScorePercent`\n  move to an `agent` object carried **once** instead of on all 78 rows — `null` when the scan scored\n  nothing at all. And `scoreShortfallPercent` is server-computed: how far below the minimum the score\n  fell, non-null exactly when the aggregate score is what blocked, so you never subtract a published\n  threshold from a published reading yourself.\n\n  `scanStartedAt`, `coinsScanned` and `qualifiedCount` are unchanged, and so is every coin: same\n  rows, same order, same ranks, same verdicts, same rate buckets, same evaluator. Only the fields\n  moved — about 8.8 KB for the same 78-coin scan.\n\n  **Migration.** Read `qualified` / `rejected` / `unscorable` instead of `rows`, and take the agent's\n  thresholds from `agent` rather than from the first row. For a shortlisted coin's full per-direction\n  and per-gate detail, call `get_agent_coin_qualification` on up to 12 tickers — it carries every\n  dropped field and costs no second scan (the scan is rate-limited to 3 per agent and 10 per user a\n  minute; the probe is not).\n\n\n- **Report headers, glosses and signal indicator keys are renamed for the Donchian channel**\n  (53.0.0, `rename-donchian-channel`). Every report surface — `preview_strategy_report`,\n  `get_strategy_section_template`, the agent prompt previews — renders `donchianHi` / `donchianLo`\n  and their `dist_…` / `…_rank_near` forms where it rendered `swingHi` / `swingLo`, with the labels\n  *20-bar high* / *20-bar low* and glosses that say what the number is (the highest high / lowest low\n  of the last 20 closed bars — the channel's edges). Signal definitions\n  (`get_strategy_signal_definition`, `list_strategy_signals`) and signal-log `indicatorValues`\n  carry `donchian_upper` / `donchian_lower` / `prev_donchian_upper` / `prev_donchian_lower` for the\n  four S/R signals. Signal ids, the `SUPPORT_RESISTANCE` module and its display names are unchanged.\n\n  **Read the new keys.** A reader keyed on `swing_high` / `swing_low` finds nothing; the values are\n  the same numbers under the new keys.\n\n- **The stored entry discipline no longer names a level source** (52.0.0, `derive-entry-level`).\n  `StrategyDTO.entry` (`get_strategy`, `list_strategies`, the `fork_strategy` / `archive_strategy` /\n  `restore_strategy` envelopes) and the apply envelope's `postState.entry` lose `levelSource`.\n  `TradeOutcomeDTO.entryDiscipline` (`get_trade_outcome_by_decision`, `list_trade_outcomes`) loses\n  it and gains `levelOffsetAtrMultiple: number | null` — the offset in force at the fire, `null` on\n  rows written before its column existed. A reader that rendered the level source renders the\n  geometry from `trigger` and the outcome's `direction` instead: which edge and which order shape\n  are a pure function of those two fields, so no stored copy is served.\n\n- **`update_strategy_signal_rule` gains its own response envelope** (51.0.0,\n  `fix-signal-rule-patch-semantics`). It no longer shares `{ strategy }` with its siblings. The\n  response is `{ strategy, ruleChanges }`, where `ruleChanges` is the server's own before/after\n  pair for the edited signal — `[{ signalId, before, after }]`, each side a full rule object. It is\n  `null` when the mutation changed no rule, **never `[]`**.\n\n  **Report the change from that pair, not from memory.** The planner always computed the diff and\n  the tool discarded it, so a caller narrating what it just did had only its own recollection of\n  the before-value. One production edit shipped a wrong receipt on top of a wrong write that way,\n  and the write was unreconstructable from the audit trail afterwards.\n\n  Additive, but published on a `.strict()` shape — a decoder pinned to the old two-key object\n  rejects the new key. `fork_strategy`, `archive_strategy` and `restore_strategy` keep the shared\n  `StrategyResponseSchema` and publish exactly what they did; it was deliberately NOT widened for\n  them, so this reshape reaches one tool only.\n\n- **An entry void now names the gate that refused it** (49.5.0,\n  `fix-arming-trigger-clock-authority`), on `get_radar_activity_summary`. In the cause rollup, the\n  `ENTRY_VOID` group's `gateCode` widens from always-`null` to `QualificationGateCode | null`: a\n  conditions-side void carries the gate that blocked — `AGGREGATE_BELOW_MIN`,\n  `REQUIRED_COUNT_BELOW_MIN`, `REQUIRED_CONDITION_FALSE` — while a band void stays `null`, because\n  that void happens on a reading that qualified and has no failing gate to name.\n\n  A client that renders the field through the same enum the response already uses on four other\n  cause arms needs no change. One that treated it as a literal `null` — a strict decoder pinning the\n  type, or a branch keyed to its absence — sees a value it did not expect. That is the whole\n  migration.\n\n  Why it moved: the group previously collapsed every conditions-side void under one label. The\n  first 26 in production carried that label while two different gates had produced them, and none of\n  them was a required condition being false. The rollup ships counts rather than rows, so the gate\n  could not be recovered client-side.\n\n- **The normalized report section loses `timeframe`** (48.0.0, `remove-section-anchor-override`), on\n  every tool that publishes a strategy: `get_strategy`, `fork_strategy`, `archive_strategy`,\n  `restore_strategy`, `update_strategy_signal_rule`, `apply_strategy_plan`, and\n  `compile_strategy_plan`'s post-state. A strict parser rejects the shorter object; a lenient one\n  reads a section whose anchor is the strategy timeframe, which it now always is.\n\n- **`get_strategy_column_contract` renames its anchor, both ways** (48.0.0). The request field\n  `sectionTimeframe` becomes `anchorTimeframe` — same meaning, and still optional. On the response,\n  `timeframe.requiresSectionTimeframe` becomes `requiresAnchorTimeframe`, and\n  `timeframe.sectionTimeframeOverrideAllowed` is **removed**: it published whether a column could go\n  in an anchor-overridden section, and no section can be overridden. One call also stops being\n  refused — a timeframe-inert metric supplied with an anchor now compiles.\n  `REPORT_COLUMN_SECTION_TIMEFRAME_UNSUPPORTED` leaves the `authoringCode` vocabulary.\n\n- **`RenderedSection.notes` stops carrying provenance** (42.0.0, `separate-section-facts-from-read`),\n  on `preview_strategy_report`, `compile_strategy_plan` and `get_market_context`. A new REQUIRED\n  `provenance: string[]` carries it instead. A client reading provenance out of `notes` now reads an\n  author's prose, or nothing — which is a silent misread, not an error.\n\n- **`preview_strategy_report.renderedSections[]` gains `authoredNote`** (43.0.0), the author's read\n  for a custom row and `null` on a platform row. Additive, but published on a `.strict()` shape.\n\n- **`get_radar_activity` serves its evaluation curve on the FIRST PAGE ONLY** (37.0.0), and\n  `get_radar_activity_summary` is added. A client reading the curve off a later page finds it absent.\n\n### Widened enum — new members your own copy rejects\n\n- **The stop and take-profit method enums gain `DONCHIAN_LOWER` / `DONCHIAN_UPPER`** (53.0.0,\n  `rename-donchian-channel`), replacing `SWING_LOW` / `SWING_HIGH` on the signal-pipeline detail\n  schemas — trade-setup options, R:R-rejected pairs and candidate levels. A copy of either enum that\n  rejects unknown members must add the two new ones; the two old ones never appear again.\n\n- **`TradeExecutionFailureReason` gains `LEVEL_NOT_RESTABLE`** (52.0.0, `derive-entry-level`): a\n  level entry refused at placement because its resting price sat on the wrong side of the exchange\n  mid — a buy stop at or below it, a buy limit at or above it, and the mirror for a sell. It appears\n  on the `list_signal_logs` failure-reason filter input and on the signal-pipeline execution\n  summary's `failureReason`, with origin `CLIENT_GATE`. There is no distance limit: a level far from\n  the mark rests until its bar validity expires.\n\n- **The authorable metric vocabulary widens by 29 keys** (46.1.0, `add-indicator-catalog-coverage`):\n  Keltner (`KC_UPPER`/`KC_MID`/`KC_LOWER`), Supertrend (`ST_LINE`/`ST_DIR`), Hull (`HMA20`),\n  WaveTrend (`WT1`/`WT2`), QQE (`QQE_RSI_MA`/`QQE_STOP`), Parabolic SAR (`PSAR`), Ichimoku\n  (`ICHI_CONV`/`ICHI_BASE`/`ICHI_SPAN_A`/`ICHI_SPAN_B`/`ICHI_LAG`), Williams %R (`WILLR14`),\n  Stochastic RSI (`STOCH_RSI14`), session pivots (`PIVOT_P`/`PIVOT_R1`–`R3`/`PIVOT_S1`–`S3`), plus\n  four already-published fields that became addressable: `BB_UPPER`, `BB_LOWER`, `DI_PLUS`,\n  `DI_MINUS`.\n\n  Additive on the wire — every request you can send today is still accepted. It is called out here\n  because a client holding its own closed copy of the metric enum rejects the new members, and\n  because **an agent holding a cached belief that these are inexpressible will substitute for a\n  primitive the platform now serves**. That failure raises no error at all: the author is simply told\n  a strategy cannot be built.\n\n- **`EntryTrigger` gains `STOP_THROUGH_LEVEL` and `ON_RETEST`, and `EntryLevelSource` is published\n  for the first time** with four members (47.0.0). Additive on their own; the required keys above are\n  what make that bump a major.\n\n- **Each signal-checklist item's `measured` object gains a required `triggered` boolean** (47.2.0,\n  `fix-entry-prompt-signal-evidence`) on `get_signal_log` and `get_public_agent_signal_log_detail`,\n  on the `numeric` and `categorical` arms. Additive and MINOR — a client ignoring it is unaffected —\n  but it is named here because a client parsing that output strictly rejects the new key, and because\n  leaving 47.2 unlisted would make a reader wonder what happened to it.\n\n  The `unavailable` arm deliberately does **not** carry `triggered`: \"the claim could not be joined to\n  a stored result\" and \"the signal did not fire\" are different states, and leaving the key off that\n  arm makes conflating them a type error rather than a convention.\n\n### Additive in the same span\n\n- **Two tools join the catalog for the agent trade flow** (52.1.0, `add-mcp-agent-trade-flow`).\n  `scan_agent_coins` evaluates every active coin against one of your agents in a single call and\n  returns them server-ranked, on the same use case, buckets and ranking the app's own TRADE-tab scan\n  serves. `propose_entry_decision` runs the conversational trade turn headlessly for one (agent,\n  coin) and returns its terminal in the stream's own vocabulary: `type: recommendation` carrying the\n  PROPOSED `TradingEntryDecisionDTO` row that `get_entry_decision` and `list_pending_approvals`\n  already publish, `type: no_trade`, or `type: error` carrying the turn's `TradeConvError` verbatim.\n  Nothing narrows and no existing schema hash moves; the 12-ticker `get_agent_coin_qualification`\n  stays as the spot-check probe.\n\n  **`idempotencyKey` is REQUIRED on `propose_entry_decision`** — it is the turn's own key, and a\n  same-key retry replays the recorded terminal rather than paying for a second inference. That\n  includes a post-billing `LLM_FAILURE`, which is returned as a value for precisely that reason.\n  Pre-engine faults are typed errors instead: `RATE_LIMITED`, `NOT_FOUND`, `CONFLICT` for a same-key\n  call still in flight, and `SERVICE_UNAVAILABLE` when the surface is switched off. Both tools\n  refuse with `RATE_LIMITED` carrying `retryAfterSeconds` under the same per-(user, agent) limit the\n  app itself enforces, so a scan is never served stale or partial.\n\n- **`get_regime_snapshot` publishes the evidence behind the verdict** (47.1.0,\n  `publish-regime-classification-evidence`). The snapshot gains `evidence`: the quantities the\n  classifier read, the gates it tested them against, the signed margin to the gate deciding whether\n  the current label survives, and the two decision facts only the classifier holds — `gateState`\n  (`cleared` / `held` / `dropped`) and `directionSource` (`di` / `ema`). Nothing narrows; a client\n  that ignores the field is unaffected.\n\n  Read `gateState` before you trust a trend label: **`held` means the ADX hysteresis buffer is\n  carrying the PREVIOUS bar's label rather than this bar re-confirming it** — a materially weaker\n  claim wearing the same word, and one no client could previously detect. `directionSource: 'ema'`\n  is the same shape of warning: the direction came from the fallback that fires precisely when the\n  DI spread is indecisive. The margin is signed so **positive always means \"the current label\n  survives by this much\"**, in every gate state, so it is safe to branch on its sign.\n\n  `conviction` is a BRANCH DISCRIMINATOR, not a confidence: it encodes *which* rule in the priority\n  ladder matched, not how comfortably it matched. The margins carry comfort. A client reading\n  conviction as a strength score is reading it wrong, and always was — this release just makes the\n  alternative available.\n\n- **Thirteen metric keys join the catalog** (47.1.0) — the `regime` family gains `REGIME_STATE`,\n  `REGIME_CONVICTION`, `REGIME_RUN_BARS`, `REGIME_TREND_GATE`, `REGIME_TREND_MARGIN`,\n  `REGIME_TREND_SOURCE`, `REGIME_DI_SPREAD`, `REGIME_VOL_ATR_RATIO`, `REGIME_VOL_BBW_RATIO`,\n  `REGIME_MOM_BULL_VOTES`, `REGIME_MOM_BEAR_VOTES`, `REGIME_CRASH_MARGIN` and `REGIME_CRASH_LATCH`,\n  making the composite regime and its evidence addressable in a report column or condition for the\n  first time. Only a client that switches exhaustively on `MetricKey` needs new branches.\n\n  Not a contract change, but worth knowing if you author conditions: the report grammar's regime\n  metrics now resolve from the **confirmed close** on every path. They previously resolved from the\n  forming bar when a report was rendered and the confirmed close when the scan swept, so the same\n  condition could read differently in preview than in production. Same wire shape; same bar\n  everywhere now.\n\n## Contract history — v12 → v36\n\n> **The number in this heading is a CONTRACT version, not this package's version.** The npm badge at the top\n> tracks the proxy's own code; this section tracks the server's wire contract. They move independently **by\n> design**: a contract move needs no release here, because a connected proxy relays the contract out of the\n> upstream handshake rather than declaring it. So a package on `31.x` listing contract history up to `36.x` is\n> correct — not a version someone forgot to bump. Read the live pair from the startup stderr lines or\n> `GET /mcp/version`; see [Rediscovery & versioning](#rediscovery--versioning) for why.\n\nThese are the server contract breaks between contract 12 and contract 36. Most of the span shipped while the package sat at `11.0.0`; contract 31 landed after this package reached `31.0.0`, and the two numbers matching is coincidence — since v31 the announced contract is relayed from the server, so a package version says nothing about a contract version. They are **contract** history, not package releases: from v31 the announced contract is relayed live and a contract move is no longer a release here. Grouped by what a client observes, with the contract version that introduced each.\n\n**The proxy itself is unchanged.** It embeds no schemas, pins no contract version, and forwards `{ request }` verbatim. Every break below lands on whatever *authors* the payload or *reads* the result, never on the proxy.\n\n### Changed meaning, unchanged shape — the one to read first\n\n- **`compile_strategy_plan` is no longer read-only or idempotent** (33.0.0, `rehydrate-approved-plan-on-apply`). Its input, its output and its behaviour toward your strategy are unchanged — it still changes no strategy, agent or revision — but it now parks the plan it approved for its own apply to read, and **each call mints a distinct record and a distinct token**. `readOnlyHint` and `idempotentHint` are published as `false` accordingly. A client that retried a compile that had already succeeded, or fanned two out in parallel for one edit, was doing so on the strength of the old annotation: **do neither.** Compile once per reviewed payload. Nothing in the payload tells you this moved.\n\n- **Position-size presets are now a RISK BUDGET** (30.0.0, `split-stop-geometry-from-risk`). `smallPct` / `mediumPct` / `largePct` stop denoting a share of the ORDER (`notional = pct / 100 × headroom × leverage`) and start denoting the share of headroom placed **at risk** (`notional = headroom × riskPct / stopDistancePct`, capped at the margin headroom can post). Same keys, same types, same accepted range: **nothing in the payload tells you the meaning moved.** A client still sending `22.0` for MEDIUM is asking to risk 22% of its budget on one trade rather than roughly 2%. Typical risk budgets are `0.5`–`3`; the platform defaults moved to `1 / 2 / 3`. Leverage stops multiplying order size and becomes a constraint only.\n\n### Rejected input — something you author is no longer accepted\n\n- **`upsert_deployment_policy` requires `enabled`** (35.0.0, `add-arena-deployment-pause`). The arena deployment gains an owner-owned pause, and the flag that carries it is **required, not optional** — a body accepted under contract 34 is refused under 35 without one byte of it changing. Required is the whole point: this call replaces the entire policy, so an omitted key and an explicit `true` would be the same request on the wire, and every client that rebuilt a policy without the flag would silently resume a deployment its owner had paused. Read the value from `get_deployment_policy` and send it back. **There is no separate pause verb** — pausing and resuming are this same call with the flag flipped.\n\n  Do not reach for `enabled: false` to un-deploy. It keeps every slot and stops play, which is the opposite of withdrawing: `delete_deployment_policy` is the withdrawal verb, and it discards the rules permanently. `upsert_deployment_policy` refuses an empty slot set, and its rejection names both routes.\n\n- **A signal rule flagged `required` at allocation Off is rejected** (34.0.0, `enforce-required-allocation-invariant`). `required` and `allocation` are two independently editable fields encoding one thing — whether and how a signal participates — so `{ required: true, allocation: 0 }` was representable and meant nothing: the scorecard's triggered set already excludes Off, so such a rule could neither satisfy `minRequiredCount` nor block a trade. It is now refused on **every** rule-writing surface — `compile_strategy_plan`, `apply_strategy_plan` and `update_strategy_signal_rule` alike.\n\n  Three things make this one easy to trip over. It is an **input-acceptance narrowing**: a payload accepted under contract 33 is refused under 34 without one byte of it changing. It is **invisible in the published schema** — `zod-to-json-schema` drops effects by construction — so you cannot pre-validate it from `tools/list`, and the typed error IS the contract: read `details.inertRequiredSignalIds`, which carries the complete sorted list of offending signals, rather than the message, which names a bounded prefix. And **nothing is repaired for you**: the server will not raise the allocation (that would invent a scoring weight you never chose) nor clear the flag (that would discard your intent silently). Pick one and resend; either satisfies the boundary.\n\n- **`apply_strategy_plan` no longer accepts the plan** (33.0.0, `rehydrate-approved-plan-on-apply`). Its input narrows to `{ planToken, confirm }`. A `plan` member is **rejected as an unknown key** — not accepted, not ignored, and with no transitional dual shape — so every client that built the payload breaks on the next connection, which before this is what every published surface told it to do. The server keeps the plan its own compile approved and reads it back, so **you copy nothing out of the compile response**: forward `planToken` byte-for-byte and confirm.\n\n  Three consequences worth knowing. The 256,000-byte cap on the apply payload is **gone with the payload**, so a large authored surface no longer becomes impossible to apply through a conversational client; the compiled plan is still capped and compile still enforces it. `PLAN_APPROVAL_NOT_FOUND` joins the error vocabulary for a token no approved plan answers to — already applied, lapsed, or never issued, all one code, because the recovery is the same in each case: compile again. And a validation refusal (a quota, a name collision, a bound agent that changed, a moved catalog) now **leaves the approved plan applicable** — clear the cause and confirm again with the same token while it lives, rather than recompiling.\n\n- **The agent brain is no longer a preset union** (32.0.0, `remove-agent-presets`). `create_intelligence_agent` stops taking the `brain` discriminated union: `modelId` and `behavior` become required top-level fields and the `{ kind: 'PRESET' | 'CUSTOM' }` wrapper is gone, so the old shape fails on the unknown key **and** on two now-missing required fields. `update_intelligence_agent` drops `brainPreset`; `modelId` and `behavior` stay independently optional and are now **always honoured**, closing an accept-and-ignore where a named preset silently discarded a model sent beside it.\n\n- **`apply_strategy_plan` now publishes the same bounds as `compile_strategy_plan`** (31.0.0, resolving #4495). Eleven position-management dials were declared three times server-side and two copies had drifted, so apply advertised `trailingGivebackPct` as a bare number where compile advertised 25–55, and dropped `trailingTriggerR`'s `multipleOf 0.01` — the constraint pinning storage precision so a sub-precision value is rejected rather than rounded onto the trail-from-entry sentinel `0`. Nothing bad could ever commit (the digest would not match), but the refusal you got was a binding mismatch, which arrived as a bare `INTERNAL_ERROR`. Apply's published bounds only **narrow** to compile's; a client that copies values from `approvedPlan.postState`, as it should, is unaffected. Separately the trio `minStopLossAtrMultiple` / `maxStopLossAtrMultiple` / `minRiskRewardRatio` is published as a bare declaration by both tools, its real bounds being runtime-tunable and inexpressible in JSON Schema.\n\n- **The stop-loss ceiling changed unit** (30.0.0). `maxStopLossPct` (a percent of entry) becomes `maxStopLossAtrMultiple` (a multiple of ATR), and the accepted range narrows from `(0, 100]` to `(0, 3]`. It is a rename **and** a re-denomination — mapping the old value onto the new key sends a number one to two orders of magnitude too large. The objects are `.strict()`, so a 29.x client sending `maxStopLossPct` is rejected with an unknown-key error. A new cross-field rule comes with it: `minStopLossAtrMultiple < maxStopLossAtrMultiple` is now a real comparison and is enforced.\n- **The grid-confidence and trade-conviction bars left the agent** (28.0.0, `remove-agent-rule-defaults`). `tradingConfig.gridMinConfidence` and `minTradeConviction` are removed from the shared `.strict()` config; a bar is declared on the arena slot or radar slot that fires.\n- **The agent no longer carries either entry guard** (26.0.0). `create_agent` and `update_agent` stop\n  accepting `tradingConfig.signalTimeoutMinutes` and `tradingConfig.maxEntryDeviationAtrMultiple`.\n  The schema is `.strict()`, so a client still sending either is **rejected**, not silently ignored.\n  Neither has a replacement key on any surface: unlike the strategy-owned fields below, these have no\n  owning surface at all beneath the platform. One `platform_config` value governs the entry-price\n  drift budget for every decision, read at evaluation time; one governs how long an entry may stay\n  unfilled, snapshotted onto the position at creation. **Remove both keys and send nothing in their\n  place.**\n- **The arena stopped granting trade authority** (25.0.0, `remove-arena-trade-permissions`). `upsert_deployment_policy` and `preview_deployment_resolution` stop accepting `tradingEnabled`, `minConviction` and `coinRules[]` on a slot.\n- **The agent no longer carries an exit policy** (24.0.0). `create_agent` and `update_agent` stop\n  accepting `tradingConfig.positionManagement`. The schema is `.strict()`, so a client still sending\n  it is **rejected**, not silently ignored. The twelve dials that decide how a stop MOVES after entry\n  — break-even arming, trailing engagement and giveback, time-decay tightening — are denominated in\n  the setup's own payoff shape (multiples of the trade's initial risk, fractions of take-profit\n  distance, minutes since entry) and read no balance, leverage or exposure, so they belong to the\n  thesis rather than to the account running it. **Author them on the strategy instead**, through\n  `compile_strategy_plan` / `apply_strategy_plan`: the post-state gains the same twelve keys beside\n  the trade-level trio, and the plan diff gains a `positionManagement` axis. An agent inherits the\n  policy from the strategy it binds. **The umbrella `enabled` flag is deleted rather than moved** —\n  each mechanism's toggle is now the whole truth for that mechanism, so \"trailing on, management\n  off\" is no longer expressible, a state the server's own monitor and boot recovery already\n  disagreed about.\n- **The agent-level trading mode is gone** (23.0.0). `create_agent` and `update_agent` stop\n  accepting `tradingConfig.tradingMode`. The schema is `.strict()`, so a client still sending it is\n  **rejected**, not silently ignored. Trading on/off is now scoped per deployment — a radar policy's\n  `enabled`, an arena slot's `tradingEnabled`, a per-coin `tradeEnabled` — and approval-before-\n  execution is the conversational surface's own contract, so the account-level switch that sat above\n  both is removed rather than renamed. To stop an agent trading, turn its deployment off (or halt\n  the agent); to make one trade autonomously, arm a radar coin or switch trading on for an arena\n  slot. **A newly authored arena slot now starts with trading off.**\n- **Trailing gained a required threshold** (22.0.0, `add-trailing-trigger-r`). `positionManagement` gains `trailingTriggerR` as REQUIRED (`0`–`2.0`, `0.01` precision, `0` = trail from entry); the object is `.strict()` all-required, so sending `positionManagement` without it is rejected.\n- **The strategy regime timeframe became derived** (19.0.0, `remove-strategy-regime-override`). It stops being an authored axis anywhere on the contract and is served read-only.\n- **Conditions gained a required `required`** (16.0.0, `add-condition-enforcement-gate`). A condition entry omitting the boolean is REJECTED rather than defaulted.\n- **The trade-level policy moved to the strategy** (15.0.0, `move-trade-level-policy-to-strategy`). It leaves the agent authoring surface and joins the setup gates on the strategy.\n- **The agent's ATR timeframe axis is gone** (14.0.0, `remove-agent-atr-timeframe-axis`). ATR is sampled on the strategy timeframe, always.\n- **Radar's wall-clock condition changed shape** (12.0.0, `unify-deployment-hours-as-sets`).\n\n### Moved or reshaped output — a field you read is somewhere else\n\n- **The signal scorecard stops serializing its entries three times over** (36.0.0, `mcp-signal-log-contents`). `get_signal_log` and `get_public_agent_signal_log_detail` drop `scorecard.triggeredSignals`, `scorecard.primarySignals` and `scorecard.supportingSignals`. Every one held the **same entry objects** `allEvaluatedSignals` already carried, so each is one filter over flags every entry still publishes:\n\n  | Removed | Read instead |\n  |---|---|\n  | `triggeredSignals` | `allEvaluatedSignals.filter(s => s.triggered)` |\n  | `primarySignals` | `allEvaluatedSignals.filter(s => s.triggered && s.isPrimary)` |\n  | `supportingSignals` | `allEvaluatedSignals.filter(s => s.triggered && !s.isPrimary)` |\n\n  **Keep the `triggered` half of those last two predicates.** Both collections were triggered-only by construction, so filtering on `isPrimary` alone surfaces signals that never fired — a silent widening, not an error. No field is removed from an entry: the key set on an `allEvaluatedSignals` member is unchanged, every evaluated signal is still returned whether or not it triggered, and `details` prose and `indicatorValues` are intact. There is no opt-in to get the three back and no default filter. Breaking only if you read one of the three names; on an 84-signal / 16-triggered log the duplication was 10,682 bytes, 28% of the scorecard, carrying no information.\n\n- **The fleet roll-up on `list_deployment_policies` drops `unconfigured` and gains `paused`** (35.0.0, `add-arena-deployment-pause`, `fix-arena-deployment-undeploy`). `unconfigured` counted a deployment holding zero slots — a state that can no longer exist, because a stored policy now carries at least one slot and the withdrawn state is the **absence** of a policy rather than an empty one. The bucket was constant `0` at the moment of removal, so no number you read was wrong; a client reading the key still breaks on it, which is why this is a break and not a cleanup. `paused` is the owner's own switch, counted separately from `retired` — an administrator disabling the arena — because conflating them tells an owner to wait for something that will not happen. Every policy lands in exactly one bucket, so the buckets sum to `arenas`: worth asserting if you reconcile these counts.\n\n- **`AdminApprovedModelDTO.isActive` became `lifecycle`** (32.0.0, `remove-agent-presets`) — `AVAILABLE` / `DEPRECATED` / `RETIRED`. The boolean conflated \"offered in the picker\" with \"bound agents may run\", so there was no way to stop offering a model without hard-blocking every agent already on it. A client switching on `isActive` must switch on `lifecycle`, and **must not treat `DEPRECATED` as blocked**: that is the state which keeps bound agents running. The agent read DTO drops `brainPreset` in the same move — the marker recorded which named bundle an owner clicked, never a value the runtime read, and the model and soul it stamped are unchanged on every agent.\n\n- **`approvedPlan` is one object, not an operation union** (31.0.0, resolving #4495). It was published as a discriminated union whose discriminator does not survive JSON-Schema conversion, so what actually shipped was a bare `anyOf`: validating a failing compile response gave you every arm's errors with empty instance paths, and the top one typically complained that an UPDATE was missing `creationSeed` — a CREATE-only key — while the field that really failed went unnamed. It is now one object with a literal `operation` discriminator, and `creationSeed`, `expectedRevision` and `bindingImpact` are **required and nullable on every operation**: a CREATE plan carries a seed and `expectedRevision: null`, an UPDATE/RESTORE plan the reverse. **If you narrowed on the union arms, read `operation` instead and expect explicit `null`s rather than absent keys.** If you read those fields without narrowing, nothing changes except that they may now be null.\n\n- **`get_radar_activity` gained an `EDGE_REARM` variant** (29.0.0, `add-radar-anchor-rearm`), and every member gained five `rearm*` margin keys plus a `rearmReasons` discriminator. Breaking on both counts if you parse the union strictly.\n- **`get_trading_config_catalog` drops four trade-default seeds** (27.0.0) — `defaultMinAtrPct`,\n  `defaultMinStopLossPct`, `defaultMaxStopLossPct` and `defaultMinRiskRewardRatio` leave `defaults`.\n  Each seeded a per-agent field that is now **strategy-owned**: the shared `.strict()`\n  `TradingConfigSchema` already rejected all four as unknown keys, so the catalog was advertising\n  defaults no request could apply. A client that wants the stop-loss band, the ATR floor or the\n  risk-reward minimum reads them from the bound **strategy**, which owns and materializes them.\n  Nothing is added in their place. `defaultMaxEntryDeviationAtrMultiple` and `defaultTtlMinutes` are\n  untouched — those are not seeds but the platform values that govern.\n- **`get_radar_activity` gained `blockReasonCode` on every member** (21.0.0, `fix-block-reason-attribution`) — non-null only on `BLOCKED_BEFORE_EVALUATION` rows written after 2026-08-17.\n- **`signal_pipeline`'s decision became a discriminated union** (20.0.0, `add-decision-skip-attribution`). `ENTER`/`GATED` carry the seven level fields as REQUIRED; `SKIP` omits them entirely rather than sending nulls, so reading `entryPrice` without narrowing the verdict finds the key absent.\n- **`get_radar_activity` gained an `EVALUATION_OUTCOME` member** (18.0.0, `add-radar-fire-outcome-journal`), and every existing member gained `evaluationOutcome` + `screenReason`.\n- **Scalar families became placeable modules** (13.0.0, `add-scalar-family-modules`); six opt-in scalar headers moved off the shared `session-field` section key.\n- **Both entry guards leave every agent-returning shape** (26.0.0) — the read side of the input\n  removal above. `AgentTradingConfigDTO` drops `signalTimeoutMinutes` and\n  `maxEntryDeviationAtrMultiple` on every tool that serves an agent, and the explorer trading spec\n  and the agent-review payload drop them too. `get_trading_config_catalog` drops\n  `defaultSignalTimeoutMinutes` from its defaults and the\n  `minimumMaxEntryDeviationAtrMultiple` / `maximumMaxEntryDeviationAtrMultiple` pair from its bounds —\n  a bound pair that constrained a per-agent field which no longer exists.\n  `defaultMaxEntryDeviationAtrMultiple` and `defaultTtlMinutes` **stay**, and are now the values that\n  actually govern rather than seeds a new agent copies. A client reading these objects strictly must\n  drop the removed keys.\n- **`positionManagement` leaves every agent-returning shape** (24.0.0) — the read side of the input\n  removal above. `AgentTradingConfigDTO` drops the nested block on every tool that serves an agent,\n  and the explorer trading spec drops it too. A client reading these objects strictly must drop the\n  key; one that wants the policy reads it from the bound strategy.\n- **`get_trading_config_catalog` drops `positionManagementPresets`** (24.0.0) — the pistol ladder\n  (COLT / WEBLEY / BERETTA / LUGER / WALTHER) is **retired, not renamed**. Once the values live on\n  the strategy, the strategy IS the named bundle, with its own name, description and revision\n  history; a parallel vocabulary of anonymous bundles beside it would be a second name for the same\n  thing. There is no replacement enum to migrate to — list strategies instead. The catalog's\n  `defaultPositionMgmt*` trading defaults go with it, for the same reason: nothing seeds an agent's\n  exit policy any more.\n- **`tradingMode` leaves every agent-returning shape** (23.0.0) — the read side of the input\n  removal above. `AgentTradingConfigDTO` drops it on every tool that serves an agent, and so do the\n  agents-hub permission envelope, the explorer entry, and both public-profile shapes. A client\n  reading these objects strictly must drop the key.\n- **`DeploymentResolvedResolutionDTO` drops `agentTradingMode`** (23.0.0) — the field 10.0.0 added,\n  now unnecessary: with no account layer to overlay, the resolved `tradingEnabled` is the whole\n  answer about whether the previewed deployment trades.\n\n### Widened enum — new members your own copy rejects\n\n- **`DeploymentResolutionStatus` gains `PAUSED`** (35.0.0, `add-arena-deployment-pause`), returned by `get_deployment_policy`, `list_deployment_policies` and `preview_deployment_resolution`. A client switching exhaustively on the status must add the branch. Two properties are not obvious from the name: it is answered **before any s","readmeFilename":"README.md"}