{"_id":"@butlr/butlr-mcp-server","_rev":"9-bbba9bc658ea1e699a5f22344b72fc32","name":"@butlr/butlr-mcp-server","dist-tags":{"latest":"0.6.1"},"versions":{"0.1.0":{"name":"@butlr/butlr-mcp-server","version":"0.1.0","keywords":["mcp","mcp-server","model-context-protocol","butlr","occupancy","sensor","iot","smart-building","graphql","api"],"author":{"name":"Butlr"},"license":"MIT","_id":"@butlr/butlr-mcp-server@0.1.0","maintainers":[{"name":"greg-butlr","email":"greg@butlr.io"}],"homepage":"https://github.com/butlrtechnologies/butlr-mcp#readme","bugs":{"url":"https://github.com/butlrtechnologies/butlr-mcp/issues"},"bin":{"butlr-mcp":"dist/index.js"},"dist":{"shasum":"40527a74afb564f93951ecb6490081dc4d4040d8","tarball":"https://registry.npmjs.org/@butlr/butlr-mcp-server/-/butlr-mcp-server-0.1.0.tgz","fileCount":135,"integrity":"sha512-q2vfTcnfQTrAWoV1kiQj58LALTTHK0EWaAa2rOWTu1iKzaLJmiZe3orkBu32vhNjy91GIbSU0VWiacukjatPTQ==","signatures":[{"sig":"MEQCIDiQTPGpIqt0OBw0rSEsLCIJsymqaSto5hgjLpUKhDbsAiBpnez6ai6MwG1AMqUm7FURHvRgTsFxMGveTxzjeXaIBg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":488542},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"9908392d9fe2761476f7fcf3664f49063333e4f9","scripts":{"dev":"tsx src/index.ts","lint":"eslint \"src/**/*.ts\"","test":"vitest","build":"tsc","clean":"rm -rf dist","format":"prettier --write \"src/**/*.ts\"","prepare":"husky","rebuild":"npm run clean && npm run build","test:ui":"vitest --ui","fixtures":"tsx scripts/snapshot-api-responses.ts","dev:debug":"DEBUG=butlr-mcp tsx src/index.ts","typecheck":"tsc --noEmit","test:watch":"vitest --watch","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"vitest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"greg-butlr","email":"greg@butlr.io"},"repository":{"url":"git+https://github.com/butlrtechnologies/butlr-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"Model Context Protocol server providing secure, read-only access to Butlr occupancy and asset data","directories":{},"lint-staged":{"*.ts":["eslint --fix","prettier --write"]},"_nodeVersion":"20.20.1","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","undici":"^7.16.0","graphql":"^16.11.0","lru-cache":"^11.0.2","@apollo/client":"^4.0.7","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","husky":"^9.1.7","eslint":"^9.18.0","vitest":"^3.2.4","prettier":"^3.6.2","typescript":"^5.7.2","@types/node":"^22.10.2","lint-staged":"^16.2.4","@vitest/coverage-v8":"^3.2.4","@typescript-eslint/parser":"^8.20.0","@typescript-eslint/eslint-plugin":"^8.20.0"},"_npmOperationalInternal":{"tmp":"tmp/butlr-mcp-server_0.1.0_1774026006758_0.7513837625521447","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@butlr/butlr-mcp-server","version":"0.1.1","keywords":["mcp","mcp-server","model-context-protocol","butlr","occupancy","sensor","iot","smart-building","graphql","api"],"author":{"name":"Butlr"},"license":"MIT","_id":"@butlr/butlr-mcp-server@0.1.1","maintainers":[{"name":"greg-butlr","email":"greg@butlr.io"}],"homepage":"https://github.com/butlrtechnologies/butlr-mcp#readme","bugs":{"url":"https://github.com/butlrtechnologies/butlr-mcp/issues"},"bin":{"butlr-mcp":"dist/index.js"},"dist":{"shasum":"de97a19e3c8e39fe754fca8f13f7ebee885dae1f","tarball":"https://registry.npmjs.org/@butlr/butlr-mcp-server/-/butlr-mcp-server-0.1.1.tgz","fileCount":135,"integrity":"sha512-6Ot9xGCmtZwqrdoY4kaq4sNOLErjeMAdp0c1R0tzFylkyOyc1yIQ+ap4s6WMMCwcjw62FjXjES2vX8v8YTLhag==","signatures":[{"sig":"MEUCIBe6RrbbTCccZbcDldB6fu1/RAHkMOSSDEzU1rl++eG6AiEA2YnoHXqchrvO1NGAXFYkzN9m+bP4p3xb1i7ckimGB4c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":487937},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"63b4d60dfc4548a9011276aeeb816a1defa472d7","scripts":{"dev":"tsx src/index.ts","lint":"eslint \"src/**/*.ts\"","test":"vitest","build":"tsc","clean":"rm -rf dist","format":"prettier --write \"src/**/*.ts\"","prepare":"husky","rebuild":"npm run clean && npm run build","test:ui":"vitest --ui","fixtures":"tsx scripts/snapshot-api-responses.ts","dev:debug":"DEBUG=butlr-mcp tsx src/index.ts","typecheck":"tsc --noEmit","test:watch":"vitest --watch","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"vitest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"greg-butlr","email":"greg@butlr.io"},"repository":{"url":"git+https://github.com/butlrtechnologies/butlr-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"Model Context Protocol server providing secure, read-only access to Butlr occupancy and asset data","directories":{},"lint-staged":{"*.ts":["eslint --fix","prettier --write"]},"_nodeVersion":"20.20.1","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","graphql":"^16.11.0","lru-cache":"^11.0.2","@apollo/client":"^4.0.7","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","husky":"^9.1.7","eslint":"^9.18.0","vitest":"^3.2.4","prettier":"^3.6.2","typescript":"^5.7.2","@types/node":"^22.10.2","lint-staged":"^16.2.4","@vitest/coverage-v8":"^3.2.4","@typescript-eslint/parser":"^8.20.0","@typescript-eslint/eslint-plugin":"^8.20.0"},"_npmOperationalInternal":{"tmp":"tmp/butlr-mcp-server_0.1.1_1774028762883_0.10121358221652499","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@butlr/butlr-mcp-server","version":"0.1.2","keywords":["mcp","mcp-server","model-context-protocol","butlr","occupancy","sensor","iot","smart-building","graphql","api"],"author":{"name":"Butlr"},"license":"MIT","_id":"@butlr/butlr-mcp-server@0.1.2","maintainers":[{"name":"greg-butlr","email":"greg@butlr.io"}],"homepage":"https://github.com/butlrtechnologies/butlr-mcp#readme","bugs":{"url":"https://github.com/butlrtechnologies/butlr-mcp/issues"},"bin":{"butlr-mcp":"dist/index.js"},"dist":{"shasum":"21a7cc080652b7092da0ad488d843a896d26927b","tarball":"https://registry.npmjs.org/@butlr/butlr-mcp-server/-/butlr-mcp-server-0.1.2.tgz","fileCount":140,"integrity":"sha512-qNYCnpWI2Z38o0pLR7OAA70apsZ1meWnFvhTFqDD+gvOExG8Zot9Mm2MCYI4UheVIrLlFOirPE0bP81KB8kI+g==","signatures":[{"sig":"MEUCIQC+aPhlQNf//ce9pBNrIPHjVfH6YjYkyna2AgknZSsbZgIgJCXscl+hKVp+Bonc7cB9FCCO7Epc54Kr0zaajaPAn0Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@butlr%2fbutlr-mcp-server@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":492318},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"4df75cfbba8de7885cb43d9e0cea6250dc7ce1ee","scripts":{"dev":"tsx src/index.ts","lint":"eslint \"src/**/*.ts\"","test":"vitest","build":"tsc","clean":"rm -rf dist","format":"prettier --write \"src/**/*.ts\"","prepare":"husky","rebuild":"npm run clean && npm run build","test:ui":"vitest --ui","dev:debug":"DEBUG=butlr-mcp tsx src/index.ts","typecheck":"tsc --noEmit","test:watch":"vitest --watch","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"vitest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9732ca0d-eb26-4b02-bed2-a195b37dfb5d"}},"repository":{"url":"git+https://github.com/butlrtechnologies/butlr-mcp.git","type":"git"},"_npmVersion":"11.11.0","description":"Model Context Protocol server providing secure, read-only access to Butlr occupancy and asset data","directories":{},"lint-staged":{"*.ts":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","graphql":"^16.11.0","lru-cache":"^11.0.2","@apollo/client":"^4.0.7","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","husky":"^9.1.7","eslint":"^9.18.0","vitest":"^3.2.4","prettier":"^3.6.2","typescript":"^5.7.2","@types/node":"^22.10.2","lint-staged":"^16.2.4","@vitest/coverage-v8":"^3.2.4","@typescript-eslint/parser":"^8.20.0","@typescript-eslint/eslint-plugin":"^8.20.0"},"_npmOperationalInternal":{"tmp":"tmp/butlr-mcp-server_0.1.2_1776227171700_0.7853800742828605","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@butlr/butlr-mcp-server","version":"0.2.0","keywords":["mcp","mcp-server","model-context-protocol","butlr","occupancy","sensor","iot","smart-building","graphql","api"],"author":{"name":"Butlr"},"license":"MIT","_id":"@butlr/butlr-mcp-server@0.2.0","maintainers":[{"name":"greg-butlr","email":"greg@butlr.io"}],"homepage":"https://github.com/butlrtechnologies/butlr-mcp#readme","bugs":{"url":"https://github.com/butlrtechnologies/butlr-mcp/issues"},"bin":{"butlr-mcp":"dist/index.js"},"dist":{"shasum":"47a742f4efba6a9cafe95b949b177af84bc25434","tarball":"https://registry.npmjs.org/@butlr/butlr-mcp-server/-/butlr-mcp-server-0.2.0.tgz","fileCount":148,"integrity":"sha512-0qHd4Bsr4scDfm/xL4HT6zMr3Vv83UzJDRUFbmkkH43NQbOkroTrlN2Mc7k6jpSW4+8RSbhvQsKsjvtDu+1jAA==","signatures":[{"sig":"MEQCICHnAZayEpTqIBwdGU5QQ7HKTukaVHVyC+hrm40fv3SgAiB8VHCnDiwHVEfJk+yjPdGP0//AxPOFVi3PcKxlHDWpKw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@butlr%2fbutlr-mcp-server@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":521553},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"bc43a7afb3e00d4d542b69eda543ce40cf969e55","scripts":{"dev":"tsx src/index.ts","lint":"eslint \"src/**/*.ts\"","test":"vitest","build":"tsc","clean":"rm -rf dist","format":"prettier --write \"src/**/*.ts\"","prepare":"husky","rebuild":"npm run clean && npm run build","test:ui":"vitest --ui","dev:debug":"DEBUG=butlr-mcp tsx src/index.ts","typecheck":"tsc --noEmit","test:watch":"vitest --watch","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"vitest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9732ca0d-eb26-4b02-bed2-a195b37dfb5d"}},"repository":{"url":"git+https://github.com/butlrtechnologies/butlr-mcp.git","type":"git"},"_npmVersion":"11.11.0","description":"Model Context Protocol server providing secure, read-only access to Butlr occupancy and asset data","directories":{},"lint-staged":{"*.ts":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","graphql":"^16.11.0","lru-cache":"^11.0.2","@apollo/client":"^4.0.7","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","husky":"^9.1.7","eslint":"^9.18.0","vitest":"^3.2.4","prettier":"^3.6.2","typescript":"^5.7.2","@types/node":"^22.10.2","lint-staged":"^16.2.4","@vitest/coverage-v8":"^3.2.4","@typescript-eslint/parser":"^8.20.0","@typescript-eslint/eslint-plugin":"^8.20.0"},"_npmOperationalInternal":{"tmp":"tmp/butlr-mcp-server_0.2.0_1777253669214_0.015484560762414334","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@butlr/butlr-mcp-server","version":"0.4.0","keywords":["mcp","mcp-server","model-context-protocol","butlr","occupancy","sensor","iot","smart-building","graphql","api"],"author":{"name":"Butlr"},"license":"MIT","_id":"@butlr/butlr-mcp-server@0.4.0","maintainers":[{"name":"greg-butlr","email":"greg@butlr.io"}],"homepage":"https://github.com/butlrtechnologies/butlr-mcp#readme","bugs":{"url":"https://github.com/butlrtechnologies/butlr-mcp/issues"},"bin":{"butlr-mcp":"dist/index.js"},"dist":{"shasum":"2d672fca868e41461b5b108f863b12f90070066e","tarball":"https://registry.npmjs.org/@butlr/butlr-mcp-server/-/butlr-mcp-server-0.4.0.tgz","fileCount":152,"integrity":"sha512-UOlZUbyMY57HXlnyFlLB3eRtKMSAWpLu+1pouPk6wYpVreg6w9kDrR752cffuEZg/HMDqMOjILtvA6qrHWnPTA==","signatures":[{"sig":"MEYCIQCXSafZ4nQnpVogl6VFHE/5UfYpRkppj8pOG3npAE9H9QIhAJODDS10cM9t3j9ArH0QP9gN6U0/o4RsrEsVkUGXlQDC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@butlr%2fbutlr-mcp-server@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":638136},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"1e93a6d5857c18b173ef16a3884a1d1efd654494","scripts":{"dev":"tsx src/index.ts","lint":"eslint \"src/**/*.ts\"","test":"vitest","build":"tsc","clean":"rm -rf dist","format":"prettier --write \"src/**/*.ts\"","prepare":"husky","rebuild":"npm run clean && npm run build","test:ui":"vitest --ui","dev:debug":"DEBUG=butlr-mcp tsx src/index.ts","typecheck":"tsc --noEmit","test:watch":"vitest --watch","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"vitest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9732ca0d-eb26-4b02-bed2-a195b37dfb5d"}},"repository":{"url":"git+https://github.com/butlrtechnologies/butlr-mcp.git","type":"git"},"_npmVersion":"11.11.0","description":"Model Context Protocol server providing secure, read-only access to Butlr occupancy and asset data","directories":{},"lint-staged":{"*.ts":["eslint --fix","prettier --write"]},"_nodeVersion":"24.14.1","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","graphql":"^16.11.0","lru-cache":"^11.0.2","@apollo/client":"^4.0.7","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","husky":"^9.1.7","eslint":"^9.18.0","vitest":"^3.2.4","prettier":"^3.6.2","typescript":"^5.7.2","@types/node":"^22.10.2","lint-staged":"^16.2.4","@vitest/coverage-v8":"^3.2.4","@typescript-eslint/parser":"^8.20.0","@typescript-eslint/eslint-plugin":"^8.20.0"},"_npmOperationalInternal":{"tmp":"tmp/butlr-mcp-server_0.4.0_1778649260810_0.23329444951515077","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@butlr/butlr-mcp-server","version":"0.5.0","keywords":["mcp","mcp-server","model-context-protocol","butlr","occupancy","sensor","iot","smart-building","graphql","api"],"author":{"name":"Butlr"},"license":"MIT","_id":"@butlr/butlr-mcp-server@0.5.0","maintainers":[{"name":"greg-butlr","email":"greg@butlr.io"}],"homepage":"https://github.com/butlrtechnologies/butlr-mcp#readme","bugs":{"url":"https://github.com/butlrtechnologies/butlr-mcp/issues"},"bin":{"butlr-mcp":"dist/index.js"},"dist":{"shasum":"91f920e6b2872a589cc6c91f0c568945bb989bf1","tarball":"https://registry.npmjs.org/@butlr/butlr-mcp-server/-/butlr-mcp-server-0.5.0.tgz","fileCount":152,"integrity":"sha512-Fxr7xFT35fmI8sDzpN0nja84VDpb9EHSeaLgUYftk5hz7TpuZ1/yeNlcmPMScUlothT08cuRbYjWDLckGuKOGQ==","signatures":[{"sig":"MEQCIAIGXge8MOoeIL3TSUQ74rWoZF50u70rRv18HZ6bJ40VAiAafEqEhE1FbqBdCLaiFwB4nZig3Bjuvosac5B8sAW2Aw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@butlr%2fbutlr-mcp-server@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":649360},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"a6ff7d4c243ef2d797ef3135abb53364cc92dc2d","scripts":{"dev":"tsx src/index.ts","lint":"eslint \"src/**/*.ts\"","test":"vitest","build":"tsc","clean":"rm -rf dist","format":"prettier --write \"src/**/*.ts\"","prepare":"husky","rebuild":"npm run clean && npm run build","test:ui":"vitest --ui","dev:debug":"DEBUG=butlr-mcp tsx src/index.ts","typecheck":"tsc --noEmit","test:watch":"vitest --watch","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"vitest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9732ca0d-eb26-4b02-bed2-a195b37dfb5d"}},"repository":{"url":"git+https://github.com/butlrtechnologies/butlr-mcp.git","type":"git"},"_npmVersion":"11.13.0","description":"Model Context Protocol server providing secure, read-only access to Butlr occupancy and asset data","directories":{},"lint-staged":{"*.ts":["eslint --fix","prettier --write"]},"_nodeVersion":"24.16.0","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","graphql":"^16.11.0","lru-cache":"^11.0.2","@apollo/client":"^4.0.7","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","husky":"^9.1.7","eslint":"^9.18.0","vitest":"^3.2.4","prettier":"^3.6.2","typescript":"^5.7.2","@types/node":"^22.10.2","lint-staged":"^16.2.4","@vitest/coverage-v8":"^3.2.4","@typescript-eslint/parser":"^8.20.0","@typescript-eslint/eslint-plugin":"^8.20.0"},"_npmOperationalInternal":{"tmp":"tmp/butlr-mcp-server_0.5.0_1781209232572_0.7035231665262318","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@butlr/butlr-mcp-server","version":"0.5.1","keywords":["mcp","mcp-server","model-context-protocol","butlr","occupancy","sensor","iot","smart-building","graphql","api"],"author":{"name":"Butlr"},"license":"MIT","_id":"@butlr/butlr-mcp-server@0.5.1","maintainers":[{"name":"greg-butlr","email":"greg@butlr.io"}],"homepage":"https://github.com/butlrtechnologies/butlr-mcp#readme","bugs":{"url":"https://github.com/butlrtechnologies/butlr-mcp/issues"},"bin":{"butlr-mcp":"dist/index.js"},"dist":{"shasum":"ada0e7bc0258c77924e358faea51d01b0a824e99","tarball":"https://registry.npmjs.org/@butlr/butlr-mcp-server/-/butlr-mcp-server-0.5.1.tgz","fileCount":156,"integrity":"sha512-PMoQVGo3dbENGOMe/xVVByEGJ0nnAdRaHayLzsLEcXsChW929F1+i4Fm1vuB24H4LlFKjKDs+ZWMKIelxZ9Wjw==","signatures":[{"sig":"MEUCIQCOBD54msYQw17VRiHwG3kGHfwkqZzcomYcE9JybwMQKgIgMVvg5w6zgvQvB3HuhsYg5VrXXBnjtspkfVT36rg+KN8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@butlr%2fbutlr-mcp-server@0.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":662107},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"fb65453a3e9ce744a071dd911b54d511b5110dbb","scripts":{"dev":"tsx src/index.ts","lint":"eslint \"src/**/*.ts\"","test":"vitest","build":"tsc","clean":"rm -rf dist","format":"prettier --write \"src/**/*.ts\"","prepare":"husky","rebuild":"npm run clean && npm run build","test:ui":"vitest --ui","dev:debug":"DEBUG=butlr-mcp tsx src/index.ts","typecheck":"tsc --noEmit","test:watch":"vitest --watch","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"vitest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9732ca0d-eb26-4b02-bed2-a195b37dfb5d"}},"repository":{"url":"git+https://github.com/butlrtechnologies/butlr-mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"Model Context Protocol server providing secure, read-only access to Butlr occupancy and asset data","directories":{},"lint-staged":{"*.ts":["eslint --fix","prettier --write"]},"_nodeVersion":"24.18.0","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","graphql":"^16.11.0","lru-cache":"^11.0.2","@apollo/client":"^4.0.7","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","husky":"^9.1.7","eslint":"^9.18.0","vitest":"^3.2.4","prettier":"^3.6.2","typescript":"^5.7.2","@types/node":"^22.10.2","lint-staged":"^16.2.4","@vitest/coverage-v8":"^3.2.4","@typescript-eslint/parser":"^8.20.0","@typescript-eslint/eslint-plugin":"^8.20.0"},"_npmOperationalInternal":{"tmp":"tmp/butlr-mcp-server_0.5.1_1785963332388_0.5576975122214936","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@butlr/butlr-mcp-server","version":"0.6.0","keywords":["mcp","mcp-server","model-context-protocol","butlr","occupancy","sensor","iot","smart-building","graphql","api"],"author":{"name":"Butlr"},"license":"MIT","_id":"@butlr/butlr-mcp-server@0.6.0","maintainers":[{"name":"greg-butlr","email":"greg@butlr.io"}],"homepage":"https://github.com/butlrtechnologies/butlr-mcp#readme","bugs":{"url":"https://github.com/butlrtechnologies/butlr-mcp/issues"},"bin":{"butlr-mcp":"dist/index.js"},"dist":{"shasum":"a809206f607b5c524623905d097f9357e8bac5b2","tarball":"https://registry.npmjs.org/@butlr/butlr-mcp-server/-/butlr-mcp-server-0.6.0.tgz","fileCount":160,"integrity":"sha512-PD9EBWg6P1Qhg6SnP0n2HeP8K+A515G98R0aHU2kAej4Uhf6Uo5KJrPY24jL9PcExEh4k9mT5wwIWmjUsY5yxg==","signatures":[{"sig":"MEUCIQDnierOAJHW6pmcETAemFQeZLaiFGBAkkdnNY8O6aCOxQIgVtWBesyi0g1ifPfizTTeMlE21BZC/IfLE3Px/ZB5v+I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@butlr%2fbutlr-mcp-server@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":696674},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"0a6368db97277e8ae0f3ada2d158d1447ddf583f","scripts":{"dev":"tsx src/index.ts","lint":"eslint \"src/**/*.ts\"","test":"vitest","build":"tsc","clean":"rm -rf dist","format":"prettier --write \"src/**/*.ts\"","prepare":"husky","rebuild":"npm run clean && npm run build","test:ui":"vitest --ui","dev:debug":"DEBUG=butlr-mcp tsx src/index.ts","typecheck":"tsc --noEmit","test:watch":"vitest --watch","format:check":"prettier --check \"src/**/*.ts\"","test:coverage":"vitest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9732ca0d-eb26-4b02-bed2-a195b37dfb5d"}},"repository":{"url":"git+https://github.com/butlrtechnologies/butlr-mcp.git","type":"git"},"_npmVersion":"11.17.0","description":"Model Context Protocol server providing secure, read-only access to Butlr occupancy and asset data","directories":{},"lint-staged":{"*.ts":["eslint --fix","prettier --write"]},"_nodeVersion":"24.19.0","dependencies":{"zod":"^3.23.8","dotenv":"^16.4.5","graphql":"^16.11.0","lru-cache":"^11.0.2","@apollo/client":"^4.0.7","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","husky":"^9.1.7","eslint":"^9.18.0","vitest":"^3.2.4","prettier":"^3.6.2","typescript":"^5.7.2","@types/node":"^22.10.2","lint-staged":"^16.2.4","@vitest/coverage-v8":"^3.2.4","@typescript-eslint/parser":"^8.20.0","@typescript-eslint/eslint-plugin":"^8.20.0"},"_npmOperationalInternal":{"tmp":"tmp/butlr-mcp-server_0.6.0_1787760380676_0.5589217586143282","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@butlr/butlr-mcp-server","version":"0.6.1","description":"Model Context Protocol server providing secure, read-only access to Butlr occupancy and asset data","type":"module","main":"dist/index.js","exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"}},"bin":{"butlr-mcp":"dist/index.js"},"scripts":{"dev":"tsx src/index.ts","dev:debug":"DEBUG=butlr-mcp tsx src/index.ts","build":"tsc","clean":"rm -rf dist","rebuild":"npm run clean && npm run build","test":"vitest","test:watch":"vitest --watch","test:coverage":"vitest --coverage","test:ui":"vitest --ui","typecheck":"tsc --noEmit","lint":"eslint \"src/**/*.ts\"","format":"prettier --write \"src/**/*.ts\"","format:check":"prettier --check \"src/**/*.ts\"","prepublishOnly":"npm run build","prepare":"husky"},"keywords":["mcp","mcp-server","model-context-protocol","butlr","occupancy","sensor","iot","smart-building","graphql","api"],"author":{"name":"Butlr"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/butlrtechnologies/butlr-mcp.git"},"homepage":"https://github.com/butlrtechnologies/butlr-mcp#readme","bugs":{"url":"https://github.com/butlrtechnologies/butlr-mcp/issues"},"publishConfig":{"access":"public"},"engines":{"node":">=18.0.0"},"dependencies":{"@apollo/client":"^4.0.7","@modelcontextprotocol/sdk":"^1.27.1","dotenv":"^16.4.5","graphql":"^16.11.0","lru-cache":"^11.0.2","zod":"^3.23.8"},"devDependencies":{"@types/node":"^22.10.2","@typescript-eslint/eslint-plugin":"^8.20.0","@typescript-eslint/parser":"^8.20.0","@vitest/coverage-v8":"^3.2.4","eslint":"^9.18.0","husky":"^9.1.7","lint-staged":"^16.2.4","prettier":"^3.6.2","tsx":"^4.19.2","typescript":"^5.7.2","vitest":"^3.2.4"},"lint-staged":{"*.ts":["eslint --fix","prettier --write"]},"gitHead":"869ed277bf723dc47ec9d511ed2198b0d31b1453","types":"./dist/index.d.ts","_id":"@butlr/butlr-mcp-server@0.6.1","_nodeVersion":"24.19.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-SpBzyywm4pEksLliiUSrIiZLEV6bUsGhrQMM6si3hPkhB5xiiisAa5MMUkw7sB5YrvH5p3NQ2M8H+dlD6g3Kmg==","shasum":"402b1c9fd4d3eb5fa621cbe13f3363fd48dcf9a3","tarball":"https://registry.npmjs.org/@butlr/butlr-mcp-server/-/butlr-mcp-server-0.6.1.tgz","fileCount":160,"unpackedSize":698572,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@butlr%2fbutlr-mcp-server@0.6.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBHrvdJzBK0f6ClUSCbqhEYtchXNfwtll3Tau5QjP3EbAiB3+M6/mi4/9nkydOeLcSkxCpqSf6P5FtrjEfhNYcuM6w=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9732ca0d-eb26-4b02-bed2-a195b37dfb5d"}},"directories":{},"maintainers":[{"name":"greg-butlr","email":"greg@butlr.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/butlr-mcp-server_0.6.1_1788181965462_0.6429089026306036"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-20T17:00:06.601Z","modified":"2026-08-31T13:12:45.976Z","0.1.0":"2026-03-20T17:00:07.030Z","0.1.1":"2026-03-20T17:46:03.061Z","0.1.2":"2026-04-15T04:26:11.882Z","0.2.0":"2026-04-27T01:34:29.366Z","0.4.0":"2026-05-13T05:14:20.964Z","0.5.0":"2026-06-11T20:20:32.783Z","0.5.1":"2026-08-05T20:55:32.604Z","0.6.0":"2026-08-26T16:06:20.858Z","0.6.1":"2026-08-31T13:12:45.609Z"},"bugs":{"url":"https://github.com/butlrtechnologies/butlr-mcp/issues"},"author":{"name":"Butlr"},"license":"MIT","homepage":"https://github.com/butlrtechnologies/butlr-mcp#readme","keywords":["mcp","mcp-server","model-context-protocol","butlr","occupancy","sensor","iot","smart-building","graphql","api"],"repository":{"type":"git","url":"git+https://github.com/butlrtechnologies/butlr-mcp.git"},"description":"Model Context Protocol server providing secure, read-only access to Butlr occupancy and asset data","maintainers":[{"name":"greg-butlr","email":"greg@butlr.io"}],"readme":"# Butlr MCP Server\n\n[![npm version](https://img.shields.io/npm/v/@butlr/butlr-mcp-server.svg)](https://www.npmjs.com/package/@butlr/butlr-mcp-server)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Node.js](https://img.shields.io/badge/node-%3E%3D18.0.0-brightgreen.svg)](https://nodejs.org/)\n\nA [Model Context Protocol](https://modelcontextprotocol.io) (MCP) server that connects AI assistants to [Butlr's](https://www.butlr.com) occupancy sensing platform. Query real-time space utilization, search facility assets, and analyze occupancy patterns through natural language.\n\n### What you can do\n\n- **Find available spaces** — \"Are there any free conference rooms right now with capacity for 8?\"\n- **Monitor occupancy** — \"How busy is the cafe? Should I head there now?\"\n- **Analyze trends** — \"Show me occupancy patterns for Floor 3 over the past week\"\n- **Search your portfolio** — \"Find all rooms named 'huddle' across Building 2\"\n- **Check sensor health** — \"Which sensors are offline or need battery replacement?\"\n- **Track foot traffic** — \"How many people entered the main lobby today?\"\n\n## Prerequisites\n\n- [Node.js](https://nodejs.org/) 18 or higher\n- An MCP-compatible client ([Claude Desktop](https://claude.ai/download), [Claude Code](https://docs.anthropic.com/en/docs/claude-code), [Codex CLI](https://developers.openai.com/codex/cli), [VS Code](https://code.visualstudio.com/), [Cursor](https://cursor.com/), etc.)\n- Butlr API token — see [Getting API Credentials](#getting-api-credentials)\n\n## Quick Start\n\n<details open>\n<summary><strong>Claude Desktop</strong></summary>\n\nAdd to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or `%APPDATA%\\Claude\\claude_desktop_config.json` (Windows):\n\n```json\n{\n  \"mcpServers\": {\n    \"butlr\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@butlr/butlr-mcp-server@latest\"],\n      \"env\": {\n        \"BUTLR_CLIENT_ID\": \"your_client_id\",\n        \"BUTLR_CLIENT_SECRET\": \"your_client_secret\"\n      }\n    }\n  }\n}\n```\n\n</details>\n\n<details>\n<summary><strong>Claude Code</strong></summary>\n\n```bash\nclaude mcp add butlr \\\n  -e BUTLR_CLIENT_ID=your_client_id \\\n  -e BUTLR_CLIENT_SECRET=your_client_secret \\\n  -- npx -y @butlr/butlr-mcp-server@latest\n```\n\n</details>\n\n<details>\n<summary><strong>Codex CLI</strong></summary>\n\nAdd with the `codex mcp` command:\n\n```bash\ncodex mcp add butlr \\\n  --env BUTLR_CLIENT_ID=your_client_id \\\n  --env BUTLR_CLIENT_SECRET=your_client_secret \\\n  -- npx -y @butlr/butlr-mcp-server@latest\n```\n\nOr edit `~/.codex/config.toml` directly:\n\n```toml\n[mcp_servers.butlr]\ncommand = \"npx\"\nargs = [\"-y\", \"@butlr/butlr-mcp-server@latest\"]\n\n[mcp_servers.butlr.env]\nBUTLR_CLIENT_ID = \"your_client_id\"\nBUTLR_CLIENT_SECRET = \"your_client_secret\"\n```\n\n</details>\n\n<details>\n<summary><strong>VS Code (Copilot)</strong></summary>\n\nAdd to `.vscode/mcp.json`:\n\n```json\n{\n  \"servers\": {\n    \"butlr\": {\n      \"type\": \"stdio\",\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@butlr/butlr-mcp-server@latest\"],\n      \"env\": {\n        \"BUTLR_CLIENT_ID\": \"your_client_id\",\n        \"BUTLR_CLIENT_SECRET\": \"your_client_secret\"\n      }\n    }\n  }\n}\n```\n\n</details>\n\n<details>\n<summary><strong>Cursor</strong></summary>\n\nAdd to `.cursor/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"butlr\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@butlr/butlr-mcp-server@latest\"],\n      \"env\": {\n        \"BUTLR_CLIENT_ID\": \"your_client_id\",\n        \"BUTLR_CLIENT_SECRET\": \"your_client_secret\"\n      }\n    }\n  }\n}\n```\n\n</details>\n\n<details>\n<summary><strong>Other MCP clients</strong></summary>\n\nFor any MCP client that supports stdio transport, use this command:\n\n```\nnpx -y @butlr/butlr-mcp-server@latest\n```\n\nPass the required environment variables (`BUTLR_CLIENT_ID`, `BUTLR_CLIENT_SECRET`) through your client's configuration.\n\n</details>\n\n## Available Tools\n\n| Tool | Description | Try asking... |\n|------|-------------|---------------|\n| `butlr_search_assets` | Search for assets (sites, buildings, floors, rooms, sensors) by name with fuzzy matching | \"Find the main lobby\" |\n| `butlr_get_asset_details` | Get comprehensive details for specific assets by ID with batch support | \"Show me details for Conference Room 401\" |\n| `butlr_hardware_snapshot` | Device health check: online/offline status and battery levels across your portfolio | \"Which sensors need battery replacement?\" |\n| `butlr_available_rooms` | Find currently unoccupied rooms, filterable by capacity and tags | \"Are there any free conference rooms right now?\" |\n| `butlr_space_busyness` | Current occupancy with qualitative labels (quiet/moderate/busy) and trend comparison | \"How busy is the cafe right now?\" |\n| `butlr_traffic_flow` | Entry/exit counts with hourly breakdown for a room or a single traffic-mode sensor (`sensor_...`), so a door does not have to be modeled as a room | \"How many people came through the north elevator door today?\" |\n| `butlr_list_topology` | Display org hierarchy tree with flexible depth control | \"Show me all floors in Building 2\" |\n| `butlr_fetch_entity_details` | Retrieve specific fields for entities by ID (minimal token usage) | \"What's the timezone for this site?\" |\n| `butlr_get_occupancy_timeseries` | Historical occupancy data with configurable time ranges | \"Show occupancy trends for Floor 3 this week\" |\n| `butlr_get_current_occupancy` | Real-time occupancy snapshot (last 5 minutes median) | \"How many people are on Floor 2 right now?\" |\n\nAll tools are **read-only** — the server cannot modify any data in your Butlr account.\n\n## Configuration\n\n| Variable | Required | Default | Description |\n|----------|----------|---------|-------------|\n| `BUTLR_CLIENT_ID` | **Yes** | - | API token client ID |\n| `BUTLR_CLIENT_SECRET` | **Yes** | - | API token client secret |\n| `BUTLR_BASE_URL` | No | `https://api.butlr.io` | API base URL |\n| `BUTLR_TIMEZONE` | No | `UTC` | Default timezone |\n| `MCP_CACHE_TOPO_TTL` | No | `600` | Topology cache TTL (seconds) |\n| `DEBUG` | No | - | Set to `butlr-mcp` for verbose logging |\n\n## Getting API Credentials\n\n1. Log in to [app.butlr.io](https://app.butlr.io)\n2. Click your username in the top-right corner, then **Account Settings**\n3. Go to **API Tokens** and create a new token\n4. Copy the **Client ID** and **Client Secret**\n\nYou need **edit access** to Butlr Studio to create API tokens. If you don't have edit permissions, ask someone in your organization who does, or contact your Butlr sales representative or [submit a support ticket](https://www.butlr.com).\n\n## Troubleshooting\n\n**Authentication errors** — Verify your `BUTLR_CLIENT_ID` and `BUTLR_CLIENT_SECRET` are correct. Tokens are refreshed automatically.\n\n**Rate limiting** — The server handles rate limits automatically with retry logic. If you see persistent rate limit errors, reduce the frequency of requests.\n\n**No data returned** — Ensure your organization has active sensors deployed. Use `butlr_search_assets` to verify your org has discoverable assets.\n\n**Debug logging** — Set `DEBUG=butlr-mcp` in your environment to see detailed request/response logs on stderr.\n\n## Development\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for full development workflow and standards.\n\n```bash\nnpm install          # Install dependencies\nnpm run build        # Build TypeScript\nnpm test             # Run tests\nnpm run typecheck    # Type checking\nnpm run lint         # ESLint\nnpm run dev          # Dev with hot-reload\nnpm run dev:debug    # Dev with debug logging\n```\n\n## Security\n\n- All tools enforce read-only API access\n- Never commit credentials to version control\n- See [SECURITY.md](SECURITY.md) for vulnerability disclosure\n\n## License\n\nMIT - see [LICENSE](LICENSE)\n","readmeFilename":"README.md"}