{"_id":"@opentrain-ai/mcp","_rev":"27-bc2f0048c8938e5ece1f3177612f93fe","name":"@opentrain-ai/mcp","dist-tags":{"latest":"0.27.4","next":"0.27.3"},"versions":{"0.1.0":{"name":"@opentrain-ai/mcp","version":"0.1.0","keywords":["opentrain","mcp","model-context-protocol","agents","hiring"],"license":"MIT","_id":"@opentrain-ai/mcp@0.1.0","maintainers":[{"name":"weston-dot","email":"support@opentrain.ai"}],"homepage":"https://app.opentrain.ai","bugs":{"url":"https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo/issues"},"bin":{"opentrain-mcp":"dist/index.js"},"dist":{"shasum":"abf551b6f3e196d85926fb3400d0059826e16ab9","tarball":"https://registry.npmjs.org/@opentrain-ai/mcp/-/mcp-0.1.0.tgz","fileCount":8,"integrity":"sha512-ZXd2Yx8s1sWffBvUn+mQpipSRTO+/Bby/CnL3JaNZIGGX/7+LZm37IUXmHb+fFtj9FWTPG8mXSuObhwEuLoP1A==","signatures":[{"sig":"MEQCIHpIqvJLp/pd9TN+8MZflRhrrXxrHdO6uXKT8HaTVT79AiAv2vdaXKIg5sn7TlNKmnnWUh0YiD3wUflzFSuw7XG0MA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":93938},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.17"},"scripts":{"test":"echo 'no package tests yet'","build":"tsc -p tsconfig.json && chmod +x dist/index.js","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"weston-dot","email":"support@opentrain.ai"},"repository":{"url":"git+https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo.git","type":"git","directory":"packages/opentrain-mcp"},"_npmVersion":"10.9.7","description":"OpenTrain MCP server: gives MCP-capable agents tools to register an OpenTrain account, draft and publish jobs, review proposals, hire freelancers, send messages, and manage teams.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^3.25.76","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^22.19.20"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.1.0_1781093972504_0.9094810118953089","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@opentrain-ai/mcp","version":"0.2.0","keywords":["opentrain","mcp","model-context-protocol","agents","hiring"],"license":"MIT","_id":"@opentrain-ai/mcp@0.2.0","maintainers":[{"name":"weston-dot","email":"support@opentrain.ai"}],"homepage":"https://app.opentrain.ai","bugs":{"url":"https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo/issues"},"bin":{"opentrain-mcp":"dist/index.js"},"dist":{"shasum":"67c1889c6c63e4bc7cead433ae068e634fd01809","tarball":"https://registry.npmjs.org/@opentrain-ai/mcp/-/mcp-0.2.0.tgz","fileCount":8,"integrity":"sha512-gPqvxKHKDwSe8kwcEAx8Safjr4dMr7kBx8ggbIiQa6lunaA6W6vk/SV13cn4aoL84H9tRJAaMoX+j/xT+hfQYQ==","signatures":[{"sig":"MEYCIQDOHTB7X9lRf0WFnOxn9kOquh10xEDB4DoFnZenWq3jQwIhAMyr8UMJOh9EnDiaeFpR3le8TFSZK/sac593775DKgF8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":175219},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.17"},"scripts":{"test":"echo 'no package tests yet'","build":"tsc -p tsconfig.json && chmod +x dist/index.js","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"weston-dot","email":"support@opentrain.ai"},"repository":{"url":"git+https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo.git","type":"git","directory":"packages/opentrain-mcp"},"_npmVersion":"10.9.7","description":"OpenTrain MCP server: gives MCP-capable agents tools to register an OpenTrain account, draft and publish jobs, review proposals, hire freelancers, manage contracts and milestones, send messages, poll updates or register webhooks, and manage credits and te","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^3.25.76","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^22.19.20"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.2.0_1781285757338_0.10706694018626228","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@opentrain-ai/mcp","version":"0.2.1","keywords":["opentrain","mcp","model-context-protocol","agents","hiring","data labeling","data annotation","rlhf","human evaluation","preference data","hire labelers","ai training data","human-in-the-loop"],"author":{"url":"https://www.opentrain.ai","name":"OpenTrain AI"},"license":"MIT","_id":"@opentrain-ai/mcp@0.2.1","maintainers":[{"name":"weston-dot","email":"support@opentrain.ai"}],"homepage":"https://www.opentrain.ai/docs/developers/overview","bugs":{"url":"https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo/issues"},"bin":{"opentrain-mcp":"dist/index.js"},"dist":{"shasum":"eaea0ed3ae16c75d446a01e7887ea6fa60d772ef","tarball":"https://registry.npmjs.org/@opentrain-ai/mcp/-/mcp-0.2.1.tgz","fileCount":9,"integrity":"sha512-g43H5kxRl0+NaFzs3lBTzUxsLygOvp1555P7vNrouQfnodBk/VZsSCL8ak2Pq9P2oF3Oq/BLxhjwA6nmSwsDqQ==","signatures":[{"sig":"MEYCIQCRmHkOmTmbIeY4pU/d3mTzpbeqHhubAYRFe0CUqwX4SAIhALjmeoYgY8PQkAduyiItG7cjroTo9vhdVuNjWGssl1N9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":176536},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.17"},"mcpName":"io.github.opentrain-ai/opentrain","scripts":{"test":"echo 'no package tests yet'","build":"tsc -p tsconfig.json && chmod +x dist/index.js","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"weston-dot","email":"support@opentrain.ai"},"repository":{"url":"git+https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo.git","type":"git","directory":"packages/opentrain-mcp"},"_npmVersion":"10.9.7","description":"OpenTrain MCP server: gives MCP-capable agents tools to register an OpenTrain account, draft and publish jobs, review proposals, hire freelancers, manage contracts and milestones, send messages, poll updates or register webhooks, and manage credits and te","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^3.25.76","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^22.19.20"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.2.1_1781514823327_0.40796808225090464","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@opentrain-ai/mcp","version":"0.2.2","keywords":["opentrain","mcp","model-context-protocol","agents","hiring","data labeling","data annotation","rlhf","human evaluation","preference data","hire labelers","ai training data","human-in-the-loop"],"author":{"url":"https://www.opentrain.ai","name":"OpenTrain AI"},"license":"MIT","_id":"@opentrain-ai/mcp@0.2.2","maintainers":[{"name":"weston-dot","email":"support@opentrain.ai"}],"homepage":"https://www.opentrain.ai/docs/developers/overview","bugs":{"url":"https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo/issues"},"bin":{"opentrain-mcp":"dist/index.js"},"dist":{"shasum":"1af28c49b981305367bf8434e6a32e2ca7536c36","tarball":"https://registry.npmjs.org/@opentrain-ai/mcp/-/mcp-0.2.2.tgz","fileCount":9,"integrity":"sha512-/2hMc3l5UttYfpdyr1Xn7tQtdrKMyBs5Kh2DsdQbEcZJpXqw8yHp8bvbZSFCo8MSJB9hj4UrgtRkug03x27LHg==","signatures":[{"sig":"MEUCIQD5q99TLfn83xBmR3eQO8Gn0EYdFiIySBlcAxaoUwJHZQIgJn8en9dqtOqgm8vGx4fItYb2q4Xs9T7vyrc3nk3WM+4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":176722},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.17"},"mcpName":"io.github.OpenTrain-AI/opentrain","scripts":{"test":"echo 'no package tests yet'","build":"tsc -p tsconfig.json && chmod +x dist/index.js","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"weston-dot","email":"support@opentrain.ai"},"repository":{"url":"git+https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo.git","type":"git","directory":"packages/opentrain-mcp"},"_npmVersion":"10.9.7","description":"OpenTrain MCP server: gives MCP-capable agents tools to register an OpenTrain account, draft and publish jobs, review proposals, hire freelancers, manage contracts and milestones, send messages, poll updates or register webhooks, and manage credits and te","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^3.25.76","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^22.19.20"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.2.2_1781517249234_0.2916253303326102","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@opentrain-ai/mcp","version":"0.2.3","keywords":["opentrain","mcp","model-context-protocol","agents","hiring","data labeling","data annotation","rlhf","human evaluation","preference data","hire labelers","ai training data","human-in-the-loop"],"author":{"url":"https://www.opentrain.ai","name":"OpenTrain AI"},"license":"MIT","_id":"@opentrain-ai/mcp@0.2.3","maintainers":[{"name":"weston-dot","email":"support@opentrain.ai"}],"homepage":"https://www.opentrain.ai/docs/developers/overview","bugs":{"url":"https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo/issues"},"bin":{"opentrain-mcp":"dist/index.js"},"dist":{"shasum":"9b8fb481f5707c92601a56e18cf49ffd0760ac14","tarball":"https://registry.npmjs.org/@opentrain-ai/mcp/-/mcp-0.2.3.tgz","fileCount":11,"integrity":"sha512-lrdpNXBjOqo3xjz8Wfi+13pspjsXhD/VhZZtKxBAOKpdx8fUn+OjzZtD1+uJLPANB+n64H2PMgRq8yor66fYMQ==","signatures":[{"sig":"MEYCIQDxNMrFhBurScS+xrNgPdL5/AYLKuv2vIHbHtAZ32RHewIhAJVep/2hCSrveoNH2h3GFvhSLtus2aAnMbCA3yi2W0WJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":181820},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.17"},"gitHead":"af44af152650691820eade57f78e8144372fcf87","mcpName":"io.github.OpenTrain-AI/opentrain","scripts":{"lint":"tsc --noEmit --pretty false","test":"tsx --test test/*.test.ts","build":"tsc -p tsconfig.json && chmod +x dist/index.js","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"weston-dot","email":"support@opentrain.ai"},"repository":{"url":"git+https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo.git","type":"git","directory":"packages/opentrain-mcp"},"_npmVersion":"11.16.0","description":"OpenTrain MCP server: gives MCP-capable agents tools to register an OpenTrain account, draft and publish jobs, review proposals, hire freelancers, manage contracts and milestones, send messages, poll updates or register webhooks, and manage credits and te","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^3.25.76","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^22.19.20"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.2.3_1782802724828_0.6701735563029507","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@opentrain-ai/mcp","version":"0.3.0","keywords":["opentrain","mcp","model-context-protocol","agents","hiring","data labeling","data annotation","rlhf","human evaluation","preference data","hire labelers","ai training data","human-in-the-loop","instruction manuals","annotation guidelines"],"author":{"url":"https://www.opentrain.ai","name":"OpenTrain AI"},"license":"MIT","_id":"@opentrain-ai/mcp@0.3.0","maintainers":[{"name":"weston-dot","email":"support@opentrain.ai"}],"homepage":"https://www.opentrain.ai/docs/developers/overview","bugs":{"url":"https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo/issues"},"bin":{"opentrain-mcp":"dist/index.js"},"dist":{"shasum":"a244e96cf6166275402a0648d9ba6ff4db88fc13","tarball":"https://registry.npmjs.org/@opentrain-ai/mcp/-/mcp-0.3.0.tgz","fileCount":17,"integrity":"sha512-36Xr2q8GcBRLP3CsxB9bc4DtQVDD17TzcwJ50eKSuYOcmksGHa3oAxMeHEx+Fz23UJfLV5nBWy2ZDbXgo1yDsw==","signatures":[{"sig":"MEUCIQC5Q4IrCoNzCMathaIgoUwpj291Gp7GI6nrb3RZfwefrAIgQgWudeKu0pVL+6CgrnuEASY3V6SkFEYPF8TjupmGfsU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":726348},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.17"},"mcpName":"io.github.OpenTrain-AI/opentrain","scripts":{"lint":"tsc --noEmit --pretty false","test":"tsx --test test/*.test.ts","build":"tsc -p tsconfig.json && chmod +x dist/index.js","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"weston-dot","email":"support@opentrain.ai"},"repository":{"url":"git+https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo.git","type":"git","directory":"packages/opentrain-mcp"},"_npmVersion":"10.9.8","description":"OpenTrain MCP server: gives MCP-capable agents tools to register an OpenTrain account, draft and publish jobs, review proposals, hire freelancers, manage contracts and milestones, send messages, poll updates or register webhooks, manage credits and teams,","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^3.25.76","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^22.19.20","@opentrain/contracts":"file:../contracts"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.3.0_1787568222937_0.49588482589092076","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@opentrain-ai/mcp","version":"0.4.0","keywords":["opentrain","mcp","model-context-protocol","agents","hiring","data labeling","data annotation","rlhf","human evaluation","preference data","hire labelers","ai training data","human-in-the-loop","job instructions","annotation guidelines"],"author":{"url":"https://www.opentrain.ai","name":"OpenTrain AI"},"license":"MIT","_id":"@opentrain-ai/mcp@0.4.0","maintainers":[{"name":"weston-dot","email":"support@opentrain.ai"}],"homepage":"https://www.opentrain.ai/docs/developers/overview","bugs":{"url":"https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo/issues"},"bin":{"opentrain-mcp":"dist/index.js"},"dist":{"shasum":"892b2eb2d83b997c40edd2ec501132fb91a01e82","tarball":"https://registry.npmjs.org/@opentrain-ai/mcp/-/mcp-0.4.0.tgz","fileCount":17,"integrity":"sha512-M8qd3cziSz0oAaI8a3dPiQmsIpA0xGPeET1qgqiabw3uaV4vtT9r5feHj1Zp0gi+IMt+H9jDSKQHysd68F7nlg==","signatures":[{"sig":"MEQCIHN5iQBb5Le0XWMWK+cGWyueeEfrf6fIkhcegkhm2lBfAiA9uGaxCKSyn/E8nZPNUhtX/nHATPZROo5B8/+HMGlQSw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":708954},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.17"},"mcpName":"io.github.OpenTrain-AI/opentrain","scripts":{"lint":"tsc --noEmit --pretty false","test":"tsx --test test/*.test.ts","build":"tsc -p tsconfig.json && chmod +x dist/index.js","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"weston-dot","email":"support@opentrain.ai"},"repository":{"url":"git+https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo.git","type":"git","directory":"packages/opentrain-mcp"},"_npmVersion":"10.9.8","description":"OpenTrain MCP server for agent-first jobs, people, work, messaging, payments, and each job's canonical Instructions tab.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^3.25.76","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^22.19.20","@opentrain/contracts":"file:../contracts"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.4.0_1787619587056_0.07831974892872151","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@opentrain-ai/mcp","version":"0.5.0","keywords":["opentrain","mcp","model-context-protocol","agents","hiring","data labeling","data annotation","rlhf","human evaluation","preference data","hire labelers","ai training data","human-in-the-loop","job instructions","annotation guidelines"],"author":{"url":"https://www.opentrain.ai","name":"OpenTrain AI"},"license":"MIT","_id":"@opentrain-ai/mcp@0.5.0","maintainers":[{"name":"weston-dot","email":"support@opentrain.ai"}],"homepage":"https://www.opentrain.ai/docs/developers/overview","bugs":{"url":"https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo/issues"},"bin":{"opentrain-mcp":"dist/index.js"},"dist":{"shasum":"062babcea6bac3c134e1faaa27b21f782a29b59c","tarball":"https://registry.npmjs.org/@opentrain-ai/mcp/-/mcp-0.5.0.tgz","fileCount":17,"integrity":"sha512-1Hi2WDG6Yqjk32uYz3fZjwDiBa/hSd0WUx6u6mYYS3/ee0Czk0B3NDT1b7FCwNjVgY2EdDnsS4KR1JfS+n7zyA==","signatures":[{"sig":"MEQCIFEUAYoUt24RB0Gnva8+zAhskwugjWkIJ5w4pg7UtbdBAiBP4ed3hdU/bOWmZeRXVrPMD2ZuKJPUPMkOtIDX7YF5fA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":719326},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.17"},"mcpName":"io.github.OpenTrain-AI/opentrain","scripts":{"lint":"tsc --noEmit --pretty false","test":"tsx --test test/*.test.ts","build":"tsc -p tsconfig.json && chmod +x dist/index.js","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"weston-dot","email":"support@opentrain.ai"},"repository":{"url":"git+https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo.git","type":"git","directory":"packages/opentrain-mcp"},"_npmVersion":"10.9.8","description":"OpenTrain MCP server for agent-first jobs, people, work, messaging, payments, and each job's canonical Instructions tab.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^3.25.76","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^22.19.20","@opentrain/contracts":"file:../contracts"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.5.0_1787641446332_0.30324696091194037","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@opentrain-ai/mcp","version":"0.5.1","keywords":["opentrain","mcp","model-context-protocol","agents","hiring","data labeling","data annotation","rlhf","human evaluation","preference data","hire labelers","ai training data","human-in-the-loop","job instructions","annotation guidelines"],"author":{"url":"https://www.opentrain.ai","name":"OpenTrain AI"},"license":"MIT","_id":"@opentrain-ai/mcp@0.5.1","maintainers":[{"name":"weston-dot","email":"support@opentrain.ai"}],"homepage":"https://www.opentrain.ai/docs/developers/overview","bugs":{"url":"https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo/issues"},"bin":{"opentrain-mcp":"dist/index.js"},"dist":{"shasum":"d5e1539ae9ab7900b16dafbe0faf842459a45433","tarball":"https://registry.npmjs.org/@opentrain-ai/mcp/-/mcp-0.5.1.tgz","fileCount":19,"integrity":"sha512-ntiyJXS7fJ1Ahie94WZ5h6PZh9WN4x08Z+9MK8rcVAL62fvZx3jQkOoOJ1NBZ7Kc3NN4V1LRre5vhe6aqoLHRw==","signatures":[{"sig":"MEYCIQC+8cbp2+noJXH8ana1vqPiBYLVlO8TKEodyK9y3Vzy5gIhALf3WRlhi/ezQXuEQdULSzU13dbrLb0GUHoHL/qMXH6E","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":739331},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.17"},"mcpName":"io.github.OpenTrain-AI/opentrain","scripts":{"lint":"tsc --noEmit --pretty false","test":"tsx --test test/*.test.ts","build":"tsc -p tsconfig.json && chmod +x dist/index.js","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"weston-dot","email":"support@opentrain.ai"},"repository":{"url":"git+https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo.git","type":"git","directory":"packages/opentrain-mcp"},"_npmVersion":"10.9.8","description":"OpenTrain MCP server for agent-first jobs, people, work, messaging, payments, and each job's canonical Instructions tab.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^3.25.76","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^22.19.20","@opentrain/contracts":"file:../contracts"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.5.1_1787741151829_0.985185984372341","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"@opentrain-ai/mcp","version":"0.5.2","keywords":["opentrain","mcp","model-context-protocol","agents","hiring","data labeling","data annotation","rlhf","human evaluation","preference data","hire labelers","ai training data","human-in-the-loop","job instructions","annotation guidelines"],"author":{"url":"https://www.opentrain.ai","name":"OpenTrain AI"},"license":"MIT","_id":"@opentrain-ai/mcp@0.5.2","maintainers":[{"name":"weston-dot","email":"support@opentrain.ai"}],"homepage":"https://www.opentrain.ai/docs/developers/overview","bugs":{"url":"https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo/issues"},"bin":{"opentrain-mcp":"dist/index.js"},"dist":{"shasum":"e400a11425f8ae09970a7bf3c06ea8358a90a78b","tarball":"https://registry.npmjs.org/@opentrain-ai/mcp/-/mcp-0.5.2.tgz","fileCount":19,"integrity":"sha512-Lhkr4owj3O4Vcw1jWNoHEu5MX59UA1WXvos33yK0ljxbw7kgnynCv1fftpduYH0Hz8EDOLoVDXLObX/cC6QE2g==","signatures":[{"sig":"MEYCIQCvZdq4/pkh1bQde96okdvNy2YYKFt0tMWwaBZcv3fKsAIhANNUSpTQEc61ZFSdHt2LZXQLrpvYT09R1Ntcwe0044Nc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":777239},"main":"./dist/index.js","type":"module","_from":"file:/tmp/opentrain-npm-release-artifacts.SZsPac/opentrain-ai-mcp-0.5.2.tgz","types":"./dist/index.d.ts","engines":{"node":">=18.17"},"mcpName":"io.github.OpenTrain-AI/opentrain","scripts":{"lint":"tsc --noEmit --pretty false","test":"tsx --test test/*.test.ts","build":"tsc -p tsconfig.json && chmod +x dist/index.js","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"weston-dot","email":"support@opentrain.ai"},"_resolved":"/tmp/opentrain-npm-release-artifacts.SZsPac/opentrain-ai-mcp-0.5.2.tgz","_integrity":"sha512-Lhkr4owj3O4Vcw1jWNoHEu5MX59UA1WXvos33yK0ljxbw7kgnynCv1fftpduYH0Hz8EDOLoVDXLObX/cC6QE2g==","repository":{"url":"git+https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo.git","type":"git","directory":"packages/opentrain-mcp"},"_npmVersion":"10.9.8","description":"OpenTrain MCP server for agent-first jobs, people, work, messaging, payments, and each job's canonical Instructions tab.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^3.25.76","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^22.19.20","@opentrain/contracts":"file:../contracts"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.5.2_1787797744361_0.47352385742579894","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@opentrain-ai/mcp","version":"0.7.0","keywords":["opentrain","mcp","model-context-protocol","agents","hiring","data labeling","data annotation","rlhf","human evaluation","preference data","hire labelers","ai training data","human-in-the-loop","job instructions","annotation guidelines"],"author":{"url":"https://www.opentrain.ai","name":"OpenTrain AI"},"license":"MIT","_id":"@opentrain-ai/mcp@0.7.0","maintainers":[{"name":"weston-dot","email":"support@opentrain.ai"}],"homepage":"https://www.opentrain.ai/docs/developers/overview","bugs":{"url":"https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo/issues"},"bin":{"opentrain-mcp":"dist/index.js"},"dist":{"shasum":"8a2b68870a9cad3c1b49bcef9aa3fccc2c81368f","tarball":"https://registry.npmjs.org/@opentrain-ai/mcp/-/mcp-0.7.0.tgz","fileCount":19,"integrity":"sha512-hXUVm0AnIRmhBK59xNQf34eL5MXCczblXCKOS/y8aB/GFGRDnyZmbxFTFljsscSOcTi3WkcT312LdpNmBUDtnQ==","signatures":[{"sig":"MEUCICEERD7pu+cKh38Am8HxmOFD23d5blladMIXWKbijnLcAiEA5T+O+c02yY4NZEGu7m2lphNMdr16uKlpBiBZTcImzqg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":810759},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.17"},"mcpName":"io.github.OpenTrain-AI/opentrain","scripts":{"lint":"tsc --noEmit --pretty false","test":"tsx --test test/*.test.ts","build":"tsc -p tsconfig.json && chmod +x dist/index.js","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"weston-dot","email":"support@opentrain.ai"},"repository":{"url":"git+https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo.git","type":"git","directory":"packages/opentrain-mcp"},"_npmVersion":"12.0.2","description":"OpenTrain MCP server for agent-first jobs, people, work, messaging, payments, and each job's canonical Instructions tab.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^3.25.76","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^22.19.20","@opentrain/contracts":"file:../contracts"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.7.0_1787862749575_0.778327648894809","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@opentrain-ai/mcp","version":"0.8.0","keywords":["opentrain","mcp","model-context-protocol","agents","hiring","data labeling","data annotation","rlhf","human evaluation","preference data","hire labelers","ai training data","human-in-the-loop","job instructions","annotation guidelines"],"author":{"url":"https://www.opentrain.ai","name":"OpenTrain AI"},"license":"MIT","_id":"@opentrain-ai/mcp@0.8.0","maintainers":[{"name":"weston-dot","email":"support@opentrain.ai"}],"homepage":"https://www.opentrain.ai/docs/developers/overview","bugs":{"url":"https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo/issues"},"bin":{"opentrain-mcp":"dist/index.js"},"dist":{"shasum":"b5088232be044fe45b4df63f3aeabe262fbe8430","tarball":"https://registry.npmjs.org/@opentrain-ai/mcp/-/mcp-0.8.0.tgz","fileCount":27,"integrity":"sha512-ZZTnojl74r7W63i2HJcXeFqKuBG7JblC0bnf49J6f52zHHDS6MAhiDFAZnzlQuYYtCI4JTwCQfAIwQ4531kf6w==","signatures":[{"sig":"MEQCIGoajWzo8CWHmeLwPNX2IVGX/REj0sElbggwGYSfXrDNAiASBQ/cbwtnzfyIMK33mPl1p6ZaBpl8zruOJPZOZra4kQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":891778},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.17"},"mcpName":"io.github.OpenTrain-AI/opentrain","scripts":{"lint":"tsc --noEmit --pretty false","test":"tsx --test test/*.test.ts","build":"tsc -p tsconfig.json && chmod +x dist/index.js","typecheck":"tsc --noEmit","smoke:package":"npm run build && node test/published-tarball-smoke.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"weston-dot","email":"support@opentrain.ai"},"repository":{"url":"git+https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo.git","type":"git","directory":"packages/opentrain-mcp"},"_npmVersion":"10.9.8","description":"OpenTrain MCP server for agent-first jobs, people, work, messaging, payments, and each job's canonical Instructions tab.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^3.25.76","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^22.19.20","@opentrain/contracts":"file:../contracts"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.8.0_1787978413357_0.19335120569228859","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@opentrain-ai/mcp","version":"0.9.0","keywords":["opentrain","mcp","model-context-protocol","agents","hiring","data labeling","data annotation","rlhf","human evaluation","preference data","hire labelers","ai training data","human-in-the-loop","job instructions","annotation guidelines"],"author":{"url":"https://www.opentrain.ai","name":"OpenTrain AI"},"license":"MIT","_id":"@opentrain-ai/mcp@0.9.0","maintainers":[{"name":"weston-dot","email":"support@opentrain.ai"}],"homepage":"https://www.opentrain.ai/docs/developers/overview","bugs":{"url":"https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo/issues"},"bin":{"opentrain-mcp":"dist/index.js"},"dist":{"shasum":"5fefbb20c1b1e98143f9ad2f09b8c85fab8cb6ac","tarball":"https://registry.npmjs.org/@opentrain-ai/mcp/-/mcp-0.9.0.tgz","fileCount":29,"integrity":"sha512-VtukRjlP6UBvUSahe/yA4CMVGYtgK3zZCLrSQuZzDcPStH99zjiB/QQHlVA1Rv095KiXn8xsW8vZSV1gjVeclA==","signatures":[{"sig":"MEUCIQCncdchAu42HvXTt74y4rG67JkW6zkUsvU/i38ogI5P9gIgZcxxqHAeg+o53hh9JSeS30mKHXGt5QV4amKUgv+hSX8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":934359},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.17"},"mcpName":"io.github.OpenTrain-AI/opentrain","scripts":{"lint":"tsc --noEmit --pretty false","test":"tsx --test test/*.test.ts","build":"tsc -p tsconfig.json && chmod +x dist/index.js","typecheck":"tsc --noEmit","smoke:package":"npm run build && node test/published-tarball-smoke.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"weston-dot","email":"support@opentrain.ai"},"repository":{"url":"git+https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo.git","type":"git","directory":"packages/opentrain-mcp"},"_npmVersion":"10.9.8","description":"OpenTrain MCP server for agent-first jobs, people, work, messaging, payments, and each job's canonical Instructions tab.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^3.25.76","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^22.19.20","@opentrain/contracts":"file:../contracts"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.9.0_1788049384417_0.7542723061650292","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"@opentrain-ai/mcp","version":"0.10.0","keywords":["opentrain","mcp","model-context-protocol","agents","hiring","data labeling","data annotation","rlhf","human evaluation","preference data","hire labelers","ai training data","human-in-the-loop","job instructions","annotation guidelines"],"author":{"url":"https://www.opentrain.ai","name":"OpenTrain AI"},"license":"MIT","_id":"@opentrain-ai/mcp@0.10.0","maintainers":[{"name":"weston-dot","email":"support@opentrain.ai"}],"homepage":"https://www.opentrain.ai/docs/developers/overview","bugs":{"url":"https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo/issues"},"bin":{"opentrain-mcp":"dist/index.js"},"dist":{"shasum":"b4ee6ba62922ff6f3443cd74f327084a2b98936b","tarball":"https://registry.npmjs.org/@opentrain-ai/mcp/-/mcp-0.10.0.tgz","fileCount":33,"integrity":"sha512-3SbtOr++0/oQHL3hHr31dzdi29XGTbjXxPf5srRm273ccv/2MStrXzcAgHcJHAUyWGaxO3+muxxarreT+a7n4Q==","signatures":[{"sig":"MEUCIFFyw+qMZCnoP6xMzNzUfaBXIf4nEWezuFHA0sc8PNxYAiEAom2GR9hpFzwNoOFznZo9nQzGT4rm4YQQWpFmdZfwmoo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1152664},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.17"},"mcpName":"io.github.OpenTrain-AI/opentrain","scripts":{"lint":"tsc --noEmit --pretty false","test":"tsx --test test/*.test.ts","build":"tsc -p tsconfig.json && chmod +x dist/index.js","typecheck":"tsc --noEmit","smoke:package":"npm run build && node test/published-tarball-smoke.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"weston-dot","email":"support@opentrain.ai"},"repository":{"url":"git+https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo.git","type":"git","directory":"packages/opentrain-mcp"},"_npmVersion":"10.9.8","description":"OpenTrain MCP server for agent-first LMS retraining, jobs, people, work, messaging, payments, and Instructions.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^3.25.76","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^22.19.20","@opentrain/contracts":"file:../contracts"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.10.0_1788055221859_0.7608424641749842","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"@opentrain-ai/mcp","version":"0.14.0","keywords":["opentrain","mcp","model-context-protocol","agents","hiring","data labeling","data annotation","rlhf","human evaluation","preference data","hire labelers","ai training data","human-in-the-loop","job instructions","annotation guidelines"],"author":{"url":"https://www.opentrain.ai","name":"OpenTrain AI"},"license":"MIT","_id":"@opentrain-ai/mcp@0.14.0","maintainers":[{"name":"weston-dot","email":"support@opentrain.ai"}],"homepage":"https://www.opentrain.ai/docs/developers/overview","bugs":{"url":"https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo/issues"},"bin":{"opentrain-mcp":"dist/index.js"},"dist":{"shasum":"70e43025a02d0769f931a2581a0ca10045ffad62","tarball":"https://registry.npmjs.org/@opentrain-ai/mcp/-/mcp-0.14.0.tgz","fileCount":49,"integrity":"sha512-/nFpRdAY8iUGIdEFpvxIToo28I4q4nMqBgEXsOEDj6zbmvi2lAOjhGqV0Y3TawOKBY1v24fGxUOYOqtewi1UWw==","signatures":[{"sig":"MEUCICShaPHoVi9RJcNh2+d38+2ArTMwb9wOrZjwz4a4ByjsAiEA1lnmtl4oBGcX5VZhix2Y6foSob2KLsHswwjOnu8V+z4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3938358},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.17"},"mcpName":"io.github.OpenTrain-AI/opentrain","scripts":{"lint":"tsc --noEmit --pretty false","test":"tsx --test test/*.test.ts","build":"tsc -p tsconfig.json && chmod +x dist/index.js","typecheck":"tsc --noEmit","smoke:package":"npm run build && node test/published-tarball-smoke.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"weston-dot","email":"support@opentrain.ai"},"repository":{"url":"git+https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo.git","type":"git","directory":"packages/opentrain-mcp"},"_npmVersion":"10.9.8","description":"OpenTrain MCP server for agent-first LMS retraining, adaptive job Task Checklist authoring, employer-only Reviewer Feedback review/triage/access/settings, jobs, people, work, messaging, payments, and Instructions.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^3.25.76","tus-js-client":"4.3.1","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^22.19.20","@opentrain/contracts":"file:../contracts"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.14.0_1788148153054_0.8311564153990252","host":"s3://npm-registry-packages-npm-production"}},"0.17.0":{"name":"@opentrain-ai/mcp","version":"0.17.0","keywords":["opentrain","mcp","model-context-protocol","agents","hiring","data labeling","data annotation","rlhf","human evaluation","preference data","hire labelers","ai training data","human-in-the-loop","job instructions","annotation guidelines"],"author":{"url":"https://www.opentrain.ai","name":"OpenTrain AI"},"license":"MIT","_id":"@opentrain-ai/mcp@0.17.0","maintainers":[{"name":"weston-dot","email":"support@opentrain.ai"}],"homepage":"https://www.opentrain.ai/docs/developers/overview","bugs":{"url":"https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo/issues"},"bin":{"opentrain-mcp":"dist/index.js"},"dist":{"shasum":"da0b4c163437d285c74a1ebd046f20a06fbea8f8","tarball":"https://registry.npmjs.org/@opentrain-ai/mcp/-/mcp-0.17.0.tgz","fileCount":55,"integrity":"sha512-wOBfWc2u21gJmEhxaW2pCO2XemzMzK6DbhoM3vZ8ZNNPHZMKeXtcMC9K1H6UX6Qek+0mxvzCwEHlrq2bF01+7g==","signatures":[{"sig":"MEQCIC9Pbr3nZbnPYU1O464Tml7uUMRslOgBOAEjcsq5Xk68AiBAuL4Nz2KFDDRnflpVxin5oxTp3fChiw17yXYdCp5CVw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4275269},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.17"},"mcpName":"io.github.OpenTrain-AI/opentrain","scripts":{"lint":"tsc --noEmit --pretty false","test":"tsx --test test/*.test.ts","build":"tsc -p tsconfig.json && chmod +x dist/index.js","typecheck":"tsc --noEmit","smoke:package":"npm run build && node test/published-tarball-smoke.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"weston-dot","email":"support@opentrain.ai","approver":{"name":"weston-dot","email":"support@opentrain.ai"}},"repository":{"url":"git+https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo.git","type":"git","directory":"packages/opentrain-mcp"},"_npmVersion":"12.0.2","description":"OpenTrain MCP server for agent-first LMS retraining, adaptive job Task Checklist authoring, employer-only Reviewer Feedback review/triage/access/settings, jobs, people, work, messaging, payments, and Instructions.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^3.25.76","tus-js-client":"4.3.1","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^22.19.20","zod-to-json-schema":"^3.25.2","@opentrain/contracts":"file:../contracts"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.17.0_1788240205105_0.8521618491717959","host":"s3://npm-registry-packages-npm-production"}},"0.19.0":{"name":"@opentrain-ai/mcp","version":"0.19.0","keywords":["opentrain","mcp","model-context-protocol","agents","hiring","data labeling","data annotation","rlhf","human evaluation","preference data","hire labelers","ai training data","human-in-the-loop","job instructions","annotation guidelines"],"author":{"url":"https://www.opentrain.ai","name":"OpenTrain AI"},"license":"MIT","_id":"@opentrain-ai/mcp@0.19.0","maintainers":[{"name":"weston-dot","email":"support@opentrain.ai"}],"homepage":"https://www.opentrain.ai/docs/developers/overview","bugs":{"url":"https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo/issues"},"bin":{"opentrain-mcp":"dist/index.js"},"dist":{"shasum":"dc161b181ba0f5b834c3cde8ef57a0d403cb7f50","tarball":"https://registry.npmjs.org/@opentrain-ai/mcp/-/mcp-0.19.0.tgz","fileCount":59,"integrity":"sha512-GU22vcOETeluMD/t7ugHyzMoujEJat6vC4OWtry8AlDzEZy5EXWtrQ3IuRBJykVBQzELWXAZiOT3Rj1TeyTJsw==","signatures":[{"sig":"MEQCIDD7Rm5NdODrgtxPo7/T9zQbXjFoOYau7a57LmCc1t1dAiADSZpnxv2beD778KINsr9n4vMvWWHW9nfFEo/hBZYhGw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4325620},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.17"},"mcpName":"io.github.OpenTrain-AI/opentrain","scripts":{"lint":"tsc --noEmit --pretty false","test":"tsx --test test/*.test.ts","build":"tsc -p tsconfig.json && chmod +x dist/index.js","typecheck":"tsc --noEmit","smoke:package":"npm run build && node test/published-tarball-smoke.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"weston-dot","email":"support@opentrain.ai"},"repository":{"url":"git+https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo.git","type":"git","directory":"packages/opentrain-mcp"},"_npmVersion":"10.9.8","description":"OpenTrain MCP server for agent-first LMS retraining, adaptive job Task Checklist authoring, employer-only Reviewer Feedback review/triage/access/settings, jobs, people, work, messaging, payments, and Instructions.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^3.25.76","tus-js-client":"4.3.1","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^22.19.20","zod-to-json-schema":"^3.25.2","@opentrain/contracts":"file:../contracts"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.19.0_1788281555660_0.8235236758345112","host":"s3://npm-registry-packages-npm-production"}},"0.20.0":{"name":"@opentrain-ai/mcp","version":"0.20.0","keywords":["opentrain","mcp","model-context-protocol","agents","hiring","data labeling","data annotation","rlhf","human evaluation","preference data","hire labelers","ai training data","human-in-the-loop","job instructions","annotation guidelines"],"author":{"url":"https://www.opentrain.ai","name":"OpenTrain AI"},"license":"MIT","_id":"@opentrain-ai/mcp@0.20.0","maintainers":[{"name":"weston-dot","email":"support@opentrain.ai"}],"homepage":"https://www.opentrain.ai/docs/developers/overview","bugs":{"url":"https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo/issues"},"bin":{"opentrain-mcp":"dist/index.js"},"dist":{"shasum":"bbd3c7ce97a0bac58e53592efe4ab1b2a1fe0e35","tarball":"https://registry.npmjs.org/@opentrain-ai/mcp/-/mcp-0.20.0.tgz","fileCount":61,"integrity":"sha512-YvVqK/G//J2sG7/OaPLyOEzNlaXkPBp8WthVky68M+gQc62JMf+4xj6IAjM+0EommiCs0VvnLhj/dzXWkXB4sw==","signatures":[{"sig":"MEYCIQCdLUuaI2YIsd5YUlGFMIB+PRaj/W1T3J3YQSO7sPQs7QIhANJUqooS0PrVuk+2rsGK+7xNk9aD0GznWQh7lvKjCoIJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4359595},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.17"},"mcpName":"io.github.OpenTrain-AI/opentrain","scripts":{"lint":"tsc --noEmit --pretty false","test":"tsx --test test/*.test.ts","build":"tsc -p tsconfig.json && chmod +x dist/index.js","typecheck":"tsc --noEmit","smoke:package":"npm run build && node test/published-tarball-smoke.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"weston-dot","email":"support@opentrain.ai"},"repository":{"url":"git+https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo.git","type":"git","directory":"packages/opentrain-mcp"},"_npmVersion":"10.9.8","description":"OpenTrain MCP server for agent-first LMS retraining, adaptive job Task Checklist authoring, employer-only Reviewer Feedback review/triage/access/settings, jobs, people, work, messaging, payments, and Instructions.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^3.25.76","tus-js-client":"4.3.1","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^22.19.20","zod-to-json-schema":"^3.25.2","@opentrain/contracts":"file:../contracts"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.20.0_1788324656062_0.9517766855821688","host":"s3://npm-registry-packages-npm-production"}},"0.21.0":{"name":"@opentrain-ai/mcp","version":"0.21.0","keywords":["opentrain","mcp","model-context-protocol","agents","hiring","data labeling","data annotation","rlhf","human evaluation","preference data","hire labelers","ai training data","human-in-the-loop","job instructions","annotation guidelines"],"author":{"url":"https://www.opentrain.ai","name":"OpenTrain AI"},"license":"MIT","_id":"@opentrain-ai/mcp@0.21.0","maintainers":[{"name":"weston-dot","email":"support@opentrain.ai"}],"homepage":"https://www.opentrain.ai/docs/developers/overview","bugs":{"url":"https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo/issues"},"bin":{"opentrain-mcp":"dist/index.js"},"dist":{"shasum":"d98f01371477a125ac25b4e8063a98896de34e24","tarball":"https://registry.npmjs.org/@opentrain-ai/mcp/-/mcp-0.21.0.tgz","fileCount":61,"integrity":"sha512-i42hCUCSwWuSS1LfQTxXSnmsHdqPiP+j3w1QRlVRWF1eKojzIjwgFAaDjkm8a3t4Zu5gYHnXPtROQFiSIJd5xA==","signatures":[{"sig":"MEUCIQCP8r9pyL9jAS0w+4oNMvuCQe3i1tofG+TWUnyCaiSv0wIgLk1UKlqfyUxMJvgMs/Dq7b9QNQgMDJWVpIoVskg7/EU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4362752},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.17"},"mcpName":"io.github.OpenTrain-AI/opentrain","scripts":{"lint":"tsc --noEmit --pretty false","test":"tsx --test test/*.test.ts","build":"tsc -p tsconfig.json && chmod +x dist/index.js","typecheck":"tsc --noEmit","smoke:package":"npm run build && node test/published-tarball-smoke.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"weston-dot","email":"support@opentrain.ai"},"repository":{"url":"git+https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo.git","type":"git","directory":"packages/opentrain-mcp"},"_npmVersion":"10.9.8","description":"OpenTrain MCP server for agent-first LMS retraining, adaptive job Task Checklist authoring, employer-only Reviewer Feedback review/triage/access/settings, jobs, people, work, messaging, payments, and Instructions.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^3.25.76","tus-js-client":"4.3.1","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^22.19.20","zod-to-json-schema":"^3.25.2","@opentrain/contracts":"file:../contracts"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.21.0_1788348467409_0.1360059323730034","host":"s3://npm-registry-packages-npm-production"}},"0.23.0":{"name":"@opentrain-ai/mcp","version":"0.23.0","keywords":["opentrain","mcp","model-context-protocol","agents","hiring","data labeling","data annotation","rlhf","human evaluation","preference data","hire labelers","ai training data","human-in-the-loop","job instructions","annotation guidelines"],"author":{"url":"https://www.opentrain.ai","name":"OpenTrain AI"},"license":"MIT","_id":"@opentrain-ai/mcp@0.23.0","maintainers":[{"name":"weston-dot","email":"support@opentrain.ai"}],"homepage":"https://www.opentrain.ai/docs/developers/overview","bugs":{"url":"https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo/issues"},"bin":{"opentrain-mcp":"dist/index.js"},"dist":{"shasum":"fa7c61e5d7b9221a3f798aab850c5df58e184769","tarball":"https://registry.npmjs.org/@opentrain-ai/mcp/-/mcp-0.23.0.tgz","fileCount":67,"integrity":"sha512-1O/F9sz+IQuiPXEAzI1H3LL+CKEhdaryQfFao+lqsk+tCrgyt3Ki26GQ0cdf2LL6vuzh8363I2E0qjSL9QHRmQ==","signatures":[{"sig":"MEQCIAUmlZDae/5zj3gRj6VpLM0BfsD3ag5Uk6xnZ6L2iCZoAiBgskT/EG5FiNX9/OxontxNPAGgIvYQChb0uEpsw9EElA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7172546},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.17"},"mcpName":"io.github.OpenTrain-AI/opentrain","scripts":{"lint":"tsc --noEmit --pretty false","test":"tsx --test test/*.test.ts","build":"tsc -p tsconfig.json && chmod +x dist/index.js","typecheck":"tsc --noEmit","smoke:package":"npm run build && node test/published-tarball-smoke.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"weston-dot","email":"support@opentrain.ai"},"repository":{"url":"git+https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo.git","type":"git","directory":"packages/opentrain-mcp"},"_npmVersion":"10.9.8","description":"OpenTrain MCP server for agent-first LMS retraining, adaptive job Task Checklist authoring, employer-only Reviewer Feedback review/triage/access/settings, jobs, people, work, messaging, payments, and Instructions.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^3.25.76","tus-js-client":"4.3.1","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^22.19.20","zod-to-json-schema":"^3.25.2","@opentrain/contracts":"file:../contracts"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.23.0_1788416575668_0.7614581696799765","host":"s3://npm-registry-packages-npm-production"}},"0.24.0":{"name":"@opentrain-ai/mcp","version":"0.24.0","keywords":["opentrain","mcp","model-context-protocol","agents","hiring","data labeling","data annotation","rlhf","human evaluation","preference data","hire labelers","ai training data","human-in-the-loop","job instructions","annotation guidelines"],"author":{"url":"https://www.opentrain.ai","name":"OpenTrain AI"},"license":"MIT","_id":"@opentrain-ai/mcp@0.24.0","maintainers":[{"name":"weston-dot","email":"support@opentrain.ai"}],"homepage":"https://www.opentrain.ai/docs/developers/overview","bugs":{"url":"https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo/issues"},"bin":{"opentrain-mcp":"dist/index.js"},"dist":{"shasum":"1d74827c7d03e7c5cc8ed86159978cdc74ebe380","tarball":"https://registry.npmjs.org/@opentrain-ai/mcp/-/mcp-0.24.0.tgz","fileCount":69,"integrity":"sha512-Aslc7Au+sz5IsVuV2xApV+C9lMfvSE3URtManRPHEi3F7cIjuo/1BlreDXvxS+4tN8H5RYLMPmyyWdyHXM16+w==","signatures":[{"sig":"MEYCIQDYOyLu43CP4bjYTMckYxL6YxCguIEAy8plx/th2TWl/wIhAKjhKa6CnmFgHApfRw98QJkY1Q6SXMf9O0sbfWoLi6mF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7201865},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.17"},"mcpName":"io.github.OpenTrain-AI/opentrain","scripts":{"lint":"tsc --noEmit --pretty false","test":"tsx --test test/*.test.ts","build":"tsc -p tsconfig.json && chmod +x dist/index.js","typecheck":"tsc --noEmit","smoke:package":"npm run build && node test/published-tarball-smoke.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"weston-dot","email":"support@opentrain.ai"},"repository":{"url":"git+https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo.git","type":"git","directory":"packages/opentrain-mcp"},"_npmVersion":"10.9.8","description":"OpenTrain MCP server for agent-first LMS retraining, adaptive job Task Checklist authoring, employer-only Reviewer Feedback review/triage/access/settings, jobs, people, work, messaging, payments, and Instructions.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^3.25.76","tus-js-client":"4.3.1","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^22.19.20","zod-to-json-schema":"^3.25.2","@opentrain/contracts":"file:../contracts"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.24.0_1788451661342_0.14528345196099202","host":"s3://npm-registry-packages-npm-production"}},"0.25.0":{"name":"@opentrain-ai/mcp","version":"0.25.0","keywords":["opentrain","mcp","model-context-protocol","agents","hiring","data labeling","data annotation","rlhf","human evaluation","preference data","hire labelers","ai training data","human-in-the-loop","job instructions","annotation guidelines"],"author":{"url":"https://www.opentrain.ai","name":"OpenTrain AI"},"license":"MIT","_id":"@opentrain-ai/mcp@0.25.0","maintainers":[{"name":"weston-dot","email":"support@opentrain.ai"}],"homepage":"https://www.opentrain.ai/docs/developers/overview","bugs":{"url":"https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo/issues"},"bin":{"opentrain-mcp":"dist/index.js"},"dist":{"shasum":"34f4a022f0c08e5b790f5ab7636014399ad0c6e1","tarball":"https://registry.npmjs.org/@opentrain-ai/mcp/-/mcp-0.25.0.tgz","fileCount":73,"integrity":"sha512-CG+0bafkCp/DsPUPtg57yk75BHb5DEvryD9SIVaJdIDzzxqtQ7puCvRvsiKVwubNcMBJ+gkP4Q5oxu24wZbXGQ==","signatures":[{"sig":"MEQCIQDg8Fqe8nl2Dhs4GBMQfPZPerEW0gH0dMaNxOsGnIz75wIfKJCmwLHm+ptMhFMkeQRm/I9+bS7hxMboA5sxG3yntA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7219766},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.17"},"mcpName":"io.github.OpenTrain-AI/opentrain","scripts":{"lint":"tsc --noEmit --pretty false","test":"tsx --test test/*.test.ts","build":"tsc -p tsconfig.json && chmod +x dist/index.js","typecheck":"tsc --noEmit","smoke:package":"npm run build && node test/published-tarball-smoke.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"weston-dot","email":"support@opentrain.ai"},"repository":{"url":"git+https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo.git","type":"git","directory":"packages/opentrain-mcp"},"_npmVersion":"10.9.8","description":"OpenTrain MCP server for agent-first LMS retraining, adaptive job Task Checklist authoring, employer-only Reviewer Feedback review/triage/access/settings, jobs, people, work, messaging, payments, and Instructions.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^3.25.76","tus-js-client":"4.3.1","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^22.19.20","zod-to-json-schema":"^3.25.2","@opentrain/contracts":"file:../contracts"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.25.0_1788494036209_0.4040233152525152","host":"s3://npm-registry-packages-npm-production"}},"0.27.0":{"name":"@opentrain-ai/mcp","version":"0.27.0","keywords":["opentrain","mcp","model-context-protocol","agents","hiring","data labeling","data annotation","rlhf","human evaluation","preference data","hire labelers","ai training data","human-in-the-loop","job instructions","annotation guidelines"],"author":{"url":"https://www.opentrain.ai","name":"OpenTrain AI"},"license":"MIT","_id":"@opentrain-ai/mcp@0.27.0","maintainers":[{"name":"weston-dot","email":"support@opentrain.ai"}],"homepage":"https://www.opentrain.ai/docs/developers/overview","bugs":{"url":"https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo/issues"},"bin":{"opentrain-mcp":"dist/index.js"},"dist":{"shasum":"89b6c3602f18214c9704e913fa8b3cb9b078d92d","tarball":"https://registry.npmjs.org/@opentrain-ai/mcp/-/mcp-0.27.0.tgz","fileCount":99,"integrity":"sha512-Td/6qFnCMxaHrNjcnt7pQI+kekGYc4geqgIfyAZsAZZBQwy/YoPUBqVIRvHdKz83vcLDo9vH66/zQ3q4hp3NmA==","signatures":[{"sig":"MEUCIB5bmw8FeycNOcs4lV5DNObUpxvp7GGEBffT3sZ5zFNFAiEAwp5iREzEofMZnEDjYFuyJBxiwzMlSAfXvdrB+bs7qoo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDku10nR6QSXe2b+7Fufpx9fIf1mO1AhQ3HfjycDxNVbQIgPdus6jtfQglOvmEaUeqgd8oY8V62PbR9ocDDeu9Tjpw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8587304},"main":"./dist/index.js","type":"module","_from":"file:/home/weston/Code/OAI-PILOT/folder-instructions-cli/npm-publication-20260921/opentrain-ai-mcp-0.27.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=18.17"},"mcpName":"io.github.OpenTrain-AI/opentrain","scripts":{"lint":"tsc --noEmit --pretty false","test":"tsx --test test/*.test.ts","build":"tsc -p tsconfig.json && chmod +x dist/index.js","typecheck":"tsc --noEmit","smoke:package":"npm run build && node test/published-tarball-smoke.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"weston-dot","email":"support@opentrain.ai"},"_resolved":"/home/weston/Code/OAI-PILOT/folder-instructions-cli/npm-publication-20260921/opentrain-ai-mcp-0.27.0.tgz","_integrity":"sha512-Td/6qFnCMxaHrNjcnt7pQI+kekGYc4geqgIfyAZsAZZBQwy/YoPUBqVIRvHdKz83vcLDo9vH66/zQ3q4hp3NmA==","repository":{"url":"git+https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo.git","type":"git","directory":"packages/opentrain-mcp"},"_npmVersion":"10.9.8","description":"OpenTrain MCP server for agent-first LMS retraining, adaptive job Task Checklist authoring, employer-only Reviewer Feedback review/triage/access/settings, jobs, people, work, messaging, payments, and Instructions.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^3.25.76","tus-js-client":"4.3.1","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^22.19.20","zod-to-json-schema":"^3.25.2","@opentrain/contracts":"file:../contracts"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.27.0_1789996240554_0.8501774938148923","host":"s3://npm-registry-packages-npm-production"}},"0.27.1":{"name":"@opentrain-ai/mcp","version":"0.27.1","keywords":["opentrain","mcp","model-context-protocol","agents","hiring","data labeling","data annotation","rlhf","human evaluation","preference data","hire labelers","ai training data","human-in-the-loop","job instructions","annotation guidelines"],"author":{"url":"https://www.opentrain.ai","name":"OpenTrain AI"},"license":"MIT","_id":"@opentrain-ai/mcp@0.27.1","maintainers":[{"name":"weston-dot","email":"support@opentrain.ai"}],"homepage":"https://www.opentrain.ai/docs/developers/overview","bugs":{"url":"https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo/issues"},"bin":{"opentrain-mcp":"dist/index.js"},"dist":{"shasum":"45e8e18f6d5a4016838cb6e807108707781d3c50","tarball":"https://registry.npmjs.org/@opentrain-ai/mcp/-/mcp-0.27.1.tgz","fileCount":99,"integrity":"sha512-+2tR4GTA2dJdASUlJO169tKkD/lXub0gaw0NseB3EHxOQ9nNVI+ws6l+9Q/5iK0qYH7QX0CJIDHHsGaBIhvY6w==","signatures":[{"sig":"MEUCIQCxAnhNpQqjVc6+kXb35ZKOOPF1axDslOWZfH0z+mRyQQIgY1MeLc4HmaAGktRRz/9FDdyuqAxlsprPBKYdLZU+Fv8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8589336},"main":"./dist/index.js","type":"module","_from":"file:/tmp/dev4200-package-artifacts-f463585c-1790088071/opentrain-ai-mcp-0.27.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=18.17"},"mcpName":"io.github.OpenTrain-AI/opentrain","scripts":{"lint":"tsc --noEmit --pretty false","test":"tsx --test test/*.test.ts","build":"tsc -p tsconfig.json && chmod +x dist/index.js","typecheck":"tsc --noEmit","smoke:package":"npm run build && node test/published-tarball-smoke.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"weston-dot","email":"support@opentrain.ai","approver":{"name":"weston-dot","email":"support@opentrain.ai"}},"_resolved":"/tmp/dev4200-package-artifacts-f463585c-1790088071/opentrain-ai-mcp-0.27.1.tgz","_integrity":"sha512-+2tR4GTA2dJdASUlJO169tKkD/lXub0gaw0NseB3EHxOQ9nNVI+ws6l+9Q/5iK0qYH7QX0CJIDHHsGaBIhvY6w==","repository":{"url":"git+https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo.git","type":"git","directory":"packages/opentrain-mcp"},"_npmVersion":"12.1.0","description":"OpenTrain MCP server for agent-first LMS retraining, adaptive job Task Checklist authoring, employer-only Reviewer Feedback review/triage/access/settings, jobs, people, work, messaging, payments, and Instructions.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^3.25.76","tus-js-client":"4.3.1","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^22.19.20","zod-to-json-schema":"^3.25.2","@opentrain/contracts":"file:../contracts"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.27.1_1790134235606_0.7302591643327134","host":"s3://npm-registry-packages-npm-production"}},"0.27.2":{"name":"@opentrain-ai/mcp","version":"0.27.2","keywords":["opentrain","mcp","model-context-protocol","agents","hiring","data labeling","data annotation","rlhf","human evaluation","preference data","hire labelers","ai training data","human-in-the-loop","job instructions","annotation guidelines"],"author":{"url":"https://www.opentrain.ai","name":"OpenTrain AI"},"license":"MIT","_id":"@opentrain-ai/mcp@0.27.2","maintainers":[{"name":"weston-dot","email":"support@opentrain.ai"}],"homepage":"https://www.opentrain.ai/docs/developers/overview","bugs":{"url":"https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo/issues"},"bin":{"opentrain-mcp":"dist/index.js"},"dist":{"shasum":"31b1d2084b4480e1cecdd20ecdeacfb17056d186","tarball":"https://registry.npmjs.org/@opentrain-ai/mcp/-/mcp-0.27.2.tgz","fileCount":111,"integrity":"sha512-BryGYiCF5EH7uj5rsvzoZYBfuASMqAbMcfXMinLM6MObTpdWn2/spehzEirUj8Mwl9ERi5QtWcOCMCIovlWftQ==","signatures":[{"sig":"MEQCIBMwZPjTu5uTQL+cqJJ7II/Bf9UVwaQMFhPGF4q6kEhuAiBTv+CQYfzbGmVEZfqrG76oNp4QGJxyov+9yfoW1T8RwA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCcTJxjZm5Fctm8F1i2EETdv3CSdTJEUWOeLDKBrD+xRwIhAJ5wPFUrUhdImfPgGwTRWsWjSVQZx8j4Tfhxx6F9D2M5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9216614},"main":"./dist/index.js","type":"module","_from":"file:/dev/shm/opentrain-publish-check.nMdpMc/opentrain-ai-mcp-0.27.2.tgz","types":"./dist/index.d.ts","engines":{"node":">=18.17"},"mcpName":"io.github.OpenTrain-AI/opentrain","scripts":{"lint":"tsc --noEmit --pretty false","test":"tsx --test test/*.test.ts","build":"tsc -p tsconfig.json && chmod +x dist/index.js","typecheck":"tsc --noEmit","smoke:package":"npm run build && node test/published-tarball-smoke.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"weston-dot","email":"support@opentrain.ai"},"_resolved":"/dev/shm/opentrain-publish-check.nMdpMc/opentrain-ai-mcp-0.27.2.tgz","_integrity":"sha512-BryGYiCF5EH7uj5rsvzoZYBfuASMqAbMcfXMinLM6MObTpdWn2/spehzEirUj8Mwl9ERi5QtWcOCMCIovlWftQ==","repository":{"url":"git+https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo.git","type":"git","directory":"packages/opentrain-mcp"},"_npmVersion":"10.9.8","description":"OpenTrain MCP server for agent-first LMS retraining, adaptive job Task Checklist authoring, employer-only Reviewer Feedback review/triage/access/settings, jobs, people, work, messaging, payments, and Instructions.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^3.25.76","tus-js-client":"4.3.1","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^22.19.20","zod-to-json-schema":"^3.25.2","@opentrain/contracts":"file:../contracts"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.27.2_1790210614216_0.7066530355230893","host":"s3://npm-registry-packages-npm-production"}},"0.27.3":{"name":"@opentrain-ai/mcp","version":"0.27.3","keywords":["opentrain","mcp","model-context-protocol","agents","hiring","data labeling","data annotation","rlhf","human evaluation","preference data","hire labelers","ai training data","human-in-the-loop","job instructions","annotation guidelines"],"author":{"url":"https://www.opentrain.ai","name":"OpenTrain AI"},"license":"MIT","_id":"@opentrain-ai/mcp@0.27.3","maintainers":[{"name":"weston-dot","email":"support@opentrain.ai"}],"homepage":"https://www.opentrain.ai/docs/developers/overview","bugs":{"url":"https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo/issues"},"bin":{"opentrain-mcp":"dist/index.js"},"dist":{"shasum":"1af8774f59cb569cd471518dbaefd1b61c604034","tarball":"https://registry.npmjs.org/@opentrain-ai/mcp/-/mcp-0.27.3.tgz","fileCount":111,"integrity":"sha512-uyRPdILcMZHdWFqOeuj2mrzgYI/Ztfi669i/rIPk87rd3y9TGk5bIk5nxLgARDb5vpQDQzVYYe0lpHSOmCBFmQ==","signatures":[{"sig":"MEUCIB9ieisUuyOxm0uncsgFzMvW/TjlUqPdlECwt6NYIunpAiEA2/k3gW2BqujLFUWkNom68tPZW1Mi3xC/WF+1gahpOws=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIEGXNImLXcGDXes9ebAkqo6eJCY55FtuWfvtq5umqXvNAiBL/qBH+LQLNlXfBv9jFoOGNywByk632rkVCTZvlvcCPA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9221802},"main":"./dist/index.js","type":"module","_from":"file:/home/runner/work/_temp/npm-release/mcp/opentrain-ai-mcp-0.27.3.tgz","types":"./dist/index.d.ts","engines":{"node":">=18.17"},"mcpName":"io.github.OpenTrain-AI/opentrain","scripts":{"lint":"tsc --noEmit --pretty false","test":"tsx --test test/*.test.ts","build":"tsc -p tsconfig.json && chmod +x dist/index.js","typecheck":"tsc --noEmit","smoke:package":"npm run build && node test/published-tarball-smoke.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ee33696d-ecc9-4870-ba6b-2a7c89c06956"}},"_resolved":"/home/runner/work/_temp/npm-release/mcp/opentrain-ai-mcp-0.27.3.tgz","_integrity":"sha512-uyRPdILcMZHdWFqOeuj2mrzgYI/Ztfi669i/rIPk87rd3y9TGk5bIk5nxLgARDb5vpQDQzVYYe0lpHSOmCBFmQ==","repository":{"url":"git+https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo.git","type":"git","directory":"packages/opentrain-mcp"},"_npmVersion":"11.20.0","description":"OpenTrain MCP server for agent-first LMS retraining, adaptive job Task Checklist authoring, employer-only Reviewer Feedback review/triage/access/settings, jobs, people, work, messaging, payments, and Instructions.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"zod":"^3.25.76","tus-js-client":"4.3.1","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"typescript":"^5.9.3","@types/node":"^22.19.20","zod-to-json-schema":"^3.25.2","@opentrain/contracts":"file:../contracts"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.27.3_1790231114745_0.9428772384510276","host":"s3://npm-registry-packages-npm-production"}},"0.27.4":{"_id":"@opentrain-ai/mcp@0.27.4","bin":{"opentrain-mcp":"dist/index.js"},"bugs":{"url":"https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo/issues"},"dist":{"shasum":"2f13ad6bf83b07f4be78ee1b14851f088629e326","tarball":"https://registry.npmjs.org/@opentrain-ai/mcp/-/mcp-0.27.4.tgz","fileCount":111,"integrity":"sha512-g4lqgkNguYOnbYEa26BiJqWW8LvnmFDUyY4swD/PKbnXySEM2N10mSGcR1+AkytwexB52braRyKoDp01+SgIQQ==","signatures":[{"sig":"MEUCIEcBmRxc4zxoWb5fGDiexXCO31XCYN/I/P3PjT2/fBQgAiEA8XPX+anyxRXqGHUXjwUASo7wf3ToJB0mwPyk1zscj9g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBpLFNgUHkn3hB8L2sqVisZ4HcSO9GtsCedrz8zjQpz1AiA3U9+Y8Q1i4d86kRxmQbV72+OgJjW2bIaF8kY5o0UK8w=="}],"unpackedSize":9224182},"main":"./dist/index.js","name":"@opentrain-ai/mcp","type":"module","_from":"file:/home/runner/work/_temp/npm-release/mcp/opentrain-ai-mcp-0.27.4.tgz","types":"./dist/index.d.ts","author":{"url":"https://www.opentrain.ai","name":"OpenTrain AI"},"engines":{"node":">=18.17"},"license":"MIT","mcpName":"io.github.OpenTrain-AI/opentrain","scripts":{"lint":"tsc --noEmit --pretty false","test":"tsx --test test/*.test.ts","build":"tsc -p tsconfig.json && chmod +x dist/index.js","typecheck":"tsc --noEmit","smoke:package":"npm run build && node test/published-tarball-smoke.mjs","prepublishOnly":"npm run build"},"version":"0.27.4","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ee33696d-ecc9-4870-ba6b-2a7c89c06956"}},"homepage":"https://www.opentrain.ai/docs/developers/overview","keywords":["opentrain","mcp","model-context-protocol","agents","hiring","data labeling","data annotation","rlhf","human evaluation","preference data","hire labelers","ai training data","human-in-the-loop","job instructions","annotation guidelines"],"_resolved":"/home/runner/work/_temp/npm-release/mcp/opentrain-ai-mcp-0.27.4.tgz","_integrity":"sha512-g4lqgkNguYOnbYEa26BiJqWW8LvnmFDUyY4swD/PKbnXySEM2N10mSGcR1+AkytwexB52braRyKoDp01+SgIQQ==","repository":{"url":"git+https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo.git","type":"git","directory":"packages/opentrain-mcp"},"_npmVersion":"11.20.0","description":"OpenTrain MCP server for agent-first LMS retraining, adaptive job Task Checklist authoring, employer-only Reviewer Feedback review/triage/access/settings, jobs, people, work, messaging, payments, and Instructions.","directories":{},"maintainers":[{"name":"weston-dot","email":"support@opentrain.ai"}],"_nodeVersion":"24.21.0","dependencies":{"zod":"^3.25.76","tus-js-client":"4.3.1","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^22.19.20","zod-to-json-schema":"^3.25.2","@opentrain/contracts":"file:../contracts"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp_0.27.4_1790355125157_0.6364518467785301"}}},"time":{"created":"2026-06-10T12:19:32.197Z","modified":"2026-09-25T16:52:05.412Z","0.1.0":"2026-06-10T12:19:32.656Z","0.2.0":"2026-06-12T17:35:57.504Z","0.2.1":"2026-06-15T09:13:43.458Z","0.2.2":"2026-06-15T09:54:09.357Z","0.2.3":"2026-06-30T06:58:44.972Z","0.3.0":"2026-08-24T10:43:43.128Z","0.4.0":"2026-08-25T00:59:47.376Z","0.5.0":"2026-08-25T07:04:06.487Z","0.5.1":"2026-08-26T10:45:52.040Z","0.5.2":"2026-08-27T02:29:04.506Z","0.7.0":"2026-08-27T20:32:29.710Z","0.8.0":"2026-08-29T04:40:13.509Z","0.9.0":"2026-08-30T00:23:04.577Z","0.10.0":"2026-08-30T02:00:22.039Z","0.14.0":"2026-08-31T03:49:13.243Z","0.17.0":"2026-09-01T05:23:25.227Z","0.19.0":"2026-09-01T16:52:35.815Z","0.20.0":"2026-09-02T04:50:56.206Z","0.21.0":"2026-09-02T11:27:47.587Z","0.23.0":"2026-09-03T06:22:56.084Z","0.24.0":"2026-09-03T16:07:41.591Z","0.25.0":"2026-09-04T03:53:56.435Z","0.27.0":"2026-09-21T13:10:40.694Z","0.27.1":"2026-09-23T03:30:35.752Z","0.27.2":"2026-09-24T00:43:34.384Z","0.27.3":"2026-09-24T06:25:14.833Z","0.27.4":"2026-09-25T16:52:05.261Z"},"bugs":{"url":"https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo/issues"},"author":{"url":"https://www.opentrain.ai","name":"OpenTrain AI"},"license":"MIT","homepage":"https://www.opentrain.ai/docs/developers/overview","keywords":["opentrain","mcp","model-context-protocol","agents","hiring","data labeling","data annotation","rlhf","human evaluation","preference data","hire labelers","ai training data","human-in-the-loop","job instructions","annotation guidelines"],"repository":{"url":"git+https://github.com/OpenTrain-AI/OpenTrain-Platform-Monorepo.git","type":"git","directory":"packages/opentrain-mcp"},"description":"OpenTrain MCP server for agent-first LMS retraining, adaptive job Task Checklist authoring, employer-only Reviewer Feedback review/triage/access/settings, jobs, people, work, messaging, payments, and Instructions.","maintainers":[{"name":"weston-dot","email":"support@opentrain.ai"}],"readme":"# OpenTrain MCP\n\nMCP server for [OpenTrain](https://app.opentrain.ai) public API workflows:\nagent registration, job posting, proposal review, hiring, contracts and\nmilestones, messaging, credits, webhooks, team management, and the canonical\nrich instructions attached to real jobs. It also exposes Project To-dos,\nquizzes, and the complete Training/LMS lifecycle over the same canonical records\nused by the OpenTrain dashboard and public API.\n\nMoney never moves from this server. Ordinary hire, milestone funding/approval,\nand contract-end requests record a pending approval for a signed-in human. The\nseparate default-off admin-balance tools only write $0 internal-funding markers\nafter the server independently verifies every canonical OpenTrain-admin gate;\nthey never expose payout release, which remains human-authorized.\n\n## Restricted admin-balance milestone cancellation (0.27.3)\n\n`opentrain_cancel_admin_balance_milestone` cancels one eligible\n`ADMIN_BALANCE`-funded milestone for a verified canonical platform admin. It\nrequires `contractId`, `milestoneId`, and a stable `idempotencyKey`; set\n`notifyCounterparty: true` only when a notification is wanted. The strict\nresponse always reports `fundingDisposition: 'NO_MONEY_MOVED'` and\n`moneyMoved: false`: no Stripe refund is created and payout release remains\nhuman-only. Card- and credit-funded milestones are refused with a typed human\napproval requirement. Reusing the same key and payload replays the durable\nresult. This tool requires MCP 0.27.3 and the matching serving API.\n\n## Install\n\nAdd to any MCP-capable client (Claude Code, Claude Desktop, Cursor, etc.):\n\n```json\n{\n  \"mcpServers\": {\n    \"opentrain\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@opentrain-ai/mcp@latest\"]\n    }\n  }\n}\n```\n\nWith Claude Code:\n\n```bash\nclaude mcp add opentrain -- npx -y @opentrain-ai/mcp@latest\n```\n\nWhen running from a monorepo checkout that already has an\n`@opentrain-ai/mcp` workspace, include `@latest` so npm resolves the published\npackage instead of an unbuilt local workspace.\n\nNo credentials are needed to start. For an existing account, use the browser\nlogin flow below when the server rollout is enabled. `opentrain_register_agent`\ncreates a new anonymous account; it is not a login fallback for an existing user.\n\n## ChatGPT / Hosted MCP\n\nThe npm package above is a local stdio server. For ChatGPT developer mode, the\nOpenAI API Playground, or MCP Inspector, use the hosted HTTPS MCP endpoint:\n\n```text\nhttps://app.opentrain.ai/mcp\n```\n\nThe hosted endpoint exposes the parity-matched remote-safe tool set:\n\n- `opentrain_search_jobs` — anonymous public marketplace search.\n- `opentrain_auth_status` — protected token/account check.\n- `opentrain_create_admin_balance_milestone` and\n  `opentrain_fund_admin_balance_milestone` — restricted canonical-admin-only,\n  request-idempotent creation or in-place internal funding. Hourly/per-label\n  creation accepts or derives volume; in-place funding requires an existing\n  eligible `NOT_FUNDED` milestone. Both move $0 and create no Stripe charge or\n  PaymentIntent. Scope possession alone is never authority.\n- `opentrain_create_job_draft` and `opentrain_update_job_draft_fields` —\n  protected draft workflow tools.\n- `opentrain_job_instructions_*` — protected reads, no-write previews, image\n  uploads, and confirmed writes against a real job's Instructions tab.\n- Project To-do and quiz tools (`opentrain_list_project_todos`,\n  `opentrain_create_project_todo`,\n  `opentrain_set_project_todo_future_assignment`,\n  `opentrain_assign_project_todo_quiz`, …) — explicit-audience authoring,\n  request-bound preflight, provider-aware assignment, future-hire policy,\n  results, grading, release, and retakes.\n- Selective coaching tools (DEV-2741, action-specific): employer\n  `opentrain_quiz_coaching_queue|state|cycles|threads|comments` reads,\n  keyed `opentrain_quiz_coaching_comment|redo_selection|cancel_draft|\nresolve_thread|reopen_thread|accept|send_back_confirm` writes, the\n  no-write read-scoped `opentrain_quiz_coaching_send_back_plan` +\n  `opentrain_quiz_retake_plan` previews, keyed\n  `opentrain_quiz_retake_apply`. These are employer tools; freelancer API\n  keys cannot read, answer, or submit quizzes. Answer keys and worker personal\n  data never appear.\n- Freelancer API keys are read-only: `messages:read` is their only private\n  scope, and public job search needs no scope. Message sends and all other\n  mutations remain unavailable.\n- Coaching C4 tools add ungated capability discovery, bounded exports,\n  deterministic queue filters, and private feedback-image\n  prepare/finalize/status/delivery. Delivery returns a short-lived MCP\n  `resource_link` for agent visual inspection while structured content stays\n  free of the signed URL; image bytes are never accepted as base64 tool\n  arguments. Stdio alone adds a local-file upload convenience over the same\n  canonical prepare/finalize operations.\n- `opentrain_lms_*` — course authoring, assessments, private assets, immutable\n  publishing, job linking, Training activation, assignment, review, and hosted\n  visual proof. `opentrain_lms_render_preview` and\n  `opentrain_lms_step_preview` return revision-bound PNG/ARIA/diagnostics\n  evidence; verified bounded PNGs may be inline image blocks and otherwise\n  degrade honestly to short-lived resource links. Preview-link tools mint,\n  inspect, list, and revoke navigation-only signed-in employer review links.\n  `opentrain_lms_get_preview_audit_plan` and\n  `opentrain_lms_capture_preview_audit_target` let an agent resumably inspect\n  every pinned lesson in canonical order through that same worker renderer.\n  Canonical course trees may persist an advisory authoring intent used by\n  validation and Preview defaults while assignments remain authoritative.\n  `opentrain_lms_retraining_scaffold_case` turns one DRAFT retraining case into\n  deterministic employer-private authoring guidance and ordered existing\n  operations with strictly zero course, assessment, Preview, assignment,\n  Project To-do, notification, or attempt writes.\n- `opentrain_job_checklists_*` — adaptive job Task Checklist authoring with\n  full web-builder parity: atomic create, CAS drafts, exact-rule no-write\n  validate/resolve, confirmed publish, versions, submissions, reorder, the\n  worker-visibility toggle, and stateless browser preview grants.\n- `opentrain_job_feedback_*` — employer-only Reviewer Feedback: list/search,\n  detail + event history, summaries, subject-roster discovery, submit,\n  CAS-fenced triage, subject linking, reviewer access, and the confirmed\n  per-job toggle. Subjects never read feedback through any agent surface.\n\nPublic search works without linking. Account-specific tools require OpenTrain\nbearer-token auth and return MCP OAuth challenges when called unauthenticated.\nThe local stdio package remains the full self-registration flow because it can\nstore the generated `ot_pat_` token in the user's local\n`~/.config/opentrain/cli.json` without exposing secrets in tool output.\n\n## Reusable private video library\n\nMCP 0.11+ exposes eleven `opentrain_video_library_*` tools with parity across\nstdio and hosted MCP: list/get, upload prepare/status/cancel, draft\nInstructions/LMS reference attach/detach, MP4 download prepare/status/grant,\nand playback metadata. Hosted MCP accepts metadata only—never local paths or\nvideo bytes. Download grants require the explicitly minted `videos:download`\nscope.\n\nFor optional stdio file transfer, set readable upload roots with the platform\npath delimiter (colon on Linux/macOS):\n\n```bash\nexport OPENTRAIN_MCP_VIDEO_UPLOAD_ROOTS=\"/approved/uploads:/another/read-root\"\nexport OPENTRAIN_MCP_VIDEO_DOWNLOAD_DIR=\"/approved/downloads\"\n```\n\nThe download setting is one writable directory, not a root list. Canonical\nrealpath and no-follow checks reject traversal and symlink escapes. Reference\ntools atomically mutate canonical Instructions/LMS draft content and placement\nmetadata; they never publish immutable worker-visible pins.\n\n## Shared folder Instructions (0.27.0+)\n\nContract tools negotiate the additive `dashboardUrl` field with\n`X-OpenTrain-Features: contract-dashboard-url-v1`; clients may omit the header\nfor the legacy response shape. The MCP client sends this header automatically.\n\nBoth stdio and hosted MCP expose the same eight migration operations:\n`opentrain_inspect_folder_instructions`,\n`opentrain_preview_folder_instruction_change`,\n`opentrain_confirm_folder_instruction_change`,\n`opentrain_get_folder_instruction_change`,\n`opentrain_apply_folder_instruction_change`,\n`opentrain_cancel_folder_instruction_change`,\n`opentrain_resume_folder_instruction_change` and\n`opentrain_export_folder_instruction_recovery`.\n\nAnother 25 `opentrain_folder_instructions_*` tools cover shared canonical\npage/tree, preview/preflight, history, schema, link, verify and image/video\nauthoring. Discover their closed schemas and per-operation\n`opentrain.ai/authoring-retry` metadata rather than assuming every write retries\nthe same way. All require current folder-employer authority and the existing\nInstructions scopes. Existing job tools remain unchanged.\n\nPreview/status/recovery are read-only. Confirmation binds the reviewed digest\nand freezes writers; apply waits for drain, preserves originals and commits\nverified content atomically. Inspect the same operation after uncertainty and\nrequire `VERIFIED_READBACK`. First activation must use this reviewed workflow;\nordinary authoring cannot activate an empty folder. Incompatible published-mode\nfolder writes refuse without enabling release/read/ack features. Shared content\nis visible to all eligible child-job workers; language labels are not access\ncontrols. See the [folder workflow](https://www.opentrain.ai/docs/developers/guides/manage-folder-instructions/).\n\n## Authentication\n\n### Browser login (0.27.0+, rollout-gated)\n\nMCP 0.27.0+ includes `opentrain_auth_login_start` and\n`opentrain_auth_login_status` in the local stdio server. The server migration\nand `agent_browser_login` rollout must be delivered before login can succeed.\nA disabled rollout returns a refusal, not a new account. Package publication\ndoes not enable the separate browser-login rollout.\n\n1. Call `opentrain_auth_login_start` with an optional `deviceLabel`, `lane`\n   (`EMPLOYER` or `WORKER`) and space-separated `scope` request.\n2. Give the returned `verificationUriComplete` and `userCode` to the person.\n   They open normal OpenTrain in any browser, match the code, sign in, and\n   explicitly approve their identity/context and permissions. Do not request\n   their password, browser cookie, polling secret or API key.\n3. Resume `opentrain_auth_login_status` with the same `loginId` and optional\n   `waitSeconds` (0–120). Honor `intervalSeconds`. `PENDING`, `SLOW_DOWN` and\n   `TIMEOUT` preserve the handle; `DENIED` and `EXPIRED` are terminal.\n4. After approval, call `opentrain_auth_status` to check the actual credential\n   source and account. An environment key can shadow the saved browser session.\n\nThe CLI and stdio server share one private local credential provider. A long-lived\nstdio process picks up a login or access-token rotation without a restart;\nits configured origin still has to match the session issuer. The CLI can also\nstart/resume the same login and revoke it with `opentrain auth logout`. Browser\nlogout preserves an unrelated saved key and never revokes an environment key.\nPending polling secrets and access/refresh tokens never enter MCP output.\nThe headless-host store uses 0700 directories and 0600 atomic files with a shared\ncross-process refresh lock; it is not an OS keychain and does not protect against\narbitrary code running as the same OS user. Never share the profile directory.\n\n### Hosted MCP browser consent (rollout-gated)\n\nThe device flow above is for **local stdio MCP**. Hosted clients use their own\nHTTP OAuth authorization-code flow with PKCE S256 and resource\n`https://app.opentrain.ai/mcp`. They open normal OpenTrain sign-in and explicit\nconsent; opening the link alone does not grant access. Do not forward a hosted\nMCP access token to the public REST API or ask a user to paste browser cookies.\n\nThis source supports HTTPS client-ID metadata documents with validated exact\nclient IDs and registered redirects. Non-URL client IDs require an exact\noperator registration; an arbitrary client name is not a registration. The\nserver validates metadata through bounded, DNS-pinned HTTPS requests. Discovery\nand consent preserve opaque `state` and return the matching authorization-server\nissuer. This is not a claim that every external client/version has passed testing.\n\nTurning off `agent_browser_login` refuses new device and hosted login requests.\nIt does not mass-revoke existing sessions or disable API keys; already-issued\nlegacy authorization codes retain their exchange path. Missing/expired credentials\nand structured scope shortages may require reauthorization. A disabled feature,\nwrong organization, or other permission denial is a tool error, not a reason to\nloop through login. Never automatically replay an uncertain mutation after login.\n\nEmployer and freelancer Settings expose **Connected agents** alongside API keys.\nUsers can inspect and explicitly revoke only their own connections, including\nCLI, local MCP and hosted clients. A failed inventory read is shown as unavailable\nwith a read-only retry, not as an empty list. Final server/migration rollout,\nbrowser role tests, and actual hosted-client interoperability remain release gates.\nHosted-client compatibility must be verified for the actual connecting product\nand version; successful local stdio login is not proof that a hosted OAuth client\nsupports the same flow.\n\n### Credential precedence and API-key compatibility\n\nThe server starts without any credentials. Resolution order:\n\n1. `OPENTRAIN_PERSONAL_API_TOKEN` env var (wins outright when set)\n2. A saved browser session in the shared OpenTrain profile\n   `${XDG_CONFIG_HOME:-~/.config}/opentrain/cli.json`\n3. The saved static API key in that profile\n4. No credential — explicit browser-login and new-account onboarding remain\n   available; authenticated operations refuse without creating an account\n\nFor an existing employer account, create a personal API token from Employer\nSettings -> Developer -> API keys and provide it as `OPENTRAIN_PERSONAL_API_TOKEN`\nor save it with `opentrain auth login --api-key ...`. Static keys remain supported\nfor CI and existing integrations. Browser login preserves each lane's canonical\npermissions; it does not make freelancer access writable or bypass restricted\nplatform-admin eligibility and human payment approval.\n\n## Environment\n\n- `OPENTRAIN_API_BASE_URL`\n  - Base URL for the OpenTrain app/API. Defaults to `https://app.opentrain.ai`.\n  - Example local development value: `http://127.0.0.1:3000`.\n- `OPENTRAIN_PERSONAL_API_TOKEN` (optional)\n  - Personal OpenTrain API token (`ot_pat_…`). Optional: without it the server\n    falls back to saved credentials or tokenless onboarding.\n\n## Tools\n\nOnboarding (no token needed):\n\n- `opentrain_register_agent`\n  - Registers a brand-new anonymous agent account via `POST /api/agent/identity`.\n  - Persists the token + claim token to the shared config file (mode 0600);\n    raw secrets are not echoed in tool output.\n  - Refuses to overwrite existing credentials unless `force: true`.\n- `opentrain_claim_account`\n  - Emails the human owner a claim invite via `POST /api/agent/identity/claim`.\n  - Returns the verification URI + user code to relay to the human.\n- `opentrain_claim_status`\n  - Polls `POST /api/agent/oauth/token` (claim grant). Honors\n    `authorization_pending` / `slow_down`; on success upgrades and saves the\n    claimed token.\n\nShared job operations — Work Catalog, coordination modes, external attestations\n(0.23.0+, DEV-3191):\n\n- `opentrain_list_job_context_work_definitions` /\n  `opentrain_get_job_context_work_definition` /\n  `opentrain_list_job_context_work_executions` and the `opentrain_*_job_context_work_*`\n  mutations — the dynamic per-job Work Catalog. Work is PER-JOB catalog data,\n  never a platform enum; every covered response's `sync.workCatalog` teaches\n  the catalog head/status, the winner-only setup lease, pending human\n  approvals, and this job's work-coordination mode. Definition-bound mutations\n  present the FULL binding (versionNumber + contentHash + coordinationSignature);\n  every execution mints ONE coordinating action (the single claim authority).\n- `sync.workCatalog.coordination.mode` is the singleton typed policy\n  `WORK_COORDINATION_MODE` (recorded only by a non-agent human job manager via\n  `opentrain_record_job_context_policy`): `OPEN` (default when no row exists),\n  `COORDINATED` (every guarded mutation — e.g.\n  `opentrain_send_managed_job_message` — must present a claimed action bound\n  to an OPEN work execution, defined or provisional), `MANAGED` (that execution\n  must be DEFINED work under an ACTIVE definition). A `null` mode is\n  fail-closed, never OPEN. A refused guarded mutation surfaces the closed 409\n  details `{reason: JOB_OPS_WORK_COORDINATION_REQUIRED, requirement, mode}` in\n  the tool error text: begin defined/provisional work, claim the coordinating\n  action it mints, retry.\n- `opentrain_record_job_context_observation` accepts a top-level\n  `externalAttestation` (`ATTEST`: bounded per-job `source.system` slug,\n  optional locator/subject, claim, non-future `attestedAt`, REQUIRED\n  `expiresAt` ≤ 30 days, optional `supersedesObservationId`; `INVALIDATE`:\n  `invalidatesObservationId`, `invalidationSource` WEBHOOK|UI|AGENT|HUMAN,\n  reason, `invalidatedAt`) with authority `OBSERVED`, plus a top-level\n  `actorAgentLabel` stored canonically as `createdByAgentText` (a nested label\n  is refused). The server proves the same-context lineage before writing\n  (readable non-future target, same source + subject, one live ender per\n  target, ONE current head per source + subject). The guide\n  (`opentrain_get_job_context_guide` / resource\n  `opentrain://jobs/{jobId}/operations/guide`) carries `externalCoverage`:\n  everything not CURRENTLY attested is UNKNOWN; each entry carries status,\n  canonical attribution, bounded evidence, and the ending receipt.\n\nJob posting:\n\n- `opentrain_create_job_draft`\n  - Primary workflow: send a full plain-text `jobDescription` (or a supported\n    `canonicalJob` / `importPayload`); OpenTrain parses it server-side.\n  - Returns validation state; each missing field carries an \"ask:\" question to\n    relay to the human plus the field name(s) to set.\n- `opentrain_update_job_draft_fields`\n  - Patches draft fields by name (the gap-filling step after asking the human).\n- `opentrain_publish_job`\n  - Publishes a publish-ready draft live (same validation + moderation pipeline\n    as the in-app flow; per-account daily limits).\n\nProposals and hiring:\n\n- `opentrain_list_jobs` — own jobs with status filter + pagination.\n- `opentrain_list_proposals` — candidates for a job with bid/status/AI-interview\n  and match-score signals (the hire-decision surface).\n- `opentrain_get_proposal` — full candidate evaluation: bid, AI-interview score\n  - summary, location/identity verification, Open Label assessment, and\n    contract state. Pass `includeInterview: true` for the sanitized AI-interview\n    transcript.\n- `opentrain_get_freelancer_profile` — masked freelancer profile by id or slug:\n  skills, stats, work/label experience, education, reviews, languages. Names\n  stay masked and personal contact details are never returned.\n- `opentrain_get_candidate_dossier` — privacy-safe, viewer-scoped candidate\n  dossier for a proposal (masked profile, verification verdicts incl.\n  identity assurance, factual engagement disposition, review/contract\n  roll-ups). Optional strict `evidence: \"full\"` adds ten bounded\n  metadata-only evidence families (25-item caps, truthful truncation, typed\n  continuation). Both the input and the response are validated against the\n  exact closed contract schema — a server/tool version mismatch fails as a\n  typed error telling you to upgrade this package, never as silently\n  forwarded unvalidated data. Lockstep rule: every server-side addition to\n  the dossier response ships with a same-batch schema update and release of\n  this package, so an unknown field always means \"upgrade\", never\n  \"pass it through\".\n- `opentrain_get_candidate_dossier_resume_link` — audited LINK-ONLY resume\n  access (DEV-2977 B3.5): a fresh 600-second signed URL when AVAILABLE, or\n  a truthful typed unavailable state. `structuredContent` IS the raw\n  five-variant `{url, expiresAt, availability, reason, provenanceStatus,\nprovenance}` response object — no\n  `{apiBaseUrl, result}` envelope (hosted-MCP parity). Requires BOTH\n  `candidate_dossier:read` AND `candidate_documents:read`; every admitted\n  access is audited append-only BEFORE the URL is disclosed; the tool never\n  follows redirects or fetches bytes, and the response is runtime-validated\n  against the exact closed five-variant machine — an AVAILABLE url must be an\n  absolute http(s) URL with no embedded credentials and the expiry a\n  calendar-valid RFC3339 date-time (mismatches are typed upgrade errors).\n  Denials preserve the server's bounded error code, typed reason (e.g.\n  `SELF_ACCESS_NOT_SUPPORTED`), and request id. Since 0.22.0 (DEV-3024) the\n  response is the five-variant provenance union: AVAILABLE carries\n  `provenanceStatus: \"AVAILABLE\"` plus a `provenance` object observed at\n  issuance (sanitized original file name, allowlisted MIME type, byte size,\n  upload/modified instants, `observedAt`, an opaque `storageEtag` that is\n  NOT a checksum, and `checksum` reserved for an authoritative SHA-256 —\n  null today) or `provenanceStatus: \"UNAVAILABLE\"` with `provenance: null`;\n  every unavailable state carries `NOT_APPLICABLE` + null. Provenance is an\n  observation, never a binding on the bytes a later download returns.\n- `opentrain_list_candidate_dossier_applications` — PLATFORM-ADMIN ONLY\n  platform-wide application history for one candidate user id (DEV-2887):\n  PROPOSAL and INVITE rows counted SEPARATELY, exact all-row counts\n  (proposals, invites, distinct jobs, distinct organizations, contracts\n  resulted), a proposal velocity summary, rate-integrity bid statuses, raw\n  outcome flags, and exact offer-linked contract results. Requires\n  `candidate_dossier:read` plus the named canonical-admin exception;\n  ordinary employers receive the uniform not-found and candidate self a\n  typed `SELF_ACCESS_NOT_SUPPORTED` denial. `nextCursor` is bound to the\n  candidate and the ORIGINAL `asOf`. `structuredContent` IS the raw\n  validated page.\n- `opentrain_list_job_invitations` / `opentrain_get_job_invitation` —\n  canonical invitation state for an owned job (DEV-2846, `proposals:read` +\n  the hiring feature, inside the default-off `proposal_management` family —\n  `AGENT_SURFACE_PROPOSAL_MANAGEMENT_ENABLED`): HIRED > APPLIED > DECLINED > INVITED with no EXPIRED\n  state, `hireAcceptancePending` only for a REAL live hire authorization,\n  masked identity, hidden/banned/closed candidates withheld from pages AND\n  `totalCount`, filters applied before the exact count and keyset cursor;\n  the lookup reads the uniform `{ invited: false, invitation: null }` for\n  unknown, hidden, and never-invited candidates alike. `structuredContent`\n  IS the raw validated page/lookup.\n- `opentrain_list_candidate_dossier_reviews` /\n  `opentrain_list_candidate_dossier_contract_history` — cursor-paged full\n  lists behind the dossier's bounded previews (a non-null `nextCursor` means\n  more pages; nothing truncates silently).\n- `opentrain_get_participant_work_email` — audited managed-work-email read\n  (DEV-3031 B3.6): the canonical `@opentrain.work` primary address for a\n  participant you manage through EXACTLY ONE of `{contractId}`,\n  `{proposalId}`, or `{jobId, personUserId}` (a bare user id is never\n  accepted; strict own-key input — mixed/unknown keys fail with zero\n  network). `structuredContent` IS the raw closed eight-state response —\n  no envelope. ONLY `ACTIVE` carries an address (normalized lowercase,\n  exactly under `opentrain.work`); the personal signup/login email is\n  NEVER returned, denial text is a bounded projection that never echoes\n  server error text, and every authenticated attempt is audited\n  append-only BEFORE any address is disclosed. Requires the dedicated\n  `participant_work_email:read` scope.\n- `opentrain_invite_freelancer` — invite a freelancer to a published job.\n- `opentrain_hire_proposal` — request a hire with a first escrow milestone.\n  Does NOT hire or move money: records a pending approval and returns an\n  `approvalUrl` a signed-in human must confirm in the OpenTrain app (~72h\n  expiry). Requires a claimed account + payment method or covering credit\n  balance.\n- `opentrain_start_proposal_conversation` — open the pre-hire DM thread for a\n  proposal so messages can flow before hiring.\n\nJobs (beyond drafting):\n\n- `opentrain_search_jobs` — public marketplace search (no token needed).\n- `opentrain_update_published_job` — patch fields on a live job.\n- `opentrain_close_job` — close a published job to new proposals.\n\nContracts and milestones (co-signed money movement):\n\n- `opentrain_get_contract_history` — DEV-2830 canonical engagement history\n  for EXACTLY one `contractId` or `proposalId` (`view` current | timeline):\n  proposal → contract(s) → milestones/payouts. `current.access` derives only\n  from participationState ACTIVE/REACTIVATED (ACTIVE | NONE | CONFLICT with\n  every such contract listed — nothing is picked silently; the proposal's\n  HIRED label is never access); rehire links only from\n  `admin_balance.rehire_created` audit rows; purpose only from work-project\n  evidence (a capped/partial set stays UNSPECIFIED, `evidenceTruncated`);\n  timeline only from durable stored timestamps; bounded with explicit\n  `truncated` flags, no cursor; unknown/foreign/self selectors are one\n  opaque 404. `structuredContent.result` is the raw closed response.\n- `opentrain_list_contracts` / `opentrain_get_contract` — contract status,\n  milestones with funding/approval state, budget consumption, and the\n  post-hire job DM conversationId. DEV-2839: the list is a bounded page —\n  optional `limit` (1..100, server default 50) and `cursor` (opaque\n  `nextCursor` bound to the ORIGINAL jobId/status/asOf) with truthful\n  `totalCount`/`hasMore`/`collectedCount`/`complete`; walk pages with the\n  cursor (no unbounded all mode). A job-scoped call without limit/cursor\n  keeps the unchanged unpaged list. `structuredContent.result` is the raw\n  page validated against the closed contract schema; a database-budget\n  overrun is a typed retryable 503 `CONTRACT_LIST_TIMEOUT`.\n- `opentrain_create_milestone` — add an **unfunded** milestone directly.\n- `opentrain_request_milestone_funding` / `opentrain_request_milestone_approval`\n  — record a pending approval and return an `approvalUrl`; a signed-in human\n  confirms in the OpenTrain app before any money is held or released.\n- `opentrain_end_contract` — ends only after every milestone is terminal;\n  unresolved drafts, funded/payment, review, or refund states return structured\n  blockers with the required next action.\n- `opentrain_get_approval` — re-check a pending approval's status.\n- `opentrain_cancel_admin_balance_milestone` — cancel one eligible internally\n  funded milestone with a keyed, no-money-moved result; notifications are\n  opt-in and card/credit funding remains human-approved.\n\nUpdates feed and webhooks:\n\n- `opentrain_poll_updates` — cursor-based delta feed of account events (new\n  proposals, messages, contract/milestone changes, approval confirmations,\n  budget state changes). Persist `nextCursor` between polls.\n- `opentrain_create_webhook` / `opentrain_list_webhooks` /\n  `opentrain_get_webhook` / `opentrain_delete_webhook` — signed HMAC push\n  deliveries of the same events instead of polling. The signing secret is\n  shown once at creation.\n\nCredits (prepaid balance):\n\n- `opentrain_get_credits` — available/reserved balance.\n- `opentrain_create_credit_top_up` — returns a Stripe Checkout URL a human\n  completes; the agent cannot pay.\n- `opentrain_get_credit_top_up` — top-up status.\n- `opentrain_list_credit_ledger` — append-only ledger entries.\n\nMessaging inspection (0.27.2):\n\n- `opentrain_list_messaging_members`: paginated current roster; removed history\n  and managed work emails are explicit opt-ins.\n- `opentrain_get_messaging_member`: exactly one user/contract/managed-address\n  selector and observational add/remove eligibility.\n- `opentrain_list_job_conversations`: separate proposal DMs, Job DMs and channels,\n  with bounded response evidence. Follow `nextCursor`; `updatedAfter` is not a\n  complete message-edit feed.\n- `opentrain_audit_notification_emails`: job-authorized observations for message\n  IDs, bounded conversation/time range or milestone/recipient. Stored messages\n  and `SENT` do not establish primary delivery. Missing evidence stays unknown;\n  BCC counts are envelope evidence only.\n\nAll four are read-only, require `messages:read` and canonical access, and expose\nvalidated `structuredContent` plus a `response_format` text selector. Managed\naddresses also require `participant_work_email:read`. No read repairs or creates\nconversations/memberships. Strict stdio response schemas require the matching\nAPI release; published MCP 0.27.3 includes this cancellation operation and the\npreceding messaging batch.\n\nMessaging and payments:\n\n- `opentrain_read_messages` — omit `conversationId` to list conversation\n  summaries; provide it to read messages. Read-only.\n- `opentrain_send_message` — send a message in a conversation the token owner\n  participates in (claimed accounts only). This generic tool is intentionally\n  outside shared Job Operations synchronization.\n- `opentrain_edit_message` / `opentrain_delete_message` — author-only CAS\n  mutations of a message YOU sent (correct an already-sent instruction or\n  credential; delete is a NON-destructive tombstone — prior values survive\n  only in the append-only server-side revision ledger). Pass\n  `expectedRevision` = the message readback `revision`; the required\n  idempotency key uses the canonical 1-128 `[A-Za-z0-9._:-]` grammar\n  (minimum ONE char). Summaries never echo message content.\n- `opentrain_get_message_attachment` — retrieve one authorized attachment by\n  the opaque `attachmentId` returned by message/audit/thread reads. One\n  authenticated, audited `delivery=auto` request returns a verified\n  PNG/JPEG/WebP/GIF up to 4 MiB as an MCP image block agents can inspect;\n  everything else becomes a resource link at\n  `opentrain://messages/{messageId}/attachments/{attachmentId}`. Reading that\n  resource returns a verified blob up to 20 MiB. The server and MCP both\n  verify identity, size, SHA-256, sniffed type, and resolved delivery; no\n  storage path, signed URL, bucket, or credential is exposed.\n- `opentrain_send_managed_job_message` — the required job-manager send: uses a\n  complete claimed-action guard and stable key, rechecks the latest message,\n  and commits the message plus shared-context advance atomically. Requires\n  `messages:write` and `messages:manage`.\n- `opentrain_list_pending_payments` — pending funding/payout state, no payment\n  execution controls.\n- `opentrain_verify_payout` — retrieves current Stripe transfer state and\n  reports reversal, identity mismatch, or disagreement with OpenTrain.\n- `opentrain_preflight_payout_recovery` — exhaustively searches matching\n  amount/destination/milestone transfers and tells the operator to stop if an\n  unreversed equivalent already exists. This is a read-only duplicate guard;\n  it never creates or reconciles a transfer.\n\nTeam:\n\n- `opentrain_get_team` — organization, members, invites.\n- `opentrain_invite_team_member` — invite a human teammate by email (claimed\n  accounts only).\n\nInstructions (job-first tools over the one canonical source):\n\n- `opentrain_job_instructions_inspect` — the exact tree and employer URL for one job.\n- `opentrain_job_instructions_capabilities` — supported schema, rich nodes, limits, and guarantees.\n- `opentrain_job_instructions_read_page` — one rich TipTap JSON page plus its checksum.\n- `opentrain_job_instructions_page_link` — the actor-aware exact-page URL, with optional server-validated stable-node anchor.\n- `opentrain_job_instructions_preview` — validate and render a page without writing.\n- `opentrain_job_instructions_preflight` — validate and sign one exact mutation without writing.\n- `opentrain_job_instructions_upload_image` — upload a supported image without changing a page.\n- `opentrain_job_instructions_plan_image` — derive the deterministic final URL without uploading.\n- `opentrain_job_instructions_create_page` — idempotently create a page in the actual job tab.\n- `opentrain_job_instructions_patch_page` — checksum-guarded stable-node edits.\n- `opentrain_job_instructions_replace_page` — explicit checksum-guarded full replacement.\n- `opentrain_job_instructions_update_page` — rename, reparent, or reorder.\n- `opentrain_job_instructions_archive_page` — explicitly confirmed archival.\n- `opentrain_job_instructions_preflight_tree` / `opentrain_job_instructions_apply_tree` — validate and atomically swap a complete one-level page tree.\n- `opentrain_job_instructions_verify` — semantic and checksum verification of every canonical page.\n- `opentrain_job_instructions_visual_review` — authenticated employer/sidebar screenshot plan with an explicit worker-proof boundary.\n- `opentrain_job_instructions_schema_upgrade` — idempotent v1 → v2 page upgrade with a required quiescence window and canonical readback.\n- `opentrain_job_instructions_youtube_node` — offline normalization of a supported YouTube URL into the canonical schema-v2 node.\n- `opentrain_job_instructions_release_prepare` / `release_preview` / `release_publish` / `release_list` — immutable worker releases from the same job-owned draft, with an explicit delivery policy and audited overrides.\n- `opentrain_job_instructions_history_list` / `history_read` / `history_compare` — employer-only draft checkpoints per page: cursor-paged provenance list, one checkpoint's content, and the checkpoint→current (or checkpoint→checkpoint) block diff.\n- `opentrain_job_instructions_history_checkpoint` — explicit manual restore point, optionally receipt-tracked with an idempotency key.\n- `opentrain_job_instructions_history_restore` — DESTRUCTIVE replacement of live page content from a checkpoint. The schema requires literal `confirmRestore: true` + `confirmLive: true`, a fresh `expectedChecksum` from compare, and an `idempotencyKey`; the server records a durable undo baseline first and returns `409` on live drift. History payloads never expose TipTap room identifiers, and success proves storage + checksum readback only — never collaboration sync or browser rendering.\n\nThe server advertises job-tree and job-page resources under\n`opentrain://jobs/{jobId}/instructions`. Standalone workspaces, manuals,\nbindings, changesets, and publications were removed; they are not a second\ninstruction source. Job pages support one subpage level. Image uploads accept\nJPEG, PNG, WebP, GIF, and AVIF up to 5 MB. Every draft mutation requires\n`confirmLive: true` and the signed token from its exact no-write preflight;\nfull replacement also\nrequires a fresh checksum and `confirmReplace: true`. Complete tree apply uses\ndeterministic staging, an exact-active-set fence, one database pointer swap,\nand idempotent recovery so employers do not see partial page assemblies. In\nimmediately-live mode workers see canonical writes; when immutable releases are\nenabled, they remain on the active release until a separate publish. Release\ntools return `404` for actors outside that rollout.\n\nContent schema v2 adds details, callouts, YouTube, audio, and attachment nodes.\nExisting pages remain on their persisted schema until explicitly upgraded.\nMCP create, preview, patch, replace, tree apply, and readback operations preserve\nthe page schema and reject v2-only nodes on v1 pages. YouTube normalization\naccepts supported YouTube URL forms, retains only the validated 11-character\nvideo id plus safe attributes, and renders through the privacy-enhanced player.\n\nTraining/LMS:\n\n- `opentrain_lms_capabilities` — canonical schema, content nodes, assessment\n  settings, asset types/limits, and truthful workflow availability. It includes\n  the shared TipTap `lmsLesson` profile, registry version, per-block\n  author/edit/render support, attributes, and private-media semantics. Agents\n  author that canonical JSON directly and must not invent HTML or an MCP-only\n  lesson model.\n- Course and assessment tools — create/recover, read, validate, update,\n  publish, and bind immutable assessment/course versions.\n- `opentrain_lms_prepare_asset_upload` / `opentrain_lms_finalize_asset_upload`\n  — short-lived direct-storage grants plus server-verified checksum, length,\n  MIME, and container finalization for large private media. Never log a grant.\n- Job Training tools — read/set Training and list/link/unlink courses. Linking,\n  enabling, publishing, and assigning are deliberately separate operations.\n- Assignment and review tools — assign an immutable version, report progress,\n  remind/cancel, grade, release results, decide PASS/FAIL, and return work with\n  another attempt.\n- `opentrain_lms_list_assignments` — page mode (`cursor` + `limit`, default\n  50, max 200) returns the raw page with `hasMore` and `nextCursor`; the text\n  says `PARTIAL RESULT` with the exact next cursor, `complete`, or\n  `INCONSISTENT PAGE` (retry-only guidance). `all: true` collects every page\n  (effective page size on every request, de-duplicated by assignment id,\n  repeated-cursor safe) and returns `hasMore`, the page-level `jobId` and\n  authorized `links[]`, and `collection` `{pageSize, pagesFetched,\ncollectedCount, complete, finalCursor, stopReason, duplicatesDropped}`; any\n  page error, id-less row, job mismatch, or inconsistent page fails the whole\n  call. Course and version reads (`opentrain_lms_get_course`,\n  `opentrain_lms_list_course_versions`, `opentrain_lms_get_course_version`)\n  carry a privacy-safe `attribution` block (creator, revision-bound last\n  material updater, version author, publisher; stable ids always, display\n  fields only for current organization identities, explicit\n  `notAvailableReason` for historical gaps), and the frozen tree in\n  `opentrain_lms_get_course_version` is the complete immutable inventory.\n\nThe local stdio package and hosted endpoint expose the same business actions.\nLocal-only orchestration such as filesystem checkout/diff/reconcile remains a\nCLI concern; all canonical validation, revision fencing, authorization, and\nmutations stay on the public API.\n\nShared job operations (manager, MCP 0.27.3+):\n\n### Version and schema-drift diagnostics\n\nThe stdio server reports its installed package version in the MCP `initialize`\nhandshake as `serverInfo.version`. Record that value when diagnosing a client\nor server mismatch; it is the version that actually handled the session, not\nthe version a global install or lockfile happens to advertise. A bounded\njob-operations response-schema error also includes the installed\n`@opentrain-ai/mcp` version and tells you to upgrade and refresh any cached\n`npx` package before retrying. Do not keep retrying an unchanged malformed\nresponse.\n\nFor a fresh package check, inspect the registry version and then force a fresh\none-shot package resolution:\n\n```bash\nnpm view @opentrain-ai/mcp version\nprintf '%s\\n' \\\\\n  '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2024-11-05\",\"capabilities\":{},\"clientInfo\":{\"name\":\"version-probe\",\"version\":\"1.0\"}}}' \\\\\n  '{\"jsonrpc\":\"2.0\",\"method\":\"notifications/initialized\",\"params\":{}}' \\\\\n  | npx --yes --package=@opentrain-ai/mcp@latest opentrain-mcp\n```\n\nThe second command starts the stdio server and returns its `initialize`\nresponse; read `serverInfo.version` there. Existing MCP hosts may cache an\n`npx` package, so refresh that host/package cache after upgrading. A local\nhandshake proves only the installed client version and protocol wiring; it is\nnot an authenticated production-operation retest.\n\nMutation-tool descriptions and input schemas (MCP 0.16.0+) come from the\ncanonical Job Operations agent-mutation catalog shared with the CLI, hosted\nMCP, and OpenAPI, so every surface documents the same operation with the same\nfields, enums, and bounds; cross-surface parity is CI-pinned.\n\n- `opentrain_get_job_context` is the MANDATORY first call before managing an\n  existing employer job. The compact snapshot automatically carries the top-10\n  fresh priority attention signals with their derived claim state, signal\n  counts, per-rule evaluator health, the effective typed policies, and the\n  Agent Guide digest — there is no second bootstrap call. Initialize\n  instructions teach the full context-first protocol to every connected\n  agent — including protocol step 15: durable sync start/resume, the one\n  Agent Guide read the bootstrap envelope directs, the exact delta read\n  `recommendation.agent_guide_changed` names when the head moved\n  (added/changed sections, `removedSectionIds` tombstones),\n  acknowledging only delivered context, RECOMMENDED Playbook proposals with\n  human publication, and per-job work types (never fixed grading/retraining\n  enums) are AUTOMATIC; the human never needs to know to ask for the setup.\n- `opentrain_list_job_context_signals` / `opentrain_get_job_context_signal` —\n  deterministic attention signals (SHADOW rules are excluded at the database\n  query level; `includeShadow: true` is an explicit audit read).\n- `opentrain_acknowledge/snooze/dismiss_job_context_signal` — triage with the\n  exact `expectedSignalRevision`; triage never claims work and never clears a\n  condition (only the deterministic evaluator clears).\n- `opentrain_claim_job_context_signal` — the ONLY path that turns a signal into\n  owned work; eligibility is ACTIVE + FRESH + effective OPEN/ACKNOWLEDGED,\n  non-shadow, and the signed `claimReceipt` comes back with the action.\n- `opentrain_get_job_context_effective_policies` /\n  `opentrain_list_job_context_policy_history` /\n  `opentrain_record_job_context_policy` /\n  `opentrain_verify_job_context_policy_enforcement` — typed, attributed,\n  superseding durable policies with atomic WORKFLOW/CANONICAL_DB enforcement\n  and evidence-verified EXTERNAL enforcement.\n- `opentrain_get_job_context_agent_guide` (MCP 0.26.0+) — the **Agent Guide**,\n  the ONE operational guidance document for agents managing a job (worker-facing\n  Job Instructions are a separate surface): the canonical typed projection plus the\n  human-published Playbook (bounded Markdown sections with stable `sectionId`s\n  and per-section SHA-256 `contentHash`es, `playbookVersion`, publisher) and\n  the open-proposal count under one `contextRevision`. Bootstrap\n  `sync.nextOperations` ends with `job_operations.agent_guide.get`; afterwards\n  `recommendation.agent_guide_changed` names the exact\n  `opentrain_get_job_context_playbook_delta` read (added/changed sections,\n  `removedSectionIds` tombstones). Also the read-only Markdown resource\n  `opentrain://jobs/{jobId}/operations/agent-guide`.\n- `opentrain_get_job_context_playbook`,\n  `opentrain_list_job_context_playbook_versions`,\n  `opentrain_get_job_context_playbook_version`,\n  `opentrain_get_job_context_playbook_delta` — the published Playbook head,\n  newest-first history, one exact version, and the exact section delta.\n- `opentrain_submit_job_context_playbook_proposal`,\n  `opentrain_list_job_context_playbook_proposals`,\n  `opentrain_resolve_job_context_playbook_proposal` — agent writes to guidance\n  are PROPOSALS (RECOMMENDED, never enforced; `basePlaybookVersion` must equal\n  the head). `opentrain_publish_job_context_playbook` is the HUMAN job-manager\n  court (agent principals are refused); ACCEPT of a proposal is that same\n  court.\n- `opentrain_get_job_context_operating_guide` — the canonical typed projection\n  of the Agent Guide alone (without the Playbook; structured JSON +\n  deterministic Markdown, guideVersion + SHA-256 checksum), kept for published\n  clients — new work reads `opentrain_get_job_context_agent_guide`. The\n  Markdown is also the read-only resource\n  `opentrain://jobs/{jobId}/operations/guide`.\n- `opentrain_get_job_setup` (MCP 0.15.0+) — the deterministic SHARED\n  guided-setup packet: missing operating brief/typed workflow/required\n  operating choices with canonical evidence, ordered questions,\n  evidence-backed proposed defaults, validated canonical write previews, and\n  the in-progress `setup.*` dedupe view. While setup is incomplete every\n  covered result's `sync.recommendations` carries\n  `recommendation.job_setup_incomplete`, whose chain DRIVES the multi-agent\n  flow in order: read the packet; inspect `inProgress` (stand down on a\n  truncated view or a foreign ACTIVE `setup.*` intent / OPEN proposal);\n  declare your own `setup.*` intent via\n  `opentrain_declare_job_context_intent` (a DUPLICATE names the live winner —\n  it does not transfer ownership, so the loser stands down). Prove ownership\n  by comparing the intent's non-null `sessionId` with this result's non-null\n  `sync.session.sessionId` and matching `principalUserId`; a visible winner ID\n  is never enough. Only that same-durable-session winner presents the\n  questions/drafts to the responsible human. Immediately before approved\n  writes, re-read setup and prove the binding still holds; then use only the\n  normal brief/policy tools. A null or mismatched session means establish a\n  durable per-agent session or coordinate with the owner;\n  verify, resolve your intent, hand off. A status of INDETERMINATE is\n  fail-closed nonterminal evidence — follow the packet's `evidenceRecovery`\n  read and retry; never prompt from it. Record an approved postponement as\n  the component's `OPERATING_RULE.setup_deferral_*` typed policy; once\n  COMPLETE or DEFERRED, stop prompting — completion is shared across the\n  employer team.\n- Every one of these tools advertises AND runtime-validates exact closed\n  input/output schemas; typed-policy payloads are the three closed contract-v1\n  variants, never a generic object.\n- MCP 0.11.0 automatically threads one private server-minted session credential\n  and the latest per-job sync token across every covered native or bridged tool\n  call. Every covered result includes `sync` and `syncCoverage`; inspect\n  conflicts, recommendations, and next operations before acting. Raw signed\n  credentials and tokens never enter model-visible tool results.\n- `opentrain_poll_job_context_sync` provides a bounded real-time wait.\n  `opentrain_declare_job_context_intent`,\n  `opentrain_list_job_context_intents`, and\n  `opentrain_resolve_job_context_intent` coordinate spontaneous work before it\n  begins.\n- `opentrain_submit_job_context_proposal`,\n  `opentrain_list_job_context_proposals`,\n  `opentrain_review_job_context_proposal`, and\n  `opentrain_withdraw_job_context_proposal` record non-enforced alternatives\n  when managers disagree. Review links a separately authorized canonical\n  change and never executes one.\n- `opentrain_get_job_context_overlays` and\n  `opentrain_set_job_context_overlay` separate owner-controlled TEAM guidance,\n  one manager's PERSONAL memory, and one connection's SESSION scratch. Overlay\n  text is attributed and untrusted; it cannot alter readiness, gates, or\n  policy.\n- `opentrain_send_managed_job_message` always uses the exact synchronized\n  `messaging_management.messages.send` operation and requires a full\n  `jobOperationsGuard` plus an 8-128-character idempotency key matching\n  `[A-Za-z0-9._:-]`. It requires both `messages:manage` and `messages:write`.\n  `opentrain_send_message` is generic and deliberately cannot accept a guard or\n  advance shared context.\n- Initialize instructions teach this loop automatically. Capability\n  recommendations are product discovery, not write authority: inspect evidence\n  and show a zero-write proposal—such as a focused LMS retraining outline—before\n  creating or assigning anything.\n\nAccount and discovery:\n\n- `opentrain_auth_status` — calls `GET /api/public/v1/auth/me`, returns the\n  resolved token owner, access mode, and effective scopes. Full access keys\n  expand live as new self-serve capabilities ship; the storage sentinel is\n  never exposed.\n- `opentrain_capabilities` — feature/scope map for the current token: which\n  tool families are enabled for this account.\n- `opentrain_list_tokens` / `opentrain_revoke_token` — manage the account's\n  API tokens.\n\nAdaptive job Task Checklists (`job_checklists:read`/`write`; default-off\nagent surface; thirteen `opentrain_job_checklists_*` tools):\n\n- `opentrain_job_checklists_list` / `_get` / `_capabilities` — definitions,\n  builder detail with CAS revisions, served operations and limits.\n- `opentrain_job_checklists_create` / `_manage` / `_publish` / `_reorder` /\n  `_set_enabled` — receipt-backed mutations: atomic complete-draft create,\n  expectedDraftVersion-fenced saves and retire/restore, confirmed double-CAS\n  publish reporting the applied impact and sweep counts, strict reorder, and\n  the worker-visibility toggle (authoring keeps working while off).\n- `opentrain_job_checklists_validate` / `_resolve` — no-write preflights\n  running the EXACT publish rule set / the pure worker-runtime resolver.\n- `opentrain_job_checklists_versions` / `_submissions` — immutable history\n  and privacy-filtered submissions.\n- `opentrain_job_checklists_preview` — stateless revision-exact browser\n  preview link; the secret rides the returned URL fragment.\n\nJob reviewer feedback (`job_feedback:read`/`write`; default-off\nprivacy-sensitive agent surface; twelve `opentrain_job_feedback_*` tools —\nemployer-only, subjects never read feedback through any agent surface):\n\n- `opentrain_job_feedback_settings` / `_set_enabled` — the per-job toggle\n  (readable while off; `confirm: true` required in both directions). Every\n  other feedback tool is a typed 409 while the toggle is off.\n- `opentrain_job_feedback_list` / `_get` / `_summary` — list/search with\n  authoritative CONCERN-lane status counts plus `recordedCount` and\n  assessment counts (DEV-3168 filters: `assessment`, `lane` —\n  `lane=RECORDED` cannot combine with a concrete status/severity), full\n  detail with append-only event history, and server-computed aggregates\n  including per-person rating distributions, latest anchored rating, and\n  rated-n-of-m (never average, score, or rank these sparse ratings).\n  Non-concern rows are the \"Recorded\" lane: stored severity MINOR / status\n  OPEN are compatibility shadows — present them as \"Recorded\".\n- `opentrain_job_feedback_roster` — closed canonical subject discovery (the\n  id source for submit/link targeting).\n- `opentrain_job_feedback_submit` / `_triage` / `_link_subject` —\n  receipt-backed (in-transaction) submit (legacy severity+report shape, or\n  the DEV-3168 balanced shape: `assessment` with optional anchored ratings;\n  severity present ⇔ a concern is flagged), CAS-fenced triage (required\n  `expectedUpdatedAt`), and one-way legacy subject reconciliation.\n- `opentrain_job_feedback_access_list` / `_access_set` / `_access_bulk` —\n  reviewer-grant management; bulk is one all-or-nothing transaction.\n\n## Local smoke\n\nStart the app locally, then run the MCP server over stdio (no token needed):\n\n```bash\nOPENTRAIN_API_BASE_URL=http://127.0.0.1:3000 \\\nnpx -y tsx@4.20.5 packages/opentrain-mcp/src/index.ts\n```\n\nExample zero-to-registered probe:\n\n```bash\nprintf '%s\\n' \\\n  '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2024-11-05\",\"capabilities\":{},\"clientInfo\":{\"name\":\"smoke\",\"version\":\"1.0\"}}}' \\\n  '{\"jsonrpc\":\"2.0\",\"method\":\"notifications/initialized\",\"params\":{}}' \\\n  '{\"jsonrpc\":\"2.0\",\"id\":2,\"method\":\"tools/call\",\"params\":{\"name\":\"opentrain_register_agent\",\"arguments\":{\"agentName\":\"Local Smoke Agent\"}}}' \\\n  '{\"jsonrpc\":\"2.0\",\"id\":3,\"method\":\"tools/call\",\"params\":{\"name\":\"opentrain_auth_status\",\"arguments\":{}}}' \\\n  | OPENTRAIN_API_BASE_URL=http://127.0.0.1:3000 npx -y tsx@4.20.5 packages/opentrain-mcp/src/index.ts\n```\n\nExample primary job-draft call (uses saved or env credentials):\n\n```bash\nprintf '%s\\n' \\\n  '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2024-11-05\",\"capabilities\":{},\"clientInfo\":{\"name\":\"smoke\",\"version\":\"1.0\"}}}' \\\n  '{\"jsonrpc\":\"2.0\",\"method\":\"notifications/initialized\",\"params\":{}}' \\\n  '{\"jsonrpc\":\"2.0\",\"id\":2,\"method\":\"tools/call\",\"params\":{\"name\":\"opentrain_create_job_draft\",\"arguments\":{\"title\":\"Image Annotation Specialist\",\"jobDescription\":\"We need experienced image annotation specialists to draw bounding boxes around retail products in catalog photos. The dataset has about 1,200 JPG files. Contributors should have prior image-labeling QA experience, write short edge-case notes, and report daily throughput. Pay is $25 per hour.\",\"externalId\":\"catalog-boxes-001\",\"idempotencyKey\":\"catalog-boxes-001-local-smoke\"}}}' \\\n  | OPENTRAIN_API_BASE_URL=http://127.0.0.1:3000 npx -y tsx@4.20.5 packages/opentrain-mcp/src/index.ts\n```\n","readmeFilename":"README.md"}