{"_id":"@trainheroic-unofficial/coach-mcp","_rev":"49-9a350470de227fdaf5a4d89d145af04b","name":"@trainheroic-unofficial/coach-mcp","dist-tags":{"latest":"4.0.0"},"versions":{"0.1.0":{"name":"@trainheroic-unofficial/coach-mcp","version":"0.1.0","license":"MIT","_id":"@trainheroic-unofficial/coach-mcp@0.1.0","maintainers":[{"name":"alanripple","email":"alan.mit@gmail.com"}],"homepage":"https://github.com/alandotcom/trainheroic-skill#readme","bugs":{"url":"https://github.com/alandotcom/trainheroic-skill/issues"},"bin":{"trainheroic-coach-mcp":"dist/server.mjs"},"dist":{"shasum":"edac340ec04780424f671bfc478e2197d6348529","tarball":"https://registry.npmjs.org/@trainheroic-unofficial/coach-mcp/-/coach-mcp-0.1.0.tgz","fileCount":4,"integrity":"sha512-u8Ew7QHRY8O6KrB68KYpYNCwQ3yS1MlzdV87vPdJNYNl/XyE/NQbjuepkqQjpkQgLvDUMdiD77Yb+EB+A/GJeQ==","signatures":[{"sig":"MEYCIQCHgawhR1q8y2Qls/AbMth583WD3rALehrN2lplEQeQbQIhALvO70YaDh5EBui/Hm4jWLsVJIOApfDgm7G1c50pZHYi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":58302},"type":"module","_from":"file:trainheroic-unofficial-coach-mcp-0.1.0.tgz","scripts":{"test":"vitest run --passWithNoTests","build":"tsdown","start":"tsx src/server.ts","inspect":"npx @modelcontextprotocol/inspector -e TRAINHEROIC_EMAIL=\"$TRAINHEROIC_EMAIL\" -e TRAINHEROIC_PASSWORD=\"$TRAINHEROIC_PASSWORD\" tsx src/server.ts","mcpb:sign":"mcpb sign --self-signed ./dist/trainheroic-coach-mcp.mcpb","typecheck":"tsc --noEmit","build:mcpb":"tsdown --config tsdown.mcpb.config.ts && mcpb pack ./mcpb ./dist/trainheroic-coach-mcp.mcpb","mcpb:validate":"mcpb validate ./mcpb/manifest.json"},"_npmUser":{"name":"alanripple","email":"alan.mit@gmail.com"},"_resolved":"/private/var/folders/mr/qzjs54qd07l0zr2c3jqrdqhc0000gn/T/835f0039da6a40e2d90004ece99e3351/trainheroic-unofficial-coach-mcp-0.1.0.tgz","_integrity":"sha512-u8Ew7QHRY8O6KrB68KYpYNCwQ3yS1MlzdV87vPdJNYNl/XyE/NQbjuepkqQjpkQgLvDUMdiD77Yb+EB+A/GJeQ==","repository":{"url":"git+https://github.com/alandotcom/trainheroic-skill.git","type":"git","directory":"packages/coach-mcp"},"_npmVersion":"11.9.0","description":"Local single-user MCP server for a TrainHeroic coach. No database, no Cloudflare deps.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0","@trainheroic-unofficial/js":"0.1.0","@trainheroic-unofficial/core":"0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsdown":"^0.22.3","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.0","@anthropic-ai/mcpb":"^2.1.2"},"_npmOperationalInternal":{"tmp":"tmp/coach-mcp_0.1.0_1781976885198_0.76532926267765","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@trainheroic-unofficial/coach-mcp","version":"0.2.0","license":"MIT","_id":"@trainheroic-unofficial/coach-mcp@0.2.0","maintainers":[{"name":"alanripple","email":"alan.mit@gmail.com"}],"homepage":"https://github.com/alandotcom/trainheroic-unofficial#readme","bugs":{"url":"https://github.com/alandotcom/trainheroic-unofficial/issues"},"bin":{"trainheroic-coach-mcp":"dist/server.mjs"},"dist":{"shasum":"2fd3ff2c6a47ac0a64ebe4ad1c1299d26de9e8af","tarball":"https://registry.npmjs.org/@trainheroic-unofficial/coach-mcp/-/coach-mcp-0.2.0.tgz","fileCount":4,"integrity":"sha512-k3REVsUevFUKEfN7MlYfp8B/2D/oh6UZi+FO4KnMnasM0mMgDGxzHOQtkm3frQbkkuR0axcYmL8LnXM01sA9Ww==","signatures":[{"sig":"MEUCIQDKJv/z0yPjhEZhbCoBklwdtTRFPoczrpgcbQIXtZ1nIgIgAfUmdLT3/345ePea4Edv67QsPtw8ipfbdhW4+vSSKyU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":57341},"type":"module","_from":"file:trainheroic-unofficial-coach-mcp-0.2.0.tgz","scripts":{"test":"vitest run --passWithNoTests","build":"tsdown","start":"tsx src/server.ts","inspect":"npx @modelcontextprotocol/inspector -e TRAINHEROIC_EMAIL=\"$TRAINHEROIC_EMAIL\" -e TRAINHEROIC_PASSWORD=\"$TRAINHEROIC_PASSWORD\" tsx src/server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alanripple","email":"alan.mit@gmail.com"},"_resolved":"/private/var/folders/mr/qzjs54qd07l0zr2c3jqrdqhc0000gn/T/5b17b6996e6e261002b810c2e1251a74/trainheroic-unofficial-coach-mcp-0.2.0.tgz","_integrity":"sha512-k3REVsUevFUKEfN7MlYfp8B/2D/oh6UZi+FO4KnMnasM0mMgDGxzHOQtkm3frQbkkuR0axcYmL8LnXM01sA9Ww==","repository":{"url":"git+https://github.com/alandotcom/trainheroic-unofficial.git","type":"git","directory":"packages/coach-mcp"},"_npmVersion":"11.9.0","description":"Local single-user MCP server for a TrainHeroic coach. No database, no Cloudflare deps.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0","@trainheroic-unofficial/js":"0.2.0","@trainheroic-unofficial/core":"0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsdown":"^0.22.3","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.0"},"_npmOperationalInternal":{"tmp":"tmp/coach-mcp_0.2.0_1781980544911_0.7265401884480429","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@trainheroic-unofficial/coach-mcp","version":"0.3.0","license":"MIT","_id":"@trainheroic-unofficial/coach-mcp@0.3.0","maintainers":[{"name":"alanripple","email":"alan.mit@gmail.com"}],"homepage":"https://github.com/alandotcom/trainheroic-unofficial#readme","bugs":{"url":"https://github.com/alandotcom/trainheroic-unofficial/issues"},"bin":{"trainheroic-coach-mcp":"dist/server.mjs"},"dist":{"shasum":"ddf470ec86084a9676e8145fdad55611dfc7de4d","tarball":"https://registry.npmjs.org/@trainheroic-unofficial/coach-mcp/-/coach-mcp-0.3.0.tgz","fileCount":4,"integrity":"sha512-g2v+zcMQdzX/5nDiByP3F/AyuCImnGVHB0m3Y/Wz5IOe7mSDQBM7mo/ZwOBFhN+M6O4PfVtJyfmAcZ0WXWa0Sg==","signatures":[{"sig":"MEQCIAsFr3ReR7S6fXdXOK+ydfuF9Y4D6nSPiamfKhL8KETmAiAMtfn/OwO1vanGVK4tpMRwjg28oaeOpKG3z2COVXWMSQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":71196},"type":"module","_from":"file:trainheroic-unofficial-coach-mcp-0.3.0.tgz","scripts":{"test":"vitest run --passWithNoTests","build":"tsdown","start":"tsx src/server.ts","inspect":"npx @modelcontextprotocol/inspector -e TRAINHEROIC_EMAIL=\"$TRAINHEROIC_EMAIL\" -e TRAINHEROIC_PASSWORD=\"$TRAINHEROIC_PASSWORD\" tsx src/server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alanripple","email":"alan.mit@gmail.com"},"_resolved":"/private/var/folders/mr/qzjs54qd07l0zr2c3jqrdqhc0000gn/T/378de6e09e34630fbcba9323cec21a22/trainheroic-unofficial-coach-mcp-0.3.0.tgz","_integrity":"sha512-g2v+zcMQdzX/5nDiByP3F/AyuCImnGVHB0m3Y/Wz5IOe7mSDQBM7mo/ZwOBFhN+M6O4PfVtJyfmAcZ0WXWa0Sg==","repository":{"url":"git+https://github.com/alandotcom/trainheroic-unofficial.git","type":"git","directory":"packages/coach-mcp"},"_npmVersion":"11.9.0","description":"Local single-user MCP server for a TrainHeroic coach. No database, no Cloudflare deps.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0","@trainheroic-unofficial/js":"0.3.0","@trainheroic-unofficial/core":"0.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsdown":"^0.22.3","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.0"},"_npmOperationalInternal":{"tmp":"tmp/coach-mcp_0.3.0_1781984415418_0.8555498092840412","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@trainheroic-unofficial/coach-mcp","version":"0.4.0","license":"MIT","_id":"@trainheroic-unofficial/coach-mcp@0.4.0","maintainers":[{"name":"alanripple","email":"alan.mit@gmail.com"}],"homepage":"https://github.com/alandotcom/trainheroic-unofficial#readme","bugs":{"url":"https://github.com/alandotcom/trainheroic-unofficial/issues"},"bin":{"trainheroic-coach-mcp":"dist/server.mjs"},"dist":{"shasum":"080d4ab52b97727751629d777f3fb14add0394c1","tarball":"https://registry.npmjs.org/@trainheroic-unofficial/coach-mcp/-/coach-mcp-0.4.0.tgz","fileCount":4,"integrity":"sha512-2qm+lqYOefW4UbUOA9L5Xmo4ehZ0OURKuNMAXERyxhUp9Vg3ApF45Wg6gsspp8bo+tmDBqGC1apWO6Z7BZNTkA==","signatures":[{"sig":"MEYCIQDi0CdwF6n2Z9THrZXmSy1nxMpRiSP4fb0fm4AxeOVcmQIhAP5e+zh4TAqq36UJy2XhtdR4gbJ+A0qHIGXqZ/VsNECC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":75299},"type":"module","_from":"file:trainheroic-unofficial-coach-mcp-0.4.0.tgz","scripts":{"test":"vitest run --passWithNoTests","build":"tsdown","start":"tsx src/server.ts","inspect":"npx @modelcontextprotocol/inspector -e TRAINHEROIC_EMAIL=\"$TRAINHEROIC_EMAIL\" -e TRAINHEROIC_PASSWORD=\"$TRAINHEROIC_PASSWORD\" tsx src/server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alanripple","email":"alan.mit@gmail.com"},"_resolved":"/private/var/folders/mr/qzjs54qd07l0zr2c3jqrdqhc0000gn/T/1d0aaa2418c952fa92b982c0936dbdc5/trainheroic-unofficial-coach-mcp-0.4.0.tgz","_integrity":"sha512-2qm+lqYOefW4UbUOA9L5Xmo4ehZ0OURKuNMAXERyxhUp9Vg3ApF45Wg6gsspp8bo+tmDBqGC1apWO6Z7BZNTkA==","repository":{"url":"git+https://github.com/alandotcom/trainheroic-unofficial.git","type":"git","directory":"packages/coach-mcp"},"_npmVersion":"11.9.0","description":"Local single-user MCP server for a TrainHeroic coach. No database, no Cloudflare deps.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0","@trainheroic-unofficial/js":"0.4.0","@trainheroic-unofficial/core":"0.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsdown":"^0.22.3","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.0"},"_npmOperationalInternal":{"tmp":"tmp/coach-mcp_0.4.0_1781990137025_0.2778529534759375","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@trainheroic-unofficial/coach-mcp","version":"0.4.1","license":"MIT","_id":"@trainheroic-unofficial/coach-mcp@0.4.1","maintainers":[{"name":"alanripple","email":"alan.mit@gmail.com"}],"homepage":"https://github.com/alandotcom/trainheroic-unofficial#readme","bugs":{"url":"https://github.com/alandotcom/trainheroic-unofficial/issues"},"bin":{"trainheroic-coach-mcp":"dist/server.mjs"},"dist":{"shasum":"075243ac267766781728fb124419aa5ce0ef41d2","tarball":"https://registry.npmjs.org/@trainheroic-unofficial/coach-mcp/-/coach-mcp-0.4.1.tgz","fileCount":4,"integrity":"sha512-Jl2LvXmUit4JUtWfGp9kNBAADkoEzbLH1EkhTQHqkybKjgX2uHmdeFJsqbxa6s6VpORTFnwGEDp+5q2JujHrkw==","signatures":[{"sig":"MEQCIHdSZ43Z0dvtSdn+pLv5ogujywarhCv75WsnpMFWStuaAiBOt3BrKExJmCwSH+y1TA39Hvtd35ijzirPxoT7ZOKzcQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":75299},"type":"module","_from":"file:trainheroic-unofficial-coach-mcp-0.4.1.tgz","scripts":{"test":"vitest run --passWithNoTests","build":"tsdown","start":"tsx src/server.ts","inspect":"npx @modelcontextprotocol/inspector -e TRAINHEROIC_EMAIL=\"$TRAINHEROIC_EMAIL\" -e TRAINHEROIC_PASSWORD=\"$TRAINHEROIC_PASSWORD\" tsx src/server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alanripple","email":"alan.mit@gmail.com"},"_resolved":"/private/var/folders/mr/qzjs54qd07l0zr2c3jqrdqhc0000gn/T/1ae53ad9452a8b2ea49a072302c3249a/trainheroic-unofficial-coach-mcp-0.4.1.tgz","_integrity":"sha512-Jl2LvXmUit4JUtWfGp9kNBAADkoEzbLH1EkhTQHqkybKjgX2uHmdeFJsqbxa6s6VpORTFnwGEDp+5q2JujHrkw==","repository":{"url":"git+https://github.com/alandotcom/trainheroic-unofficial.git","type":"git","directory":"packages/coach-mcp"},"_npmVersion":"11.9.0","description":"Local single-user MCP server for a TrainHeroic coach. No database, no Cloudflare deps.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0","@trainheroic-unofficial/js":"0.4.1","@trainheroic-unofficial/core":"0.4.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsdown":"^0.22.3","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.0"},"_npmOperationalInternal":{"tmp":"tmp/coach-mcp_0.4.1_1782008163348_0.3131609491486751","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@trainheroic-unofficial/coach-mcp","version":"0.4.2","license":"MIT","_id":"@trainheroic-unofficial/coach-mcp@0.4.2","maintainers":[{"name":"alanripple","email":"alan.mit@gmail.com"}],"homepage":"https://github.com/alandotcom/trainheroic-unofficial#readme","bugs":{"url":"https://github.com/alandotcom/trainheroic-unofficial/issues"},"bin":{"trainheroic-coach-mcp":"dist/server.mjs"},"dist":{"shasum":"8916e26bb9245b7a847449a4b05d162892145a2a","tarball":"https://registry.npmjs.org/@trainheroic-unofficial/coach-mcp/-/coach-mcp-0.4.2.tgz","fileCount":4,"integrity":"sha512-v0c6PoJG6DbNPtA47PfRjqAgQpIq8mzzA7usjm9XVkbpECTPI02VxTOS66VxiZgHmeq3OFDQSt0i5ivv0z2S0A==","signatures":[{"sig":"MEUCIQCMWtiC+qJUoDr74R8LTop14vCziGwlSH38ZMA/GzmXQwIgDaZMJ8mDoGx7o5ruyQy6kpXdEIzC7ZvXmV+1dCBqFNY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76581},"type":"module","_from":"file:trainheroic-unofficial-coach-mcp-0.4.2.tgz","scripts":{"test":"vitest run --passWithNoTests","build":"tsdown","start":"tsx src/server.ts","inspect":"npx @modelcontextprotocol/inspector -e TRAINHEROIC_EMAIL=\"$TRAINHEROIC_EMAIL\" -e TRAINHEROIC_PASSWORD=\"$TRAINHEROIC_PASSWORD\" tsx src/server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alanripple","email":"alan.mit@gmail.com"},"_resolved":"/private/var/folders/mr/qzjs54qd07l0zr2c3jqrdqhc0000gn/T/0757c20890a983e469471298579f1c27/trainheroic-unofficial-coach-mcp-0.4.2.tgz","_integrity":"sha512-v0c6PoJG6DbNPtA47PfRjqAgQpIq8mzzA7usjm9XVkbpECTPI02VxTOS66VxiZgHmeq3OFDQSt0i5ivv0z2S0A==","repository":{"url":"git+https://github.com/alandotcom/trainheroic-unofficial.git","type":"git","directory":"packages/coach-mcp"},"_npmVersion":"11.9.0","description":"Local single-user MCP server for a TrainHeroic coach. No database, no Cloudflare deps.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0","@trainheroic-unofficial/js":"0.4.2","@trainheroic-unofficial/core":"0.4.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsdown":"^0.22.3","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.0"},"_npmOperationalInternal":{"tmp":"tmp/coach-mcp_0.4.2_1782009012078_0.2779962949967052","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@trainheroic-unofficial/coach-mcp","version":"0.5.0","license":"MIT","_id":"@trainheroic-unofficial/coach-mcp@0.5.0","maintainers":[{"name":"alanripple","email":"alan.mit@gmail.com"}],"homepage":"https://github.com/alandotcom/trainheroic-unofficial#readme","bugs":{"url":"https://github.com/alandotcom/trainheroic-unofficial/issues"},"bin":{"trainheroic-coach-mcp":"dist/server.mjs"},"dist":{"shasum":"ec41cac88a577676c987d9738f88bfba5e91c8fb","tarball":"https://registry.npmjs.org/@trainheroic-unofficial/coach-mcp/-/coach-mcp-0.5.0.tgz","fileCount":4,"integrity":"sha512-YcuilPAkpxRZPIk8kvSDGuHGyzaQpL1H8yGffHdXHiy/IlcoLIwuDKGU6mMkKr/PL32rBqG2EubIjOaGcwk7Qg==","signatures":[{"sig":"MEQCICYbN8JBlJIs/7Z399fXnH5zXuWWivBAQWf7Q4ffUEMTAiAZDtijWQjN6WvvfG+O/GmgnNT8Asjn5slv2QcBsGyKWA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79096},"type":"module","_from":"file:trainheroic-unofficial-coach-mcp-0.5.0.tgz","scripts":{"test":"vitest run --passWithNoTests","build":"tsdown","start":"tsx src/server.ts","inspect":"npx @modelcontextprotocol/inspector -e TRAINHEROIC_EMAIL=\"$TRAINHEROIC_EMAIL\" -e TRAINHEROIC_PASSWORD=\"$TRAINHEROIC_PASSWORD\" tsx src/server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alanripple","email":"alan.mit@gmail.com"},"_resolved":"/private/var/folders/mr/qzjs54qd07l0zr2c3jqrdqhc0000gn/T/2c621857c896c4c4eef8fcf13d275a3e/trainheroic-unofficial-coach-mcp-0.5.0.tgz","_integrity":"sha512-YcuilPAkpxRZPIk8kvSDGuHGyzaQpL1H8yGffHdXHiy/IlcoLIwuDKGU6mMkKr/PL32rBqG2EubIjOaGcwk7Qg==","repository":{"url":"git+https://github.com/alandotcom/trainheroic-unofficial.git","type":"git","directory":"packages/coach-mcp"},"_npmVersion":"11.9.0","description":"Local single-user MCP server for a TrainHeroic coach. No database, no Cloudflare deps.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0","@trainheroic-unofficial/js":"0.5.0","@trainheroic-unofficial/core":"0.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsdown":"^0.22.3","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.0"},"_npmOperationalInternal":{"tmp":"tmp/coach-mcp_0.5.0_1782012589353_0.5981459407726153","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@trainheroic-unofficial/coach-mcp","version":"0.6.0","license":"MIT","_id":"@trainheroic-unofficial/coach-mcp@0.6.0","maintainers":[{"name":"alanripple","email":"alan.mit@gmail.com"}],"homepage":"https://github.com/alandotcom/trainheroic-unofficial#readme","bugs":{"url":"https://github.com/alandotcom/trainheroic-unofficial/issues"},"bin":{"trainheroic-coach-mcp":"dist/server.mjs"},"dist":{"shasum":"0035bf55a86fe552f9f824cdcc15034a0a6763a7","tarball":"https://registry.npmjs.org/@trainheroic-unofficial/coach-mcp/-/coach-mcp-0.6.0.tgz","fileCount":4,"integrity":"sha512-onLxDUWrazDzZuv+8uDMazYP0/Kj3hrZ4Z4CTAXaKk7Hppd0nlxl4xvT7FuMKkwg77GfDzjbskBGY05alTNMVw==","signatures":[{"sig":"MEUCIQCI38BN4Q2u7/eFCZKl+t4nigR8yNTQfqAK00VxZzmRxAIge1aYox3l/XAAxIm87HBUXLbHuyTq/zaUN8kEpeint8g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79096},"type":"module","_from":"file:trainheroic-unofficial-coach-mcp-0.6.0.tgz","scripts":{"test":"vitest run --passWithNoTests","build":"tsdown","start":"tsx src/server.ts","inspect":"npx @modelcontextprotocol/inspector -e TRAINHEROIC_EMAIL=\"$TRAINHEROIC_EMAIL\" -e TRAINHEROIC_PASSWORD=\"$TRAINHEROIC_PASSWORD\" tsx src/server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alanripple","email":"alan.mit@gmail.com"},"_resolved":"/private/var/folders/mr/qzjs54qd07l0zr2c3jqrdqhc0000gn/T/03701dd8b5beb604646f6f36b3b9e6ce/trainheroic-unofficial-coach-mcp-0.6.0.tgz","_integrity":"sha512-onLxDUWrazDzZuv+8uDMazYP0/Kj3hrZ4Z4CTAXaKk7Hppd0nlxl4xvT7FuMKkwg77GfDzjbskBGY05alTNMVw==","repository":{"url":"git+https://github.com/alandotcom/trainheroic-unofficial.git","type":"git","directory":"packages/coach-mcp"},"_npmVersion":"11.9.0","description":"Local single-user MCP server for a TrainHeroic coach. No database, no Cloudflare deps.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0","@trainheroic-unofficial/js":"0.6.0","@trainheroic-unofficial/core":"0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsdown":"^0.22.3","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.0"},"_npmOperationalInternal":{"tmp":"tmp/coach-mcp_0.6.0_1782064929051_0.6372058306505786","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@trainheroic-unofficial/coach-mcp","version":"0.6.1","license":"MIT","_id":"@trainheroic-unofficial/coach-mcp@0.6.1","maintainers":[{"name":"alanripple","email":"alan.mit@gmail.com"}],"homepage":"https://github.com/alandotcom/trainheroic-unofficial#readme","bugs":{"url":"https://github.com/alandotcom/trainheroic-unofficial/issues"},"bin":{"trainheroic-coach-mcp":"dist/server.mjs"},"dist":{"shasum":"6d5b70fe4160385dc852035286f90d9f007103ad","tarball":"https://registry.npmjs.org/@trainheroic-unofficial/coach-mcp/-/coach-mcp-0.6.1.tgz","fileCount":4,"integrity":"sha512-6FDmVtdamSQSoYAg5BDW6f2/E1jynLq8nJQFtrUMgpe9C/e/g+VLZhYr7yqRYM0X7FG4hk3pUEABB3H5cPJC6g==","signatures":[{"sig":"MEUCIEEJBCjvlTI1gVYv6oVH0rwE6VBpDYAEa2zNExpa6HWOAiEAjeVMVfb1QVB2IkDehtXE9id+CZR4XOvc6IvUNAI9h8A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84588},"type":"module","_from":"file:trainheroic-unofficial-coach-mcp-0.6.1.tgz","scripts":{"test":"vitest run --passWithNoTests","build":"tsdown","start":"tsx src/server.ts","inspect":"npx @modelcontextprotocol/inspector -e TRAINHEROIC_EMAIL=\"$TRAINHEROIC_EMAIL\" -e TRAINHEROIC_PASSWORD=\"$TRAINHEROIC_PASSWORD\" tsx src/server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"alanripple","email":"alan.mit@gmail.com"},"_resolved":"/private/var/folders/mr/qzjs54qd07l0zr2c3jqrdqhc0000gn/T/403b55d6025016a28351e067c4c8eb34/trainheroic-unofficial-coach-mcp-0.6.1.tgz","_integrity":"sha512-6FDmVtdamSQSoYAg5BDW6f2/E1jynLq8nJQFtrUMgpe9C/e/g+VLZhYr7yqRYM0X7FG4hk3pUEABB3H5cPJC6g==","repository":{"url":"git+https://github.com/alandotcom/trainheroic-unofficial.git","type":"git","directory":"packages/coach-mcp"},"_npmVersion":"11.9.0","description":"Local single-user MCP server for a TrainHeroic coach. No database, no Cloudflare deps.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0","@trainheroic-unofficial/js":"0.6.1","@trainheroic-unofficial/core":"0.6.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsdown":"^0.22.3","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.0"},"_npmOperationalInternal":{"tmp":"tmp/coach-mcp_0.6.1_1782070701595_0.7913465100306019","host":"s3://npm-registry-packages-npm-production"}},"0.6.2":{"name":"@trainheroic-unofficial/coach-mcp","version":"0.6.2","license":"MIT","_id":"@trainheroic-unofficial/coach-mcp@0.6.2","maintainers":[{"name":"alanripple","email":"alan.mit@gmail.com"}],"bin":{"trainheroic-coach-mcp":"./dist/server.mjs"},"dist":{"shasum":"dcc8f69cd1e39e38ed340d4ef69c9edff7182ce6","tarball":"https://registry.npmjs.org/@trainheroic-unofficial/coach-mcp/-/coach-mcp-0.6.2.tgz","fileCount":4,"integrity":"sha512-40cNFoRImHy3HAhIn4RZe/Lophiiv2GRLr3KGyMkya/rjO09UTqoA/B2VJfMJAgkfN49qHLxihSpdlcCgGwe5g==","signatures":[{"sig":"MEUCIQDPAkkT4cXau36tUb/JdKA47xSmuI8ulzexH4ZACZXn5gIgVf2BgxyEr3ivtbtV3+FPNjg/0YEM+qcOINjNA8w3V74=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@trainheroic-unofficial%2fcoach-mcp@0.6.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":84588},"type":"module","scripts":{"test":"vitest run --passWithNoTests","build":"tsdown","start":"tsx src/server.ts","inspect":"npx @modelcontextprotocol/inspector -e TRAINHEROIC_EMAIL=\"$TRAINHEROIC_EMAIL\" -e TRAINHEROIC_PASSWORD=\"$TRAINHEROIC_PASSWORD\" tsx src/server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:117703bc-f2fc-4bca-951a-5a582e0ad02c"}},"repository":{"url":"https://github.com/alandotcom/trainheroic-unofficial.git","type":"git","directory":"packages/coach-mcp"},"description":"Local single-user MCP server for a TrainHeroic coach. No database, no Cloudflare deps.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0","@trainheroic-unofficial/js":"0.6.2","@trainheroic-unofficial/core":"0.6.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsdown":"^0.22.3","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.0"},"_npmOperationalInternal":{"tmp":"tmp/coach-mcp_0.6.2_1782072583620_0.9875664827345301","host":"s3://npm-registry-packages-npm-production"}},"0.6.3":{"name":"@trainheroic-unofficial/coach-mcp","version":"0.6.3","license":"MIT","_id":"@trainheroic-unofficial/coach-mcp@0.6.3","maintainers":[{"name":"alanripple","email":"alan.mit@gmail.com"}],"bin":{"trainheroic-coach-mcp":"./dist/server.mjs"},"dist":{"shasum":"ff525d3292bab3cc33b99cc45916a4a4421184cb","tarball":"https://registry.npmjs.org/@trainheroic-unofficial/coach-mcp/-/coach-mcp-0.6.3.tgz","fileCount":4,"integrity":"sha512-YoBkCMw1ogd9C6rgv6ZS/aBdZdzRnwg5KML02LeusEIrRZHheXkdH+vZRmfH54mDVreuYiVYsK/hyW4SBQwVxg==","signatures":[{"sig":"MEQCIFR4g7iXC606pIxbkeTvajcGzzi3AVNWuYTHFwQqs1/AAiB5TtXH6VA2EsO7yKrIubKgpvVI/vrDfALEmApO5yGQFg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@trainheroic-unofficial%2fcoach-mcp@0.6.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":89430},"type":"module","scripts":{"test":"vitest run --passWithNoTests","build":"tsdown","start":"tsx src/server.ts","inspect":"npx @modelcontextprotocol/inspector -e TRAINHEROIC_EMAIL=\"$TRAINHEROIC_EMAIL\" -e TRAINHEROIC_PASSWORD=\"$TRAINHEROIC_PASSWORD\" tsx src/server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:117703bc-f2fc-4bca-951a-5a582e0ad02c"}},"repository":{"url":"https://github.com/alandotcom/trainheroic-unofficial.git","type":"git","directory":"packages/coach-mcp"},"description":"Local single-user MCP server for a TrainHeroic coach. No database, no Cloudflare deps.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0","@trainheroic-unofficial/js":"0.6.3","@trainheroic-unofficial/core":"0.6.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsdown":"^0.22.3","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.0"},"_npmOperationalInternal":{"tmp":"tmp/coach-mcp_0.6.3_1782078637662_0.8797565586175686","host":"s3://npm-registry-packages-npm-production"}},"0.6.4":{"name":"@trainheroic-unofficial/coach-mcp","version":"0.6.4","license":"MIT","_id":"@trainheroic-unofficial/coach-mcp@0.6.4","maintainers":[{"name":"alanripple","email":"alan.mit@gmail.com"}],"bin":{"trainheroic-coach-mcp":"./dist/server.mjs"},"dist":{"shasum":"88d9957023d07c927f02c3b461b3608621df078b","tarball":"https://registry.npmjs.org/@trainheroic-unofficial/coach-mcp/-/coach-mcp-0.6.4.tgz","fileCount":4,"integrity":"sha512-1J2UyPeLiVOLBmt/Ux9l1ILImMji+CEgj0RfXPEAHD63Aed2kkF77fIN0KB4C2HFNyyI/+vfxTQ7pS7YqJG+FQ==","signatures":[{"sig":"MEUCIBWtNt3XPJE3zCnArNHJQpVaCoJvz7BXBr8jhPA6LovbAiEAiXW9mEgCZZ9weTid/X5vlEYgDGYq1F8l+94HUI2PM3o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@trainheroic-unofficial%2fcoach-mcp@0.6.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":93233},"type":"module","scripts":{"test":"vitest run --passWithNoTests","build":"tsdown","start":"tsx src/server.ts","inspect":"npx @modelcontextprotocol/inspector -e TRAINHEROIC_EMAIL=\"$TRAINHEROIC_EMAIL\" -e TRAINHEROIC_PASSWORD=\"$TRAINHEROIC_PASSWORD\" tsx src/server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:117703bc-f2fc-4bca-951a-5a582e0ad02c"}},"repository":{"url":"https://github.com/alandotcom/trainheroic-unofficial.git","type":"git","directory":"packages/coach-mcp"},"description":"Local single-user MCP server for a TrainHeroic coach. No database, no Cloudflare deps.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0","@trainheroic-unofficial/js":"0.6.4","@trainheroic-unofficial/core":"0.6.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsdown":"^0.22.3","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.0"},"_npmOperationalInternal":{"tmp":"tmp/coach-mcp_0.6.4_1782079500507_0.4954521667526137","host":"s3://npm-registry-packages-npm-production"}},"0.6.5":{"name":"@trainheroic-unofficial/coach-mcp","version":"0.6.5","license":"MIT","_id":"@trainheroic-unofficial/coach-mcp@0.6.5","maintainers":[{"name":"alanripple","email":"alan.mit@gmail.com"}],"bin":{"trainheroic-coach-mcp":"./dist/server.mjs"},"dist":{"shasum":"4020fb902949a5b8c3744fa6e06f2a0c93d0e724","tarball":"https://registry.npmjs.org/@trainheroic-unofficial/coach-mcp/-/coach-mcp-0.6.5.tgz","fileCount":4,"integrity":"sha512-dpb+mjEJLiw8pP89fvCiKbUzElFOePAfJb80DLMG53E0127kCSZgTWsiessKlpUcJSPVYv9WSOE0XWD4NhToeg==","signatures":[{"sig":"MEYCIQCB2Lt2/+gVzX1PxS0KlnvgJ6DuPMC40bXKYsN8oR0e3AIhAM0sa915SE3bHahoM8rY5s6CMr6CYyjsbRMvBt39Ekj4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@trainheroic-unofficial%2fcoach-mcp@0.6.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":115764},"type":"module","scripts":{"test":"vitest run --passWithNoTests","build":"tsdown","start":"tsx src/server.ts","inspect":"npx @modelcontextprotocol/inspector -e TRAINHEROIC_EMAIL=\"$TRAINHEROIC_EMAIL\" -e TRAINHEROIC_PASSWORD=\"$TRAINHEROIC_PASSWORD\" tsx src/server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:117703bc-f2fc-4bca-951a-5a582e0ad02c"}},"repository":{"url":"https://github.com/alandotcom/trainheroic-unofficial.git","type":"git","directory":"packages/coach-mcp"},"description":"Local single-user MCP server for a TrainHeroic coach. No database, no Cloudflare deps.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0","@trainheroic-unofficial/js":"0.6.5","@trainheroic-unofficial/core":"0.6.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsdown":"^0.22.3","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.0"},"_npmOperationalInternal":{"tmp":"tmp/coach-mcp_0.6.5_1782099704489_0.24127177180428938","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@trainheroic-unofficial/coach-mcp","version":"1.0.0","license":"MIT","_id":"@trainheroic-unofficial/coach-mcp@1.0.0","maintainers":[{"name":"alanripple","email":"alan.mit@gmail.com"}],"bin":{"trainheroic-coach-mcp":"./dist/server.mjs"},"dist":{"shasum":"1a55d8312f0dda82a92696057847456002a4f39c","tarball":"https://registry.npmjs.org/@trainheroic-unofficial/coach-mcp/-/coach-mcp-1.0.0.tgz","fileCount":4,"integrity":"sha512-LW/jEIqOOxxqhSyu8kyX0mulVuBLd7evqoi4l4zcojYbMIbRzfKbot4hPkYduvwOM2742HKufSfTx2JZdlKXCA==","signatures":[{"sig":"MEQCIGzrl95ay4p6te+KQr4TWaWJdZrFWNt8+KHJagrCxz7AAiBqqEkDiO+j2hMUC5JxhCnXNC96alW+O8EYvo+Il9Io5Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@trainheroic-unofficial%2fcoach-mcp@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":115764},"type":"module","scripts":{"test":"vitest run --passWithNoTests","build":"tsdown","start":"tsx src/server.ts","inspect":"npx @modelcontextprotocol/inspector -e TRAINHEROIC_EMAIL=\"$TRAINHEROIC_EMAIL\" -e TRAINHEROIC_PASSWORD=\"$TRAINHEROIC_PASSWORD\" tsx src/server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:117703bc-f2fc-4bca-951a-5a582e0ad02c"}},"repository":{"url":"https://github.com/alandotcom/trainheroic-unofficial.git","type":"git","directory":"packages/coach-mcp"},"description":"Local single-user MCP server for a TrainHeroic coach. No database, no Cloudflare deps.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0","@trainheroic-unofficial/js":"1.0.0","@trainheroic-unofficial/core":"1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsdown":"^0.22.3","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.0"},"_npmOperationalInternal":{"tmp":"tmp/coach-mcp_1.0.0_1782103842613_0.862826447543589","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@trainheroic-unofficial/coach-mcp","version":"1.1.0","license":"MIT","_id":"@trainheroic-unofficial/coach-mcp@1.1.0","maintainers":[{"name":"alanripple","email":"alan.mit@gmail.com"}],"bin":{"trainheroic-coach-mcp":"./dist/server.mjs"},"dist":{"shasum":"6db4a3bbc96d37e2e9c10750fb5e50fb8ca0b208","tarball":"https://registry.npmjs.org/@trainheroic-unofficial/coach-mcp/-/coach-mcp-1.1.0.tgz","fileCount":4,"integrity":"sha512-MMWIg6e0ackm1JjizVXHbrzNwT/WZo4wiiuo9fQG5nuMMxdJnhnd0isWzELSwOB0T/4jYzqlIbYpLfAO26aAiw==","signatures":[{"sig":"MEUCIQCW4XYDhJCLQ8t7uEmxyy8Ybk3pKflVHiZgqU8D0giU8wIgHOps9OpdYQq26PzTPSsviQ9Fud6wunXhWo3CfbJQyB0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@trainheroic-unofficial%2fcoach-mcp@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":129147},"type":"module","scripts":{"test":"vitest run --passWithNoTests","build":"tsdown","start":"tsx src/server.ts","inspect":"npx @modelcontextprotocol/inspector -e TRAINHEROIC_EMAIL=\"$TRAINHEROIC_EMAIL\" -e TRAINHEROIC_PASSWORD=\"$TRAINHEROIC_PASSWORD\" tsx src/server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:117703bc-f2fc-4bca-951a-5a582e0ad02c"}},"repository":{"url":"https://github.com/alandotcom/trainheroic-unofficial.git","type":"git","directory":"packages/coach-mcp"},"description":"Local single-user MCP server for a TrainHeroic coach. No database, no Cloudflare deps.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0","@trainheroic-unofficial/js":"1.1.0","@trainheroic-unofficial/core":"1.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsdown":"^0.22.3","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.0"},"_npmOperationalInternal":{"tmp":"tmp/coach-mcp_1.1.0_1782105134456_0.48826750948919595","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@trainheroic-unofficial/coach-mcp","version":"1.1.1","license":"MIT","_id":"@trainheroic-unofficial/coach-mcp@1.1.1","maintainers":[{"name":"alanripple","email":"alan.mit@gmail.com"}],"bin":{"trainheroic-coach-mcp":"./dist/server.mjs"},"dist":{"shasum":"601199b7d627c625165e66756fe080ac435a0940","tarball":"https://registry.npmjs.org/@trainheroic-unofficial/coach-mcp/-/coach-mcp-1.1.1.tgz","fileCount":4,"integrity":"sha512-Ol6I58JseDLOsN27dOVR8nj6HLGDiUtj29CowWktGH8BRVs8fWrL6STsQUpIjS7omM65Ct5Kj2MNuq2W5O2fAg==","signatures":[{"sig":"MEYCIQDHqF/gPYW/QtZM8iew7YdpRepTPssza00uw6HTsj+LvgIhAICyRqEGbAi3m8/Eca8PFnxn490udG6k6/ZKes6X5Kau","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@trainheroic-unofficial%2fcoach-mcp@1.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":129119},"type":"module","scripts":{"test":"vitest run --passWithNoTests","build":"tsdown","start":"tsx src/server.ts","inspect":"npx @modelcontextprotocol/inspector -e TRAINHEROIC_EMAIL=\"$TRAINHEROIC_EMAIL\" -e TRAINHEROIC_PASSWORD=\"$TRAINHEROIC_PASSWORD\" tsx src/server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:117703bc-f2fc-4bca-951a-5a582e0ad02c"}},"repository":{"url":"https://github.com/alandotcom/trainheroic-unofficial.git","type":"git","directory":"packages/coach-mcp"},"description":"Local single-user MCP server for a TrainHeroic coach. No database, no Cloudflare deps.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0","@trainheroic-unofficial/js":"1.1.1","@trainheroic-unofficial/core":"1.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsdown":"^0.22.3","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.0"},"_npmOperationalInternal":{"tmp":"tmp/coach-mcp_1.1.1_1782148392891_0.2527192179262756","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@trainheroic-unofficial/coach-mcp","version":"1.2.0","license":"MIT","_id":"@trainheroic-unofficial/coach-mcp@1.2.0","maintainers":[{"name":"alanripple","email":"alan.mit@gmail.com"}],"bin":{"trainheroic-coach-mcp":"./dist/server.mjs"},"dist":{"shasum":"fa55873ed9a4d5e6ae59cb08fad0ffddffeb94fb","tarball":"https://registry.npmjs.org/@trainheroic-unofficial/coach-mcp/-/coach-mcp-1.2.0.tgz","fileCount":4,"integrity":"sha512-VZNdZW//xBRnQybwEkPykl3ubNcpqLhfq9NOIdpkT87Y1QJ4cYukTw48rDk+Jz9WWQ+JtVLO03Bfc3aogLgMFQ==","signatures":[{"sig":"MEUCIHEkB18du1/eGHp5Bxy0WyHfxigbnik1ftFLkxQ7yZ7dAiEAtIl1g+XGAb+9CS9Ick09f1gMRuBr3jpr0F7pbacPZzA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@trainheroic-unofficial%2fcoach-mcp@1.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":139745},"type":"module","scripts":{"test":"vitest run --passWithNoTests","build":"tsdown","start":"tsx src/server.ts","inspect":"npx @modelcontextprotocol/inspector -e TRAINHEROIC_EMAIL=\"$TRAINHEROIC_EMAIL\" -e TRAINHEROIC_PASSWORD=\"$TRAINHEROIC_PASSWORD\" tsx src/server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:117703bc-f2fc-4bca-951a-5a582e0ad02c"}},"repository":{"url":"https://github.com/alandotcom/trainheroic-unofficial.git","type":"git","directory":"packages/coach-mcp"},"description":"Local single-user MCP server for a TrainHeroic coach. No database, no Cloudflare deps.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0","@trainheroic-unofficial/js":"1.2.0","@trainheroic-unofficial/core":"1.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsdown":"^0.22.3","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.0"},"_npmOperationalInternal":{"tmp":"tmp/coach-mcp_1.2.0_1782163127691_0.6414698573217652","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@trainheroic-unofficial/coach-mcp","version":"1.3.0","license":"MIT","_id":"@trainheroic-unofficial/coach-mcp@1.3.0","maintainers":[{"name":"alanripple","email":"alan.mit@gmail.com"}],"bin":{"trainheroic-coach-mcp":"./dist/server.mjs"},"dist":{"shasum":"ffaa11267a69724fd9399ae36f50829d854a85ef","tarball":"https://registry.npmjs.org/@trainheroic-unofficial/coach-mcp/-/coach-mcp-1.3.0.tgz","fileCount":4,"integrity":"sha512-NyM6xEatM60LFvmgMcW0/lCIE4K+q4fXlOah1Bl3cZ/siRaf+VvXyHffjIDRKJiMVZEnR7jnKA+97RLr1QRSyg==","signatures":[{"sig":"MEUCIClhfa3n0zvCcGyPqHL+veOppdczrm5Uym20blDp6j4nAiEAwtxZaxVWAJ4Q85xpylC50MefH5mpv8Z7erXrGIDQcqU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@trainheroic-unofficial%2fcoach-mcp@1.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":151201},"type":"module","scripts":{"test":"vitest run --passWithNoTests","build":"tsdown","start":"tsx src/server.ts","inspect":"npx @modelcontextprotocol/inspector -e TRAINHEROIC_EMAIL=\"$TRAINHEROIC_EMAIL\" -e TRAINHEROIC_PASSWORD=\"$TRAINHEROIC_PASSWORD\" tsx src/server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:117703bc-f2fc-4bca-951a-5a582e0ad02c"}},"repository":{"url":"https://github.com/alandotcom/trainheroic-unofficial.git","type":"git","directory":"packages/coach-mcp"},"description":"Local single-user MCP server for a TrainHeroic coach. No database, no Cloudflare deps.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0","@trainheroic-unofficial/js":"1.3.0","@trainheroic-unofficial/core":"1.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsdown":"^0.22.3","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.0"},"_npmOperationalInternal":{"tmp":"tmp/coach-mcp_1.3.0_1782167367327_0.993980165783855","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@trainheroic-unofficial/coach-mcp","version":"1.4.0","license":"MIT","_id":"@trainheroic-unofficial/coach-mcp@1.4.0","maintainers":[{"name":"alanripple","email":"alan.mit@gmail.com"}],"bin":{"trainheroic-coach-mcp":"./dist/server.mjs"},"dist":{"shasum":"d22d352b1ea715c0eacca211c46123100c4b4d0a","tarball":"https://registry.npmjs.org/@trainheroic-unofficial/coach-mcp/-/coach-mcp-1.4.0.tgz","fileCount":4,"integrity":"sha512-VTk9G+tP9GiECtgdFguBHs4PTl4lpgEcxUNrnaRwbbnzdqDvdB1ioUeF6FqiMekCR2xa3s3GHACRlqzEXVqD0Q==","signatures":[{"sig":"MEYCIQCCTk7qn8YL5v3S+YmPdaOnEMqalPNpbSab9DDgPKSkkAIhANm90ifZRwpooNXtmuzT+PmTb71plPoEmfXUxy9zFvHu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@trainheroic-unofficial%2fcoach-mcp@1.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":157877},"type":"module","scripts":{"test":"vitest run --passWithNoTests","build":"tsdown","start":"tsx src/server.ts","inspect":"npx @modelcontextprotocol/inspector -e TRAINHEROIC_EMAIL=\"$TRAINHEROIC_EMAIL\" -e TRAINHEROIC_PASSWORD=\"$TRAINHEROIC_PASSWORD\" tsx src/server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:117703bc-f2fc-4bca-951a-5a582e0ad02c"}},"repository":{"url":"https://github.com/alandotcom/trainheroic-unofficial.git","type":"git","directory":"packages/coach-mcp"},"description":"Local single-user MCP server for a TrainHeroic coach. No database, no Cloudflare deps.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0","@trainheroic-unofficial/js":"1.4.0","@trainheroic-unofficial/core":"1.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsdown":"^0.22.3","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.0"},"_npmOperationalInternal":{"tmp":"tmp/coach-mcp_1.4.0_1782180303938_0.25634731053278226","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@trainheroic-unofficial/coach-mcp","version":"1.5.0","license":"MIT","_id":"@trainheroic-unofficial/coach-mcp@1.5.0","maintainers":[{"name":"alanripple","email":"alan.mit@gmail.com"}],"bin":{"trainheroic-coach-mcp":"./dist/server.mjs"},"dist":{"shasum":"90c3fcda607dba83acc4f1a49691fb0bb2d19291","tarball":"https://registry.npmjs.org/@trainheroic-unofficial/coach-mcp/-/coach-mcp-1.5.0.tgz","fileCount":4,"integrity":"sha512-Qn3xa1asAwVW5Bt1PyqDaft1hsOsGfdsANGgvgG9lZ3teD7l8g49LYfPkOwLpEVknaI0ZSBZonEjx5uj/XFicw==","signatures":[{"sig":"MEUCIA5Ryk75B1LWakRZ2OmN7hc+Te+sVUto/ruDkdBxaSM8AiEAsKu1XQZiM5PHnyFx9cj9ntA6Y4tgtv2kUEukNjHd3SI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@trainheroic-unofficial%2fcoach-mcp@1.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":162269},"type":"module","scripts":{"test":"vitest run --passWithNoTests","build":"tsdown","start":"tsx src/server.ts","inspect":"npx @modelcontextprotocol/inspector -e TRAINHEROIC_EMAIL=\"$TRAINHEROIC_EMAIL\" -e TRAINHEROIC_PASSWORD=\"$TRAINHEROIC_PASSWORD\" tsx src/server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:117703bc-f2fc-4bca-951a-5a582e0ad02c"}},"repository":{"url":"https://github.com/alandotcom/trainheroic-unofficial.git","type":"git","directory":"packages/coach-mcp"},"description":"Local single-user MCP server for a TrainHeroic coach. No database, no Cloudflare deps.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0","@trainheroic-unofficial/js":"1.5.0","@trainheroic-unofficial/core":"1.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsdown":"^0.22.3","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.0"},"_npmOperationalInternal":{"tmp":"tmp/coach-mcp_1.5.0_1782496476818_0.3362895216510351","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"@trainheroic-unofficial/coach-mcp","version":"1.6.0","license":"MIT","_id":"@trainheroic-unofficial/coach-mcp@1.6.0","maintainers":[{"name":"alanripple","email":"alan.mit@gmail.com"}],"bin":{"trainheroic-coach-mcp":"./dist/server.mjs"},"dist":{"shasum":"c58602647f5164204a307ddf41db6611a647ecd9","tarball":"https://registry.npmjs.org/@trainheroic-unofficial/coach-mcp/-/coach-mcp-1.6.0.tgz","fileCount":4,"integrity":"sha512-m+X1k4/rrlcQ89R1lQzRBWAZvutQRZTL/xMGjK9524uiw6l319hDQftKmjlt8yO/l59K54b/51LzuumF5ZLGNw==","signatures":[{"sig":"MEUCIQCRp3cgDkyn8OJRrrsM35zRGlnN2Sexz8Nb10g9/77GNwIgIcZ5PMjbN62udn3pkbt6ESxS+2QC8e6YNTf/tk6DX+g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@trainheroic-unofficial%2fcoach-mcp@1.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":162945},"type":"module","scripts":{"test":"vitest run --passWithNoTests","build":"tsdown","start":"tsx src/server.ts","inspect":"npx @modelcontextprotocol/inspector -e TRAINHEROIC_EMAIL=\"$TRAINHEROIC_EMAIL\" -e TRAINHEROIC_PASSWORD=\"$TRAINHEROIC_PASSWORD\" tsx src/server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:117703bc-f2fc-4bca-951a-5a582e0ad02c"}},"repository":{"url":"https://github.com/alandotcom/trainheroic-unofficial.git","type":"git","directory":"packages/coach-mcp"},"description":"Local single-user MCP server for a TrainHeroic coach. No database, no Cloudflare deps.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0","@trainheroic-unofficial/js":"1.6.0","@trainheroic-unofficial/core":"1.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsdown":"^0.22.3","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.0"},"_npmOperationalInternal":{"tmp":"tmp/coach-mcp_1.6.0_1782844946892_0.1137308139934663","host":"s3://npm-registry-packages-npm-production"}},"1.6.1":{"name":"@trainheroic-unofficial/coach-mcp","version":"1.6.1","license":"MIT","_id":"@trainheroic-unofficial/coach-mcp@1.6.1","maintainers":[{"name":"alanripple","email":"alan.mit@gmail.com"}],"bin":{"trainheroic-coach-mcp":"./dist/server.mjs"},"dist":{"shasum":"6b8ec89bfb9b97ef174cb16bfd9bde584323b683","tarball":"https://registry.npmjs.org/@trainheroic-unofficial/coach-mcp/-/coach-mcp-1.6.1.tgz","fileCount":4,"integrity":"sha512-OiVEBoWZ5aArsnLMcHnDQK9cRw61XWPApU/zwvRwpAdSZcUWgpI9ytcnmnzrt0Vrpvxk5G+Gc7gSKiE+RRLNOg==","signatures":[{"sig":"MEUCIQCMZMfw5w0qEakG/+SwWkK4i53IK6qU4Q2FunPy9KlRSgIgUXTz+6n+h4Su4B0HfSmw8pwRbEwP3+ezJH28PZ7uKBs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@trainheroic-unofficial%2fcoach-mcp@1.6.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":162945},"type":"module","scripts":{"test":"vitest run --passWithNoTests","build":"tsdown","start":"tsx src/server.ts","inspect":"npx @modelcontextprotocol/inspector -e TRAINHEROIC_EMAIL=\"$TRAINHEROIC_EMAIL\" -e TRAINHEROIC_PASSWORD=\"$TRAINHEROIC_PASSWORD\" tsx src/server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:117703bc-f2fc-4bca-951a-5a582e0ad02c"}},"repository":{"url":"https://github.com/alandotcom/trainheroic-unofficial.git","type":"git","directory":"packages/coach-mcp"},"description":"Local single-user MCP server for a TrainHeroic coach. No database, no Cloudflare deps.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0","@trainheroic-unofficial/js":"1.6.1","@trainheroic-unofficial/core":"1.6.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsdown":"^0.22.3","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.1"},"_npmOperationalInternal":{"tmp":"tmp/coach-mcp_1.6.1_1782865304500_0.19186503043678615","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"@trainheroic-unofficial/coach-mcp","version":"1.7.0","license":"MIT","_id":"@trainheroic-unofficial/coach-mcp@1.7.0","maintainers":[{"name":"alanripple","email":"alan.mit@gmail.com"}],"bin":{"trainheroic-coach-mcp":"./dist/server.mjs"},"dist":{"shasum":"03129b1867744cdf56ba902f90af5056ed7b5a49","tarball":"https://registry.npmjs.org/@trainheroic-unofficial/coach-mcp/-/coach-mcp-1.7.0.tgz","fileCount":4,"integrity":"sha512-cDiii+HplS90V6qhREOCfaH1mQ8VwLyuV8BdRmmA5F1RxReVLy3tPsYgdlc4MtpxmyWweuJnuY4vvOTvwgFcPw==","signatures":[{"sig":"MEQCIHwaICXeLbT9KFFJTP/FXqJM/n+i0B2CZ79G+Wfv2hAlAiB6uyfXJ31qIvvztl3+Gt4gAZwOPmRk1abUd68Kofnnaw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@trainheroic-unofficial%2fcoach-mcp@1.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":164118},"type":"module","scripts":{"test":"vitest run --passWithNoTests","build":"tsdown","start":"tsx src/server.ts","inspect":"npx @modelcontextprotocol/inspector -e TRAINHEROIC_EMAIL=\"$TRAINHEROIC_EMAIL\" -e TRAINHEROIC_PASSWORD=\"$TRAINHEROIC_PASSWORD\" tsx src/server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:117703bc-f2fc-4bca-951a-5a582e0ad02c"}},"repository":{"url":"https://github.com/alandotcom/trainheroic-unofficial.git","type":"git","directory":"packages/coach-mcp"},"description":"Local single-user MCP server for a TrainHeroic coach. No database, no Cloudflare deps.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0","@trainheroic-unofficial/js":"1.7.0","@trainheroic-unofficial/core":"1.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsdown":"^0.22.3","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.1"},"_npmOperationalInternal":{"tmp":"tmp/coach-mcp_1.7.0_1782945577565_0.11593181652572215","host":"s3://npm-registry-packages-npm-production"}},"1.7.1":{"name":"@trainheroic-unofficial/coach-mcp","version":"1.7.1","license":"MIT","_id":"@trainheroic-unofficial/coach-mcp@1.7.1","maintainers":[{"name":"alanripple","email":"alan.mit@gmail.com"}],"bin":{"trainheroic-coach-mcp":"./dist/server.mjs"},"dist":{"shasum":"c4c49dfa1febd27eb70e7d39a98438a3ab1a37a2","tarball":"https://registry.npmjs.org/@trainheroic-unofficial/coach-mcp/-/coach-mcp-1.7.1.tgz","fileCount":4,"integrity":"sha512-VzRMdRTT4p62rn6iCGaS+QTyRdINTUD5f00uzl8WW9zCr4ul8PWFCfn4O+kUZqq6fcJwPreZ1RdNeE4FhBR18w==","signatures":[{"sig":"MEYCIQCejBGhsglR0YNzjtkw0MY2S5a9VRUjckTEOicysYpRdgIhAOjm/ax3x31v/Gs3vLGDfViCWj0uAnQgdv2wmYhEkiUL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@trainheroic-unofficial%2fcoach-mcp@1.7.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":164550},"type":"module","scripts":{"test":"vitest run --passWithNoTests","build":"tsdown","start":"tsx src/server.ts","inspect":"npx @modelcontextprotocol/inspector -e TRAINHEROIC_EMAIL=\"$TRAINHEROIC_EMAIL\" -e TRAINHEROIC_PASSWORD=\"$TRAINHEROIC_PASSWORD\" tsx src/server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:117703bc-f2fc-4bca-951a-5a582e0ad02c"}},"repository":{"url":"https://github.com/alandotcom/trainheroic-unofficial.git","type":"git","directory":"packages/coach-mcp"},"description":"Local single-user MCP server for a TrainHeroic coach. No database, no Cloudflare deps.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0","@trainheroic-unofficial/js":"1.7.1","@trainheroic-unofficial/core":"1.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsdown":"^0.22.3","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.1"},"_npmOperationalInternal":{"tmp":"tmp/coach-mcp_1.7.1_1783028361648_0.08899995427944907","host":"s3://npm-registry-packages-npm-production"}},"1.7.2":{"name":"@trainheroic-unofficial/coach-mcp","version":"1.7.2","license":"MIT","_id":"@trainheroic-unofficial/coach-mcp@1.7.2","maintainers":[{"name":"alanripple","email":"alan.mit@gmail.com"}],"bin":{"trainheroic-coach-mcp":"./dist/server.mjs"},"dist":{"shasum":"431e72f212a8efa50b3fb1138ef816527d681c9b","tarball":"https://registry.npmjs.org/@trainheroic-unofficial/coach-mcp/-/coach-mcp-1.7.2.tgz","fileCount":4,"integrity":"sha512-ygHvSeqzW/+FrAZ1Lt2ZCtlzyqxZyMN2cKt5XreuHzPkBjkpAwf5B1fqA3vFvQEctXAVoVk/0/YtXqchkEzohA==","signatures":[{"sig":"MEUCIQDKKjTaL7LuiXDNlyKrM+Ze6EkCJxW4HjLCiGy/YvTlyAIgbipVhQKuq9LkNLKXxItKbUR3DG+SHhoz1xrY3SdkH1M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@trainheroic-unofficial%2fcoach-mcp@1.7.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":164954},"type":"module","scripts":{"test":"vitest run --passWithNoTests","build":"tsdown","start":"tsx src/server.ts","inspect":"npx @modelcontextprotocol/inspector -e TRAINHEROIC_EMAIL=\"$TRAINHEROIC_EMAIL\" -e TRAINHEROIC_PASSWORD=\"$TRAINHEROIC_PASSWORD\" tsx src/server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:117703bc-f2fc-4bca-951a-5a582e0ad02c"}},"repository":{"url":"https://github.com/alandotcom/trainheroic-unofficial.git","type":"git","directory":"packages/coach-mcp"},"description":"Local single-user MCP server for a TrainHeroic coach. No database, no Cloudflare deps.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0","@trainheroic-unofficial/js":"1.7.2","@trainheroic-unofficial/core":"1.7.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","tsdown":"^0.22.3","vitest":"^4.1.9","typescript":"^6.0.3","@types/node":"^26.0.1"},"_npmOperationalInternal":{"tmp":"tmp/coach-mcp_1.7.2_1783355827949_0.7154759602754932","host":"s3://npm-registry-packages-npm-production"}},"1.7.3":{"name":"@trainheroic-unofficial/coach-mcp","version":"1.7.3","license":"MIT","_id":"@trainheroic-unofficial/coach-mcp@1.7.3","maintainers":[{"name":"alanripple","email":"alan.mit@gmail.com"}],"bin":{"trainheroic-coach-mcp":"./dist/server.mjs"},"dist":{"shasum":"12617359dc9c08a8f378a5f0a62e8923326266ed","tarball":"https://registry.npmjs.org/@trainheroic-unofficial/coach-mcp/-/coach-mcp-1.7.3.tgz","fileCount":4,"integrity":"sha512-Dl2BN3iOjKO6CO911kPSxQ5NLXSBXYScn9da+/s0IpwN+CVnB1XPFPpR/NCwg9j2RjD0hQNs5X3AF/58gafcBA==","signatures":[{"sig":"MEYCIQCG89gDjMyJjsxCEUVWD8347jTiBuMdwh5brCEkxTwjhgIhAOZywQ2XN8gUK+2dXxa2LeNiV2Rt5DyEUp1hB5CSSWW7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@trainheroic-unofficial%2fcoach-mcp@1.7.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":164491},"type":"module","scripts":{"test":"vitest run --passWithNoTests","build":"tsdown","start":"tsx src/server.ts","inspect":"npx @modelcontextprotocol/inspector -e TRAINHEROIC_EMAIL=\"$TRAINHEROIC_EMAIL\" -e TRAINHEROIC_PASSWORD=\"$TRAINHEROIC_PASSWORD\" tsx src/server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:117703bc-f2fc-4bca-951a-5a582e0ad02c"}},"repository":{"url":"https://github.com/alandotcom/trainheroic-unofficial.git","type":"git","directory":"packages/coach-mcp"},"description":"Local single-user MCP server for a TrainHeroic coach. No database, no Cloudflare deps.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0","@trainheroic-unofficial/js":"1.7.3","@trainheroic-unofficial/core":"1.7.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.0","tsdown":"^0.22.3","vitest":"^4.1.10","typescript":"^6.0.3","@types/node":"^26.1.0"},"_npmOperationalInternal":{"tmp":"tmp/coach-mcp_1.7.3_1783713991583_0.1322306106969522","host":"s3://npm-registry-packages-npm-production"}},"1.7.4":{"name":"@trainheroic-unofficial/coach-mcp","version":"1.7.4","license":"MIT","_id":"@trainheroic-unofficial/coach-mcp@1.7.4","maintainers":[{"name":"alanripple","email":"alan.mit@gmail.com"}],"bin":{"trainheroic-coach-mcp":"./dist/server.mjs"},"dist":{"shasum":"e793e3a9df9de081a8e5a224a26545bb089222b3","tarball":"https://registry.npmjs.org/@trainheroic-unofficial/coach-mcp/-/coach-mcp-1.7.4.tgz","fileCount":4,"integrity":"sha512-1d2PeMN4VQTAmhELCs2+0U9qs4h/kBaZmjT2TfU4lome78iOu5648EgdIHpQ0w5HO6PtxQnK61aZqsl1/6hOOA==","signatures":[{"sig":"MEYCIQDHRwAoxCw1nSto3NAncB5Cxpspxby6DvcQQbOmN7pQdQIhAI+U7DN3XIm3eBKirDaLoiGu3W9MeNF447ueNwC2W+XJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@trainheroic-unofficial%2fcoach-mcp@1.7.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":164491},"type":"module","scripts":{"test":"vitest run --passWithNoTests","build":"tsdown","start":"tsx src/server.ts","inspect":"npx @modelcontextprotocol/inspector -e TRAINHEROIC_EMAIL=\"$TRAINHEROIC_EMAIL\" -e TRAINHEROIC_PASSWORD=\"$TRAINHEROIC_PASSWORD\" tsx src/server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:117703bc-f2fc-4bca-951a-5a582e0ad02c"}},"repository":{"url":"https://github.com/alandotcom/trainheroic-unofficial.git","type":"git","directory":"packages/coach-mcp"},"description":"Local single-user MCP server for a TrainHeroic coach. No database, no Cloudflare deps.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0","@trainheroic-unofficial/js":"1.7.4","@trainheroic-unofficial/core":"1.7.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.0","tsdown":"^0.22.3","vitest":"^4.1.10","typescript":"^6.0.3","@types/node":"^26.1.0"},"_npmOperationalInternal":{"tmp":"tmp/coach-mcp_1.7.4_1785788549690_0.9988900769190796","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@trainheroic-unofficial/coach-mcp","version":"2.0.0","license":"MIT","_id":"@trainheroic-unofficial/coach-mcp@2.0.0","maintainers":[{"name":"alanripple","email":"alan.mit@gmail.com"}],"bin":{"trainheroic-coach-mcp":"./dist/server.mjs"},"dist":{"shasum":"33bd283053d9e42aaa573aa15229ba1bc1a18858","tarball":"https://registry.npmjs.org/@trainheroic-unofficial/coach-mcp/-/coach-mcp-2.0.0.tgz","fileCount":4,"integrity":"sha512-dBodKDIVa5Y2ZUO88Uk61oYaWCBVWE/twrSXxiq5tqD7SOQ5cfD6R/+umDnFpPkFo0MLQGWrSy5BiVg6E914gA==","signatures":[{"sig":"MEUCIQCLhC1Xcszz8TX1UUdvlCwe73FQz8RSVOa+7YrUmU/0JgIgOc1KgghGI+eo7tYio5yGcd19wn2lzqnlese6O1b425A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@trainheroic-unofficial%2fcoach-mcp@2.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":166507},"type":"module","scripts":{"test":"vitest run --passWithNoTests","build":"tsdown","start":"tsx src/server.ts","inspect":"npx @modelcontextprotocol/inspector -e TRAINHEROIC_EMAIL=\"$TRAINHEROIC_EMAIL\" -e TRAINHEROIC_PASSWORD=\"$TRAINHEROIC_PASSWORD\" tsx src/server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:117703bc-f2fc-4bca-951a-5a582e0ad02c"}},"repository":{"url":"https://github.com/alandotcom/trainheroic-unofficial.git","type":"git","directory":"packages/coach-mcp"},"description":"Local single-user MCP server for a TrainHeroic coach. No database, no Cloudflare deps.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^4.4.3","@trainheroic-unofficial/js":"2.0.0","@modelcontextprotocol/server":"2.0.0","@trainheroic-unofficial/core":"2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.4","tsdown":"^0.22.14","vitest":"^4.1.10","typescript":"^7.0.2","@types/node":"^26.1.2"},"_npmOperationalInternal":{"tmp":"tmp/coach-mcp_2.0.0_1786058976855_0.2906668011248603","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"@trainheroic-unofficial/coach-mcp","version":"2.0.1","license":"MIT","_id":"@trainheroic-unofficial/coach-mcp@2.0.1","maintainers":[{"name":"alanripple","email":"alan.mit@gmail.com"}],"bin":{"trainheroic-coach-mcp":"./dist/server.mjs"},"dist":{"shasum":"1be29f1fcae053ee55a4c041ceac13ac1fe2ebb4","tarball":"https://registry.npmjs.org/@trainheroic-unofficial/coach-mcp/-/coach-mcp-2.0.1.tgz","fileCount":4,"integrity":"sha512-gYoOfKlJyjvEJIMAEijYHdNweLoSX20xRJZ8RzzTQtD+0ENLvRWnpXgtv9dFm9vkKH6BEK+GzQhjUs7/15CKSg==","signatures":[{"sig":"MEUCICCdK6q3C+MYa9bKXtyUA7ivdhdICoE5eZj0Zxo64xO/AiEAhfz/FCY1RE61VTg5wq1ybdcthcvbJcxB+Pcexy+7Lr8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@trainheroic-unofficial%2fcoach-mcp@2.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":166507},"type":"module","scripts":{"test":"vitest run --passWithNoTests","build":"tsdown","start":"tsx src/server.ts","inspect":"npx @modelcontextprotocol/inspector -e TRAINHEROIC_EMAIL=\"$TRAINHEROIC_EMAIL\" -e TRAINHEROIC_PASSWORD=\"$TRAINHEROIC_PASSWORD\" tsx src/server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:117703bc-f2fc-4bca-951a-5a582e0ad02c"}},"repository":{"url":"https://github.com/alandotcom/trainheroic-unofficial.git","type":"git","directory":"packages/coach-mcp"},"description":"Local single-user MCP server for a TrainHeroic coach. No database, no Cloudflare deps.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^4.4.3","@trainheroic-unofficial/js":"2.0.1","@modelcontextprotocol/server":"2.0.0","@trainheroic-unofficial/core":"2.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.4","tsdown":"^0.22.14","vitest":"^4.1.10","typescript":"^7.0.2","@types/node":"^26.1.2"},"_npmOperationalInternal":{"tmp":"tmp/coach-mcp_2.0.1_1786059511297_0.0730147333228921","host":"s3://npm-registry-packages-npm-production"}},"2.0.2":{"name":"@trainheroic-unofficial/coach-mcp","version":"2.0.2","license":"MIT","_id":"@trainheroic-unofficial/coach-mcp@2.0.2","maintainers":[{"name":"alanripple","email":"alan.mit@gmail.com"}],"bin":{"trainheroic-coach-mcp":"./dist/server.mjs"},"dist":{"shasum":"4d00ea7e3402b4201d4c4736abb485d8b1410b5a","tarball":"https://registry.npmjs.org/@trainheroic-unofficial/coach-mcp/-/coach-mcp-2.0.2.tgz","fileCount":4,"integrity":"sha512-Q+9qrCaF37mXlbAhj3b0Fg8idq6hgAhymj2f1vQBBucR8UTDzII1RGWKySypMzwrtMJZu6RLEpQ6cIXHhDAoCQ==","signatures":[{"sig":"MEYCIQDkp3RNJvvuO09brTuvEIzGVJNsxjBTwgfsNpmaMhrcMAIhAIdmH1OzRFn0oi5bKUonL0SVjvenezNtSowav95TpZDK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@trainheroic-unofficial%2fcoach-mcp@2.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":169491},"type":"module","scripts":{"test":"vitest run --passWithNoTests","build":"tsdown","start":"tsx src/server.ts","inspect":"npx @modelcontextprotocol/inspector -e TRAINHEROIC_EMAIL=\"$TRAINHEROIC_EMAIL\" -e TRAINHEROIC_PASSWORD=\"$TRAINHEROIC_PASSWORD\" tsx src/server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:117703bc-f2fc-4bca-951a-5a582e0ad02c"}},"repository":{"url":"https://github.com/alandotcom/trainheroic-unofficial.git","type":"git","directory":"packages/coach-mcp"},"description":"Local single-user MCP server for a TrainHeroic coach. No database, no Cloudflare deps.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"^4.4.3","@trainheroic-unofficial/js":"2.0.2","@modelcontextprotocol/server":"2.0.0","@trainheroic-unofficial/core":"2.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.4","tsdown":"^0.22.14","vitest":"^4.1.10","typescript":"^7.0.2","@types/node":"^26.1.2"},"_npmOperationalInternal":{"tmp":"tmp/coach-mcp_2.0.2_1786065537319_0.6898389645739311","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"@trainheroic-unofficial/coach-mcp","version":"2.1.0","license":"MIT","_id":"@trainheroic-unofficial/coach-mcp@2.1.0","maintainers":[{"name":"alanripple","email":"alan.mit@gmail.com"}],"bin":{"trainheroic-coach-mcp":"./dist/server.mjs"},"dist":{"shasum":"b06096ad1ef698ca0293e17774c292ee1f90f6d7","tarball":"https://registry.npmjs.org/@trainheroic-unofficial/coach-mcp/-/coach-mcp-2.1.0.tgz","fileCount":4,"integrity":"sha512-ntqmkwrarDBqoffWhnBX7RNlFEYPJLcMsKhGtBO55OymX3qCabetdrc/LV39QE9WJlGUdzvVt//e4l6yV+iFdw==","signatures":[{"sig":"MEYCIQDX7IufUcwoJlnP6QOHvWbOUPMefDgdhMXpWWiPEiMMhQIhAJiyXonfYiiAyYQrdzqOKHIvVUKrvPfljNGutKuUYVBD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@trainheroic-unofficial%2fcoach-mcp@2.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":174656},"type":"module","scripts":{"test":"vitest run --passWithNoTests","build":"tsdown","start":"tsx src/server.ts","inspect":"npx @modelcontextprotocol/inspector -e TRAINHEROIC_EMAIL=\"$TRAINHEROIC_EMAIL\" -e TRAINHEROIC_PASSWORD=\"$TRAINHEROIC_PASSWORD\" tsx src/server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:117703bc-f2fc-4bca-951a-5a582e0ad02c"}},"repository":{"url":"https://github.com/alandotcom/trainheroic-unofficial.git","type":"git","directory":"packages/coach-mcp"},"description":"Local single-user MCP server for a TrainHeroic coach. No database, no Cloudflare deps.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^4.4.3","@trainheroic-unofficial/js":"2.1.0","@modelcontextprotocol/server":"2.0.0","@trainheroic-unofficial/core":"2.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.4","tsdown":"^0.22.14","vitest":"^4.1.10","typescript":"^7.0.2","@types/node":"^26.1.2"},"_npmOperationalInternal":{"tmp":"tmp/coach-mcp_2.1.0_1786067272149_0.18191780318463535","host":"s3://npm-registry-packages-npm-production"}},"2.1.1":{"name":"@trainheroic-unofficial/coach-mcp","version":"2.1.1","license":"MIT","_id":"@trainheroic-unofficial/coach-mcp@2.1.1","maintainers":[{"name":"alanripple","email":"alan.mit@gmail.com"}],"bin":{"trainheroic-coach-mcp":"./dist/server.mjs"},"dist":{"shasum":"e1eb463449fcf62f180840d18670a01cc1979c6e","tarball":"https://registry.npmjs.org/@trainheroic-unofficial/coach-mcp/-/coach-mcp-2.1.1.tgz","fileCount":4,"integrity":"sha512-W+I/eavjJxBc+wId119xyTcJS42U8NkqQQlq1IVleUQ4Exb0s4ytHiauAV40OFR0rK4yAphJeMSjTxIARVTKeg==","signatures":[{"sig":"MEYCIQCiUfIUVqRYTD+ci4STv5roYfMIKVkGx3L6sfRxCuZVQgIhAJSYHsMCg5mk7A5Jee/f9uzyPhq0hJFbmVLeWNEjXhnZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@trainheroic-unofficial%2fcoach-mcp@2.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":175909},"type":"module","scripts":{"test":"vitest run --passWithNoTests","build":"tsdown","start":"tsx src/server.ts","inspect":"npx @modelcontextprotocol/inspector -e TRAINHEROIC_EMAIL=\"$TRAINHEROIC_EMAIL\" -e TRAINHEROIC_PASSWORD=\"$TRAINHEROIC_PASSWORD\" tsx src/server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:117703bc-f2fc-4bca-951a-5a582e0ad02c"}},"repository":{"url":"https://github.com/alandotcom/trainheroic-unofficial.git","type":"git","directory":"packages/coach-mcp"},"description":"Local single-user MCP server for a TrainHeroic coach. No database, no Cloudflare deps.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^4.4.3","@trainheroic-unofficial/js":"2.1.1","@modelcontextprotocol/server":"2.0.0","@trainheroic-unofficial/core":"2.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.11","tsdown":"^0.22.14","vitest":"^4.1.10","typescript":"^7.0.2","@types/node":"^26.2.0"},"_npmOperationalInternal":{"tmp":"tmp/coach-mcp_2.1.1_1786303175690_0.2021182689694112","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"@trainheroic-unofficial/coach-mcp","version":"3.0.0","license":"MIT","_id":"@trainheroic-unofficial/coach-mcp@3.0.0","maintainers":[{"name":"alanripple","email":"alan.mit@gmail.com"}],"bin":{"trainheroic-coach-mcp":"./dist/server.mjs"},"dist":{"shasum":"a12e109888e6a1854b63b01a9e6a990594a74836","tarball":"https://registry.npmjs.org/@trainheroic-unofficial/coach-mcp/-/coach-mcp-3.0.0.tgz","fileCount":4,"integrity":"sha512-2GeDbiAbq6eBLbXDpgQt0+cmhE2bneG/KVSr0mdJqWoa4cIPAqDZwZuQOVUUt3y6slcmChv7DhmKOz5AOkbAfA==","signatures":[{"sig":"MEUCIQDufrair5r2SGHl5JC8+R+txPoYOFZ8Yz26VwUhiQoZ8QIgYL5vUhjlTdkJk5gxV57q10EUhPNshYjm7DL47GpJYag=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@trainheroic-unofficial%2fcoach-mcp@3.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":176045},"type":"module","scripts":{"test":"vitest run --passWithNoTests","build":"tsdown","start":"tsx src/server.ts","inspect":"npx @modelcontextprotocol/inspector -e TRAINHEROIC_EMAIL=\"$TRAINHEROIC_EMAIL\" -e TRAINHEROIC_PASSWORD=\"$TRAINHEROIC_PASSWORD\" tsx src/server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:117703bc-f2fc-4bca-951a-5a582e0ad02c"}},"repository":{"url":"https://github.com/alandotcom/trainheroic-unofficial.git","type":"git","directory":"packages/coach-mcp"},"description":"Local single-user MCP server for a TrainHeroic coach. No database, no Cloudflare deps.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^4.4.3","@trainheroic-unofficial/js":"3.0.0","@modelcontextprotocol/server":"2.0.0","@trainheroic-unofficial/core":"3.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.11","tsdown":"^0.22.14","vitest":"^4.1.10","typescript":"^7.0.2","@types/node":"^26.2.0"},"_npmOperationalInternal":{"tmp":"tmp/coach-mcp_3.0.0_1786373959648_0.3377053202714948","host":"s3://npm-registry-packages-npm-production"}},"3.0.1":{"name":"@trainheroic-unofficial/coach-mcp","version":"3.0.1","license":"MIT","_id":"@trainheroic-unofficial/coach-mcp@3.0.1","maintainers":[{"name":"alanripple","email":"alan.mit@gmail.com"}],"bin":{"trainheroic-coach-mcp":"./dist/server.mjs"},"dist":{"shasum":"83b270205476e302fe7ff73138f6ff83a64d37ab","tarball":"https://registry.npmjs.org/@trainheroic-unofficial/coach-mcp/-/coach-mcp-3.0.1.tgz","fileCount":4,"integrity":"sha512-7+eDy7g7rkxjT5SUh1Goycub/ZBiw86iWRl7mF2pd38i6a9+y81ABUCSZPX5XXWJcGrx8Uq/6zYHhvheyM0D5A==","signatures":[{"sig":"MEUCIQDBhux25EnfNeHHB5CiwuhaJVDBRPn7s8OlU/JO5X1kegIgP8Yn7dyqoDx1eLDMz2Aifci2YnW5N58I2Y/PcwOijZc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@trainheroic-unofficial%2fcoach-mcp@3.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":174724},"type":"module","scripts":{"test":"vitest run --passWithNoTests","build":"tsdown","start":"tsx src/server.ts","inspect":"npx @modelcontextprotocol/inspector -e TRAINHEROIC_EMAIL=\"$TRAINHEROIC_EMAIL\" -e TRAINHEROIC_PASSWORD=\"$TRAINHEROIC_PASSWORD\" tsx src/server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:117703bc-f2fc-4bca-951a-5a582e0ad02c"}},"repository":{"url":"https://github.com/alandotcom/trainheroic-unofficial.git","type":"git","directory":"packages/coach-mcp"},"description":"Local single-user MCP server for a TrainHeroic coach. No database, no Cloudflare deps.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^4.4.3","@trainheroic-unofficial/js":"3.0.1","@modelcontextprotocol/server":"2.0.0","@trainheroic-unofficial/core":"3.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.11","tsdown":"^0.22.14","vitest":"^4.1.10","typescript":"^7.0.2","@types/node":"^26.2.0"},"_npmOperationalInternal":{"tmp":"tmp/coach-mcp_3.0.1_1786398797932_0.04708711413700728","host":"s3://npm-registry-packages-npm-production"}},"3.1.0":{"name":"@trainheroic-unofficial/coach-mcp","version":"3.1.0","license":"MIT","_id":"@trainheroic-unofficial/coach-mcp@3.1.0","maintainers":[{"name":"alanripple","email":"alan.mit@gmail.com"}],"bin":{"trainheroic-coach-mcp":"./dist/server.mjs"},"dist":{"shasum":"380ce15427686bf313e7e501c7021025b589036a","tarball":"https://registry.npmjs.org/@trainheroic-unofficial/coach-mcp/-/coach-mcp-3.1.0.tgz","fileCount":4,"integrity":"sha512-yrEhozHuMq8KLRMjylYVXMh9Ll3Zqn4WC4NM0+BJHz+C5RbqkYhk+9/CCrnKxp2rAZhVz+LBxS3xM4VxQY1A1g==","signatures":[{"sig":"MEUCIGWHMirE3F8yRHK3QbyNI8Ji2995pETe7te+F+NOmZ5oAiEAzxTQNEOA2Srzn7Hw6OgDo7xSRP3VCweX1i2I7K4cRlo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@trainheroic-unofficial%2fcoach-mcp@3.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":174232},"type":"module","scripts":{"test":"vitest run --passWithNoTests","build":"tsdown","start":"tsx src/server.ts","inspect":"npx @modelcontextprotocol/inspector -e TRAINHEROIC_EMAIL=\"$TRAINHEROIC_EMAIL\" -e TRAINHEROIC_PASSWORD=\"$TRAINHEROIC_PASSWORD\" tsx src/server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:117703bc-f2fc-4bca-951a-5a582e0ad02c"}},"repository":{"url":"https://github.com/alandotcom/trainheroic-unofficial.git","type":"git","directory":"packages/coach-mcp"},"description":"Local single-user MCP server for a TrainHeroic coach. No database, no Cloudflare deps.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^4.4.3","@trainheroic-unofficial/js":"3.1.0","@modelcontextprotocol/server":"2.0.0","@trainheroic-unofficial/core":"3.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.11","tsdown":"^0.22.14","vitest":"^4.1.10","typescript":"^7.0.2","@types/node":"^26.2.0"},"_npmOperationalInternal":{"tmp":"tmp/coach-mcp_3.1.0_1786634958192_0.33563479485582315","host":"s3://npm-registry-packages-npm-production"}},"3.1.1":{"name":"@trainheroic-unofficial/coach-mcp","version":"3.1.1","license":"MIT","_id":"@trainheroic-unofficial/coach-mcp@3.1.1","maintainers":[{"name":"alanripple","email":"alan.mit@gmail.com"}],"bin":{"trainheroic-coach-mcp":"./dist/server.mjs"},"dist":{"shasum":"0f2a30495b12adc5cc7f1d2fd59952d942067654","tarball":"https://registry.npmjs.org/@trainheroic-unofficial/coach-mcp/-/coach-mcp-3.1.1.tgz","fileCount":4,"integrity":"sha512-cijvT1cVcYZVOpEE2KrcrsEqZPzs2WJIv60bjoQVbswjF7zMjA5fXNeNMT5z91Z9WcULefl66zxl9daz+mV6xQ==","signatures":[{"sig":"MEQCIEZqSfKj2D8HKRdl7oHOwenWgT1uuGuFb/b1y2Qtnt2BAiB/oDrmSj32z48zJZBOQQPwnMIkhTGwAiPCgg+X3ocrgQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@trainheroic-unofficial%2fcoach-mcp@3.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":179397},"type":"module","scripts":{"test":"vitest run --passWithNoTests","build":"tsdown","start":"tsx src/server.ts","inspect":"npx @modelcontextprotocol/inspector -e TRAINHEROIC_EMAIL=\"$TRAINHEROIC_EMAIL\" -e TRAINHEROIC_PASSWORD=\"$TRAINHEROIC_PASSWORD\" tsx src/server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:117703bc-f2fc-4bca-951a-5a582e0ad02c"}},"repository":{"url":"https://github.com/alandotcom/trainheroic-unofficial.git","type":"git","directory":"packages/coach-mcp"},"description":"Local single-user MCP server for a TrainHeroic coach. No database, no Cloudflare deps.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"^4.4.3","@trainheroic-unofficial/js":"3.1.1","@modelcontextprotocol/server":"2.0.0","@trainheroic-unofficial/core":"3.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.11","tsdown":"^0.22.14","vitest":"^4.1.10","typescript":"^7.0.2","@types/node":"^26.2.0"},"_npmOperationalInternal":{"tmp":"tmp/coach-mcp_3.1.1_1786917931266_0.2547376838456732","host":"s3://npm-registry-packages-npm-production"}},"3.2.0":{"name":"@trainheroic-unofficial/coach-mcp","version":"3.2.0","license":"MIT","_id":"@trainheroic-unofficial/coach-mcp@3.2.0","maintainers":[{"name":"alanripple","email":"alan.mit@gmail.com"}],"bin":{"trainheroic-coach-mcp":"./dist/server.mjs"},"dist":{"shasum":"44e54f9e88f92d5200838b4fa289fa755f5e06a7","tarball":"https://registry.npmjs.org/@trainheroic-unofficial/coach-mcp/-/coach-mcp-3.2.0.tgz","fileCount":4,"integrity":"sha512-1+6fZPQBhgM9Ybsjhr2paQhilPoLhHtYawID1FZZOaY8bQYX/b+XRmT5SiEDeXqz+OtsMrDkTW9Q0WM0fBGL9Q==","signatures":[{"sig":"MEUCIA8WBMf47+D37seS0c0PsHg0FhQsok1LOWFyRkxaV0wiAiEAoUvbPGBsbRCybT4AYyxd3gfKLJPgFzuFAz1hnBMeM6c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@trainheroic-unofficial%2fcoach-mcp@3.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":192384},"type":"module","scripts":{"test":"vitest run --passWithNoTests","build":"tsdown","start":"tsx src/server.ts","inspect":"npx @modelcontextprotocol/inspector -e TRAINHEROIC_EMAIL=\"$TRAINHEROIC_EMAIL\" -e TRAINHEROIC_PASSWORD=\"$TRAINHEROIC_PASSWORD\" tsx src/server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:117703bc-f2fc-4bca-951a-5a582e0ad02c"}},"repository":{"url":"https://github.com/alandotcom/trainheroic-unofficial.git","type":"git","directory":"packages/coach-mcp"},"description":"Local single-user MCP server for a TrainHeroic coach. No database, no Cloudflare deps.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"^4.4.3","@trainheroic-unofficial/js":"3.2.0","@modelcontextprotocol/server":"2.0.0","@trainheroic-unofficial/core":"3.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.11","tsdown":"^0.22.14","vitest":"^4.1.10","typescript":"^7.0.2","@types/node":"^26.2.0"},"_npmOperationalInternal":{"tmp":"tmp/coach-mcp_3.2.0_1786925690192_0.4108100290363166","host":"s3://npm-registry-packages-npm-production"}},"3.3.0":{"name":"@trainheroic-unofficial/coach-mcp","version":"3.3.0","license":"MIT","_id":"@trainheroic-unofficial/coach-mcp@3.3.0","maintainers":[{"name":"alanripple","email":"alan.mit@gmail.com"}],"bin":{"trainheroic-coach-mcp":"./dist/server.mjs"},"dist":{"shasum":"6de7c9812085162f17139a5e007b89729476c519","tarball":"https://registry.npmjs.org/@trainheroic-unofficial/coach-mcp/-/coach-mcp-3.3.0.tgz","fileCount":4,"integrity":"sha512-RUERSpASTapgQVsdfHOb3VMFigrt9d2KMjtv8Jcfc3zBHUj78EAzJyqFGREf5y+zj/wP2lwSy+Jr+UnjYSjOnQ==","signatures":[{"sig":"MEUCIB+0NoDo2YS03AE+A5yN/8VOPaY7rKgWy9gY0Xiva91lAiEA9wKyy7JES+NbwjiuUXcdX0T0wjZI1lcWO7Q5UY17FK4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@trainheroic-unofficial%2fcoach-mcp@3.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":206535},"type":"module","scripts":{"test":"vitest run --passWithNoTests","build":"tsdown","start":"tsx src/server.ts","inspect":"npx @modelcontextprotocol/inspector -e TRAINHEROIC_EMAIL=\"$TRAINHEROIC_EMAIL\" -e TRAINHEROIC_PASSWORD=\"$TRAINHEROIC_PASSWORD\" tsx src/server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:117703bc-f2fc-4bca-951a-5a582e0ad02c"}},"repository":{"url":"https://github.com/alandotcom/trainheroic-unofficial.git","type":"git","directory":"packages/coach-mcp"},"description":"Local single-user MCP server for a TrainHeroic coach. No database, no Cloudflare deps.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"^4.4.3","@trainheroic-unofficial/js":"3.3.0","@modelcontextprotocol/server":"2.0.0","@trainheroic-unofficial/core":"3.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","tsdown":"^0.22.14","vitest":"^4.1.10","typescript":"^7.0.2","@types/node":"^26.2.0"},"_npmOperationalInternal":{"tmp":"tmp/coach-mcp_3.3.0_1787195985969_0.9521733343554104","host":"s3://npm-registry-packages-npm-production"}},"3.3.1":{"name":"@trainheroic-unofficial/coach-mcp","version":"3.3.1","license":"MIT","_id":"@trainheroic-unofficial/coach-mcp@3.3.1","maintainers":[{"name":"alanripple","email":"alan.mit@gmail.com"}],"bin":{"trainheroic-coach-mcp":"./dist/server.mjs"},"dist":{"shasum":"829001c0858101ca6e9f70f9a00e89a39425bb01","tarball":"https://registry.npmjs.org/@trainheroic-unofficial/coach-mcp/-/coach-mcp-3.3.1.tgz","fileCount":4,"integrity":"sha512-FPwINjOEBhniwF1Uvq71v9kajD7kwzq5kln0kZs3aD8aLA8ymU6r0cHC7Bh7OqrwGyvgYprSYkEePtA3Opdp3A==","signatures":[{"sig":"MEQCIGLmmsMON2I5s3j9Ohe+oc/Yz+GimSJSorxavOuqWmWQAiA+r2w6gLkKfe/oMZMZAuv9D+bAx3p4vseHpOl7XZOpTQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@trainheroic-unofficial%2fcoach-mcp@3.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":207145},"type":"module","scripts":{"test":"vitest run --passWithNoTests","build":"tsdown","start":"tsx src/server.ts","inspect":"npx @modelcontextprotocol/inspector -e TRAINHEROIC_EMAIL=\"$TRAINHEROIC_EMAIL\" -e TRAINHEROIC_PASSWORD=\"$TRAINHEROIC_PASSWORD\" tsx src/server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:117703bc-f2fc-4bca-951a-5a582e0ad02c"}},"repository":{"url":"https://github.com/alandotcom/trainheroic-unofficial.git","type":"git","directory":"packages/coach-mcp"},"description":"Local single-user MCP server for a TrainHeroic coach. No database, no Cloudflare deps.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"^4.4.3","@trainheroic-unofficial/js":"3.3.1","@modelcontextprotocol/server":"2.0.0","@trainheroic-unofficial/core":"3.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","tsdown":"^0.22.14","vitest":"^4.1.10","typescript":"^7.0.2","@types/node":"^26.2.0"},"_npmOperationalInternal":{"tmp":"tmp/coach-mcp_3.3.1_1787244523170_0.057038072701811604","host":"s3://npm-registry-packages-npm-production"}},"3.3.2":{"name":"@trainheroic-unofficial/coach-mcp","version":"3.3.2","license":"MIT","_id":"@trainheroic-unofficial/coach-mcp@3.3.2","maintainers":[{"name":"alanripple","email":"alan.mit@gmail.com"}],"bin":{"trainheroic-coach-mcp":"./dist/server.mjs"},"dist":{"shasum":"410688de3d5eb5e30184c30d0a1fe85501b000cd","tarball":"https://registry.npmjs.org/@trainheroic-unofficial/coach-mcp/-/coach-mcp-3.3.2.tgz","fileCount":4,"integrity":"sha512-/lqeZRMyfF1HpAmNpGcMxfqCT0tjz1s04TNjovYAbKolgBlhuta3nHBeddcdKZiqTGcDTVjTseKaOoF2v1JKHQ==","signatures":[{"sig":"MEYCIQDz6NH0/F08UHJ1g8+B6DCR+GpivVRY0WDISlSulLuyigIhAP2vRDw4z4Tv9E0E+bsk9+NUSBXRihlOVqrmSXIi9Ojy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@trainheroic-unofficial%2fcoach-mcp@3.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":207145},"type":"module","scripts":{"test":"vitest run --passWithNoTests","build":"tsdown","start":"tsx src/server.ts","inspect":"npx @modelcontextprotocol/inspector -e TRAINHEROIC_EMAIL=\"$TRAINHEROIC_EMAIL\" -e TRAINHEROIC_PASSWORD=\"$TRAINHEROIC_PASSWORD\" tsx src/server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:117703bc-f2fc-4bca-951a-5a582e0ad02c"}},"repository":{"url":"https://github.com/alandotcom/trainheroic-unofficial.git","type":"git","directory":"packages/coach-mcp"},"description":"Local single-user MCP server for a TrainHeroic coach. No database, no Cloudflare deps.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"^4.4.3","@trainheroic-unofficial/js":"3.3.2","@modelcontextprotocol/server":"2.0.0","@trainheroic-unofficial/core":"3.3.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","tsdown":"^0.22.14","vitest":"^4.1.10","typescript":"^7.0.2","@types/node":"^26.2.0"},"_npmOperationalInternal":{"tmp":"tmp/coach-mcp_3.3.2_1787256098535_0.2926547377817015","host":"s3://npm-registry-packages-npm-production"}},"3.3.3":{"name":"@trainheroic-unofficial/coach-mcp","version":"3.3.3","license":"MIT","_id":"@trainheroic-unofficial/coach-mcp@3.3.3","maintainers":[{"name":"alanripple","email":"alan.mit@gmail.com"}],"bin":{"trainheroic-coach-mcp":"./dist/server.mjs"},"dist":{"shasum":"bc43f3b865e2841d3de07ed0bf101caa26234026","tarball":"https://registry.npmjs.org/@trainheroic-unofficial/coach-mcp/-/coach-mcp-3.3.3.tgz","fileCount":4,"integrity":"sha512-ZOy3p2Snhnc0EmCZuhBvKSo5g0clB+omCEp3oP+n406GAS6mhfXq4tw7JXmzjnUvJIJcB+u9xkHw3JCxHKGOpw==","signatures":[{"sig":"MEYCIQC3ENR9Ro7m6G12pp6tOtBtkqSgwvBYIyGk4OGX7g30vgIhAMnjd5rb2/5k1ViPFAIrHFuWfWfCHmstNQEoIqCMGCX/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@trainheroic-unofficial%2fcoach-mcp@3.3.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":207222},"type":"module","scripts":{"test":"vitest run --passWithNoTests","build":"tsdown","start":"tsx src/server.ts","inspect":"npx @modelcontextprotocol/inspector -e TRAINHEROIC_EMAIL=\"$TRAINHEROIC_EMAIL\" -e TRAINHEROIC_PASSWORD=\"$TRAINHEROIC_PASSWORD\" tsx src/server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:117703bc-f2fc-4bca-951a-5a582e0ad02c"}},"repository":{"url":"https://github.com/alandotcom/trainheroic-unofficial.git","type":"git","directory":"packages/coach-mcp"},"description":"Local single-user MCP server for a TrainHeroic coach. No database, no Cloudflare deps.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"^4.4.3","@trainheroic-unofficial/js":"3.3.3","@modelcontextprotocol/server":"2.0.0","@trainheroic-unofficial/core":"3.3.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","tsdown":"^0.22.14","vitest":"^4.1.10","typescript":"^7.0.2","@types/node":"^26.2.0"},"_npmOperationalInternal":{"tmp":"tmp/coach-mcp_3.3.3_1787258024114_0.38030251426933037","host":"s3://npm-registry-packages-npm-production"}},"3.4.0":{"name":"@trainheroic-unofficial/coach-mcp","version":"3.4.0","license":"MIT","_id":"@trainheroic-unofficial/coach-mcp@3.4.0","maintainers":[{"name":"alanripple","email":"alan.mit@gmail.com"}],"bin":{"trainheroic-coach-mcp":"./dist/server.mjs"},"dist":{"shasum":"36d4e8a8185b8697ba1089ea7cf4b1dfc8848c3d","tarball":"https://registry.npmjs.org/@trainheroic-unofficial/coach-mcp/-/coach-mcp-3.4.0.tgz","fileCount":4,"integrity":"sha512-NzvHDP3ZOXAjngqyP6oDBybsrwBNSCKrLQalFGA4Wo/6u0sVdwIblvSy7xWpRoTOnujcy3Tqml/QqYaWffnxAg==","signatures":[{"sig":"MEUCIQCT/ho1kwqhjj62qOHpti7T36K8uXLG3umKPE8b5xAs9QIgGNfjDl8nkmrWOBKBq8m1DIxtJrgga3+WaphrpB8gIAA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@trainheroic-unofficial%2fcoach-mcp@3.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":207790},"type":"module","scripts":{"test":"vitest run --passWithNoTests","build":"tsdown","start":"tsx src/server.ts","inspect":"npx @modelcontextprotocol/inspector -e TRAINHEROIC_EMAIL=\"$TRAINHEROIC_EMAIL\" -e TRAINHEROIC_PASSWORD=\"$TRAINHEROIC_PASSWORD\" tsx src/server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:117703bc-f2fc-4bca-951a-5a582e0ad02c"}},"repository":{"url":"https://github.com/alandotcom/trainheroic-unofficial.git","type":"git","directory":"packages/coach-mcp"},"description":"Local single-user MCP server for a TrainHeroic coach. No database, no Cloudflare deps.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"^4.4.3","@trainheroic-unofficial/js":"3.4.0","@modelcontextprotocol/server":"2.0.0","@trainheroic-unofficial/core":"3.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","tsdown":"^0.22.14","vitest":"^4.1.11","typescript":"^7.0.2","@types/node":"^26.3.0"},"_npmOperationalInternal":{"tmp":"tmp/coach-mcp_3.4.0_1787812279521_0.9993911544809762","host":"s3://npm-registry-packages-npm-production"}},"3.5.0":{"name":"@trainheroic-unofficial/coach-mcp","version":"3.5.0","license":"MIT","_id":"@trainheroic-unofficial/coach-mcp@3.5.0","maintainers":[{"name":"alanripple","email":"alan.mit@gmail.com"}],"bin":{"trainheroic-coach-mcp":"./dist/server.mjs"},"dist":{"shasum":"4960c93fa59a823201c4ad1c04e2ee64ffef9f2d","tarball":"https://registry.npmjs.org/@trainheroic-unofficial/coach-mcp/-/coach-mcp-3.5.0.tgz","fileCount":4,"integrity":"sha512-skEXZRDKdba/rhpmOEu1IqTP8ssP0Y0WhekLvW7anAluLWvRjCk6ABoFikc3l7JkQ7m/ceC/nG5HTFOWUEjDTQ==","signatures":[{"sig":"MEQCIFhVPadvyvNl+fVR62j4IkuO+kgJHpjS3ONxdKU/huo9AiA9NoUZUYW2YI0VJtGF/MAQIO+fHnNrxIDbk8S67SfSvA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@trainheroic-unofficial%2fcoach-mcp@3.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":208651},"type":"module","scripts":{"test":"vitest run --passWithNoTests","build":"tsdown","start":"tsx src/server.ts","inspect":"npx @modelcontextprotocol/inspector -e TRAINHEROIC_EMAIL=\"$TRAINHEROIC_EMAIL\" -e TRAINHEROIC_PASSWORD=\"$TRAINHEROIC_PASSWORD\" tsx src/server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:117703bc-f2fc-4bca-951a-5a582e0ad02c"}},"repository":{"url":"https://github.com/alandotcom/trainheroic-unofficial.git","type":"git","directory":"packages/coach-mcp"},"description":"Local single-user MCP server for a TrainHeroic coach. No database, no Cloudflare deps.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"^4.4.3","@trainheroic-unofficial/js":"3.5.0","@modelcontextprotocol/server":"2.0.0","@trainheroic-unofficial/core":"3.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","tsdown":"^0.22.14","vitest":"^4.1.11","typescript":"^7.0.2","@types/node":"^26.3.0"},"_npmOperationalInternal":{"tmp":"tmp/coach-mcp_3.5.0_1787874393659_0.03346289667891167","host":"s3://npm-registry-packages-npm-production"}},"3.5.1":{"name":"@trainheroic-unofficial/coach-mcp","version":"3.5.1","license":"MIT","_id":"@trainheroic-unofficial/coach-mcp@3.5.1","maintainers":[{"name":"alanripple","email":"alan.mit@gmail.com"}],"bin":{"trainheroic-coach-mcp":"./dist/server.mjs"},"dist":{"shasum":"db573070ae5f120a2db7bf9b266fc1990ca0f998","tarball":"https://registry.npmjs.org/@trainheroic-unofficial/coach-mcp/-/coach-mcp-3.5.1.tgz","fileCount":4,"integrity":"sha512-xfkvgqF/IDduTgCBky/Kx7Q4iLRqDtyozqCEt2rdEO3/syhQSoHipRfsDIBUP+kjSx03MgFxDaGdrOs1L0uESg==","signatures":[{"sig":"MEUCIF2eDvhxr4BgngM++sBA/Bxtc8eNaHfEt8tCo4SiEQo8AiEAyhYJiV2vR7IDmk3h7PBDOaT2qpFOrCJK+XjDZZb3ddI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@trainheroic-unofficial%2fcoach-mcp@3.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":212717},"type":"module","scripts":{"test":"vitest run --passWithNoTests","build":"tsdown","start":"tsx src/server.ts","inspect":"npx @modelcontextprotocol/inspector -e TRAINHEROIC_EMAIL=\"$TRAINHEROIC_EMAIL\" -e TRAINHEROIC_PASSWORD=\"$TRAINHEROIC_PASSWORD\" tsx src/server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:117703bc-f2fc-4bca-951a-5a582e0ad02c"}},"repository":{"url":"https://github.com/alandotcom/trainheroic-unofficial.git","type":"git","directory":"packages/coach-mcp"},"description":"Local single-user MCP server for a TrainHeroic coach. No database, no Cloudflare deps.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"^4.4.3","@trainheroic-unofficial/js":"3.5.1","@modelcontextprotocol/server":"2.0.0","@trainheroic-unofficial/core":"3.5.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","tsdown":"^0.22.14","vitest":"^4.1.11","typescript":"^7.0.2","@types/node":"^26.3.0"},"_npmOperationalInternal":{"tmp":"tmp/coach-mcp_3.5.1_1788283006492_0.3979277526655083","host":"s3://npm-registry-packages-npm-production"}},"3.5.2":{"name":"@trainheroic-unofficial/coach-mcp","version":"3.5.2","license":"MIT","_id":"@trainheroic-unofficial/coach-mcp@3.5.2","maintainers":[{"name":"alanripple","email":"alan.mit@gmail.com"}],"bin":{"trainheroic-coach-mcp":"./dist/server.mjs"},"dist":{"shasum":"fb9883da48ef0c3f90da53252011ef4f03c0801f","tarball":"https://registry.npmjs.org/@trainheroic-unofficial/coach-mcp/-/coach-mcp-3.5.2.tgz","fileCount":4,"integrity":"sha512-CX/836l7WTo8EAQ3i1fCkhMuqh5dxoCXtykJiCB5XDsTaENO3AeDGTLL2wn3y6POkNM1+TdCo06brs2v20NSJQ==","signatures":[{"sig":"MEUCIA1xcPhnY5ahQpMQDQJShEEQHKq48djZOow3tNedV3dgAiEAhdPQuCA42LuyC7AYgnpiCbOZJeb9oilLPBughg9Cozs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@trainheroic-unofficial%2fcoach-mcp@3.5.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":214551},"type":"module","scripts":{"test":"vitest run --passWithNoTests","build":"tsdown","start":"tsx src/server.ts","inspect":"npx @modelcontextprotocol/inspector -e TRAINHEROIC_EMAIL=\"$TRAINHEROIC_EMAIL\" -e TRAINHEROIC_PASSWORD=\"$TRAINHEROIC_PASSWORD\" tsx src/server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:117703bc-f2fc-4bca-951a-5a582e0ad02c"}},"repository":{"url":"https://github.com/alandotcom/trainheroic-unofficial.git","type":"git","directory":"packages/coach-mcp"},"description":"Local single-user MCP server for a TrainHeroic coach. No database, no Cloudflare deps.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"^4.4.3","@trainheroic-unofficial/js":"3.5.2","@modelcontextprotocol/server":"2.0.0","@trainheroic-unofficial/core":"3.5.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","tsdown":"^0.22.14","vitest":"^4.1.11","typescript":"^7.0.2","@types/node":"^26.3.0"},"_npmOperationalInternal":{"tmp":"tmp/coach-mcp_3.5.2_1788377845697_0.15618713258235872","host":"s3://npm-registry-packages-npm-production"}},"3.6.0":{"name":"@trainheroic-unofficial/coach-mcp","version":"3.6.0","license":"MIT","_id":"@trainheroic-unofficial/coach-mcp@3.6.0","maintainers":[{"name":"alanripple","email":"alan.mit@gmail.com"}],"bin":{"trainheroic-coach-mcp":"./dist/server.mjs"},"dist":{"shasum":"9dc1c408897b27802c4fcb1ca4fc1a813df8a6e9","tarball":"https://registry.npmjs.org/@trainheroic-unofficial/coach-mcp/-/coach-mcp-3.6.0.tgz","fileCount":4,"integrity":"sha512-N8p5foiqReZHN0mRIZUhI/TlRU7BgIPcB12klRUNFCXs6u2sl/ItDp8gnO09gCRkYxujIuD4vzgBEboSKwlOgg==","signatures":[{"sig":"MEUCIQDGn3LhAlsT8ia+ehwx8Hah9Yq+mbk08o5H2zWIbA7SJgIgVCUh+MheMpUxmcV/sbK4WfYu84r7MQVsXrCa9Vg0b78=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@trainheroic-unofficial%2fcoach-mcp@3.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":220255},"type":"module","scripts":{"test":"vitest run --passWithNoTests","build":"tsdown","start":"tsx src/server.ts","inspect":"npx @modelcontextprotocol/inspector -e TRAINHEROIC_EMAIL=\"$TRAINHEROIC_EMAIL\" -e TRAINHEROIC_PASSWORD=\"$TRAINHEROIC_PASSWORD\" tsx src/server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:117703bc-f2fc-4bca-951a-5a582e0ad02c"}},"repository":{"url":"https://github.com/alandotcom/trainheroic-unofficial.git","type":"git","directory":"packages/coach-mcp"},"description":"Local single-user MCP server for a TrainHeroic coach. No database, no Cloudflare deps.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"zod":"^4.4.3","@trainheroic-unofficial/js":"3.6.0","@modelcontextprotocol/server":"2.0.0","@trainheroic-unofficial/core":"3.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","tsdown":"^0.22.14","vitest":"^4.1.11","typescript":"^7.0.2","@types/node":"^26.3.0"},"_npmOperationalInternal":{"tmp":"tmp/coach-mcp_3.6.0_1788764515731_0.4171731127589584","host":"s3://npm-registry-packages-npm-production"}},"3.7.1":{"name":"@trainheroic-unofficial/coach-mcp","version":"3.7.1","license":"MIT","_id":"@trainheroic-unofficial/coach-mcp@3.7.1","maintainers":[{"name":"alanripple","email":"alan.mit@gmail.com"}],"bin":{"trainheroic-coach-mcp":"./dist/server.mjs"},"dist":{"shasum":"559a99f91245c4e1a069cf28c02ea19a3c461dac","tarball":"https://registry.npmjs.org/@trainheroic-unofficial/coach-mcp/-/coach-mcp-3.7.1.tgz","fileCount":4,"integrity":"sha512-9KXt9WIbOU8lgFACQx/piIXLPJwRrsB1wdjpetMmM/7IVwi301vvaH9iUuY2+7zExFhZH685Plbowk+meVtG3w==","signatures":[{"sig":"MEYCIQCZZbx7JeBE7659W/q0gsGoWHG5GyshLHM757Txoiqt0gIhAM8UR+FZI/yO09v2/1zuX3gHO+YhsEiflFadyNwjJ78u","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCWq6/m3Eg9BVdJin5eUoGdcIh21CueLvQ92JQUmlvcswIhAL5hdOI2s3lgihLX7rCMT20pFbpGrDoXWAO+bmiKlqaP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@trainheroic-unofficial%2fcoach-mcp@3.7.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":229266},"type":"module","scripts":{"test":"vitest run --passWithNoTests","build":"tsdown","start":"tsx src/server.ts","inspect":"npx @modelcontextprotocol/inspector -e TRAINHEROIC_EMAIL=\"$TRAINHEROIC_EMAIL\" -e TRAINHEROIC_PASSWORD=\"$TRAINHEROIC_PASSWORD\" tsx src/server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:117703bc-f2fc-4bca-951a-5a582e0ad02c"}},"repository":{"url":"https://github.com/alandotcom/trainheroic-unofficial.git","type":"git","directory":"packages/coach-mcp"},"description":"Local single-user MCP server for a TrainHeroic coach. No database, no Cloudflare deps.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"zod":"^4.6.3","@trainheroic-unofficial/js":"3.7.1","@modelcontextprotocol/server":"2.0.0","@trainheroic-unofficial/core":"3.7.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","tsdown":"^0.23.0","vitest":"^4.1.11","typescript":"^7.0.2","@types/node":"^26.5.1"},"_npmOperationalInternal":{"tmp":"tmp/coach-mcp_3.7.1_1789449529740_0.29425823228041925","host":"s3://npm-registry-packages-npm-production"}},"3.7.2":{"name":"@trainheroic-unofficial/coach-mcp","version":"3.7.2","license":"MIT","_id":"@trainheroic-unofficial/coach-mcp@3.7.2","maintainers":[{"name":"alanripple","email":"alan.mit@gmail.com"}],"bin":{"trainheroic-coach-mcp":"./dist/server.mjs"},"dist":{"shasum":"82db87bda65d627624dd89312c477803c72cb591","tarball":"https://registry.npmjs.org/@trainheroic-unofficial/coach-mcp/-/coach-mcp-3.7.2.tgz","fileCount":4,"integrity":"sha512-ClGIKEUWJCn/qzIecdp4Z6jXi/yZfAJ3mHb9zRJOw1Cm3MlA9C+Gj2VFnx2mENkBrtKzg2POOdkWj2X0JocwGw==","signatures":[{"sig":"MEUCIQDNcp5HtduikP9yGimgjKyDmk0EkQbV1SYE/x38dwc5fwIgZ3JuH37SLpA64am5UoJq7Yd6I/99LPKDymxQc/Dms3M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQC2pXXDwAi4e/TNauIKEeS5vjb1E4PsogaAHHEZaToJsgIhAIDq5dQvGuv7r+YtIa4sdpm4jdX/ZiVvuDYROHJSOOAy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@trainheroic-unofficial%2fcoach-mcp@3.7.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":230038},"type":"module","scripts":{"test":"vitest run --passWithNoTests","build":"tsdown","start":"tsx src/server.ts","inspect":"npx @modelcontextprotocol/inspector -e TRAINHEROIC_EMAIL=\"$TRAINHEROIC_EMAIL\" -e TRAINHEROIC_PASSWORD=\"$TRAINHEROIC_PASSWORD\" tsx src/server.ts","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:117703bc-f2fc-4bca-951a-5a582e0ad02c"}},"repository":{"url":"https://github.com/alandotcom/trainheroic-unofficial.git","type":"git","directory":"packages/coach-mcp"},"description":"Local single-user MCP server for a TrainHeroic coach. No database, no Cloudflare deps.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"zod":"^4.6.3","@trainheroic-unofficial/js":"3.7.2","@modelcontextprotocol/server":"2.0.0","@trainheroic-unofficial/core":"3.7.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","tsdown":"^0.23.0","vitest":"^4.1.11","typescript":"^7.0.2","@types/node":"^26.5.1"},"_npmOperationalInternal":{"tmp":"tmp/coach-mcp_3.7.2_1790003361854_0.11518497377703829","host":"s3://npm-registry-packages-npm-production"}},"4.0.0":{"_id":"@trainheroic-unofficial/coach-mcp@4.0.0","bin":{"trainheroic-coach-mcp":"./dist/server.mjs"},"dist":{"shasum":"8da55bf4ed1cb22699a200e0f06beaa0e46c35ea","tarball":"https://registry.npmjs.org/@trainheroic-unofficial/coach-mcp/-/coach-mcp-4.0.0.tgz","fileCount":4,"integrity":"sha512-PTASN90VpY9WmB9FY6/5oMNcitDTIw1+moe8cPcW2hXOYP0GdChe3cbjl+77tMg4JYGOZxTvv9e3BXUSjHEgug==","signatures":[{"sig":"MEQCICVeOdQwcS7kRy6wx/JyLq3fz0zpF4BKiEAKeTEQfdJTAiB59REKGKmVRJqVH0m+n5StLAD6peg/gDkorcP/vB9LEQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIHBJXqM5+z0/bgVTqpjEMtPAA9tGwrIhkDE6h30aOfdfAiBxI/Vez2BEzSoEikQm5jhz9m7n8vgnNhxpRlUFiW7mYA=="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@trainheroic-unofficial%2fcoach-mcp@4.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":234121},"name":"@trainheroic-unofficial/coach-mcp","type":"module","license":"MIT","scripts":{"test":"vitest run --passWithNoTests","build":"tsdown","start":"tsx src/server.ts","inspect":"npx @modelcontextprotocol/inspector -e TRAINHEROIC_EMAIL=\"$TRAINHEROIC_EMAIL\" -e TRAINHEROIC_PASSWORD=\"$TRAINHEROIC_PASSWORD\" tsx src/server.ts","typecheck":"tsc --noEmit"},"version":"4.0.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:117703bc-f2fc-4bca-951a-5a582e0ad02c"}},"repository":{"url":"https://github.com/alandotcom/trainheroic-unofficial.git","type":"git","directory":"packages/coach-mcp"},"description":"Local single-user MCP server for a TrainHeroic coach. No database, no Cloudflare deps.","directories":{},"maintainers":[{"name":"alanripple","email":"alan.mit@gmail.com"}],"_nodeVersion":"24.21.0","dependencies":{"zod":"^4.6.3","@trainheroic-unofficial/js":"4.0.0","@modelcontextprotocol/server":"2.0.0","@trainheroic-unofficial/core":"4.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","tsdown":"^0.23.0","vitest":"^4.1.11","typescript":"^7.0.2","@types/node":"^26.5.1"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/coach-mcp_4.0.0_1790131488876_0.479546507396158"}}},"time":{"created":"2026-06-20T17:34:45.028Z","modified":"2026-09-23T02:44:49.304Z","0.1.0":"2026-06-20T17:34:45.338Z","0.2.0":"2026-06-20T18:35:45.057Z","0.3.0":"2026-06-20T19:40:15.552Z","0.4.0":"2026-06-20T21:15:37.162Z","0.4.1":"2026-06-21T02:16:03.473Z","0.4.2":"2026-06-21T02:30:12.207Z","0.5.0":"2026-06-21T03:29:49.496Z","0.6.0":"2026-06-21T18:02:09.209Z","0.6.1":"2026-06-21T19:38:21.725Z","0.6.2":"2026-06-21T20:09:43.764Z","0.6.3":"2026-06-21T21:50:37.788Z","0.6.4":"2026-06-21T22:05:00.645Z","0.6.5":"2026-06-22T03:41:44.647Z","1.0.0":"2026-06-22T04:50:42.745Z","1.1.0":"2026-06-22T05:12:14.596Z","1.1.1":"2026-06-22T17:13:13.028Z","1.2.0":"2026-06-22T21:18:47.880Z","1.3.0":"2026-06-22T22:29:27.456Z","1.4.0":"2026-06-23T02:05:04.074Z","1.5.0":"2026-06-26T17:54:37.011Z","1.6.0":"2026-06-30T18:42:27.037Z","1.6.1":"2026-07-01T00:21:44.668Z","1.7.0":"2026-07-01T22:39:37.713Z","1.7.1":"2026-07-02T21:39:21.806Z","1.7.2":"2026-07-06T16:37:08.167Z","1.7.3":"2026-07-10T20:06:31.713Z","1.7.4":"2026-08-03T20:22:29.830Z","2.0.0":"2026-08-06T23:29:37.021Z","2.0.1":"2026-08-06T23:38:31.445Z","2.0.2":"2026-08-07T01:18:57.480Z","2.1.0":"2026-08-07T01:47:52.325Z","2.1.1":"2026-08-09T19:19:35.865Z","3.0.0":"2026-08-10T14:59:19.805Z","3.0.1":"2026-08-10T21:53:18.136Z","3.1.0":"2026-08-13T15:29:18.354Z","3.1.1":"2026-08-16T22:05:31.432Z","3.2.0":"2026-08-17T00:14:50.334Z","3.3.0":"2026-08-20T03:19:46.116Z","3.3.1":"2026-08-20T16:48:43.314Z","3.3.2":"2026-08-20T20:01:38.697Z","3.3.3":"2026-08-20T20:33:44.307Z","3.4.0":"2026-08-27T06:31:19.665Z","3.5.0":"2026-08-27T23:46:33.783Z","3.5.1":"2026-09-01T17:16:46.646Z","3.5.2":"2026-09-02T19:37:25.837Z","3.6.0":"2026-09-07T07:01:55.871Z","3.7.1":"2026-09-15T05:18:49.820Z","3.7.2":"2026-09-21T15:09:21.984Z","4.0.0":"2026-09-23T02:44:48.977Z"},"license":"MIT","repository":{"url":"https://github.com/alandotcom/trainheroic-unofficial.git","type":"git","directory":"packages/coach-mcp"},"description":"Local single-user MCP server for a TrainHeroic coach. No database, no Cloudflare deps.","maintainers":[{"name":"alanripple","email":"alan.mit@gmail.com"}],"readme":"# @trainheroic-unofficial/coach-mcp\n\nLocal single-user [MCP](https://modelcontextprotocol.io) server for a TrainHeroic coach. It exposes a [TrainHeroic](https://www.trainheroic.com) coaching account to an AI assistant (Claude Code, Claude Desktop, or any MCP client) as a set of callable tools. It runs on your machine and speaks the MCP stdio transport, so the assistant launches it as a subprocess.\n\nIt reads two environment variables, both required:\n\n- `TRAINHEROIC_EMAIL` and `TRAINHEROIC_PASSWORD`: your existing TrainHeroic login.\n\nThese are your real credentials in plaintext; the config examples below put them in a file or in shell history, so treat them as secrets. The hosted server in the [root README](../../README.md) stores credentials server-side behind OAuth if you prefer that model.\n\n---\n\n## Install\n\nNeeds Node (>= 18); the commands below fetch the package with `npx` on first run. The server\ncaches the exercise library as a JSON file under `~/.trainheroic/`.\n\n### Claude Code\n\n```bash\nclaude mcp add trainheroic \\\n  -e TRAINHEROIC_EMAIL=coach@example.com \\\n  -e TRAINHEROIC_PASSWORD=yourpassword \\\n  -- npx -y @trainheroic-unofficial/coach-mcp\n```\n\n### Claude Desktop / `.mcp.json` / other stdio clients\n\nPut this in your client's MCP config. For Claude Desktop that's `claude_desktop_config.json`\n(macOS: `~/Library/Application Support/Claude/`; Windows: `%APPDATA%\\Claude\\`); for a\nproject-scoped Claude Code setup it's `.mcp.json` at the repo root.\n\n```json\n{\n  \"mcpServers\": {\n    \"trainheroic\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@trainheroic-unofficial/coach-mcp\"],\n      \"env\": {\n        \"TRAINHEROIC_EMAIL\": \"coach@example.com\",\n        \"TRAINHEROIC_PASSWORD\": \"yourpassword\"\n      }\n    }\n  }\n}\n```\n\nAfter it connects, ask the assistant something like \"list my athletes\" to confirm the tools are available.\n\n---\n\n## Tools\n\nThe full coaching surface, grouped by area:\n\n- **Reads**: profile, athletes, teams, programs, notifications, analytics catalog\n- **Athletes**: invite, archive, restore\n- **Teams**: create, rename, delete, manage join codes\n- **Analytics**: readiness, 1RM and working-max history, training summary, compliance, lift progress\n- **Exercise library**: resolve, search, get, sync, create, forget, stats\n- **Workouts**: build a draft, read it back, publish, unpublish, copy, save as template, remove\n- **Messaging**: list streams, read, draft, send, delete\n\nA TrainHeroic coach account also has its own athlete-side data, so the athlete training tools (history, workouts, PRs, working maxes) are available here too. Destructive or athlete-facing actions (publish, remove, send, delete, archive) confirm before they run: the server asks the client to confirm, falling back to an explicit `confirm: true` tool argument when the client can't prompt.\n\nThe individual tool names the assistant calls are snake_case (e.g. `list_athletes`, `exercise_resolve`, `workout_publish`); their parameters are described in each tool's schema, which your MCP client surfaces.\n\n---\n\n## Develop\n\nRun `pnpm install` once at the repo root (Node >= 24, pnpm 11), then from this package. The `pnpm start`/`pnpm inspect` commands need `TRAINHEROIC_EMAIL` and `TRAINHEROIC_PASSWORD` exported in your shell. \"MCP Inspector\" is the [official MCP debugging UI](https://github.com/modelcontextprotocol/inspector).\n\n```bash\npnpm start       # run from source\npnpm inspect     # MCP Inspector UI against the source server\npnpm build       # tsdown → dist/server.mjs\npnpm typecheck\npnpm test\n```\n","readmeFilename":""}