{"_id":"@criotive-io/provisioning-mcp","_rev":"28-d34729226133212d204fe469380614b5","name":"@criotive-io/provisioning-mcp","dist-tags":{"latest":"1.0.0","alpha":"0.1.0-alpha.14"},"versions":{"0.1.0-alpha.1":{"name":"@criotive-io/provisioning-mcp","version":"0.1.0-alpha.1","license":"UNLICENSED","_id":"@criotive-io/provisioning-mcp@0.1.0-alpha.1","maintainers":[{"name":"codando","email":"npmjs.subplot313@passmail.com"},{"name":"criotive","email":"admin@c-iot.io"}],"bin":{"criotive-provisioning-mcp":"dist/main.js"},"dist":{"shasum":"89900f07bd5e9db0a0b83237b721aeedc7fd51a6","tarball":"https://registry.npmjs.org/@criotive-io/provisioning-mcp/-/provisioning-mcp-0.1.0-alpha.1.tgz","fileCount":3,"integrity":"sha512-2wKi++7nWESa5RH7qPfad5ard4OMebXdydDqpM4SplD3CLoZ7FLHiF20yJEiQLY24WrLH05gPGObsKWENG75xQ==","signatures":[{"sig":"MEUCIQD4Fo0DbSF/UAOe5dMoHoNlbGlsn+QTT3XCkWLLo3fs6QIgEE9j5cqnL88JPnyD9J2E0S804TgJUn2QSaOfZm65UZc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":621902},"main":"dist/main.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"8cf9a27d63a2ebf619f17399130fffcff3c29637","scripts":{"test":"esbuild src/*/*.test.ts --bundle --platform=node --format=esm --target=node20 --external:serialport --outbase=src --outdir=dist/tests && node --test \"dist/tests/**/*.test.js\"","build":"esbuild src/main.ts --bundle --platform=node --format=esm --target=node20 --external:serialport --outfile=dist/main.js","start":"node dist/main.js","prepack":"npm run build:release","typecheck":"tsc --noEmit -p tsconfig.json","build:release":"npm run build -- --minify --legal-comments=none","release:alpha":"npm publish --tag alpha"},"_npmUser":{"name":"codando","email":"npmjs.subplot313@passmail.com"},"_npmVersion":"11.16.0","description":"Local MCP server that provisions Criotive demo firmware over a serial port","directories":{},"_nodeVersion":"24.18.0","dependencies":{"serialport":"^13.0.0"},"publishConfig":{"tag":"alpha","access":"public"},"_hasShrinkwrap":false,"devDependencies":{"zod":"^3.25.76","esbuild":"^0.25.0","esptool-js":"0.6.0","typescript":"~5.9.3","@types/node":"^22.15.0","@types/w3c-web-serial":"^1.0.6","improv-wifi-serial-sdk":"^2.8.1","@modelcontextprotocol/sdk":"^1.30.0"},"_npmOperationalInternal":{"tmp":"tmp/provisioning-mcp_0.1.0-alpha.1_1786568062857_0.7560013690612535","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-alpha.2":{"name":"@criotive-io/provisioning-mcp","version":"0.1.0-alpha.2","license":"UNLICENSED","_id":"@criotive-io/provisioning-mcp@0.1.0-alpha.2","maintainers":[{"name":"codando","email":"npmjs.subplot313@passmail.com"},{"name":"criotive","email":"admin@c-iot.io"}],"bin":{"criotive-provisioning-mcp":"dist/main.js"},"dist":{"shasum":"57507cc9d03783c3680f5790122450661b8a7ffe","tarball":"https://registry.npmjs.org/@criotive-io/provisioning-mcp/-/provisioning-mcp-0.1.0-alpha.2.tgz","fileCount":3,"integrity":"sha512-arrOzc4uG4BCBfNUDkVjUt31aqXNfmzH5Uc9sE/uls8xMKOk/IsiDvGyKPHoxrVhcqibVSqwTMtXYLH0bZWIEw==","signatures":[{"sig":"MEYCIQCvXL6Gr/Oew/bljPpuxwMJoD05vZM2ZgcEOb5JYDgvYwIhAMg7FaJz1qtHVGVZVQCmBW/srUaZqp4v16E3HdILY4sk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":622905},"main":"dist/main.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"088c1fa4256cd53f527b7838bd692f72dbba5961","scripts":{"test":"esbuild src/*/*.test.ts --bundle --platform=node --format=esm --target=node20 --external:serialport --outbase=src --outdir=dist/tests && node --test \"dist/tests/**/*.test.js\"","build":"esbuild src/main.ts --bundle --platform=node --format=esm --target=node20 --external:serialport --outfile=dist/main.js","start":"node dist/main.js","prepack":"npm run build:release","typecheck":"tsc --noEmit -p tsconfig.json","build:release":"npm run build -- --minify --legal-comments=none","release:alpha":"npm publish --tag alpha"},"_npmUser":{"name":"codando","email":"npmjs.subplot313@passmail.com"},"_npmVersion":"11.16.0","description":"Local MCP server that provisions Criotive demo firmware over a serial port","directories":{},"_nodeVersion":"24.18.0","dependencies":{"serialport":"^13.0.0"},"publishConfig":{"tag":"alpha","access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"zod":"^3.25.76","esbuild":"^0.25.0","esptool-js":"0.6.0","typescript":"~5.9.3","@types/node":"^22.15.0","@types/w3c-web-serial":"^1.0.6","improv-wifi-serial-sdk":"^2.8.1","@modelcontextprotocol/sdk":"^1.30.0"},"_npmOperationalInternal":{"tmp":"tmp/provisioning-mcp_0.1.0-alpha.2_1786573618860_0.057122459728885744","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-alpha.3":{"name":"@criotive-io/provisioning-mcp","version":"0.1.0-alpha.3","license":"UNLICENSED","_id":"@criotive-io/provisioning-mcp@0.1.0-alpha.3","maintainers":[{"name":"codando","email":"npmjs.subplot313@passmail.com"},{"name":"criotive","email":"admin@c-iot.io"}],"bin":{"criotive-provisioning-mcp":"dist/main.js"},"dist":{"shasum":"2e5fdb7a0f712b8238e9512651ae0cdaa4f36ae8","tarball":"https://registry.npmjs.org/@criotive-io/provisioning-mcp/-/provisioning-mcp-0.1.0-alpha.3.tgz","fileCount":3,"integrity":"sha512-T5SB3r+yJ+uFQ9qrKgGIH4+ePfzdd4WwjgxFYFpBY9NP7fDH0Zpn1G5DHpjlDDyZ9FnPAUDWAoFyiGA3DOgxJg==","signatures":[{"sig":"MEUCIGncGlFEVHgGJAC96S6OTxOX9b2wp890JSt5rm+SbgrnAiEA+5PwOZojDKHnugPCt2d2p3cG0hvH0UzfjeT5BogsYT8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":597606},"main":"dist/main.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"fa9e9d79509f9482c27d0da779af804b381676ee","scripts":{"test":"esbuild src/*.test.ts --bundle --platform=node --format=esm --target=node20 --external:serialport --outbase=src --outdir=dist/tests && node --test \"dist/tests/**/*.test.js\"","build":"esbuild src/main.ts --bundle --platform=node --format=esm --target=node20 --external:serialport --outfile=dist/main.js","start":"node dist/main.js","prepack":"npm run build:release","typecheck":"tsc --noEmit -p tsconfig.json","build:release":"npm run build -- --minify --legal-comments=none"},"_npmUser":{"name":"codando","email":"npmjs.subplot313@passmail.com"},"_npmVersion":"11.16.0","description":"Local MCP server that provisions Criotive demo firmware onto an ESP32 over a serial port","directories":{},"_nodeVersion":"24.18.0","dependencies":{"serialport":"^13.0.0"},"publishConfig":{"tag":"alpha","access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"zod":"^3.25.76","esbuild":"^0.25.0","esptool-js":"0.6.0","typescript":"~5.9.3","@types/node":"^22.15.0","@types/w3c-web-serial":"^1.0.6","improv-wifi-serial-sdk":"^2.8.1","@modelcontextprotocol/sdk":"^1.30.0"},"_npmOperationalInternal":{"tmp":"tmp/provisioning-mcp_0.1.0-alpha.3_1787157130558_0.13065865646025743","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-alpha.4":{"name":"@criotive-io/provisioning-mcp","version":"0.1.0-alpha.4","license":"UNLICENSED","_id":"@criotive-io/provisioning-mcp@0.1.0-alpha.4","maintainers":[{"name":"codando","email":"npmjs.subplot313@passmail.com"},{"name":"criotive","email":"admin@c-iot.io"}],"bin":{"criotive-provisioning-mcp":"dist/main.js"},"dist":{"shasum":"1c34c39082e93d4b56ff49e797d76ef285ba9b59","tarball":"https://registry.npmjs.org/@criotive-io/provisioning-mcp/-/provisioning-mcp-0.1.0-alpha.4.tgz","fileCount":3,"integrity":"sha512-tW+HPhlFJrmW8fF8AsfgK3qxg8UGM4gvHcEI0s3YYqlM9T8qb9ghpQoUvug8RQeakKFNWGSBqSbm0PUS32ha/w==","signatures":[{"sig":"MEYCIQDwBhu/KB+JiAI4wumAhQOfqcrewEQXtCYKAm4gNHgUsgIhAP4fltoWkM2DftYg76ezXGZp2piM26p+hwq0fw9ob2dg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":597677},"main":"dist/main.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"7baed4b14d12eb6fa05314cfaa1e85c3b8fc49ca","scripts":{"test":"npm run build && esbuild src/*.test.ts --bundle --platform=node --format=esm --target=node20 --external:serialport --outbase=src --outdir=dist/tests && node --test \"dist/tests/**/*.test.js\"","build":"esbuild src/main.ts --bundle --platform=node --format=esm --target=node20 --external:serialport --outfile=dist/main.js --banner:js='#!/usr/bin/env node'","start":"node dist/main.js","prepack":"npm run build:release","typecheck":"tsc --noEmit -p tsconfig.json","build:release":"npm run build -- --minify --legal-comments=none"},"_npmUser":{"name":"codando","email":"npmjs.subplot313@passmail.com"},"_npmVersion":"11.16.0","description":"Local MCP server that provisions Criotive demo firmware onto an ESP32 over a serial port","directories":{},"_nodeVersion":"24.18.0","dependencies":{"serialport":"^13.0.0"},"publishConfig":{"tag":"alpha","access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"zod":"^3.25.76","esbuild":"^0.25.0","esptool-js":"0.6.0","typescript":"~5.9.3","@types/node":"^22.15.0","@types/w3c-web-serial":"^1.0.6","improv-wifi-serial-sdk":"^2.8.1","@modelcontextprotocol/sdk":"^1.30.0"},"_npmOperationalInternal":{"tmp":"tmp/provisioning-mcp_0.1.0-alpha.4_1787157974375_0.7652379423971707","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-alpha.5":{"name":"@criotive-io/provisioning-mcp","version":"0.1.0-alpha.5","license":"UNLICENSED","_id":"@criotive-io/provisioning-mcp@0.1.0-alpha.5","maintainers":[{"name":"codando","email":"npmjs.subplot313@passmail.com"},{"name":"criotive","email":"admin@c-iot.io"}],"bin":{"criotive-provisioning-mcp":"dist/main.js"},"dist":{"shasum":"650f8ef980a99c8e85dd0276117a9d53cfebaa78","tarball":"https://registry.npmjs.org/@criotive-io/provisioning-mcp/-/provisioning-mcp-0.1.0-alpha.5.tgz","fileCount":3,"integrity":"sha512-3SvJfZ/alHTz2SCFzX09PUo62TQ9ol6IrNibzHxDRoKqP/AM5Z7rMtTGDy/CWiWGiJ12c3Xn/HMVTW6J6P71wA==","signatures":[{"sig":"MEUCIDxXzLzzhRz3a3CWdn+xR/tm9vb7w1SLFm4Toa5mQCCsAiEAqSI0ci3HSgKX1+9HQZWtx3Px5ilzXZ4wJRp2yS9FzmU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":597777},"main":"dist/main.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"ab97283b79f9a6411a712339d12a39ead43e877a","scripts":{"test":"npm run build && esbuild src/*.test.ts --bundle --platform=node --format=esm --target=node20 --external:serialport --outbase=src --outdir=dist/tests && node --test \"dist/tests/**/*.test.js\"","build":"esbuild src/main.ts --bundle --platform=node --format=esm --target=node20 --external:serialport --outfile=dist/main.js --banner:js='#!/usr/bin/env node'","start":"node dist/main.js","prepack":"npm run build:release","typecheck":"tsc --noEmit -p tsconfig.json","build:release":"npm run build -- --minify --legal-comments=none"},"_npmUser":{"name":"codando","email":"npmjs.subplot313@passmail.com"},"_npmVersion":"11.16.0","description":"Local MCP server that provisions Criotive demo firmware onto an ESP32 over a serial port","directories":{},"_nodeVersion":"24.18.0","dependencies":{"serialport":"^13.0.0"},"publishConfig":{"tag":"alpha","access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"zod":"^3.25.76","esbuild":"^0.25.0","esptool-js":"0.6.0","typescript":"~5.9.3","@types/node":"^22.15.0","@types/w3c-web-serial":"^1.0.6","improv-wifi-serial-sdk":"^2.8.1","@modelcontextprotocol/sdk":"^1.30.0"},"_npmOperationalInternal":{"tmp":"tmp/provisioning-mcp_0.1.0-alpha.5_1787277846696_0.8209471904527816","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-alpha.6":{"name":"@criotive-io/provisioning-mcp","version":"0.1.0-alpha.6","license":"UNLICENSED","_id":"@criotive-io/provisioning-mcp@0.1.0-alpha.6","maintainers":[{"name":"codando","email":"npmjs.subplot313@passmail.com"},{"name":"criotive","email":"admin@c-iot.io"}],"bin":{"criotive-provisioning-mcp":"dist/main.js"},"dist":{"shasum":"a349cb96960513e24ea4254aeffbb47d3ea3cdf0","tarball":"https://registry.npmjs.org/@criotive-io/provisioning-mcp/-/provisioning-mcp-0.1.0-alpha.6.tgz","fileCount":3,"integrity":"sha512-mQQLjf5Cvxq+LRNIO9UsD35CRUejglziPxHadFEA599WrhZQ+AvKyDwFNRQx/nb1FcRijOkMQZHQfh6+/vL3uA==","signatures":[{"sig":"MEQCIGKGtXjKj48fFZw5QCEZoRdOPes4g/XT8HqAVS0gS+3YAiBZAmzZfY2TiGoUgzsvtA08E3FkhnG5I8zS/p35XCY5gw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":597786},"main":"dist/main.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"5f619bf475789559ac1af51f20bca6cb0acdd9e2","scripts":{"test":"npm run build && esbuild src/*.test.ts --bundle --platform=node --format=esm --target=node20 --external:serialport --outbase=src --outdir=dist/tests && node --test \"dist/tests/**/*.test.js\"","build":"esbuild src/main.ts --bundle --platform=node --format=esm --target=node20 --external:serialport --outfile=dist/main.js --banner:js='#!/usr/bin/env node'","start":"node dist/main.js","prepack":"npm run build:release","typecheck":"tsc --noEmit -p tsconfig.json","build:release":"npm run build -- --minify --legal-comments=none"},"_npmUser":{"name":"codando","email":"npmjs.subplot313@passmail.com"},"_npmVersion":"11.16.0","description":"Local MCP server that provisions Criotive demo firmware onto an ESP32 over a serial port","directories":{},"_nodeVersion":"24.18.0","dependencies":{"serialport":"^13.0.0"},"publishConfig":{"tag":"alpha","access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"zod":"^3.25.76","esbuild":"^0.25.0","esptool-js":"0.6.0","typescript":"~5.9.3","@types/node":"^22.15.0","@types/w3c-web-serial":"^1.0.6","improv-wifi-serial-sdk":"^2.8.1","@modelcontextprotocol/sdk":"^1.30.0"},"_npmOperationalInternal":{"tmp":"tmp/provisioning-mcp_0.1.0-alpha.6_1787355435302_0.5049415558241226","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-alpha.7":{"name":"@criotive-io/provisioning-mcp","version":"0.1.0-alpha.7","license":"UNLICENSED","_id":"@criotive-io/provisioning-mcp@0.1.0-alpha.7","maintainers":[{"name":"codando","email":"npmjs.subplot313@passmail.com"},{"name":"criotive","email":"admin@c-iot.io"}],"bin":{"criotive-provisioning-mcp":"dist/main.js"},"dist":{"shasum":"6c60033b090c003df2a25a6f575d7328521754ef","tarball":"https://registry.npmjs.org/@criotive-io/provisioning-mcp/-/provisioning-mcp-0.1.0-alpha.7.tgz","fileCount":3,"integrity":"sha512-slcOxxlDFmtCBiBGa7QVL5Td6BHI6TkeGc1QH1IvIrn2+7fQLZp8T12HVpX35OBY0trGSow6H4J9Cny5vwyusw==","signatures":[{"sig":"MEUCIQCwJjZZbonOtmuCui1cH7Jij0MH3z02ypaxDto8DwjAtgIgOIyhulr1PwxP7aTt4qAvcdu4GAD7exzDgH0eWMvnsig=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":601671},"main":"dist/main.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"6802f40d70aa9e03356e6a645f166ffa080e8ffa","scripts":{"test":"npm run build && esbuild src/*.test.ts --bundle --platform=node --format=esm --target=node20 --external:serialport --outbase=src --outdir=dist/tests && node --test \"dist/tests/**/*.test.js\"","build":"esbuild src/main.ts --bundle --platform=node --format=esm --target=node20 --external:serialport --outfile=dist/main.js --banner:js='#!/usr/bin/env node'","start":"node dist/main.js","prepack":"npm run build:release","typecheck":"tsc --noEmit -p tsconfig.json","build:mcpb":"npm run build:release -- --outfile=mcpb/server/main.js && npm install --omit=dev --prefix mcpb/server --no-audit --no-fund && npx -y @anthropic-ai/mcpb pack mcpb dist/criotive-provisioning.mcpb","build:release":"npm run build -- --minify --legal-comments=none"},"_npmUser":{"name":"codando","email":"npmjs.subplot313@passmail.com"},"_npmVersion":"11.16.0","description":"Local MCP server that provisions Criotive demo firmware onto an ESP32 over a serial port","directories":{},"_nodeVersion":"24.18.0","dependencies":{"serialport":"^13.0.0"},"publishConfig":{"tag":"alpha","access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"zod":"^3.25.76","esbuild":"^0.25.0","esptool-js":"0.6.0","typescript":"~5.9.3","@types/node":"^22.15.0","@types/w3c-web-serial":"^1.0.6","improv-wifi-serial-sdk":"^2.8.1","@modelcontextprotocol/sdk":"^1.30.0"},"_npmOperationalInternal":{"tmp":"tmp/provisioning-mcp_0.1.0-alpha.7_1787958721415_0.9101156482500965","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-alpha.8":{"name":"@criotive-io/provisioning-mcp","version":"0.1.0-alpha.8","license":"UNLICENSED","_id":"@criotive-io/provisioning-mcp@0.1.0-alpha.8","maintainers":[{"name":"codando","email":"npmjs.subplot313@passmail.com"},{"name":"criotive","email":"admin@c-iot.io"}],"bin":{"criotive-provisioning-mcp":"dist/main.js"},"dist":{"shasum":"4928e4f794fa643b41cf8bc66b5f39a562d9a93f","tarball":"https://registry.npmjs.org/@criotive-io/provisioning-mcp/-/provisioning-mcp-0.1.0-alpha.8.tgz","fileCount":3,"integrity":"sha512-FyFg9szqNvGpE33lEHb6wRxZFSXbtgLPJKZKn9AH66v0NmfnC4hiMl7RQITzyEDgpOei4nCPgVuhswixHH3crQ==","signatures":[{"sig":"MEQCIAiNQNccNi+eGWh1s39f6UW/bPf3UPn7o/6lkQ7DneayAiANsjSEJDDUI2MR8z/a513hzXyYgkqME8EExjrn6pnAjg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":601838},"main":"dist/main.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"9b824e98df1f6457c4320e0dbdb1e94c34dd8018","scripts":{"test":"npm run build && esbuild src/*.test.ts --bundle --platform=node --format=esm --target=node20 --external:serialport --outbase=src --outdir=dist/tests && node --test \"dist/tests/**/*.test.js\"","build":"esbuild src/main.ts --bundle --platform=node --format=esm --target=node20 --external:serialport --outfile=dist/main.js --banner:js='#!/usr/bin/env node'","start":"node dist/main.js","prepack":"npm run build:release","typecheck":"tsc --noEmit -p tsconfig.json","build:mcpb":"npm run build:release -- --outfile=mcpb/server/main.js && npm install --omit=dev --prefix mcpb/server --no-audit --no-fund && npx -y @anthropic-ai/mcpb pack mcpb dist/criotive-provisioning.mcpb","build:release":"npm run build -- --minify --legal-comments=none"},"_npmUser":{"name":"codando","email":"npmjs.subplot313@passmail.com"},"_npmVersion":"11.16.0","description":"Local MCP server that provisions Criotive demo firmware onto an ESP32 over a serial port","directories":{},"_nodeVersion":"24.18.0","dependencies":{"serialport":"^13.0.0"},"publishConfig":{"tag":"alpha","access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"zod":"^3.25.76","esbuild":"^0.25.0","esptool-js":"0.6.0","typescript":"~5.9.3","@types/node":"^22.15.0","@types/w3c-web-serial":"^1.0.6","improv-wifi-serial-sdk":"^2.8.1","@modelcontextprotocol/sdk":"^1.30.0"},"_npmOperationalInternal":{"tmp":"tmp/provisioning-mcp_0.1.0-alpha.8_1787973936826_0.10656837365184724","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-alpha.9":{"name":"@criotive-io/provisioning-mcp","version":"0.1.0-alpha.9","license":"UNLICENSED","_id":"@criotive-io/provisioning-mcp@0.1.0-alpha.9","maintainers":[{"name":"codando","email":"npmjs.subplot313@passmail.com"},{"name":"criotive","email":"admin@c-iot.io"}],"bin":{"criotive-provisioning-mcp":"dist/main.js"},"dist":{"shasum":"4d46fe63cbbf1b338a535bf5325c9d65496db81a","tarball":"https://registry.npmjs.org/@criotive-io/provisioning-mcp/-/provisioning-mcp-0.1.0-alpha.9.tgz","fileCount":3,"integrity":"sha512-FraRot3idBkoTeq21DR/wS1nTQ8ZMYvuMqWOAFnU04roQk5S1+gtpdcQvb9JlBUk0YokPFXIgZXgwnKC1tZIMw==","signatures":[{"sig":"MEUCIQCfKC0UsertyFdy6yck8dnStx9pcDuWa8t1ghbZhcKiKgIga0pZNaObzWpyTniYVNwUKB2IqBinHFnSnWDvOwP0Sb0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":602035},"main":"dist/main.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"f3c2ca90ce6dd8868569ea1e2699ed729be77aeb","scripts":{"test":"npm run build && esbuild src/*.test.ts --bundle --platform=node --format=esm --target=node20 --external:serialport --outbase=src --outdir=dist/tests && node --test \"dist/tests/**/*.test.js\"","build":"esbuild src/main.ts --bundle --platform=node --format=esm --target=node20 --external:serialport --outfile=dist/main.js --banner:js='#!/usr/bin/env node'","start":"node dist/main.js","prepack":"npm run build:release","typecheck":"tsc --noEmit -p tsconfig.json","build:mcpb":"npm run build:release -- --outfile=mcpb/server/main.js && npm install --omit=dev --prefix mcpb/server --no-audit --no-fund && npx -y @anthropic-ai/mcpb pack mcpb dist/criotive-provisioning.mcpb","build:release":"npm run build -- --minify --legal-comments=none"},"_npmUser":{"name":"codando","email":"npmjs.subplot313@passmail.com"},"_npmVersion":"11.16.0","description":"Local MCP server that provisions Criotive demo firmware onto an ESP32 over a serial port","directories":{},"_nodeVersion":"24.18.0","dependencies":{"serialport":"^13.0.0"},"publishConfig":{"tag":"alpha","access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"zod":"^3.25.76","esbuild":"^0.25.0","esptool-js":"0.6.0","typescript":"~5.9.3","@types/node":"^22.15.0","@types/w3c-web-serial":"^1.0.6","improv-wifi-serial-sdk":"^2.8.1","@modelcontextprotocol/sdk":"^1.30.0"},"_npmOperationalInternal":{"tmp":"tmp/provisioning-mcp_0.1.0-alpha.9_1787975639461_0.49582659303902354","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-alpha.10":{"name":"@criotive-io/provisioning-mcp","version":"0.1.0-alpha.10","license":"UNLICENSED","_id":"@criotive-io/provisioning-mcp@0.1.0-alpha.10","maintainers":[{"name":"codando","email":"npmjs.subplot313@passmail.com"},{"name":"criotive","email":"admin@c-iot.io"}],"bin":{"criotive-provisioning-mcp":"dist/main.js"},"dist":{"shasum":"b27782cd94c782fa004a44a9062de090e0c9a803","tarball":"https://registry.npmjs.org/@criotive-io/provisioning-mcp/-/provisioning-mcp-0.1.0-alpha.10.tgz","fileCount":3,"integrity":"sha512-nCmie+t6Pn+ja/UFYu5cGm+RUN2C5Ws2F2yjiXLmmqlcILhf3sz80C+3crsyHnZ+2HoicE3ljNKk0u7eQTVSBw==","signatures":[{"sig":"MEYCIQDmYBuH0QVsq9nj0G5938vQbhLr6E6WcxmbBn4/N4LYfgIhAPF63MxdiWsRILDBW2lMstrGNUQO5WPCPTwc53zshTaF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":602838},"main":"dist/main.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"f4d146785af529c95b6e24d4024ddc48734f787b","scripts":{"test":"npm run build && esbuild src/*.test.ts --bundle --platform=node --format=esm --target=node20 --external:serialport --outbase=src --outdir=dist/tests && node --test \"dist/tests/**/*.test.js\"","build":"esbuild src/main.ts --bundle --platform=node --format=esm --target=node20 --external:serialport --outfile=dist/main.js --banner:js='#!/usr/bin/env node'","start":"node dist/main.js","prepack":"npm run build:release","typecheck":"tsc --noEmit -p tsconfig.json","build:mcpb":"npm run build:release -- --outfile=mcpb/server/main.js && npm install --omit=dev --prefix mcpb/server --no-audit --no-fund && npx -y @anthropic-ai/mcpb pack mcpb dist/criotive-provisioning.mcpb","build:release":"npm run build -- --minify --legal-comments=none"},"_npmUser":{"name":"codando","email":"npmjs.subplot313@passmail.com"},"_npmVersion":"11.16.0","description":"Local MCP server that provisions Criotive demo firmware onto an ESP32 over a serial port","directories":{},"_nodeVersion":"24.18.0","dependencies":{"serialport":"^13.0.0"},"publishConfig":{"tag":"alpha","access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"zod":"^3.25.76","esbuild":"^0.25.0","esptool-js":"0.6.0","typescript":"~5.9.3","@types/node":"^22.15.0","@types/w3c-web-serial":"^1.0.6","improv-wifi-serial-sdk":"^2.8.1","@modelcontextprotocol/sdk":"^1.30.0"},"_npmOperationalInternal":{"tmp":"tmp/provisioning-mcp_0.1.0-alpha.10_1788105288796_0.10432478329966521","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-alpha.11":{"name":"@criotive-io/provisioning-mcp","version":"0.1.0-alpha.11","license":"UNLICENSED","_id":"@criotive-io/provisioning-mcp@0.1.0-alpha.11","maintainers":[{"name":"codando","email":"npmjs.subplot313@passmail.com"},{"name":"criotive","email":"admin@c-iot.io"}],"bin":{"criotive-provisioning-mcp":"dist/main.js"},"dist":{"shasum":"f49f1d0ef8e817fd405164265b73128b702d5bef","tarball":"https://registry.npmjs.org/@criotive-io/provisioning-mcp/-/provisioning-mcp-0.1.0-alpha.11.tgz","fileCount":3,"integrity":"sha512-h+ieCistKPHK4M80MxauwdL7fUb3sG3sVrLYEX/YhxjgnrbEaVCjl7AYBO/wpaUsmeGjdrhoiEohN6jBuilTrg==","signatures":[{"sig":"MEQCIB9TX1MjqH5zgd45HRQqKg7XeFgbSctELqfpRTZnzTkXAiAfBFYrE0gDZRBXqTROq2yDzapSNrpPyPU5rlK2qNwWsg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":606198},"main":"dist/main.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"f9f45bfab63d0d757b8086d77d07129b998fdeec","scripts":{"test":"npm run build && esbuild src/*.test.ts --bundle --platform=node --format=esm --target=node20 --external:serialport --outbase=src --outdir=dist/tests && node --test \"dist/tests/**/*.test.js\"","build":"esbuild src/main.ts --bundle --platform=node --format=esm --target=node20 --external:serialport --outfile=dist/main.js --banner:js='#!/usr/bin/env node'","start":"node dist/main.js","prepack":"npm run build:release","typecheck":"tsc --noEmit -p tsconfig.json","build:mcpb":"node scripts/sync-mcpb-version.mjs && npm run build:release -- --outfile=mcpb/server/main.js && npm install --omit=dev --prefix mcpb/server --no-audit --no-fund && npx -y @anthropic-ai/mcpb pack mcpb dist/criotive-provisioning.mcpb","build:release":"npm run build -- --minify --legal-comments=none"},"_npmUser":{"name":"codando","email":"npmjs.subplot313@passmail.com"},"_npmVersion":"11.16.0","description":"Local MCP server that provisions Criotive demo firmware onto an ESP32 over a serial port","directories":{},"_nodeVersion":"24.18.0","dependencies":{"serialport":"^13.0.0"},"publishConfig":{"tag":"alpha","access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"zod":"^3.25.76","esbuild":"^0.25.0","esptool-js":"0.6.0","typescript":"~5.9.3","@types/node":"^22.15.0","@types/w3c-web-serial":"^1.0.6","improv-wifi-serial-sdk":"^2.8.1","@modelcontextprotocol/sdk":"^1.30.0"},"_npmOperationalInternal":{"tmp":"tmp/provisioning-mcp_0.1.0-alpha.11_1788306794580_0.7674294830926536","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-alpha.12":{"name":"@criotive-io/provisioning-mcp","version":"0.1.0-alpha.12","license":"UNLICENSED","_id":"@criotive-io/provisioning-mcp@0.1.0-alpha.12","maintainers":[{"name":"codando","email":"npmjs.subplot313@passmail.com"},{"name":"criotive","email":"admin@c-iot.io"}],"bin":{"criotive-provisioning-mcp":"dist/main.js"},"dist":{"shasum":"8fba7497155cd6e95fa2b1a6854457093b0bfb30","tarball":"https://registry.npmjs.org/@criotive-io/provisioning-mcp/-/provisioning-mcp-0.1.0-alpha.12.tgz","fileCount":3,"integrity":"sha512-3js+8WRR+qeOPvcssQr08lYGjPHNAYZdPL6yX/kqYPIYQpZTY4RdOiO7tLOZN+/IcPD1ClBFxiIXstSk5H3cfA==","signatures":[{"sig":"MEUCIC35je1I68Xn4PBAs7PNlMAbQWqEYRBPZWqw/22xYdwpAiEAs9i6HfGSYVFmDofDV9RAgFQGelqSvl22Jmq/4LyrH/U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":606077},"main":"dist/main.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"1c41ca0f0eb6f998dd35c6d5966bf3ed26aca751","scripts":{"test":"npm run build && esbuild src/*.test.ts --bundle --platform=node --format=esm --target=node20 --external:serialport --outbase=src --outdir=dist/tests && node --test \"dist/tests/**/*.test.js\"","build":"esbuild src/main.ts --bundle --platform=node --format=esm --target=node20 --external:serialport --outfile=dist/main.js --banner:js='#!/usr/bin/env node'","start":"node dist/main.js","prepack":"npm run build:release","typecheck":"tsc --noEmit -p tsconfig.json","build:mcpb":"node scripts/sync-mcpb-version.mjs && npm run build:release -- --outfile=mcpb/server/main.js && npm install --omit=dev --prefix mcpb/server --no-audit --no-fund && npx -y @anthropic-ai/mcpb pack mcpb dist/criotive-provisioning.mcpb","build:release":"npm run build -- --minify --legal-comments=none"},"_npmUser":{"name":"codando","email":"npmjs.subplot313@passmail.com"},"_npmVersion":"11.16.0","description":"Local MCP server that provisions Criotive demo firmware onto an ESP32 over a serial port","directories":{},"_nodeVersion":"24.18.0","dependencies":{"serialport":"^13.0.0"},"publishConfig":{"tag":"alpha","access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"zod":"^3.25.76","esbuild":"^0.25.0","esptool-js":"0.6.0","typescript":"~5.9.3","@types/node":"^22.15.0","@types/w3c-web-serial":"^1.0.6","improv-wifi-serial-sdk":"^2.8.1","@modelcontextprotocol/sdk":"^1.30.0"},"_npmOperationalInternal":{"tmp":"tmp/provisioning-mcp_0.1.0-alpha.12_1788308196852_0.836546276414806","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-alpha.13":{"name":"@criotive-io/provisioning-mcp","version":"0.1.0-alpha.13","license":"UNLICENSED","_id":"@criotive-io/provisioning-mcp@0.1.0-alpha.13","maintainers":[{"name":"codando","email":"npmjs.subplot313@passmail.com"},{"name":"criotive","email":"admin@c-iot.io"}],"bin":{"criotive-provisioning-mcp":"dist/main.js"},"dist":{"shasum":"7fffc1aca1bc4565573b4b38eae2011cbbc392e9","tarball":"https://registry.npmjs.org/@criotive-io/provisioning-mcp/-/provisioning-mcp-0.1.0-alpha.13.tgz","fileCount":3,"integrity":"sha512-fGFjXvLpRZu3oYGBQjAqHdYRLt00TVbvk7at5LWSjweYtFTloWA2oUlInsTF4k/qYP+8sjIGF4dZpFLfYpSATQ==","signatures":[{"sig":"MEUCIQDaDoC+SaEXFDDM+W+DqPJaO1ZOtwpwcQ8Y25o2OsFXTQIgAb9GalUFXSsPrFcduc3qGvdpzvn/F3D7BwAi6KcXJ5Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":607835},"main":"dist/main.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"886cb8d998423a0a809e88b21d949c5850f52d7b","scripts":{"test":"npm run build && esbuild src/*.test.ts --bundle --platform=node --format=esm --target=node20 --external:serialport --outbase=src --outdir=dist/tests && node --test \"dist/tests/**/*.test.js\"","build":"esbuild src/main.ts --bundle --platform=node --format=esm --target=node20 --external:serialport --outfile=dist/main.js --banner:js='#!/usr/bin/env node'","start":"node dist/main.js","prepack":"npm run build:release","typecheck":"tsc --noEmit -p tsconfig.json","build:mcpb":"node scripts/sync-mcpb-version.mjs && npm run build:release -- --outfile=mcpb/server/main.js && npm install --omit=dev --prefix mcpb/server --no-audit --no-fund && npx -y @anthropic-ai/mcpb pack mcpb dist/criotive-provisioning.mcpb","build:release":"npm run build -- --minify --legal-comments=none"},"_npmUser":{"name":"codando","email":"npmjs.subplot313@passmail.com"},"_npmVersion":"10.9.8","description":"Local MCP server that provisions Criotive demo firmware onto an ESP32 over a serial port","directories":{},"_nodeVersion":"22.23.1","dependencies":{"serialport":"^13.0.0"},"publishConfig":{"tag":"alpha","access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"zod":"^3.25.76","esbuild":"^0.25.0","esptool-js":"0.6.0","typescript":"~5.9.3","@types/node":"^22.15.0","@types/w3c-web-serial":"^1.0.6","improv-wifi-serial-sdk":"^2.8.1","@modelcontextprotocol/sdk":"^1.30.0"},"_npmOperationalInternal":{"tmp":"tmp/provisioning-mcp_0.1.0-alpha.13_1788318640887_0.7088223186264984","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-alpha.14":{"name":"@criotive-io/provisioning-mcp","version":"0.1.0-alpha.14","license":"UNLICENSED","_id":"@criotive-io/provisioning-mcp@0.1.0-alpha.14","maintainers":[{"name":"codando","email":"npmjs.subplot313@passmail.com"},{"name":"criotive","email":"admin@c-iot.io"},{"name":"junioteixeira","email":"junio-82@hotmail.com"}],"bin":{"criotive-provisioning-mcp":"dist/main.js"},"dist":{"shasum":"18bcda35fc247464238b9460eb6d7073c5ad7098","tarball":"https://registry.npmjs.org/@criotive-io/provisioning-mcp/-/provisioning-mcp-0.1.0-alpha.14.tgz","fileCount":3,"integrity":"sha512-vvky8eV/AdkU0X7ESOPczTXxdlZPOzf8MZXn/nWOz9MpKCOhOMM1dSmd+gVHbvxkUmj2ux9x5R7V3J6ISXZLNw==","signatures":[{"sig":"MEUCIQDG7Iu4eO0GDjVFh+AFHPwM4ZhJ5yYObikQj2wCJGH9pgIgZfnZWD9LAGSyx4n0zj+JcWnh4nqCGcBaJ1gGaKtR4OY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":609113},"main":"dist/main.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"25aa15d51439b28b176b292472c293d8a7b3fb9f","scripts":{"test":"npm run build && esbuild src/*.test.ts --bundle --platform=node --format=esm --target=node20 --external:serialport --outbase=src --outdir=dist/tests && node --test \"dist/tests/**/*.test.js\"","build":"esbuild src/main.ts --bundle --platform=node --format=esm --target=node20 --external:serialport --outfile=dist/main.js --banner:js=\"#!/usr/bin/env node\"","start":"node dist/main.js","prepack":"npm run build:release","typecheck":"tsc --noEmit -p tsconfig.json","build:mcpb":"node scripts/sync-mcpb-version.mjs && npm run build:release -- --outfile=mcpb/server/main.js && node scripts/install-mcpb-server-deps.mjs && npx -y @anthropic-ai/mcpb pack mcpb dist/criotive-provisioning.mcpb","build:release":"npm run build -- --minify --legal-comments=none"},"_npmUser":{"name":"junioteixeira","email":"junio-82@hotmail.com"},"_npmVersion":"11.6.2","description":"Local MCP server that provisions Criotive demo firmware onto an ESP32 over a serial port","directories":{},"_nodeVersion":"24.11.1","dependencies":{"serialport":"^13.0.0"},"publishConfig":{"tag":"alpha","access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"zod":"^3.25.76","esbuild":"^0.25.0","esptool-js":"0.6.0","typescript":"~5.9.3","@types/node":"^22.15.0","@types/w3c-web-serial":"^1.0.6","improv-wifi-serial-sdk":"^2.8.1","@modelcontextprotocol/sdk":"^1.30.0"},"_npmOperationalInternal":{"tmp":"tmp/provisioning-mcp_0.1.0-alpha.14_1789272684036_0.7383912739663014","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"_id":"@criotive-io/provisioning-mcp@1.0.0","bin":{"criotive-provisioning-mcp":"dist/main.js"},"dist":{"shasum":"6a1f4fd1da00910379b25598c368b00cb7f02760","tarball":"https://registry.npmjs.org/@criotive-io/provisioning-mcp/-/provisioning-mcp-1.0.0.tgz","integrity":"sha512-H5YxZJ+kI1QBn5o7qA0kPaEEdQVXgw2Qea3caA6UIYcb3AQSxXkI/quZh0LINORG6iYLifo9S1m5MuR4foXDYA==","fileCount":3,"unpackedSize":611878,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQD+zSVWmFGwTNESQ8lFtWa6Zzom9OSPVw2y9RRyiTiI8AIgGWEuSKhdrzE7i4GSgYbSUOdGa/y0gbmOopCym03V++E="}]},"main":"dist/main.js","name":"@criotive-io/provisioning-mcp","type":"module","engines":{"node":">=20.0.0"},"gitHead":"0b47bc5c3f18a38d806b85a1a9d8fef1eaadc845","license":"UNLICENSED","scripts":{"test":"npm run build && esbuild src/*.test.ts --bundle --platform=node --format=esm --target=node20 --external:serialport --outbase=src --outdir=dist/tests && node --test dist/tests/*.test.js","build":"esbuild src/main.ts --bundle --platform=node --format=esm --target=node20 --external:serialport --outfile=dist/main.js --banner:js=\"#!/usr/bin/env node\"","start":"node dist/main.js","prepack":"npm run build:release","typecheck":"tsc --noEmit -p tsconfig.json","build:mcpb":"node scripts/sync-mcpb-version.mjs && npm run build:release -- --outfile=mcpb/server/main.js && node scripts/install-mcpb-server-deps.mjs && npx -y @anthropic-ai/mcpb pack mcpb dist/criotive-provisioning.mcpb","build:release":"npm run build -- --minify --legal-comments=none"},"version":"1.0.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:40011d4e-672b-4fb2-84fa-f359ea45a2df"},"approver":{"name":"junioteixeira","email":"junio-82@hotmail.com"}},"_npmVersion":"11.19.1","description":"Local MCP server that provisions Criotive demo firmware onto an ESP32 over a serial port","directories":{},"maintainers":[{"name":"codando","email":"npmjs.subplot313@passmail.com"},{"name":"criotive","email":"admin@c-iot.io"},{"name":"junioteixeira","email":"junio-82@hotmail.com"}],"_nodeVersion":"22.23.2","dependencies":{"serialport":"^13.0.0"},"publishConfig":{"access":"public"},"devDependencies":{"zod":"^3.25.76","esbuild":"^0.25.0","esptool-js":"0.6.0","typescript":"~5.9.3","@types/node":"^22.15.0","@types/w3c-web-serial":"^1.0.6","improv-wifi-serial-sdk":"^2.8.1","@modelcontextprotocol/sdk":"^1.30.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/provisioning-mcp_1.0.0_1789957294883_0.1900588906547409"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-12T20:54:22.658Z","modified":"2026-09-21T02:21:35.122Z","0.1.0-alpha.1":"2026-08-12T20:54:23.058Z","0.1.0-alpha.2":"2026-08-12T22:26:59.013Z","0.1.0-alpha.3":"2026-08-19T16:32:10.721Z","0.1.0-alpha.4":"2026-08-19T16:46:14.544Z","0.1.0-alpha.5":"2026-08-21T02:04:06.851Z","0.1.0-alpha.6":"2026-08-21T23:37:15.431Z","0.1.0-alpha.7":"2026-08-28T23:12:01.559Z","0.1.0-alpha.8":"2026-08-29T03:25:36.972Z","0.1.0-alpha.9":"2026-08-29T03:53:59.622Z","0.1.0-alpha.10":"2026-08-30T15:54:48.958Z","0.1.0-alpha.11":"2026-09-01T23:53:14.735Z","0.1.0-alpha.12":"2026-09-02T00:16:37.075Z","0.1.0-alpha.13":"2026-09-02T03:10:41.056Z","0.1.0-alpha.14":"2026-09-13T04:11:24.172Z","1.0.0":"2026-09-21T02:21:34.976Z"},"license":"UNLICENSED","description":"Local MCP server that provisions Criotive demo firmware onto an ESP32 over a serial port","maintainers":[{"name":"codando","email":"npmjs.subplot313@passmail.com"},{"name":"criotive","email":"admin@c-iot.io"},{"name":"junioteixeira","email":"junio-82@hotmail.com"}],"readme":"# @criotive-io/provisioning-mcp\n\nLocal MCP server that writes the Criotive demo firmware to an ESP32 over a serial cable and joins the\nboard to Wi-Fi. It talks to hardware attached to *this* machine and knows nothing about\norganizations, devices or telemetry — those live on the Criotive platform's own MCP server, and a\nfull run uses both.\n\n## Install\n\n`CRIOTIVE_API_BASE_URL` is where a provisioning ticket is redeemed, and it is the host you sign in\nto. It defaults to `https://criotive.io`, so set it only for a private deployment, HMG or a\ndeveloper's machine.\n\n**Claude Code**\n\n```bash\nclaude mcp add criotive-provisioning -- npx -y @criotive-io/provisioning-mcp\n```\n\nAgainst another deployment, add `-e CRIOTIVE_API_BASE_URL=https://your-deployment.example` before\nthe `--`.\n\n**Claude Desktop** — install the bundle, which carries its own dependencies and asks for the URL in\nthe install dialog. Build it with `npm run build:mcpb`, then drag `dist/criotive-provisioning.mcpb`\nonto Claude Desktop.\n\n**Any client, by hand**\n\n```jsonc\n{\n  \"mcpServers\": {\n    \"criotive-provisioning\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@criotive-io/provisioning-mcp\"]\n      // \"env\": { \"CRIOTIVE_API_BASE_URL\": \"https://your-deployment.example\" } — only off the default\n    }\n  }\n}\n```\n\n`provision_device` puts the board to the person before it writes. On a client that implements MCP\n**elicitation**, this server asks in its own words, naming the port it is about to open, and only that\nanswer proceeds. On a client that cannot ask, the question is the assistant's to put and this server\nnever sees it — what it still requires is the `confirmCode` from `list_serial_devices`, which ties the\nwrite to a port that was listed moments earlier. A confirmation that was delivered and then refused,\nignored until it timed out, or lost to a transport error always stops the write; only a client with no\nway to ask at all falls through to the assistant's question.\n\n## The flow\n\n1. Enrol the device on the platform with `enroll_device`, choosing the demo firmware. It returns a\n   **provisioning ticket**.\n2. `list_serial_devices` here, and let the user say which board is theirs.\n3. `provision_device` with that path, the `confirmCode` listed beside it, and the ticket.\n4. `provisioning_status` until the outcome is not \"working\". It waits on the server, so call it\n   again rather than sleeping.\n5. Confirm on the platform that the device actually connected and published.\n\nA run that reaches an outcome hands the serial port back on its own; `release_device` is for\nabandoning one mid-way, and a released run stops where it stands rather than reopening the port it\njust handed back. A ticket the platform turns down — expired, spent or unknown — is reported as\nits own failure, and the answer says to ask the platform for another one with\n`issue_provisioning_ticket` rather than enrolling a second device.\n\nA board is busy from the moment `provision_device` takes it, which is *before* the person is asked to\nconfirm it. Clients time a tool call out in well under the time someone takes to answer, so a second\ncall with the same path while that question is on screen is refused with \"is busy\" rather than\nstarting a run that would leave the first one writing unattended.\n\nEvery answer from steps 3 and 4 carries a `nextAction` field. Follow it rather than reading the\nprose: `callProvisioningStatus` means the board is still busy, `openUrlWithUser` means a person has\nto act before anything else can happen, the two `report*` values are terminal, and `none` means\nnothing is running for that board — a write the person declined to confirm ends there.\n\nTwo rules hold throughout:\n\n- **Never choose the board.** Writing firmware to the wrong device destroys what was on it.\n- **Never ask the user for their Wi-Fi password.** `provision_device` opens a page on their own\n  machine listing the networks *the board* found; the password goes browser → this server → the\n  board over the cable, and enters neither the conversation nor the MCP client.\n\n## Ports on the board\n\nAn ESP32-S3 dev board usually exposes two USB sockets. This firmware answers the Wi-Fi step on the\nchip's own USB port, not on the UART bridge — a board flashed through the UART port writes fine and\nthen never answers. The server names that case when it can tell.\n\n## Development\n\n```bash\nnpm install\nnpm run typecheck\nnpm test\nnpm run build\n```\n\nThe decisions shared with the portal's browser flasher — chip family, the post-write reset, following\na board that re-enumerated, network normalization — live in\n`../Site/ClientApp/projects/platform-core/src/serial` and are bundled from there.\n\n## Releasing\n\nNo dist-tag is configured, so `npm publish` applies `latest` itself and a bare\n`npm install @criotive-io/provisioning-mcp` resolves to what was just published. A release is a\ncommit that bumps `package.json` and carries the output of `scripts/sync-mcpb-version.mjs`, so the\nbundle's manifest and its server report the same version.\n\nReleasing is the **Release: Publish provisioning MCP to npm** workflow, run from `develop` or `main`\n— an approved version cannot be replaced, so the workflow refuses any other ref and offers `dry_run`\nto pack one instead. It typechecks, tests and re-runs the sync script first.\n\nIt **stages**, and nothing is live when it goes green: the version waits under *Staged Packages* on\nnpmjs.com until a maintainer approves it with 2FA. That second step is the release — the workflow\ncannot take it, which is the point.\n\nThere is no npm token: npm authenticates the run over OIDC, against the trusted publisher configured\non the package (`criotive` / `site`, workflow `publish-provisioning-mcp.yml`), with direct publishing\nleft unchecked so a run can only ever stage. That is also why this one job runs on `ubuntu-latest`\nrather than the repository's Blacksmith runners — npm takes a trusted publish only from a\ncloud-hosted runner, and a self-hosted one is refused whatever it builds. That pins the release to this repository and this\nfilename, so renaming the workflow, or moving the job into another file, stops it until the package's\ntrusted publisher is updated to match. The repository is private, so npm generates no provenance\nattestation — it is the one thing trusted publishing would otherwise add.\n\nThe same thing by hand, from a checkout of that commit — the bundle pulls its shared serial code from\n`../Site/ClientApp`, so it has to be the repository and not a copy of this directory:\n\n```bash\nnpm publish\n```\n\nA prerelease needs the tag back on the command line — `npm publish --tag next` — because a version\npublished with no tag moves `latest` whatever its suffix says.\n\n## Upgrading from the `0.1.0-alpha` line\n\nThe `alpha` dist-tag stays where the last prerelease left it, so a client registered as `@alpha` keeps\nrunning that build until it is pointed at `latest`. Two changes landed across those alphas.\n\n**The nine poll-oriented tools are gone.** `connect_device`, `disconnect_device`,\n`flash_demo_firmware`, `start_wifi_provisioning`, `submit_wifi_credentials`, `list_wifi_networks`,\n`get_provisioning_progress`, `get_provisioning_status` and `reconnect_device` were replaced by\n`provision_device`, `provisioning_status`, `change_wifi_network` and `release_device`, which wait on\nthe server rather than asking the caller to poll.\n\n**`provision_device` requires a `confirmCode`.** `list_serial_devices` returns one per port, and the\nwrite is refused without the live code for the port it is given. A caller that passes a path it\nremembered, rather than one it just listed, now fails where it used to flash.\n","readmeFilename":"README.md"}