{"_id":"@apet97/clockify-mcp-115","_rev":"22-9c4abb800a5d4fa133704170b2ab943a","name":"@apet97/clockify-mcp-115","dist-tags":{"latest":"6.0.1"},"versions":{"0.3.0":{"name":"@apet97/clockify-mcp-115","version":"0.3.0","keywords":["clockify","mcp","model-context-protocol","ai-tools","anthropic","claude"],"author":{"name":"Aleksandar Petković","email":"petkovic.aleksandar037@gmail.com"},"license":"MIT","_id":"@apet97/clockify-mcp-115@0.3.0","maintainers":[{"name":"apet97","email":"petkovic.aleksandar037@gmail.com"}],"homepage":"https://github.com/apet97/clockify-ts-sdk/tree/main/mcp","bugs":{"url":"https://github.com/apet97/clockify-ts-sdk/issues"},"bin":{"clockify115-mcp":"dist/index.js"},"dist":{"shasum":"cc143f053f78ac40ecbadea09a83ebd7a2aa7f90","tarball":"https://registry.npmjs.org/@apet97/clockify-mcp-115/-/clockify-mcp-115-0.3.0.tgz","fileCount":107,"integrity":"sha512-EMfIgEqjugXfDUo/olVduqNRlkYHs4aFsiXOJOaOrs+vmka44xjEvMugaIxodBzAB+PHLjxSdnnoExfkFBJp3g==","signatures":[{"sig":"MEUCIQCDHpsM6mPFZLbQ6G+XmgHYTmUF291t7FmgYg1CixOdiwIgeKvCKqZGsMAhr7t5GGApcDXwy62dl9OwW0KqKcW35gM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@apet97%2fclockify-mcp-115@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":474792},"type":"module","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","default":"./dist/client.js"},"./server":{"types":"./dist/server.d.ts","default":"./dist/server.js"}},"gitHead":"24657269fe9e5ac150d2c5db5fdd6c15d4707498","scripts":{"dev":"tsx src/index.ts","lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.json","lint:fix":"eslint . --fix","mutation":"cd .. && CLOCKIFY_API_KEY='' CLOCKIFY_WORKSPACE_ID='' stryker run mcp/stryker.conf.json","test:watch":"vitest","type-check":"tsc --noEmit","test:coverage":"vitest run --coverage","prepublishOnly":"npm run type-check && npm test && npm run build","verify:live-cleanup":"npm run build && node scripts/assert-clean-prefixes.mjs"},"_npmUser":{"name":"apet97","email":"petkovic.aleksandar037@gmail.com"},"repository":{"url":"git+https://github.com/apet97/clockify-ts-sdk.git","type":"git","directory":"mcp"},"_npmVersion":"10.9.8","description":"Unofficial, community-built — not affiliated with CAKE.com or Clockify. Model Context Protocol server for Clockify. TypeScript sibling to go-clockify (the Go MCP).","directories":{},"_nodeVersion":"22.23.0","dependencies":{"zod":"^3.25.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","eslint":"^10.5.0","vitest":"^4.1.4","fast-check":"^4.8.0","typescript":"^5.7.0","@types/node":"^25","typescript-eslint":"^8.59.4","@vitest/coverage-v8":"^4.1.9","clockify-sdk-ts-115":"*","eslint-plugin-import-x":"^4.16.2"},"peerDependencies":{"clockify-sdk-ts-115":">=0.9.0"},"_npmOperationalInternal":{"tmp":"tmp/clockify-mcp-115_0.3.0_1782660269761_0.35544664981810636","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@apet97/clockify-mcp-115","version":"0.4.0","keywords":["clockify","mcp","model-context-protocol","ai-tools","anthropic","claude"],"author":{"name":"Aleksandar Petković","email":"petkovic.aleksandar037@gmail.com"},"license":"MIT","_id":"@apet97/clockify-mcp-115@0.4.0","maintainers":[{"name":"apet97","email":"petkovic.aleksandar037@gmail.com"}],"homepage":"https://github.com/apet97/clockify-ts-sdk/tree/main/mcp","bugs":{"url":"https://github.com/apet97/clockify-ts-sdk/issues"},"bin":{"clockify115-mcp":"dist/index.js"},"dist":{"shasum":"323c0d2a646153a27c4102536c64c7ad690e138b","tarball":"https://registry.npmjs.org/@apet97/clockify-mcp-115/-/clockify-mcp-115-0.4.0.tgz","fileCount":107,"integrity":"sha512-Pn5BqsC1LT9q+Np/caJ000JNuQofDM0Rueq9kjPshW6eK3TGK368hJVlg41a5r+gL5NE9vS7IwUC5vxW1okJSQ==","signatures":[{"sig":"MEYCIQDQ9ETPg01NvZ5lJV6ZydXWW++lhaxrA7Bvk1sEiFX9twIhAPXdCyMXembDW/W3Gl1K82efAnLz7bRTOgSnwe74LRvQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@apet97%2fclockify-mcp-115@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":482202},"type":"module","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","default":"./dist/client.js"},"./server":{"types":"./dist/server.d.ts","default":"./dist/server.js"}},"gitHead":"7c9b69af9914c6b191139218f5d3927e2c386ba6","scripts":{"dev":"tsx src/index.ts","lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.json","lint:fix":"eslint . --fix","mutation":"cd .. && CLOCKIFY_API_KEY='' CLOCKIFY_WORKSPACE_ID='' stryker run mcp/stryker.conf.json","test:watch":"vitest","type-check":"tsc --noEmit","test:coverage":"vitest run --coverage","prepublishOnly":"npm run type-check && npm test && npm run build","verify:live-cleanup":"npm run build && node scripts/assert-clean-prefixes.mjs"},"_npmUser":{"name":"apet97","email":"petkovic.aleksandar037@gmail.com"},"repository":{"url":"git+https://github.com/apet97/clockify-ts-sdk.git","type":"git","directory":"mcp"},"_npmVersion":"10.9.8","description":"Unofficial, community-built — not affiliated with CAKE.com or Clockify. Model Context Protocol server for Clockify. TypeScript sibling to go-clockify (the Go MCP).","directories":{},"_nodeVersion":"22.23.0","dependencies":{"zod":"^3.25.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","eslint":"^10.5.0","vitest":"^4.1.4","fast-check":"^4.8.0","typescript":"^5.7.0","@types/node":"^25","typescript-eslint":"^8.59.4","@vitest/coverage-v8":"^4.1.9","clockify-sdk-ts-115":"*","eslint-plugin-import-x":"^4.16.2"},"peerDependencies":{"clockify-sdk-ts-115":">=0.9.0"},"_npmOperationalInternal":{"tmp":"tmp/clockify-mcp-115_0.4.0_1782663732347_0.66455158676811","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@apet97/clockify-mcp-115","version":"0.4.1","keywords":["clockify","mcp","model-context-protocol","ai-tools","anthropic","claude"],"author":{"name":"Aleksandar Petković","email":"petkovic.aleksandar037@gmail.com"},"license":"MIT","_id":"@apet97/clockify-mcp-115@0.4.1","maintainers":[{"name":"apet97","email":"petkovic.aleksandar037@gmail.com"}],"homepage":"https://github.com/apet97/clockify-ts-sdk/tree/main/mcp","bugs":{"url":"https://github.com/apet97/clockify-ts-sdk/issues"},"bin":{"clockify115-mcp":"dist/index.js"},"dist":{"shasum":"244b8204373f85eb9c32c35c3b9d1b238b80571d","tarball":"https://registry.npmjs.org/@apet97/clockify-mcp-115/-/clockify-mcp-115-0.4.1.tgz","fileCount":107,"integrity":"sha512-NXkZuXNjcuZoqnB70EPekiq7Vh079urs+fIjEP1w4Yte/9UvmA186fK9SLIRQOO+d4a5W830Aooj3R2an+OIYQ==","signatures":[{"sig":"MEQCIEVu4+k3rsKN3LFHdpw9C/n/zMDSLmrcHChb6QWQPK5xAiACZlSpsmwgMnoBUuCrSc8YdXddq3T6pmdkjuP1062k7g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@apet97%2fclockify-mcp-115@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":486089},"type":"module","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","default":"./dist/client.js"},"./server":{"types":"./dist/server.d.ts","default":"./dist/server.js"}},"gitHead":"9e530f6464c49ddc743aa729d09a96d3bb7a52ae","scripts":{"dev":"tsx src/index.ts","lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.json","lint:fix":"eslint . --fix","mutation":"cd .. && CLOCKIFY_API_KEY='' CLOCKIFY_WORKSPACE_ID='' stryker run mcp/stryker.conf.json","test:watch":"vitest","type-check":"tsc --noEmit","test:coverage":"vitest run --coverage","prepublishOnly":"npm run type-check && npm test && npm run build","verify:live-cleanup":"npm run build && node scripts/assert-clean-prefixes.mjs"},"_npmUser":{"name":"apet97","email":"petkovic.aleksandar037@gmail.com"},"repository":{"url":"git+https://github.com/apet97/clockify-ts-sdk.git","type":"git","directory":"mcp"},"_npmVersion":"10.9.8","description":"Unofficial, community-built — not affiliated with CAKE.com or Clockify. Model Context Protocol server for Clockify. TypeScript sibling to go-clockify (the Go MCP).","directories":{},"_nodeVersion":"22.23.0","dependencies":{"zod":"^3.25.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","eslint":"^10.5.0","vitest":"^4.1.4","fast-check":"^4.8.0","typescript":"^5.7.0","@types/node":"^25","typescript-eslint":"^8.59.4","@vitest/coverage-v8":"^4.1.9","clockify-sdk-ts-115":"*","eslint-plugin-import-x":"^4.16.2"},"peerDependencies":{"clockify-sdk-ts-115":">=0.9.0"},"_npmOperationalInternal":{"tmp":"tmp/clockify-mcp-115_0.4.1_1782695932602_0.806890337648696","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@apet97/clockify-mcp-115","version":"0.6.0","keywords":["clockify","mcp","model-context-protocol","ai-tools","anthropic","claude"],"author":{"name":"Aleksandar Petković","email":"petkovic.aleksandar037@gmail.com"},"license":"MIT","_id":"@apet97/clockify-mcp-115@0.6.0","maintainers":[{"name":"apet97","email":"petkovic.aleksandar037@gmail.com"}],"homepage":"https://github.com/apet97/clockify-ts-sdk/tree/main/mcp","bugs":{"url":"https://github.com/apet97/clockify-ts-sdk/issues"},"bin":{"clockify115-mcp":"dist/index.js"},"dist":{"shasum":"1b5c99e04e67dc9cd8b4c9d0330c8c8d53ed034d","tarball":"https://registry.npmjs.org/@apet97/clockify-mcp-115/-/clockify-mcp-115-0.6.0.tgz","fileCount":109,"integrity":"sha512-h5AT5Y54HNvW1x3zIYfb8k0FMAu2LK5H2HKVrYNkUCyLiIeV60QFmTPLsbV07zdiLY5qgfrM6sJ0qePZ8VLOpg==","signatures":[{"sig":"MEQCIAd8PFWaFCAUALqAFMsFD7sFAFOZCBEk6li5uhBAueOxAiBGSm7RED3rnXdLjEkYY2EGEwSdAXBSWTmBKJG7DBhsNw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@apet97%2fclockify-mcp-115@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":572059},"type":"module","_from":"file:/home/runner/work/_temp/mcp-npm-publish/apet97-clockify-mcp-115-0.6.0.tgz","engines":{"node":">=22.13.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","default":"./dist/client.js"},"./server":{"types":"./dist/server.d.ts","default":"./dist/server.js"}},"scripts":{"dev":"node ../scripts/generate-package-versions.mjs && tsx src/index.ts","lint":"eslint .","test":"node ../scripts/generate-package-versions.mjs && vitest run","build":"node ../scripts/generate-package-versions.mjs && npm run clean && tsc -p tsconfig.build.json","clean":"rm -rf dist","lint:fix":"eslint . --fix","mutation":"node ../scripts/generate-package-versions.mjs && npm run build -w clockify-sdk-ts-115 && cd .. && CLOCKIFY_API_KEY='' CLOCKIFY_WORKSPACE_ID='' stryker run mcp/stryker.conf.json","test:watch":"node ../scripts/generate-package-versions.mjs && vitest","type-check":"node ../scripts/generate-package-versions.mjs && tsc -p tsconfig.json --noEmit","test:coverage":"node ../scripts/generate-package-versions.mjs && vitest run --coverage","prepublishOnly":"npm run type-check && npm test && npm run build","verify:live-cleanup":"npm run build && node scripts/assert-clean-prefixes.mjs"},"_npmUser":{"name":"apet97","email":"petkovic.aleksandar037@gmail.com"},"_resolved":"/home/runner/work/_temp/mcp-npm-publish/apet97-clockify-mcp-115-0.6.0.tgz","_integrity":"sha512-h5AT5Y54HNvW1x3zIYfb8k0FMAu2LK5H2HKVrYNkUCyLiIeV60QFmTPLsbV07zdiLY5qgfrM6sJ0qePZ8VLOpg==","repository":{"url":"git+https://github.com/apet97/clockify-ts-sdk.git","type":"git","directory":"mcp"},"_npmVersion":"10.9.2","description":"Unofficial, community-built — not affiliated with CAKE.com or Clockify. Model Context Protocol server for Clockify. TypeScript sibling to go-clockify (the Go MCP).","directories":{},"_nodeVersion":"22.13.0","dependencies":{"zod":"^3.25.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","eslint":"^10.5.0","vitest":"^4.1.4","fast-check":"^4.8.0","typescript":"^5.7.0","@types/node":"^22","typescript-eslint":"^8.59.4","@vitest/coverage-v8":"^4.1.9","clockify-sdk-ts-115":"*","eslint-plugin-import-x":"^4.16.2"},"peerDependencies":{"clockify-sdk-ts-115":">=0.12.0 <1"},"_npmOperationalInternal":{"tmp":"tmp/clockify-mcp-115_0.6.0_1783992983225_0.5764400743213669","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@apet97/clockify-mcp-115","version":"0.6.1","keywords":["clockify","mcp","model-context-protocol","ai-tools","anthropic","claude"],"author":{"name":"Aleksandar Petković","email":"petkovic.aleksandar037@gmail.com"},"license":"MIT","_id":"@apet97/clockify-mcp-115@0.6.1","maintainers":[{"name":"apet97","email":"petkovic.aleksandar037@gmail.com"}],"homepage":"https://github.com/apet97/clockify-ts-sdk/tree/main/mcp","bugs":{"url":"https://github.com/apet97/clockify-ts-sdk/issues"},"bin":{"clockify115-mcp":"dist/index.js"},"dist":{"shasum":"e601d705e452700cc1b81863fe5646b638bf1658","tarball":"https://registry.npmjs.org/@apet97/clockify-mcp-115/-/clockify-mcp-115-0.6.1.tgz","fileCount":109,"integrity":"sha512-oX94xc7hB7INFV7EJ02kJUKC6tkXwLc7uF9Fxqwv+m1dQpGIN2hrRImD0F9FLAazkI3lupdG8kcbOiAq9ja3kw==","signatures":[{"sig":"MEQCIDcN+PqESVxR9YqKZ1PLPca32e3980X+hCZE2x3ZwHGFAiBEourZPAQp037AXdEwd8rcoJKLywwXkYW/oIZOlX9NbQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@apet97%2fclockify-mcp-115@0.6.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":572304},"type":"module","_from":"file:/home/runner/work/_temp/mcp-npm-publish/apet97-clockify-mcp-115-0.6.1.tgz","engines":{"node":">=22.13.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","default":"./dist/client.js"},"./server":{"types":"./dist/server.d.ts","default":"./dist/server.js"}},"scripts":{"dev":"node ../scripts/generate-package-versions.mjs && tsx src/index.ts","lint":"eslint .","test":"node ../scripts/generate-package-versions.mjs && vitest run","build":"node ../scripts/generate-package-versions.mjs && npm run clean && tsc -p tsconfig.build.json","clean":"rm -rf dist","lint:fix":"eslint . --fix","mutation":"node ../scripts/generate-package-versions.mjs && npm run build -w clockify-sdk-ts-115 && cd .. && CLOCKIFY_API_KEY='' CLOCKIFY_WORKSPACE_ID='' stryker run mcp/stryker.conf.json","test:watch":"node ../scripts/generate-package-versions.mjs && vitest","type-check":"node ../scripts/generate-package-versions.mjs && tsc -p tsconfig.json --noEmit","test:coverage":"node ../scripts/generate-package-versions.mjs && vitest run --coverage","prepublishOnly":"npm run type-check && npm test && npm run build","verify:live-cleanup":"npm run build && node scripts/assert-clean-prefixes.mjs"},"_npmUser":{"name":"apet97","email":"petkovic.aleksandar037@gmail.com"},"_resolved":"/home/runner/work/_temp/mcp-npm-publish/apet97-clockify-mcp-115-0.6.1.tgz","_integrity":"sha512-oX94xc7hB7INFV7EJ02kJUKC6tkXwLc7uF9Fxqwv+m1dQpGIN2hrRImD0F9FLAazkI3lupdG8kcbOiAq9ja3kw==","repository":{"url":"git+https://github.com/apet97/clockify-ts-sdk.git","type":"git","directory":"mcp"},"_npmVersion":"10.9.2","description":"Unofficial, community-built — not affiliated with CAKE.com or Clockify. Model Context Protocol server for Clockify. TypeScript sibling to go-clockify (the Go MCP).","directories":{},"_nodeVersion":"22.13.0","dependencies":{"zod":"^3.25.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","eslint":"^10.5.0","vitest":"^4.1.4","fast-check":"^4.8.0","typescript":"^5.7.0","@types/node":"^22","typescript-eslint":"^8.59.4","@vitest/coverage-v8":"^4.1.9","clockify-sdk-ts-115":"*","eslint-plugin-import-x":"^4.16.2"},"peerDependencies":{"clockify-sdk-ts-115":">=0.12.0 <1"},"_npmOperationalInternal":{"tmp":"tmp/clockify-mcp-115_0.6.1_1784007455718_0.9120170912938144","host":"s3://npm-registry-packages-npm-production"}},"0.6.2":{"name":"@apet97/clockify-mcp-115","version":"0.6.2","keywords":["clockify","mcp","model-context-protocol","ai-tools","anthropic","claude"],"author":{"name":"Aleksandar Petković","email":"petkovic.aleksandar037@gmail.com"},"license":"MIT","_id":"@apet97/clockify-mcp-115@0.6.2","maintainers":[{"name":"apet97","email":"petkovic.aleksandar037@gmail.com"}],"homepage":"https://github.com/apet97/clockify-ts-sdk/tree/main/mcp","bugs":{"url":"https://github.com/apet97/clockify-ts-sdk/issues"},"bin":{"clockify115-mcp":"dist/index.js"},"dist":{"shasum":"1da2af8d95824efb520e2ebf29150a690e7a55ed","tarball":"https://registry.npmjs.org/@apet97/clockify-mcp-115/-/clockify-mcp-115-0.6.2.tgz","fileCount":109,"integrity":"sha512-DspBd7ELCeblpikwGnZSf7S84gBUQ6iBV66GC+tDFBBGzvSDCfmnBXYvqASLv8AO0dguGtX/WCMeuDjvifG5/A==","signatures":[{"sig":"MEUCIQCjJmOzQSxUZriQvV98CjKRDxOhsz8bSe7YwYhMQhY9nQIgImm2evHOm96MtRwiYxR0A/6rv9AhgL5DAaVw8NuMH8k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@apet97%2fclockify-mcp-115@0.6.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":572306},"type":"module","_from":"file:/home/runner/work/_temp/mcp-npm-publish/apet97-clockify-mcp-115-0.6.2.tgz","engines":{"node":">=22.13.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","default":"./dist/client.js"},"./server":{"types":"./dist/server.d.ts","default":"./dist/server.js"}},"scripts":{"dev":"node ../scripts/generate-package-versions.mjs && tsx src/index.ts","lint":"eslint .","test":"node ../scripts/generate-package-versions.mjs && vitest run","build":"node ../scripts/generate-package-versions.mjs && npm run clean && tsc -p tsconfig.build.json","clean":"rm -rf dist","lint:fix":"eslint . --fix","mutation":"node ../scripts/generate-package-versions.mjs && npm run build -w clockify-sdk-ts-115 && cd .. && CLOCKIFY_API_KEY='' CLOCKIFY_WORKSPACE_ID='' stryker run mcp/stryker.conf.json","test:watch":"node ../scripts/generate-package-versions.mjs && vitest","type-check":"node ../scripts/generate-package-versions.mjs && tsc -p tsconfig.json --noEmit","test:coverage":"node ../scripts/generate-package-versions.mjs && vitest run --coverage","prepublishOnly":"npm run type-check && npm test && npm run build","verify:live-cleanup":"npm run build && node scripts/assert-clean-prefixes.mjs"},"_npmUser":{"name":"apet97","email":"petkovic.aleksandar037@gmail.com"},"_resolved":"/home/runner/work/_temp/mcp-npm-publish/apet97-clockify-mcp-115-0.6.2.tgz","_integrity":"sha512-DspBd7ELCeblpikwGnZSf7S84gBUQ6iBV66GC+tDFBBGzvSDCfmnBXYvqASLv8AO0dguGtX/WCMeuDjvifG5/A==","repository":{"url":"git+https://github.com/apet97/clockify-ts-sdk.git","type":"git","directory":"mcp"},"_npmVersion":"10.9.2","description":"Unofficial, community-built — not affiliated with CAKE.com or Clockify. Model Context Protocol server for Clockify. TypeScript sibling to go-clockify (the Go MCP).","directories":{},"_nodeVersion":"22.13.0","dependencies":{"zod":"^3.25.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","eslint":"^10.5.0","vitest":"^4.1.10","fast-check":"^4.9.0","typescript":"^5.7.0","@types/node":"^22","typescript-eslint":"^8.64.0","@vitest/coverage-v8":"^4.1.10","clockify-sdk-ts-115":"*","eslint-plugin-import-x":"^4.17.1"},"peerDependencies":{"clockify-sdk-ts-115":">=0.12.0 <1"},"_npmOperationalInternal":{"tmp":"tmp/clockify-mcp-115_0.6.2_1784012693231_0.680335678418559","host":"s3://npm-registry-packages-npm-production"}},"0.6.5":{"name":"@apet97/clockify-mcp-115","version":"0.6.5","keywords":["clockify","mcp","model-context-protocol","ai-tools","anthropic","claude"],"author":{"name":"Aleksandar Petković","email":"petkovic.aleksandar037@gmail.com"},"license":"MIT","_id":"@apet97/clockify-mcp-115@0.6.5","maintainers":[{"name":"apet97","email":"petkovic.aleksandar037@gmail.com"}],"homepage":"https://github.com/apet97/clockify-ts-sdk/tree/main/mcp","bugs":{"url":"https://github.com/apet97/clockify-ts-sdk/issues"},"bin":{"clockify115-mcp":"dist/index.js"},"dist":{"shasum":"aec75c50a1da33e3880cbe6113d34eed2c44d761","tarball":"https://registry.npmjs.org/@apet97/clockify-mcp-115/-/clockify-mcp-115-0.6.5.tgz","fileCount":111,"integrity":"sha512-tqjj3OIpsI9yQJv3kltSXQhn2beXQ+m4PnpB1cPxu0XSj2T3b1uteE6Y8SjltYtU3Y8o6Q+avqDn3ZWnDluHKg==","signatures":[{"sig":"MEUCIQCSj9liZtQ4cHEclwxabjxMgBud8NuQpHovaX3T5pfxuAIgYCFs8RaHUmV9aEZ/O97FpYZsIgXpsGIsVbSC478pkLY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@apet97%2fclockify-mcp-115@0.6.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":598547},"type":"module","_from":"file:/home/runner/work/_temp/mcp-npm-publish/apet97-clockify-mcp-115-0.6.5.tgz","engines":{"node":">=22.13.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","default":"./dist/client.js"},"./server":{"types":"./dist/server.d.ts","default":"./dist/server.js"}},"scripts":{"dev":"node ../scripts/generate-package-versions.mjs && tsx src/index.ts","lint":"eslint .","test":"node ../scripts/generate-package-versions.mjs && vitest run","build":"node ../scripts/generate-package-versions.mjs && npm run clean && tsc -p tsconfig.build.json","clean":"rm -rf dist","lint:fix":"eslint . --fix","mutation":"node ../scripts/generate-package-versions.mjs && npm run build -w clockify-sdk-ts-115 && cd .. && CLOCKIFY_API_KEY='' CLOCKIFY_WORKSPACE_ID='' stryker run mcp/stryker.conf.json","test:watch":"node ../scripts/generate-package-versions.mjs && vitest","type-check":"node ../scripts/generate-package-versions.mjs && tsc -p tsconfig.json --noEmit","test:coverage":"node ../scripts/generate-package-versions.mjs && vitest run --coverage","prepublishOnly":"npm run type-check && npm test && npm run build && node ../scripts/pack-consumer-smoke.mjs --package=mcp","verify:live-cleanup":"npm run build && node scripts/assert-clean-prefixes.mjs"},"_npmUser":{"name":"apet97","email":"petkovic.aleksandar037@gmail.com"},"_resolved":"/home/runner/work/_temp/mcp-npm-publish/apet97-clockify-mcp-115-0.6.5.tgz","_integrity":"sha512-tqjj3OIpsI9yQJv3kltSXQhn2beXQ+m4PnpB1cPxu0XSj2T3b1uteE6Y8SjltYtU3Y8o6Q+avqDn3ZWnDluHKg==","repository":{"url":"git+https://github.com/apet97/clockify-ts-sdk.git","type":"git","directory":"mcp"},"_npmVersion":"10.9.2","description":"Unofficial, community-built — not affiliated with CAKE.com or Clockify. Model Context Protocol server for Clockify. TypeScript sibling to go-clockify (the Go MCP).","directories":{},"_nodeVersion":"22.13.0","dependencies":{"zod":"^3.25.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","eslint":"^10.5.0","vitest":"^4.1.10","fast-check":"^4.9.0","typescript":"^5.7.0","@types/node":"^22","typescript-eslint":"^8.64.0","@vitest/coverage-v8":"^4.1.10","clockify-sdk-ts-115":"*","eslint-plugin-import-x":"^4.17.1"},"peerDependencies":{"clockify-sdk-ts-115":">=0.12.0 <1"},"_npmOperationalInternal":{"tmp":"tmp/clockify-mcp-115_0.6.5_1784832263704_0.06272157946523338","host":"s3://npm-registry-packages-npm-production"}},"0.6.6":{"name":"@apet97/clockify-mcp-115","version":"0.6.6","keywords":["clockify","mcp","model-context-protocol","ai-tools","anthropic","claude"],"author":{"name":"Aleksandar Petković","email":"petkovic.aleksandar037@gmail.com"},"license":"MIT","_id":"@apet97/clockify-mcp-115@0.6.6","maintainers":[{"name":"apet97","email":"petkovic.aleksandar037@gmail.com"}],"homepage":"https://github.com/apet97/clockify-ts-sdk/tree/main/mcp","bugs":{"url":"https://github.com/apet97/clockify-ts-sdk/issues"},"bin":{"clockify115-mcp":"dist/index.js"},"dist":{"shasum":"048a25c30eabc0d41dbe5ffe3abff64cf9728de6","tarball":"https://registry.npmjs.org/@apet97/clockify-mcp-115/-/clockify-mcp-115-0.6.6.tgz","fileCount":111,"integrity":"sha512-WHU0OzDlisqZyuy8c55YrOzZCOJDvDSXklfZ9X8szv/9cpkQeA1+d5hqgaShMMiEtGfF7k2mNgM1inEJxo5xOw==","signatures":[{"sig":"MEYCIQD63qo0aEC3lHjB80JlkcPVfx4IXLoP9TASTLXuesfwDAIhAJqUKr7H2QOZafFl8wvK+/It7c0KMBc53BTIXN/wzrzs","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@apet97%2fclockify-mcp-115@0.6.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":598547},"type":"module","_from":"file:/home/runner/work/_temp/mcp-npm-publish/apet97-clockify-mcp-115-0.6.6.tgz","engines":{"node":">=22.13.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","default":"./dist/client.js"},"./server":{"types":"./dist/server.d.ts","default":"./dist/server.js"}},"scripts":{"dev":"node ../scripts/generate-package-versions.mjs && tsx src/index.ts","lint":"eslint .","test":"node ../scripts/generate-package-versions.mjs && vitest run","build":"node ../scripts/generate-package-versions.mjs && npm run clean && tsc -p tsconfig.build.json","clean":"rm -rf dist","lint:fix":"eslint . --fix","mutation":"node ../scripts/generate-package-versions.mjs && npm run build -w clockify-sdk-ts-115 && cd .. && CLOCKIFY_API_KEY='' CLOCKIFY_WORKSPACE_ID='' stryker run mcp/stryker.conf.json","test:watch":"node ../scripts/generate-package-versions.mjs && vitest","type-check":"node ../scripts/generate-package-versions.mjs && tsc -p tsconfig.json --noEmit","test:coverage":"node ../scripts/generate-package-versions.mjs && vitest run --coverage","prepublishOnly":"npm run type-check && npm test && npm run build && node ../scripts/pack-consumer-smoke.mjs --package=mcp","verify:live-cleanup":"npm run build && node scripts/assert-clean-prefixes.mjs"},"_npmUser":{"name":"apet97","email":"petkovic.aleksandar037@gmail.com"},"_resolved":"/home/runner/work/_temp/mcp-npm-publish/apet97-clockify-mcp-115-0.6.6.tgz","_integrity":"sha512-WHU0OzDlisqZyuy8c55YrOzZCOJDvDSXklfZ9X8szv/9cpkQeA1+d5hqgaShMMiEtGfF7k2mNgM1inEJxo5xOw==","repository":{"url":"git+https://github.com/apet97/clockify-ts-sdk.git","type":"git","directory":"mcp"},"_npmVersion":"10.9.2","description":"Unofficial, community-built — not affiliated with CAKE.com or Clockify. Model Context Protocol server for Clockify. TypeScript sibling to go-clockify (the Go MCP).","directories":{},"_nodeVersion":"22.13.0","dependencies":{"zod":"^3.25.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","eslint":"^10.5.0","vitest":"^4.1.10","fast-check":"^4.9.0","typescript":"^5.7.0","@types/node":"^22","typescript-eslint":"^8.64.0","@vitest/coverage-v8":"^4.1.10","clockify-sdk-ts-115":"*","eslint-plugin-import-x":"^4.17.1"},"peerDependencies":{"clockify-sdk-ts-115":">=0.12.0 <1"},"_npmOperationalInternal":{"tmp":"tmp/clockify-mcp-115_0.6.6_1784850713570_0.6031424683764415","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@apet97/clockify-mcp-115","version":"0.7.0","keywords":["clockify","mcp","model-context-protocol","ai-tools","anthropic","claude"],"author":{"name":"Aleksandar Petković","email":"petkovic.aleksandar037@gmail.com"},"license":"MIT","_id":"@apet97/clockify-mcp-115@0.7.0","maintainers":[{"name":"apet97","email":"petkovic.aleksandar037@gmail.com"}],"homepage":"https://github.com/apet97/clockify-ts-sdk/tree/main/mcp","bugs":{"url":"https://github.com/apet97/clockify-ts-sdk/issues"},"bin":{"clockify115-mcp":"dist/index.js"},"dist":{"shasum":"91823049b6b39228bd86c237b230dd2405ef217d","tarball":"https://registry.npmjs.org/@apet97/clockify-mcp-115/-/clockify-mcp-115-0.7.0.tgz","fileCount":111,"integrity":"sha512-xR8t9T/FOZNVg9Jfyqh/R/MfHdDWSdrv66LO+wJtNSS/LWyL1R+bOR7VJ5B0QpPO0tqKvhxaoktSqkQorkJeRw==","signatures":[{"sig":"MEQCID5XXjomCVtRnNAcRKvkujMoPtWSdbRBOOua5cqM/nSGAiB8GH/sZfcKvIoAWSFcnZXoITlT1D1MtUKdWydd3EMhKg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@apet97%2fclockify-mcp-115@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":602517},"type":"module","_from":"file:/home/runner/work/_temp/mcp-npm-publish/apet97-clockify-mcp-115-0.7.0.tgz","engines":{"node":">=22.13.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","default":"./dist/client.js"},"./server":{"types":"./dist/server.d.ts","default":"./dist/server.js"}},"scripts":{"dev":"node ../scripts/generate-package-versions.mjs && tsx src/index.ts","lint":"eslint .","test":"node ../scripts/generate-package-versions.mjs && vitest run","build":"node ../scripts/generate-package-versions.mjs && npm run clean && tsc -p tsconfig.build.json","clean":"rm -rf dist","lint:fix":"eslint . --fix","mutation":"node ../scripts/generate-package-versions.mjs && npm run build -w clockify-sdk-ts-115 && cd .. && CLOCKIFY_API_KEY='' CLOCKIFY_WORKSPACE_ID='' stryker run mcp/stryker.conf.json","test:watch":"node ../scripts/generate-package-versions.mjs && vitest","type-check":"node ../scripts/generate-package-versions.mjs && tsc -p tsconfig.json --noEmit","test:coverage":"node ../scripts/generate-package-versions.mjs && vitest run --coverage","prepublishOnly":"npm run type-check && npm test && npm run build && node ../scripts/pack-consumer-smoke.mjs --package=mcp","verify:live-cleanup":"npm run build && node scripts/assert-clean-prefixes.mjs"},"_npmUser":{"name":"apet97","email":"petkovic.aleksandar037@gmail.com"},"_resolved":"/home/runner/work/_temp/mcp-npm-publish/apet97-clockify-mcp-115-0.7.0.tgz","_integrity":"sha512-xR8t9T/FOZNVg9Jfyqh/R/MfHdDWSdrv66LO+wJtNSS/LWyL1R+bOR7VJ5B0QpPO0tqKvhxaoktSqkQorkJeRw==","repository":{"url":"git+https://github.com/apet97/clockify-ts-sdk.git","type":"git","directory":"mcp"},"_npmVersion":"10.9.2","description":"Unofficial, community-built — not affiliated with CAKE.com or Clockify. Model Context Protocol server for Clockify. TypeScript sibling to go-clockify (the Go MCP).","directories":{},"_nodeVersion":"22.13.0","dependencies":{"zod":"^3.25.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","eslint":"^10.5.0","vitest":"^4.1.10","fast-check":"^4.9.0","typescript":"^5.7.0","@types/node":"^22","typescript-eslint":"^8.64.0","@vitest/coverage-v8":"^4.1.10","clockify-sdk-ts-115":"*","eslint-plugin-import-x":"^4.17.1"},"peerDependencies":{"clockify-sdk-ts-115":">=0.13.0 <1"},"_npmOperationalInternal":{"tmp":"tmp/clockify-mcp-115_0.7.0_1785143937353_0.1227119495495046","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@apet97/clockify-mcp-115","version":"0.8.0","keywords":["clockify","mcp","model-context-protocol","ai-tools","anthropic","claude"],"author":{"name":"Aleksandar Petković","email":"petkovic.aleksandar037@gmail.com"},"license":"MIT","_id":"@apet97/clockify-mcp-115@0.8.0","maintainers":[{"name":"apet97","email":"petkovic.aleksandar037@gmail.com"}],"homepage":"https://github.com/apet97/clockify-ts-sdk/tree/main/mcp","bugs":{"url":"https://github.com/apet97/clockify-ts-sdk/issues"},"bin":{"clockify115-mcp":"dist/index.js"},"dist":{"shasum":"9e8e2c7d8eac7c8f00c6427e8e919c90f29f0d3d","tarball":"https://registry.npmjs.org/@apet97/clockify-mcp-115/-/clockify-mcp-115-0.8.0.tgz","fileCount":111,"integrity":"sha512-KL7LU8AP0N6E35yffsYfFNBiRSYiBxh2lPIgTk814rF5vvMh5fc3lBB5CokyhdBrqzqTEAJ/eLlOnf/wpyXqxA==","signatures":[{"sig":"MEUCIAC+Kl7VcyDGRksEkskNXy3jYthy9ex3VJzog6ke+Gi1AiEAm8fu0IssTDt9uVXn1E4kU6/uiKXeNTw1BOosPLFMDOE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@apet97%2fclockify-mcp-115@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":579807},"type":"module","_from":"file:/home/runner/work/_temp/mcp-npm-publish/apet97-clockify-mcp-115-0.8.0.tgz","engines":{"node":">=22.13.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","default":"./dist/client.js"},"./server":{"types":"./dist/server.d.ts","default":"./dist/server.js"}},"scripts":{"dev":"node ../scripts/generate-package-versions.mjs && tsx src/index.ts","lint":"eslint .","test":"node ../scripts/generate-package-versions.mjs && vitest run","build":"node ../scripts/generate-package-versions.mjs && npm run clean && tsc -p tsconfig.build.json","clean":"rm -rf dist","lint:fix":"eslint . --fix","mutation":"node ../scripts/generate-package-versions.mjs && npm run build -w clockify-sdk-ts-115 && cd .. && CLOCKIFY_API_KEY='' CLOCKIFY_WORKSPACE_ID='' stryker run mcp/stryker.conf.json","test:watch":"node ../scripts/generate-package-versions.mjs && vitest","type-check":"node ../scripts/generate-package-versions.mjs && tsc -p tsconfig.json --noEmit","test:coverage":"node ../scripts/generate-package-versions.mjs && vitest run --coverage","prepublishOnly":"npm run type-check && npm test && npm run build && node ../scripts/pack-consumer-smoke.mjs --package=mcp","verify:live-cleanup":"npm run build && node scripts/assert-clean-prefixes.mjs"},"_npmUser":{"name":"apet97","email":"petkovic.aleksandar037@gmail.com"},"_resolved":"/home/runner/work/_temp/mcp-npm-publish/apet97-clockify-mcp-115-0.8.0.tgz","_integrity":"sha512-KL7LU8AP0N6E35yffsYfFNBiRSYiBxh2lPIgTk814rF5vvMh5fc3lBB5CokyhdBrqzqTEAJ/eLlOnf/wpyXqxA==","repository":{"url":"git+https://github.com/apet97/clockify-ts-sdk.git","type":"git","directory":"mcp"},"_npmVersion":"10.9.2","description":"Unofficial, community-built — not affiliated with CAKE.com or Clockify. Model Context Protocol server for Clockify. TypeScript sibling to go-clockify (the Go MCP).","directories":{},"_nodeVersion":"22.13.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","eslint":"^10.8.0","vitest":"^4.1.10","fast-check":"^4.9.0","typescript":"^5.7.0","@types/node":"^22","typescript-eslint":"^8.65.0","@vitest/coverage-v8":"^4.1.10","clockify-sdk-ts-115":"*","eslint-plugin-import-x":"^4.17.1"},"peerDependencies":{"clockify-sdk-ts-115":">=0.13.0 <1"},"_npmOperationalInternal":{"tmp":"tmp/clockify-mcp-115_0.8.0_1785549532908_0.3019965982772481","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@apet97/clockify-mcp-115","version":"0.9.0","keywords":["clockify","mcp","model-context-protocol","ai-tools","anthropic","claude"],"author":{"name":"Aleksandar Petković","email":"petkovic.aleksandar037@gmail.com"},"license":"MIT","_id":"@apet97/clockify-mcp-115@0.9.0","maintainers":[{"name":"apet97","email":"petkovic.aleksandar037@gmail.com"}],"homepage":"https://github.com/apet97/clockify-ts-sdk/tree/main/mcp","bugs":{"url":"https://github.com/apet97/clockify-ts-sdk/issues"},"bin":{"clockify115-mcp":"dist/index.js"},"dist":{"shasum":"ea26b1e47dd8be08f2d524b395c78eb98b83ffe2","tarball":"https://registry.npmjs.org/@apet97/clockify-mcp-115/-/clockify-mcp-115-0.9.0.tgz","fileCount":113,"integrity":"sha512-QjwDXpZECVd45fPLD/zwn0Z4HXDD8VUCRXZbDLL6LNyVYdCrhzJ5Ze/WT6aLQiKOwZ5u7crY2mJ4GUrisSu7Vw==","signatures":[{"sig":"MEUCIDZngBLnBSuSbWYiF8sJJpyCvTRheanc5N3grfESb31sAiEAgtAzDf91mr+ZEpK5s16SXVkGsUZLLQ7M+r50IdVJUS0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@apet97%2fclockify-mcp-115@0.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":604731},"type":"module","_from":"file:/home/runner/work/_temp/clockify-mcp-pack/apet97-clockify-mcp-115-0.9.0.tgz","engines":{"node":">=22.13.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","default":"./dist/client.js"},"./server":{"types":"./dist/server.d.ts","default":"./dist/server.js"}},"scripts":{"dev":"node ../scripts/generate-package-versions.mjs && tsx src/index.ts","lint":"eslint .","test":"node ../scripts/generate-package-versions.mjs && vitest run","build":"node ../scripts/generate-package-versions.mjs && npm run clean && tsc -p tsconfig.build.json","clean":"rm -rf dist","lint:fix":"eslint . --fix","mutation":"node ../scripts/generate-package-versions.mjs && npm run build -w clockify-sdk-ts-115 && cd .. && CLOCKIFY_API_KEY='' CLOCKIFY_WORKSPACE_ID='' stryker run mcp/stryker.conf.json","test:watch":"node ../scripts/generate-package-versions.mjs && vitest","type-check":"node ../scripts/generate-package-versions.mjs && tsc -p tsconfig.json --noEmit","test:coverage":"node ../scripts/generate-package-versions.mjs && vitest run --coverage","prepublishOnly":"npm run type-check && npm test && npm run build && node ../scripts/pack-consumer-smoke.mjs --package=mcp","verify:live-cleanup":"npm run build && node scripts/assert-clean-prefixes.mjs"},"_npmUser":{"name":"apet97","email":"petkovic.aleksandar037@gmail.com"},"_resolved":"/home/runner/work/_temp/clockify-mcp-pack/apet97-clockify-mcp-115-0.9.0.tgz","_integrity":"sha512-QjwDXpZECVd45fPLD/zwn0Z4HXDD8VUCRXZbDLL6LNyVYdCrhzJ5Ze/WT6aLQiKOwZ5u7crY2mJ4GUrisSu7Vw==","repository":{"url":"git+https://github.com/apet97/clockify-ts-sdk.git","type":"git","directory":"mcp"},"_npmVersion":"10.9.2","description":"Unofficial, community-built — not affiliated with CAKE.com or Clockify. Model Context Protocol server for Clockify. TypeScript sibling to go-clockify (the Go MCP).","directories":{},"_nodeVersion":"22.13.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","eslint":"^10.8.0","vitest":"^4.1.10","fast-check":"^4.9.0","typescript":"^5.7.0","@types/node":"^22","typescript-eslint":"^8.65.0","@vitest/coverage-v8":"^4.1.10","clockify-sdk-ts-115":"*","eslint-plugin-import-x":"^4.17.1"},"peerDependencies":{"clockify-sdk-ts-115":">=0.13.0 <1"},"_npmOperationalInternal":{"tmp":"tmp/clockify-mcp-115_0.9.0_1785908158693_0.880039083815527","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"@apet97/clockify-mcp-115","version":"0.9.1","keywords":["clockify","mcp","model-context-protocol","ai-tools","anthropic","claude"],"author":{"name":"Aleksandar Petković","email":"petkovic.aleksandar037@gmail.com"},"license":"MIT","_id":"@apet97/clockify-mcp-115@0.9.1","maintainers":[{"name":"apet97","email":"petkovic.aleksandar037@gmail.com"}],"homepage":"https://github.com/apet97/clockify-ts-sdk/tree/main/mcp","bugs":{"url":"https://github.com/apet97/clockify-ts-sdk/issues"},"bin":{"clockify115-mcp":"dist/index.js"},"dist":{"shasum":"5e2ca70c90dec4a8f2dd851258d33c6a54bdd581","tarball":"https://registry.npmjs.org/@apet97/clockify-mcp-115/-/clockify-mcp-115-0.9.1.tgz","fileCount":113,"integrity":"sha512-GVQl3lSdazwLQkdIqNFmF7KyjSIW6++CjAmJ+v4iDd/Bzbiy1niej4HZbIqtwuI4hIvAoxp8Qgrcx7bBgQj9KA==","signatures":[{"sig":"MEUCIQDeCHW8rUCqlKGCTrrMA0quOo0n/H8ZycI/4Y3aaAJ0jQIgNzjFKkMx9BlPCFBeuqCbHVneuNubkVhqahTLk/p+8Rc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@apet97%2fclockify-mcp-115@0.9.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":604731},"type":"module","_from":"file:/home/runner/work/_temp/clockify-mcp-pack/apet97-clockify-mcp-115-0.9.1.tgz","engines":{"node":">=22.13.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","default":"./dist/client.js"},"./server":{"types":"./dist/server.d.ts","default":"./dist/server.js"}},"scripts":{"dev":"node ../scripts/generate-package-versions.mjs && tsx src/index.ts","lint":"eslint .","test":"node ../scripts/generate-package-versions.mjs && vitest run","build":"node ../scripts/generate-package-versions.mjs && npm run clean && tsc -p tsconfig.build.json","clean":"rm -rf dist","lint:fix":"eslint . --fix","mutation":"node ../scripts/generate-package-versions.mjs && npm run build -w clockify-sdk-ts-115 && cd .. && CLOCKIFY_API_KEY='' CLOCKIFY_WORKSPACE_ID='' stryker run mcp/stryker.conf.json","test:watch":"node ../scripts/generate-package-versions.mjs && vitest","type-check":"node ../scripts/generate-package-versions.mjs && tsc -p tsconfig.json --noEmit","test:coverage":"node ../scripts/generate-package-versions.mjs && vitest run --coverage","prepublishOnly":"npm run type-check && npm test && npm run build && node ../scripts/pack-consumer-smoke.mjs --package=mcp","verify:live-cleanup":"npm run build && node scripts/assert-clean-prefixes.mjs"},"_npmUser":{"name":"apet97","email":"petkovic.aleksandar037@gmail.com"},"_resolved":"/home/runner/work/_temp/clockify-mcp-pack/apet97-clockify-mcp-115-0.9.1.tgz","_integrity":"sha512-GVQl3lSdazwLQkdIqNFmF7KyjSIW6++CjAmJ+v4iDd/Bzbiy1niej4HZbIqtwuI4hIvAoxp8Qgrcx7bBgQj9KA==","repository":{"url":"git+https://github.com/apet97/clockify-ts-sdk.git","type":"git","directory":"mcp"},"_npmVersion":"10.9.2","description":"Unofficial, community-built — not affiliated with CAKE.com or Clockify. Model Context Protocol server for Clockify. TypeScript sibling to go-clockify (the Go MCP).","directories":{},"_nodeVersion":"22.13.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","eslint":"^10.8.0","vitest":"^4.1.10","fast-check":"^4.9.0","typescript":"^5.7.0","@types/node":"^22","typescript-eslint":"^8.65.0","@vitest/coverage-v8":"^4.1.10","clockify-sdk-ts-115":"*","eslint-plugin-import-x":"^4.17.1"},"peerDependencies":{"clockify-sdk-ts-115":">=0.15.1 <1"},"_npmOperationalInternal":{"tmp":"tmp/clockify-mcp-115_0.9.1_1785911933594_0.3340150136434419","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"@apet97/clockify-mcp-115","version":"0.10.0","keywords":["clockify","mcp","model-context-protocol","ai-tools","anthropic","claude"],"author":{"name":"Aleksandar Petković","email":"petkovic.aleksandar037@gmail.com"},"license":"MIT","_id":"@apet97/clockify-mcp-115@0.10.0","maintainers":[{"name":"apet97","email":"petkovic.aleksandar037@gmail.com"}],"homepage":"https://github.com/apet97/clockify-ts-sdk/tree/main/mcp","bugs":{"url":"https://github.com/apet97/clockify-ts-sdk/issues"},"bin":{"clockify115-mcp":"dist/index.js"},"dist":{"shasum":"a18509f3e4c8bbefefeb6a23ac61ff2b90103dd8","tarball":"https://registry.npmjs.org/@apet97/clockify-mcp-115/-/clockify-mcp-115-0.10.0.tgz","fileCount":113,"integrity":"sha512-Ow53Q85E4y6SZYrxupkOOBaFVj1HJ94ptn/ihLnouM08NsljiiOZwjQZCNTrAHx/EQa5YhulXG3vjFZTmE44rA==","signatures":[{"sig":"MEYCIQDfxa47B/JaG3PsN8UK2LX75fGwtDI2s8zYAaDQlb2VTAIhAICHjQcC7T7DrY8KJRH6cuIHseYmyHN6qK3WmLlw2AIP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@apet97%2fclockify-mcp-115@0.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":622827},"type":"module","_from":"file:/home/runner/work/_temp/clockify-mcp-pack/apet97-clockify-mcp-115-0.10.0.tgz","engines":{"node":">=22.13.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","default":"./dist/client.js"},"./server":{"types":"./dist/server.d.ts","default":"./dist/server.js"}},"scripts":{"dev":"node ../scripts/generate-package-versions.mjs && tsx src/index.ts","lint":"eslint .","test":"node ../scripts/generate-package-versions.mjs && vitest run","build":"node ../scripts/generate-package-versions.mjs && npm run clean && tsc -p tsconfig.build.json","clean":"rm -rf dist","lint:fix":"eslint . --fix","mutation":"node ../scripts/generate-package-versions.mjs && npm run build -w clockify-sdk-ts-115 && cd .. && CLOCKIFY_API_KEY='' CLOCKIFY_WORKSPACE_ID='' stryker run mcp/stryker.conf.json","test:watch":"node ../scripts/generate-package-versions.mjs && vitest","type-check":"node ../scripts/generate-package-versions.mjs && tsc -p tsconfig.json --noEmit","test:coverage":"node ../scripts/generate-package-versions.mjs && vitest run --coverage","prepublishOnly":"npm run type-check && npm test && npm run build && node ../scripts/pack-consumer-smoke.mjs --package=mcp","verify:live-cleanup":"npm run build && node scripts/assert-clean-prefixes.mjs"},"_npmUser":{"name":"apet97","email":"petkovic.aleksandar037@gmail.com"},"_resolved":"/home/runner/work/_temp/clockify-mcp-pack/apet97-clockify-mcp-115-0.10.0.tgz","_integrity":"sha512-Ow53Q85E4y6SZYrxupkOOBaFVj1HJ94ptn/ihLnouM08NsljiiOZwjQZCNTrAHx/EQa5YhulXG3vjFZTmE44rA==","repository":{"url":"git+https://github.com/apet97/clockify-ts-sdk.git","type":"git","directory":"mcp"},"_npmVersion":"10.9.2","description":"Unofficial, community-built — not affiliated with CAKE.com or Clockify. Model Context Protocol server for Clockify. TypeScript sibling to go-clockify (the Go MCP).","directories":{},"_nodeVersion":"22.13.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","eslint":"^10.8.0","vitest":"^4.1.10","fast-check":"^4.9.0","typescript":"^7.0.2","@types/node":"^22","typescript-eslint":"^8.65.0","@vitest/coverage-v8":"^4.1.10","clockify-sdk-ts-115":"*","eslint-plugin-import-x":"^4.17.1"},"peerDependencies":{"clockify-sdk-ts-115":">=0.15.1 <1"},"_npmOperationalInternal":{"tmp":"tmp/clockify-mcp-115_0.10.0_1785951424016_0.6903192108679341","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@apet97/clockify-mcp-115","version":"1.0.0","keywords":["clockify","mcp","model-context-protocol","ai-tools","anthropic","claude"],"author":{"name":"Aleksandar Petković","email":"petkovic.aleksandar037@gmail.com"},"license":"MIT","_id":"@apet97/clockify-mcp-115@1.0.0","maintainers":[{"name":"apet97","email":"petkovic.aleksandar037@gmail.com"}],"homepage":"https://github.com/apet97/clockify-ts-sdk/tree/main/mcp","bugs":{"url":"https://github.com/apet97/clockify-ts-sdk/issues"},"bin":{"clockify115-mcp":"dist/index.js"},"dist":{"shasum":"7e366ae363340a259e6961e247dd5101ac478649","tarball":"https://registry.npmjs.org/@apet97/clockify-mcp-115/-/clockify-mcp-115-1.0.0.tgz","fileCount":127,"integrity":"sha512-mylz5zYTukIQS4AQfdMOUo5yswTVJJGGkKxjsBd+FduBxAf8FrQ6DdJiOwCzEkNgjKM7NHYoUNxZFJmjvjhGaA==","signatures":[{"sig":"MEQCIBc7mtEdS+s/JOoPqnUsEAffjkWJaBJgQtaLAfELuC+rAiBkW0RY62RfbckvLdKm5BPCtWkioepiL7xj2dDOCxbebA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@apet97%2fclockify-mcp-115@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":629388},"type":"module","_from":"file:/home/runner/work/_temp/clockify-mcp-pack/apet97-clockify-mcp-115-1.0.0.tgz","engines":{"node":">=22.13.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","default":"./dist/client.js"},"./server":{"types":"./dist/server.d.ts","default":"./dist/server.js"}},"scripts":{"dev":"node ../scripts/generate-package-versions.mjs && tsx src/index.ts","lint":"eslint .","test":"node ../scripts/generate-package-versions.mjs && vitest run","build":"node ../scripts/generate-package-versions.mjs && npm run clean && tsc -p tsconfig.build.json","clean":"rm -rf dist","lint:fix":"eslint . --fix","mutation":"node ../scripts/generate-package-versions.mjs && npm run build -w clockify-sdk-ts-115 && cd .. && CLOCKIFY_API_KEY='' CLOCKIFY_WORKSPACE_ID='' stryker run mcp/stryker.conf.json","test:watch":"node ../scripts/generate-package-versions.mjs && vitest","type-check":"node ../scripts/generate-package-versions.mjs && tsc -p tsconfig.json --noEmit","test:coverage":"node ../scripts/generate-package-versions.mjs && vitest run --coverage","prepublishOnly":"npm run type-check && npm test && npm run build && node ../scripts/pack-consumer-smoke.mjs --package=mcp","verify:live-cleanup":"npm run build && node scripts/assert-clean-prefixes.mjs"},"_npmUser":{"name":"apet97","email":"petkovic.aleksandar037@gmail.com"},"_resolved":"/home/runner/work/_temp/clockify-mcp-pack/apet97-clockify-mcp-115-1.0.0.tgz","_integrity":"sha512-mylz5zYTukIQS4AQfdMOUo5yswTVJJGGkKxjsBd+FduBxAf8FrQ6DdJiOwCzEkNgjKM7NHYoUNxZFJmjvjhGaA==","repository":{"url":"git+https://github.com/apet97/clockify-ts-sdk.git","type":"git","directory":"mcp"},"_npmVersion":"10.9.2","description":"Unofficial, community-built — not affiliated with CAKE.com or Clockify. Model Context Protocol server for Clockify. TypeScript sibling to go-clockify (the Go MCP).","directories":{},"_nodeVersion":"22.13.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","eslint":"^10.8.0","vitest":"^4.1.10","fast-check":"^4.9.0","typescript":"^7.0.2","@types/node":"^22","typescript-eslint":"^8.65.0","@vitest/coverage-v8":"^4.1.10","clockify-sdk-ts-115":"*","eslint-plugin-import-x":"^4.17.1"},"peerDependencies":{"clockify-sdk-ts-115":"^1"},"_npmOperationalInternal":{"tmp":"tmp/clockify-mcp-115_1.0.0_1785960939787_0.1559509498561562","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@apet97/clockify-mcp-115","version":"2.0.0","keywords":["clockify","mcp","model-context-protocol","ai-tools","anthropic","claude"],"author":{"name":"Aleksandar Petković","email":"petkovic.aleksandar037@gmail.com"},"license":"MIT","_id":"@apet97/clockify-mcp-115@2.0.0","maintainers":[{"name":"apet97","email":"petkovic.aleksandar037@gmail.com"}],"homepage":"https://github.com/apet97/clockify-ts-sdk/tree/main/mcp","bugs":{"url":"https://github.com/apet97/clockify-ts-sdk/issues"},"bin":{"clockify115-mcp":"dist/index.js"},"dist":{"shasum":"cbdcf6c1130ad99763a311f296a0d1a09610095c","tarball":"https://registry.npmjs.org/@apet97/clockify-mcp-115/-/clockify-mcp-115-2.0.0.tgz","fileCount":127,"integrity":"sha512-zOfuVRasnrbeGH1eRXIP6OC45XrCiMnqJ0agFg+A04LvVX7297+3wTSPDWI/VGaQ4Yi+ZyAugxT8BhCbcnCNtA==","signatures":[{"sig":"MEUCIBvX3CeuCClafKH028Xy83zzs/iKhKBwPpUidsXxTncbAiEAkt4yozcWBNvibFwQXT4p4IJUu/+odx8ZPyAqeFWph+I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@apet97%2fclockify-mcp-115@2.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":634729},"type":"module","_from":"file:/home/runner/work/_temp/clockify-mcp-pack/apet97-clockify-mcp-115-2.0.0.tgz","engines":{"node":">=22.13.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","default":"./dist/client.js"},"./server":{"types":"./dist/server.d.ts","default":"./dist/server.js"}},"scripts":{"dev":"node ../scripts/generate-package-versions.mjs && tsx src/index.ts","lint":"eslint .","test":"node ../scripts/generate-package-versions.mjs && vitest run","build":"node ../scripts/generate-package-versions.mjs && npm run clean && tsc -p tsconfig.build.json","clean":"rm -rf dist","lint:fix":"eslint . --fix","mutation":"node ../scripts/generate-package-versions.mjs && npm run build -w clockify-sdk-ts-115 && cd .. && CLOCKIFY_API_KEY='' CLOCKIFY_WORKSPACE_ID='' stryker run mcp/stryker.conf.json","test:watch":"node ../scripts/generate-package-versions.mjs && vitest","type-check":"node ../scripts/generate-package-versions.mjs && tsc -p tsconfig.json --noEmit","test:coverage":"node ../scripts/generate-package-versions.mjs && vitest run --coverage","prepublishOnly":"npm run type-check && npm test && npm run build && node ../scripts/pack-consumer-smoke.mjs --package=mcp","verify:live-cleanup":"npm run build && node scripts/assert-clean-prefixes.mjs"},"_npmUser":{"name":"apet97","email":"petkovic.aleksandar037@gmail.com"},"_resolved":"/home/runner/work/_temp/clockify-mcp-pack/apet97-clockify-mcp-115-2.0.0.tgz","_integrity":"sha512-zOfuVRasnrbeGH1eRXIP6OC45XrCiMnqJ0agFg+A04LvVX7297+3wTSPDWI/VGaQ4Yi+ZyAugxT8BhCbcnCNtA==","repository":{"url":"git+https://github.com/apet97/clockify-ts-sdk.git","type":"git","directory":"mcp"},"_npmVersion":"10.9.2","description":"Unofficial, community-built — not affiliated with CAKE.com or Clockify. Model Context Protocol server for Clockify. TypeScript sibling to go-clockify (the Go MCP).","directories":{},"_nodeVersion":"22.13.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","eslint":"^10.8.0","vitest":"^4.1.10","fast-check":"^4.9.0","typescript":"^7.0.2","@types/node":"^22","typescript-eslint":"^8.65.0","@vitest/coverage-v8":"^4.1.10","clockify-sdk-ts-115":"*","eslint-plugin-import-x":"^4.17.1"},"peerDependencies":{"clockify-sdk-ts-115":"^2"},"_npmOperationalInternal":{"tmp":"tmp/clockify-mcp-115_2.0.0_1786143197180_0.7287628512131468","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"@apet97/clockify-mcp-115","version":"3.0.0","keywords":["clockify","mcp","model-context-protocol","ai-tools","anthropic","claude"],"author":{"name":"Aleksandar Petković","email":"petkovic.aleksandar037@gmail.com"},"license":"MIT","_id":"@apet97/clockify-mcp-115@3.0.0","maintainers":[{"name":"apet97","email":"petkovic.aleksandar037@gmail.com"}],"homepage":"https://github.com/apet97/clockify-ts-sdk/tree/main/mcp","bugs":{"url":"https://github.com/apet97/clockify-ts-sdk/issues"},"bin":{"clockify115-mcp":"dist/index.js"},"dist":{"shasum":"dbb2d1ff416df4cd7ba42a9d75221b0dce9613c6","tarball":"https://registry.npmjs.org/@apet97/clockify-mcp-115/-/clockify-mcp-115-3.0.0.tgz","fileCount":129,"integrity":"sha512-OCs/UdbF6N45h6aS0JaEznuMFqwYpA+rKAcOVY6Ndjd9LWQsNDPnI15rLDMtvqRqkFrV71fqjaFynLLKq17GFg==","signatures":[{"sig":"MEYCIQDN0MjSNRfs/M7VDFUvBL0V1cytAgLNVjM3XSXGhy9ZAgIhAJD/qxGJLnZMd2kAW5mhpl/8SKFBQItplRsdtJmRc9aC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@apet97%2fclockify-mcp-115@3.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":647546},"type":"module","_from":"file:/home/runner/work/_temp/clockify-mcp-pack/apet97-clockify-mcp-115-3.0.0.tgz","engines":{"node":">=22.13.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","default":"./dist/client.js"},"./server":{"types":"./dist/server.d.ts","default":"./dist/server.js"}},"scripts":{"dev":"node ../scripts/generate-package-versions.mjs && tsx src/index.ts","lint":"eslint .","test":"node ../scripts/generate-package-versions.mjs && vitest run","build":"node ../scripts/generate-package-versions.mjs && npm run clean && tsc -p tsconfig.build.json","clean":"rm -rf dist","lint:fix":"eslint . --fix","mutation":"node ../scripts/generate-package-versions.mjs && npm run build -w clockify-sdk-ts-115 && cd .. && CLOCKIFY_API_KEY='' CLOCKIFY_WORKSPACE_ID='' stryker run mcp/stryker.conf.json","test:watch":"node ../scripts/generate-package-versions.mjs && vitest","type-check":"node ../scripts/generate-package-versions.mjs && tsc -p tsconfig.json --noEmit","test:coverage":"node ../scripts/generate-package-versions.mjs && vitest run --coverage","prepublishOnly":"npm run type-check && npm test && npm run build && node ../scripts/pack-consumer-smoke.mjs --package=mcp","verify:live-cleanup":"npm run build && node scripts/assert-clean-prefixes.mjs"},"_npmUser":{"name":"apet97","email":"petkovic.aleksandar037@gmail.com"},"_resolved":"/home/runner/work/_temp/clockify-mcp-pack/apet97-clockify-mcp-115-3.0.0.tgz","_integrity":"sha512-OCs/UdbF6N45h6aS0JaEznuMFqwYpA+rKAcOVY6Ndjd9LWQsNDPnI15rLDMtvqRqkFrV71fqjaFynLLKq17GFg==","repository":{"url":"git+https://github.com/apet97/clockify-ts-sdk.git","type":"git","directory":"mcp"},"_npmVersion":"10.9.2","description":"Unofficial, community-built — not affiliated with CAKE.com or Clockify. Model Context Protocol server for Clockify. TypeScript sibling to go-clockify (the Go MCP).","directories":{},"_nodeVersion":"22.13.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","eslint":"^10.8.0","vitest":"^4.1.10","fast-check":"^4.9.0","typescript":"^7.0.2","@types/node":"^22","typescript-eslint":"^8.65.0","@vitest/coverage-v8":"^4.1.10","clockify-sdk-ts-115":"*","eslint-plugin-import-x":"^4.17.1"},"peerDependencies":{"clockify-sdk-ts-115":"^3"},"_npmOperationalInternal":{"tmp":"tmp/clockify-mcp-115_3.0.0_1786175271008_0.3098580259116126","host":"s3://npm-registry-packages-npm-production"}},"4.0.0":{"name":"@apet97/clockify-mcp-115","version":"4.0.0","keywords":["clockify","mcp","model-context-protocol","ai-tools","anthropic","claude"],"author":{"name":"Aleksandar Petković","email":"petkovic.aleksandar037@gmail.com"},"license":"MIT","_id":"@apet97/clockify-mcp-115@4.0.0","maintainers":[{"name":"apet97","email":"petkovic.aleksandar037@gmail.com"}],"homepage":"https://github.com/apet97/clockify-ts-sdk/tree/main/mcp","bugs":{"url":"https://github.com/apet97/clockify-ts-sdk/issues"},"bin":{"clockify115-mcp":"dist/index.js"},"dist":{"shasum":"e5480a687e7f62b2597bccbb0018b8eb9bc7f2e1","tarball":"https://registry.npmjs.org/@apet97/clockify-mcp-115/-/clockify-mcp-115-4.0.0.tgz","fileCount":129,"integrity":"sha512-V4le+UONLqdksVUTDZ4w5wXGE6aTrQccc37QTpUJfGsiFIUmS1osnqPX/ImR+AxiyIhitbVEquPTEK3kvFtD/A==","signatures":[{"sig":"MEYCIQCxJDkBXt8SzCGOwOo9p8lsr5mXy4MAHDfqAmEkwInT6gIhANjWhn6cyc9hSYXBYI59T7G3LkjfAFkC8D3mTNVBFC9V","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@apet97%2fclockify-mcp-115@4.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":651408},"type":"module","_from":"file:/home/runner/work/_temp/clockify-mcp-pack/apet97-clockify-mcp-115-4.0.0.tgz","engines":{"node":">=22.13.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","default":"./dist/client.js"},"./server":{"types":"./dist/server.d.ts","default":"./dist/server.js"}},"scripts":{"dev":"node ../scripts/generate-package-versions.mjs && tsx src/index.ts","lint":"eslint .","test":"node ../scripts/generate-package-versions.mjs && vitest run","build":"node ../scripts/generate-package-versions.mjs && npm run clean && tsc -p tsconfig.build.json","clean":"rm -rf dist","lint:fix":"eslint . --fix","mutation":"node ../scripts/generate-package-versions.mjs && npm run build -w clockify-sdk-ts-115 && cd .. && CLOCKIFY_API_KEY='' CLOCKIFY_WORKSPACE_ID='' stryker run mcp/stryker.conf.json","test:watch":"node ../scripts/generate-package-versions.mjs && vitest","type-check":"node ../scripts/generate-package-versions.mjs && tsc -p tsconfig.json --noEmit","test:coverage":"node ../scripts/generate-package-versions.mjs && vitest run --coverage","prepublishOnly":"npm run type-check && npm test && npm run build && node ../scripts/pack-consumer-smoke.mjs --package=mcp","verify:live-cleanup":"npm run build && node scripts/assert-clean-prefixes.mjs"},"_npmUser":{"name":"apet97","email":"petkovic.aleksandar037@gmail.com"},"_resolved":"/home/runner/work/_temp/clockify-mcp-pack/apet97-clockify-mcp-115-4.0.0.tgz","_integrity":"sha512-V4le+UONLqdksVUTDZ4w5wXGE6aTrQccc37QTpUJfGsiFIUmS1osnqPX/ImR+AxiyIhitbVEquPTEK3kvFtD/A==","repository":{"url":"git+https://github.com/apet97/clockify-ts-sdk.git","type":"git","directory":"mcp"},"_npmVersion":"10.9.2","description":"Unofficial, community-built — not affiliated with CAKE.com or Clockify. Model Context Protocol server for Clockify. TypeScript sibling to go-clockify (the Go MCP).","directories":{},"_nodeVersion":"22.13.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","eslint":"^10.8.0","vitest":"^4.1.10","fast-check":"^4.9.0","typescript":"^7.0.2","@types/node":"^22","typescript-eslint":"^8.65.0","@vitest/coverage-v8":"^4.1.10","clockify-sdk-ts-115":"*","eslint-plugin-import-x":"^4.17.1"},"peerDependencies":{"clockify-sdk-ts-115":"^4"},"_npmOperationalInternal":{"tmp":"tmp/clockify-mcp-115_4.0.0_1786221354084_0.43807220898582155","host":"s3://npm-registry-packages-npm-production"}},"5.0.0":{"name":"@apet97/clockify-mcp-115","version":"5.0.0","keywords":["clockify","mcp","model-context-protocol","ai-tools","anthropic","claude"],"author":{"name":"Aleksandar Petković","email":"petkovic.aleksandar037@gmail.com"},"license":"MIT","_id":"@apet97/clockify-mcp-115@5.0.0","maintainers":[{"name":"apet97","email":"petkovic.aleksandar037@gmail.com"}],"homepage":"https://github.com/apet97/clockify-ts-sdk/tree/main/mcp","bugs":{"url":"https://github.com/apet97/clockify-ts-sdk/issues"},"bin":{"clockify115-mcp":"dist/index.js"},"dist":{"shasum":"0d0e62343a231943a0df98745236b05b8922ebca","tarball":"https://registry.npmjs.org/@apet97/clockify-mcp-115/-/clockify-mcp-115-5.0.0.tgz","fileCount":129,"integrity":"sha512-CGBhGRjVoV2zXlRnjRehF67JuR82PU8RDHK5hGI4v/bUX/tqUlP/NYCjjFbUTwyU/Xd/R90CZWy5zYOrKr/dvg==","signatures":[{"sig":"MEUCIQDsGdEpqwzXQ5Btg6/jUuuMrevNHkOLEunIS1T/9ufaTgIgXLGziEBFoN9KxuSJCAD/+6LBEuVME3qFWbfkJ8Kkq/4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@apet97%2fclockify-mcp-115@5.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":662526},"type":"module","_from":"file:/home/runner/work/_temp/clockify-mcp-pack/apet97-clockify-mcp-115-5.0.0.tgz","engines":{"node":">=22.13.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","default":"./dist/client.js"},"./server":{"types":"./dist/server.d.ts","default":"./dist/server.js"}},"scripts":{"dev":"node ../scripts/generate-package-versions.mjs && tsx src/index.ts","lint":"eslint .","test":"node ../scripts/generate-package-versions.mjs && vitest run","build":"node ../scripts/generate-package-versions.mjs && npm run clean && tsc -p tsconfig.build.json","clean":"rm -rf dist","lint:fix":"eslint . --fix","mutation":"node ../scripts/generate-package-versions.mjs && npm run build -w clockify-sdk-ts-115 && cd .. && CLOCKIFY_API_KEY='' CLOCKIFY_WORKSPACE_ID='' stryker run mcp/stryker.conf.json","test:watch":"node ../scripts/generate-package-versions.mjs && vitest","type-check":"node ../scripts/generate-package-versions.mjs && tsc -p tsconfig.json --noEmit","test:coverage":"node ../scripts/generate-package-versions.mjs && vitest run --coverage","prepublishOnly":"npm run type-check && npm test && npm run build && node ../scripts/pack-consumer-smoke.mjs --package=mcp","verify:live-cleanup":"npm run build && node scripts/assert-clean-prefixes.mjs"},"_npmUser":{"name":"apet97","email":"petkovic.aleksandar037@gmail.com"},"_resolved":"/home/runner/work/_temp/clockify-mcp-pack/apet97-clockify-mcp-115-5.0.0.tgz","_integrity":"sha512-CGBhGRjVoV2zXlRnjRehF67JuR82PU8RDHK5hGI4v/bUX/tqUlP/NYCjjFbUTwyU/Xd/R90CZWy5zYOrKr/dvg==","repository":{"url":"git+https://github.com/apet97/clockify-ts-sdk.git","type":"git","directory":"mcp"},"_npmVersion":"10.9.2","description":"Unofficial, community-built — not affiliated with CAKE.com or Clockify. Model Context Protocol server for Clockify. TypeScript sibling to go-clockify (the Go MCP).","directories":{},"_nodeVersion":"22.13.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","eslint":"^10.8.0","vitest":"^4.1.10","fast-check":"^4.9.0","typescript":"^7.0.2","@types/node":"^22","typescript-eslint":"^8.65.0","@vitest/coverage-v8":"^4.1.10","clockify-sdk-ts-115":"*","eslint-plugin-import-x":"^4.17.1"},"peerDependencies":{"clockify-sdk-ts-115":"^5"},"_npmOperationalInternal":{"tmp":"tmp/clockify-mcp-115_5.0.0_1786250323351_0.5394828914662502","host":"s3://npm-registry-packages-npm-production"}},"5.0.1":{"name":"@apet97/clockify-mcp-115","version":"5.0.1","keywords":["clockify","mcp","model-context-protocol","ai-tools","anthropic","claude"],"author":{"name":"Aleksandar Petković","email":"petkovic.aleksandar037@gmail.com"},"license":"MIT","_id":"@apet97/clockify-mcp-115@5.0.1","maintainers":[{"name":"apet97","email":"petkovic.aleksandar037@gmail.com"}],"homepage":"https://github.com/apet97/clockify-ts-sdk/tree/main/mcp","bugs":{"url":"https://github.com/apet97/clockify-ts-sdk/issues"},"bin":{"clockify115-mcp":"dist/index.js"},"dist":{"shasum":"f32b3ff04b36721c964948b18b99e2773145dca1","tarball":"https://registry.npmjs.org/@apet97/clockify-mcp-115/-/clockify-mcp-115-5.0.1.tgz","fileCount":129,"integrity":"sha512-w40iXllAbPqlCMigHp3tFAHW/s0c9fh3xY3rtsY4a4dyDqEa8LpB87VkvpEfrpegnZ2QKOxkuxt3ordpCDYzqw==","signatures":[{"sig":"MEYCIQC6n2pNoiHyPLRBMF7PX+xj7HNw9D9LlQ19HUfz/aEDuQIhANhNbm2OzDEkDGIfkwAaRGU7zATPeAkseMkkljxZ/LMy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@apet97%2fclockify-mcp-115@5.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":671804},"type":"module","_from":"file:/home/runner/work/_temp/clockify-mcp-pack/apet97-clockify-mcp-115-5.0.1.tgz","engines":{"node":">=22.13.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","default":"./dist/client.js"},"./server":{"types":"./dist/server.d.ts","default":"./dist/server.js"}},"scripts":{"dev":"node ../scripts/generate-package-versions.mjs && tsx src/index.ts","lint":"eslint .","test":"node ../scripts/generate-package-versions.mjs && vitest run","build":"node ../scripts/generate-package-versions.mjs && npm run clean && tsc -p tsconfig.build.json","clean":"rm -rf dist","lint:fix":"eslint . --fix","mutation":"node ../scripts/generate-package-versions.mjs && npm run build -w clockify-sdk-ts-115 && cd .. && CLOCKIFY_API_KEY='' CLOCKIFY_WORKSPACE_ID='' stryker run mcp/stryker.conf.json","test:watch":"node ../scripts/generate-package-versions.mjs && vitest","type-check":"node ../scripts/generate-package-versions.mjs && tsc -p tsconfig.json --noEmit","test:coverage":"node ../scripts/generate-package-versions.mjs && vitest run --coverage","prepublishOnly":"npm run type-check && npm test && npm run build && node ../scripts/pack-consumer-smoke.mjs --package=mcp","verify:live-cleanup":"npm run build && node scripts/assert-clean-prefixes.mjs"},"_npmUser":{"name":"apet97","email":"petkovic.aleksandar037@gmail.com"},"_resolved":"/home/runner/work/_temp/clockify-mcp-pack/apet97-clockify-mcp-115-5.0.1.tgz","_integrity":"sha512-w40iXllAbPqlCMigHp3tFAHW/s0c9fh3xY3rtsY4a4dyDqEa8LpB87VkvpEfrpegnZ2QKOxkuxt3ordpCDYzqw==","repository":{"url":"git+https://github.com/apet97/clockify-ts-sdk.git","type":"git","directory":"mcp"},"_npmVersion":"10.9.2","description":"Unofficial, community-built — not affiliated with CAKE.com or Clockify. Model Context Protocol server for Clockify. TypeScript sibling to go-clockify (the Go MCP).","directories":{},"_nodeVersion":"22.13.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","eslint":"^10.8.0","vitest":"^4.1.10","fast-check":"^4.9.0","typescript":"^7.0.2","@types/node":"^22","typescript-eslint":"^8.65.0","@vitest/coverage-v8":"^4.1.10","clockify-sdk-ts-115":"*","eslint-plugin-import-x":"^4.17.1"},"peerDependencies":{"clockify-sdk-ts-115":"^5"},"_npmOperationalInternal":{"tmp":"tmp/clockify-mcp-115_5.0.1_1786322018279_0.3081628313134843","host":"s3://npm-registry-packages-npm-production"}},"5.0.2":{"name":"@apet97/clockify-mcp-115","version":"5.0.2","keywords":["clockify","mcp","model-context-protocol","ai-tools","anthropic","claude"],"author":{"name":"Aleksandar Petković","email":"petkovic.aleksandar037@gmail.com"},"license":"MIT","_id":"@apet97/clockify-mcp-115@5.0.2","maintainers":[{"name":"apet97","email":"petkovic.aleksandar037@gmail.com"}],"homepage":"https://github.com/apet97/clockify-ts-sdk/tree/main/mcp","bugs":{"url":"https://github.com/apet97/clockify-ts-sdk/issues"},"bin":{"clockify115-mcp":"dist/index.js"},"dist":{"shasum":"9e63428fd178a5bc181acbe29ea454c1c7dac275","tarball":"https://registry.npmjs.org/@apet97/clockify-mcp-115/-/clockify-mcp-115-5.0.2.tgz","fileCount":129,"integrity":"sha512-p3UU27pyth5xPNBXpDdwTYQIise4WNsmEgYV0xGG1dmRNK2ftgXVOHlwMkCUJpDxGrBvERG8NcIp+RJTZADO9g==","signatures":[{"sig":"MEYCIQDBXFHzEylAd/tQ4uu8TNwav6F9nlT5kRJqFCVHN9P10wIhAImEA1OAk1ufE6pisq2mig4wGJXEJvk31EOb4pKvvzle","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@apet97%2fclockify-mcp-115@5.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":672335},"type":"module","_from":"file:/home/runner/work/_temp/clockify-mcp-pack/apet97-clockify-mcp-115-5.0.2.tgz","engines":{"node":">=22.13.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./client":{"types":"./dist/client.d.ts","default":"./dist/client.js"},"./server":{"types":"./dist/server.d.ts","default":"./dist/server.js"}},"scripts":{"dev":"node ../scripts/generate-package-versions.mjs && tsx src/index.ts","lint":"eslint .","test":"node ../scripts/generate-package-versions.mjs && vitest run","build":"node ../scripts/generate-package-versions.mjs && npm run clean && tsc -p tsconfig.build.json","clean":"rm -rf dist","lint:fix":"eslint . --fix","mutation":"node ../scripts/generate-package-versions.mjs && npm run build -w clockify-sdk-ts-115 && cd .. && CLOCKIFY_API_KEY='' CLOCKIFY_WORKSPACE_ID='' stryker run mcp/stryker.conf.json","test:watch":"node ../scripts/generate-package-versions.mjs && vitest","type-check":"node ../scripts/generate-package-versions.mjs && tsc -p tsconfig.json --noEmit","test:coverage":"node ../scripts/generate-package-versions.mjs && vitest run --coverage","prepublishOnly":"npm run type-check && npm test && npm run build && node ../scripts/pack-consumer-smoke.mjs --package=mcp","verify:live-cleanup":"npm run build && node scripts/assert-clean-prefixes.mjs"},"_npmUser":{"name":"apet97","email":"petkovic.aleksandar037@gmail.com"},"_resolved":"/home/runner/work/_temp/clockify-mcp-pack/apet97-clockify-mcp-115-5.0.2.tgz","_integrity":"sha512-p3UU27pyth5xPNBXpDdwTYQIise4WNsmEgYV0xGG1dmRNK2ftgXVOHlwMkCUJpDxGrBvERG8NcIp+RJTZADO9g==","repository":{"url":"git+https://github.com/apet97/clockify-ts-sdk.git","type":"git","directory":"mcp"},"_npmVersion":"10.9.2","description":"Unofficial, community-built — not affiliated with CAKE.com or Clockify. Model Context Protocol server for Clockify. TypeScript sibling to go-clockify (the Go MCP).","directories":{},"_nodeVersion":"22.13.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","eslint":"^10.8.0","vitest":"^4.1.10","fast-check":"^4.9.0","typescript":"^7.0.2","@types/node":"^22","typescript-eslint":"^8.65.0","@vitest/coverage-v8":"^4.1.10","clockify-sdk-ts-115":"*","eslint-plugin-import-x":"^4.17.1"},"peerDependencies":{"clockify-sdk-ts-115":"^5"},"_npmOperationalInternal":{"tmp":"tmp/clockify-mcp-115_5.0.2_1786418535745_0.7786833553973049","host":"s3://npm-registry-packages-npm-production"}},"6.0.0":{"name":"@apet97/clockify-mcp-115","version":"6.0.0","keywords":["clockify","mcp","model-context-protocol","ai-tools","anthropic","claude"],"author":{"name":"Aleksandar Petković","email":"petkovic.aleksandar037@gmail.com"},"license":"MIT","_id":"@apet97/clockify-mcp-115@6.0.0","maintainers":[{"name":"apet97","email":"petkovic.aleksandar037@gmail.com"}],"homepage":"https://github.com/apet97/clockify-ts-sdk/tree/main/mcp","bugs":{"url":"https://github.com/apet97/clockify-ts-sdk/issues"},"bin":{"clockify115-mcp":"dist/index.js","clockify115-mcp-http":"dist/http-main.js","clockify115-mcp-admin":"dist/admin.js"},"dist":{"shasum":"5a16289d81308016230feba7a82ab240dac57041","tarball":"https://registry.npmjs.org/@apet97/clockify-mcp-115/-/clockify-mcp-115-6.0.0.tgz","fileCount":212,"integrity":"sha512-yDHv2Df8MwwIXcwz3B+nVS8asxecMEgEc3qiTY1mYXXzg7mZk8O65/Tj3wYL4ffe7gP5hFe82hdtt2VkjzMeeg==","signatures":[{"sig":"MEUCIBgJytuXgwsawxn+d3qpd22MjPtVDLbgWqDtrUuhWdTeAiEAj6jO0ZjY2HxrgepG9Ormcbr5zKyLP+IoYOos3Heq7qI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@apet97%2fclockify-mcp-115@6.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1353172},"type":"module","_from":"file:/home/runner/work/_temp/clockify-mcp-pack/apet97-clockify-mcp-115-6.0.0.tgz","engines":{"node":">=22.13.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./http":{"types":"./dist/http.d.ts","default":"./dist/http.js"},"./client":{"types":"./dist/client.d.ts","default":"./dist/client.js"},"./server":{"types":"./dist/server.d.ts","default":"./dist/server.js"}},"scripts":{"dev":"node ../scripts/generate-package-versions.mjs && tsx src/index.ts","lint":"eslint .","test":"node ../scripts/generate-package-versions.mjs && vitest run","build":"node ../scripts/generate-package-versions.mjs && npm run clean && tsc -p tsconfig.build.json && npm run build:app","clean":"rm -rf dist","lint:fix":"eslint . --fix","mutation":"node ../scripts/generate-package-versions.mjs && npm run build -w clockify-sdk-ts-115 && cd .. && CLOCKIFY_API_KEY='' CLOCKIFY_WORKSPACE_ID='' stryker run mcp/stryker.conf.json","build:app":"node scripts/build-reports-app.mjs","test:watch":"node ../scripts/generate-package-versions.mjs && vitest","type-check":"node ../scripts/generate-package-versions.mjs && tsc -p tsconfig.json --noEmit","test:coverage":"node ../scripts/generate-package-versions.mjs && vitest run --coverage","prepublishOnly":"npm run type-check && npm test && npm run build && node ../scripts/pack-consumer-smoke.mjs --package=mcp"},"_npmUser":{"name":"apet97","email":"petkovic.aleksandar037@gmail.com"},"_resolved":"/home/runner/work/_temp/clockify-mcp-pack/apet97-clockify-mcp-115-6.0.0.tgz","_integrity":"sha512-yDHv2Df8MwwIXcwz3B+nVS8asxecMEgEc3qiTY1mYXXzg7mZk8O65/Tj3wYL4ffe7gP5hFe82hdtt2VkjzMeeg==","repository":{"url":"git+https://github.com/apet97/clockify-ts-sdk.git","type":"git","directory":"mcp"},"_npmVersion":"10.9.2","description":"Unofficial, community-built — not affiliated with CAKE.com or Clockify. Model Context Protocol server for Clockify. TypeScript sibling to go-clockify (the Go MCP).","directories":{},"_nodeVersion":"22.13.0","dependencies":{"pg":"^8.23.0","zod":"^4.4.3","jose":"^6.2.10","@modelcontextprotocol/node":"^2.0.0","@modelcontextprotocol/server":"^2.0.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","eslint":"^10.8.1","vitest":"^4.1.10","@types/pg":"^8.23.1","happy-dom":"^20.11.6","fast-check":"^4.9.0","typescript":"^7.0.2","@types/node":"^22","typescript-eslint":"^8.67.0","@vitest/coverage-v8":"^4.1.10","clockify-sdk-ts-115":"*","eslint-plugin-import-x":"^4.17.1","@modelcontextprotocol/sdk":"^1.30.0","@modelcontextprotocol/client":"^2.0.0","@modelcontextprotocol/ext-apps":"^1.7.5"},"peerDependencies":{"clockify-sdk-ts-115":"^5"},"_npmOperationalInternal":{"tmp":"tmp/clockify-mcp-115_6.0.0_1787617398175_0.56575216945732","host":"s3://npm-registry-packages-npm-production"}},"6.0.1":{"name":"@apet97/clockify-mcp-115","version":"6.0.1","description":"Unofficial, community-built — not affiliated with CAKE.com or Clockify. Model Context Protocol server for Clockify. TypeScript sibling to go-clockify (the Go MCP).","license":"MIT","author":{"name":"Aleksandar Petković","email":"petkovic.aleksandar037@gmail.com"},"homepage":"https://github.com/apet97/clockify-ts-sdk/tree/main/mcp","repository":{"type":"git","url":"git+https://github.com/apet97/clockify-ts-sdk.git","directory":"mcp"},"bugs":{"url":"https://github.com/apet97/clockify-ts-sdk/issues"},"keywords":["clockify","mcp","model-context-protocol","ai-tools","anthropic","claude"],"type":"module","engines":{"node":">=22.13.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","default":"./dist/server.js"},"./http":{"types":"./dist/http.d.ts","default":"./dist/http.js"},"./client":{"types":"./dist/client.d.ts","default":"./dist/client.js"}},"bin":{"clockify115-mcp":"dist/index.js","clockify115-mcp-http":"dist/http-main.js","clockify115-mcp-admin":"dist/admin.js"},"scripts":{"build":"node ../scripts/generate-package-versions.mjs && npm run clean && tsc -p tsconfig.build.json && npm run build:app","build:app":"node scripts/build-reports-app.mjs","clean":"rm -rf dist","dev":"node ../scripts/generate-package-versions.mjs && tsx src/index.ts","test":"node ../scripts/generate-package-versions.mjs && vitest run","test:coverage":"node ../scripts/generate-package-versions.mjs && vitest run --coverage","mutation":"node ../scripts/generate-package-versions.mjs && npm run build -w clockify-sdk-ts-115 && cd .. && CLOCKIFY_API_KEY='' CLOCKIFY_WORKSPACE_ID='' stryker run mcp/stryker.conf.json","test:watch":"node ../scripts/generate-package-versions.mjs && vitest","type-check":"node ../scripts/generate-package-versions.mjs && tsc -p tsconfig.json --noEmit","lint":"eslint .","lint:fix":"eslint . --fix","prepublishOnly":"npm run type-check && npm test && npm run build && node ../scripts/pack-consumer-smoke.mjs --package=mcp"},"dependencies":{"@modelcontextprotocol/node":"^2.0.0","@modelcontextprotocol/server":"^2.0.0","jose":"^6.2.10","pg":"^8.23.0","zod":"^4.4.3"},"peerDependencies":{"clockify-sdk-ts-115":"^5.2.0"},"devDependencies":{"@modelcontextprotocol/client":"^2.0.0","@modelcontextprotocol/ext-apps":"^1.7.5","@modelcontextprotocol/sdk":"^1.30.0","@types/node":"^22","@types/pg":"^8.23.1","@vitest/coverage-v8":"^4.1.10","clockify-sdk-ts-115":"*","eslint":"^10.8.1","eslint-plugin-import-x":"^4.17.1","fast-check":"^4.9.0","happy-dom":"^20.11.6","tsx":"^4.23.12","typescript":"^7.0.2","typescript-eslint":"^8.67.0","vitest":"^4.1.10"},"publishConfig":{"access":"public","provenance":true},"_id":"@apet97/clockify-mcp-115@6.0.1","_integrity":"sha512-VKhXYIeS/taoJMqAGqw48x1cYIyeaze5MJb3JOCI5J+4EPMSs7yCGQSKgcZ64m79VtgBIxFSwrxXavHDOHk8Xw==","_resolved":"/home/runner/work/_temp/clockify-mcp-pack/apet97-clockify-mcp-115-6.0.1.tgz","_from":"file:/home/runner/work/_temp/clockify-mcp-pack/apet97-clockify-mcp-115-6.0.1.tgz","_nodeVersion":"22.13.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-VKhXYIeS/taoJMqAGqw48x1cYIyeaze5MJb3JOCI5J+4EPMSs7yCGQSKgcZ64m79VtgBIxFSwrxXavHDOHk8Xw==","shasum":"b752fe5c06f798feb7333b2aa77a75ee8cf355c0","tarball":"https://registry.npmjs.org/@apet97/clockify-mcp-115/-/clockify-mcp-115-6.0.1.tgz","fileCount":210,"unpackedSize":1360565,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@apet97%2fclockify-mcp-115@6.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIFGmeCwyJHq9GYMzbpNCmkVsmOC1oTr3lODn5VaWu8XkAiBv7A/mi9jegUe/bVACNQqft+94JgMaH2hgOJDvq//JdA=="}]},"_npmUser":{"name":"apet97","email":"petkovic.aleksandar037@gmail.com"},"directories":{},"maintainers":[{"name":"apet97","email":"petkovic.aleksandar037@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/clockify-mcp-115_6.0.1_1788635201934_0.3097914643863571"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-28T15:24:29.619Z","modified":"2026-09-05T19:06:42.418Z","0.3.0":"2026-06-28T15:24:29.954Z","0.4.0":"2026-06-28T16:22:12.504Z","0.4.1":"2026-06-29T01:18:52.740Z","0.6.0":"2026-07-14T01:36:23.407Z","0.6.1":"2026-07-14T05:37:35.852Z","0.6.2":"2026-07-14T07:04:53.377Z","0.6.5":"2026-07-23T18:44:23.868Z","0.6.6":"2026-07-23T23:51:53.723Z","0.7.0":"2026-07-27T09:18:57.501Z","0.8.0":"2026-08-01T01:58:53.058Z","0.9.0":"2026-08-05T05:35:58.890Z","0.9.1":"2026-08-05T06:38:53.745Z","0.10.0":"2026-08-05T17:37:04.146Z","1.0.0":"2026-08-05T20:15:39.960Z","2.0.0":"2026-08-07T22:53:17.370Z","3.0.0":"2026-08-08T07:47:51.241Z","4.0.0":"2026-08-08T20:35:54.240Z","5.0.0":"2026-08-09T04:38:43.493Z","5.0.1":"2026-08-10T00:33:38.499Z","5.0.2":"2026-08-11T03:22:15.908Z","6.0.0":"2026-08-25T00:23:18.314Z","6.0.1":"2026-09-05T19:06:42.109Z"},"bugs":{"url":"https://github.com/apet97/clockify-ts-sdk/issues"},"author":{"name":"Aleksandar Petković","email":"petkovic.aleksandar037@gmail.com"},"license":"MIT","homepage":"https://github.com/apet97/clockify-ts-sdk/tree/main/mcp","keywords":["clockify","mcp","model-context-protocol","ai-tools","anthropic","claude"],"repository":{"type":"git","url":"git+https://github.com/apet97/clockify-ts-sdk.git","directory":"mcp"},"description":"Unofficial, community-built — not affiliated with CAKE.com or Clockify. Model Context Protocol server for Clockify. TypeScript sibling to go-clockify (the Go MCP).","maintainers":[{"name":"apet97","email":"petkovic.aleksandar037@gmail.com"}],"readme":"# @apet97/clockify-mcp-115\n\nTypeScript MCP server for Clockify, built on\n`clockify-sdk-ts-115`. It is the Node sibling to\n[`apet97/go-clockify`](https://github.com/apet97/go-clockify). Local stdio\nserves one user and one pinned `CLOCKIFY_WORKSPACE_ID`; the optional remote\nbinary serves provisioned OAuth principals over stateless HTTP. Both keep\nworkflow tools first and domain CRUD second.\n\nCurrent release: `6.0.1`. Requires Node.js `>=22.13.0` and\n`clockify-sdk-ts-115 ^5.2.0`.\n\nThe 6.0.x line ships MCP `2026-07-28`, the remote HTTP/admin service, and the\nReports App. Remote mode is self-hosted and needs an existing OAuth issuer,\nPostgreSQL, TLS proxy, and operator-managed secrets; installing this package\ndoes not provision or operate a hosted endpoint.\n\nThis package ships 163 tools: 23 workflow tools plus 140\ndomain tools across Clockify's major resources. The local stdio binary can set\n`CLOCKIFY_MCP_DISCOVERY=1` to advertise only the 23 workflow tools and load\ndomain tools on demand through `clockify_tools_search`. It is published to npm\nunder the unofficial `@apet97` scope; the `prepublishOnly` gates run on every\npublish.\n\nThe server uses the stable MCP `2026-07-28` protocol through the v2 TypeScript\nserver/node packages. The stdio and HTTP transports retain legacy clients\nthrough the SDK's dual-era handlers. Five read-only report tools can render the\nsingle `ui://clockify115/reports-dashboard` MCP App; all other tools are\nmodel-only.\n\nProduct posture: this is the pure-Node, SDK-vendor-style MCP sibling to\nthe Go reference server. Keep it workflow-first, easy to install, and\nstrict about receipts (`ids`, `changed`, `next`, stable errors,\nrecovery). For the repo-level quality bar, see\n[`docs/product-north-star.md`](../docs/product-north-star.md).\n\n`clockify_entity_changes_list` is an explicitly experimental read surface. Its\nrequired `changeType` selects exactly one created, updated, or deleted generated\nendpoint per call; responses are returned unchanged with an experimental API\nwarning, not merged into a synthetic audit timeline.\n\nNew here? See [how this compares to other Clockify MCP servers and the first-run path](./POSITIONING.md).\n\n## Install\n\nThe fastest working path is npm. A one-click bundle, a manual MCP-client\nconfig, and a build-from-source flow follow for other setups.\n\n### npm (recommended)\n\n```sh\nnpm i -g @apet97/clockify-mcp-115\n```\n\nUnofficial, published under the personal `@apet97` scope. Version 6.0.1 installs\n`clockify115-mcp`, `clockify115-mcp-http`, and `clockify115-mcp-admin`.\n\n### One-click bundle\n\nDownload the `clockify115-mcp-<version>.mcpb` asset from the\n[latest `mcp-v*` release](https://github.com/apet97/clockify-ts-sdk/releases)\nand open it with Claude Desktop. `mcp-v5.0.0` is the first release to carry it:\nevery release from 1.0.0 to 4.0.0 published to npm, then failed on registry\npropagation before the asset was attached. An older `mcp-v*` tag may still have\nnone, so check the tag you pick, or build the bundle from a clone:\n\n```sh\nmake mcpb\n```\n\nThis writes `mcp/clockify115-mcp-<version>.mcpb`, a self-contained bundle you can\nopen with Claude Desktop the same way. The 6.0.x bundle intentionally contains\nonly local stdio plus the Reports App. It excludes HTTP, admin, OAuth,\nPostgreSQL, migrations, and their remote-only dependencies; use the npm package\nor its source-built container image for remote mode.\n\nMaintainers should run `make mcpb-smoke` before attaching the bundle to a GitHub\nRelease. Routine local gates run `make mcpb-validate`, which checks the manifest\nwithout producing the binary bundle.\n\n### Manual MCP client config\n\nIf your MCP client reads an `mcpServers` config instead of an `.mcpb`, use the\nJSON block in [Configure local stdio](#configure-local-stdio). Note that `\"command\": \"clockify115-mcp\"`\nrequires the binary to be on your `PATH` first — install the package globally or\n`npm link` it from a source build (below). Otherwise point `command` at an\nabsolute path: `node /absolute/path/to/mcp/dist/index.js`.\n\n### Build from source\n\nFor development, or to produce the `clockify115-mcp` binary for the manual config\nabove:\n\n```sh\nnpm ci && make sdk-codegen              # from the repo root, once\nnpm run build -w clockify-sdk-ts-115    # build the workspace-linked SDK\ncd mcp\nnpm install\nnpm run build\nnpm link\n```\n\nThis builds the server against `clockify-sdk-ts-115` and links all binaries in\nthe current source manifest onto your `PATH`.\n\n### Where to get your two values\n\n- **API key**: Clockify -> Profile -> **API**, then generate a key.\n- **Workspace id**: the 24-character id in your Clockify URL after\n  `/workspaces/`.\n\n### Verify it works\n\nAsk your assistant to call `clockify_status`. It should report your user, your\nworkspace, and any running timer.\n\n## Configure local stdio\n\nThe `clockify115-mcp` local stdio server reads `CLOCKIFY_API_KEY` and\n`CLOCKIFY_WORKSPACE_ID` from\nits process environment. `CLOCKIFY_BASE_URL` is optional and should\nonly be used for mock/replay gateways or private test environments.\nCode that calls `loadContext()` directly can opt into a trusted non-Clockify\nHTTPS proxy with `allowNonClockifyHttpsHost: true`; cleartext non-loopback\ndestinations remain rejected.\n\nOptional `CLOCKIFY_REGION` (`global`, `eu`, `us`, `uk`, `au`, or `developer`)\nselects a Clockify routing profile; optional `CLOCKIFY_SUBDOMAIN` selects a\nworkspace subdomain and requires `CLOCKIFY_REGION` to be `eu`/`us`/`uk`/`au`.\nBoth are mutually exclusive with `CLOCKIFY_BASE_URL`. Only the `global`\nprofile is live-confirmed; setting any other `CLOCKIFY_REGION` is itself\nthe acknowledgement that its route is unproven for data residency.\n\n`CLOCKIFY_MCP_DISCOVERY` is read only by the `clockify115-mcp` stdio\nentrypoint. Embedded callers opt in explicitly with\n`buildServer(ctx, { discoveryEnv: { CLOCKIFY_MCP_DISCOVERY: \"1\" } })`. The\nauthenticated remote HTTP handler intentionally keeps the broad default tool\nsurface on every stateless request and does not read this local setting.\n\n```json\n{\n    \"mcpServers\": {\n        \"clockify\": {\n            \"command\": \"clockify115-mcp\",\n            \"env\": {\n                \"CLOCKIFY_API_KEY\": \"your_key_here\",\n                \"CLOCKIFY_WORKSPACE_ID\": \"your_workspace_id_here\"\n            }\n        }\n    }\n}\n```\n\n## Reports App\n\nMCP Apps-capable hosts can render one self-contained, adaptive time ledger for\nthese tools:\n\n- `clockify_reports_summary`\n- `clockify_reports_detailed`\n- `clockify_reports_weekly`\n- `clockify_reports_attendance`\n- `clockify_reports_expense`\n\nThe dashboard resource is\n`ui://clockify115/reports-dashboard` with MIME type\n`text/html;profile=mcp-app`. It has empty external connection, resource, and\nframe allowlists, requests no host permissions, and loads no external fonts or\nscripts. Its app-only model is capped at 64 KiB; the normal text and structured\nreceipt remain meaningful in hosts without Apps support.\n\nThe App may repeat only those five read-only report calls. It fixes detailed,\nattendance, and expense pages at 50 rows, and weekly regrouping preserves the\nexact week. Date changes, incompatible report switches, complex filters, and\nsave/share requests are handed back to the host with `sendMessage`. The App\nnever calls Clockify or shared-report writes directly.\n\n## Remote HTTP service\n\nInstall the package, build and link this checkout, or use the source-built\ncontainer image. Then run:\n\n```sh\nclockify115-mcp-http --help\nclockify115-mcp-admin --help\n```\n\nThe remote service exposes only:\n\n- `POST /mcp`\n- `GET /.well-known/oauth-protected-resource/mcp`\n- `GET /.well-known/oauth-authorization-server`\n- `GET /healthz`\n- `GET /readyz`\n\nIt is stateless: each POST builds one authenticated context and no response\ncreates an MCP session. Modern clients use MCP 2026 JSON responses; legacy\nclients use the SDK's stateless fallback. GET event streams and DELETE session\ntermination are not supported.\n\nAuthentication trusts exactly one HTTPS issuer. JWT-shaped tokens are checked\nlocally against JWKS and an explicit asymmetric algorithm allowlist. A failed\nJWT never falls back to introspection. Other tokens use bounded, timed RFC 7662\nintrospection with `client_secret_basic`, redirects disabled, and a mode-`0600`\nsecret file. Both paths require an exact issuer, subject, client ID, expiry,\naudience/resource, and at least one recognized Clockify scope. Bearer tokens are\nnever reused as Clockify credentials or stored.\n\nPostgreSQL holds one encrypted Clockify key and workspace per principal plus\nshort-lived confirmation previews. API keys and previews use AES-256-GCM with\nauthenticated metadata and external versioned keys; confirmation tokens are\nstored only as hashes. Credential relinking increments a revision and clears\noutstanding confirmations. No email address is stored.\n\nThe process accepts at most 64 concurrent MCP requests by default and gives\neach Clockify request attempt a 180-second deadline. Both values are bounded\nconfiguration settings. Every route validates the exact public `Host`,\nincluding health probes. Readiness remains false until migration state,\nPostgreSQL, and all stored ciphertext key IDs are valid. Production operators\ncan apply migrations with a separate owner and run the HTTP process in\nverify-only mode.\n\nThe complete environment contract, migration procedure, admin commands,\nbackup/restore, rollback, key rotation, health semantics, capacity notes, and\ncontainer example are in the\n[remote operations guide](../docs/mcp-remote-operations.md). The public URL\nmust terminate TLS at a configured reverse proxy. The binary binds loopback by\ndefault and deliberately includes no authorization server or HTTP admin route.\nDeploy the image by immutable digest. The Compose example also provides a\nno-port `admin` profile for offline administration.\n\nProgrammatic deployments can import the transport without starting a process:\n\n```ts\nimport {\n  createClockifyMcpHttpHandler,\n  PrincipalNotProvisionedError,\n} from \"@apet97/clockify-mcp-115/http\";\n```\n\nAn injected `resolveContext` can throw `PrincipalNotProvisionedError` to return\nthe documented sanitized 403 outcome. The same export exposes\n`ingressRequestIdFromAuth` for request correlation without importing concrete\nPostgreSQL or OAuth modules.\n\nLocal and embedded callers can construct an explicit credential/routing\ncontext with `createContext(ClockifyContextConfig)` from the package's\n`./client` export. Request authorization is optional there; omitting it retains\nthe local behavior.\n\n## Workflow Tools\n\n<!-- BEGIN generated:mcp-workflow-tools -->\n| Tool | Purpose |\n|---|---|\n| `clockify_status` | Confirm user, workspace, and running timer. |\n| `clockify_doctor` | Live preflight: validate the API key, workspace pin, base-URL posture, and clock skew (read-only). |\n| `clockify_tools_guide` | Show workflow groups and when to use domain tools. |\n| `clockify_tools_search` | Find and load domain tools by task when discovery mode is on (read-only). |\n| `clockify_plan_change` | Explain which tools a change will use, in order, before mutating (read-only). |\n| `clockify_docs_search` | Search compact SDK/CLI/MCP guidance for agents (read-only). |\n| `clockify_operation_guide` | Map a task, operation, or tool to recommended paths (read-only). |\n| `clockify_sdk_snippet` | Return a compact SDK, CLI, or MCP snippet for a task (read-only). |\n| `clockify_create_work_package` | Create or reuse client, project, task, and tag objects. |\n| `clockify_log_work` | Log a finished time entry from names or IDs. |\n| `clockify_start_work` | Start a running work timer. |\n| `clockify_stop_work` | Stop the current running timer. |\n| `clockify_switch_work` | Stop current work and start another timer. |\n| `clockify_review_day` | Review daily totals, running timers, and missing fields. |\n| `clockify_review_week` | Review weekly totals and issues. |\n| `clockify_fix_entry` | Find one entry and update selected fields. |\n| `clockify_invoice_client_work` | Create a draft invoice for a client. |\n| `clockify_record_expense` | Prepare or record an expense with resolved names. |\n| `clockify_request_time_off` | Create a time-off request from a policy name or ID. |\n| `clockify_schedule_work` | Create a scheduling assignment from user/project names or IDs. |\n| `clockify_setup_webhook` | Create a validated HTTPS webhook subscription. |\n| `clockify_demo_seed` | Create deterministic demo objects. |\n| `clockify_demo_cleanup` | Clean deterministic demo entries and objects by prefix. |\n<!-- END generated:mcp-workflow-tools -->\n\n## Workflow Examples\n\nCreate reusable work objects:\n\n```json\n{\n    \"name\": \"clockify_create_work_package\",\n    \"arguments\": {\n        \"client\": \"Acme\",\n        \"project\": \"Website\",\n        \"task\": \"Implementation\",\n        \"tag\": \"Deep Work\",\n        \"billable\": true\n    }\n}\n```\n\nLog finished work:\n\n```json\n{\n    \"name\": \"clockify_log_work\",\n    \"arguments\": {\n        \"start\": \"2026-05-26T09:00:00Z\",\n        \"end\": \"2026-05-26T10:15:00Z\",\n        \"description\": \"Implemented Clockify workflow tools\",\n        \"project_id\": \"PROJECT_ID\",\n        \"task_id\": \"TASK_ID\",\n        \"tag_ids\": [\"TAG_ID\"]\n    }\n}\n```\n\nStart, stop, and switch timers:\n\n```json\n{ \"name\": \"clockify_start_work\", \"arguments\": { \"project\": \"Website\", \"description\": \"Bugfixing\" } }\n{ \"name\": \"clockify_stop_work\", \"arguments\": {} }\n{ \"name\": \"clockify_switch_work\", \"arguments\": { \"project\": \"API\", \"description\": \"Review\" } }\n```\n\nReview and fix:\n\n```json\n{ \"name\": \"clockify_review_day\", \"arguments\": { \"date\": \"2026-05-26\", \"include_entries\": true } }\n{ \"name\": \"clockify_review_week\", \"arguments\": { \"week_start\": \"2026-05-26\" } }\n{ \"name\": \"clockify_fix_entry\", \"arguments\": { \"entry_id\": \"ENTRY_ID\", \"new_description\": \"Corrected description\" } }\n```\n\nEvery tool publishes a risk class at\n`_meta[\"io.github.apet97.clockify115/risk\"]` and its confirmation mode at\n`_meta[\"io.github.apet97.clockify115/confirmation\"]`. Read and routine writes\nremain one-call operations. Business writes, external side effects, privileged\nwrites, and destructive writes are two-step operations: run with `dry_run:true`\nfirst, then re-run the same business arguments with the short-lived, single-use\n`confirm_token`. The token executes the exact stored preview instead of resolving\nor rebuilding it again.\n\nCancellation propagates to the active Clockify request, and a multi-step tool\ndoes not start its next request after cancellation. A request cancelled before\nexecution begins does not consume its confirmation token. Once a confirmed\nmutation may have begun, however, its single-use token stays consumed because\nthe remote outcome can be ambiguous; run a fresh `dry_run` before trying again.\n\n```json\n{\n    \"name\": \"clockify_invoice_client_work\",\n    \"arguments\": {\n        \"client\": \"Acme\",\n        \"currency\": \"USD\",\n        \"issued_date\": \"2026-05-26\",\n        \"due_date\": \"2026-06-09\",\n        \"dry_run\": true\n    }\n}\n```\n\n```json\n{\n    \"name\": \"clockify_record_expense\",\n    \"arguments\": {\n        \"amount\": 42.5,\n        \"category\": \"Travel\",\n        \"project\": \"Website\",\n        \"notes\": \"Taxi to customer site\",\n        \"dry_run\": true\n    }\n}\n```\n\n```json\n{\n    \"name\": \"clockify_request_time_off\",\n    \"arguments\": {\n        \"policy\": \"Vacation\",\n        \"start\": \"2026-06-01\",\n        \"end\": \"2026-06-03\",\n        \"note\": \"Family trip\",\n        \"dry_run\": true\n    }\n}\n```\n\n```json\n{\n    \"name\": \"clockify_schedule_work\",\n    \"arguments\": {\n        \"user\": \"alice@example.com\",\n        \"project\": \"Website\",\n        \"start\": \"2026-05-27\",\n        \"end\": \"2026-05-31\",\n        \"hours_per_day\": 6,\n        \"dry_run\": true\n    }\n}\n```\n\n```json\n{\n    \"name\": \"clockify_setup_webhook\",\n    \"arguments\": {\n        \"name\": \"Time entry audit\",\n        \"url\": \"https://example.com/clockify\",\n        \"webhook_event\": \"NEW_TIME_ENTRY\",\n        \"dry_run\": true\n    }\n}\n```\n\nDemo fixture helpers:\n\n```json\n{ \"name\": \"clockify_demo_seed\", \"arguments\": { \"run_id\": \"smoke\" } }\n{ \"name\": \"clockify_demo_cleanup\", \"arguments\": { \"run_id\": \"smoke\", \"dry_run\": true } }\n{ \"name\": \"clockify_demo_cleanup\", \"arguments\": { \"run_id\": \"smoke\", \"confirm_token\": \"TOKEN_FROM_PREVIEW\" } }\n```\n\n`clockify_demo_seed` and `clockify_demo_cleanup` ship by default rather\nthan behind a flag: they participate in the root `make perfect-live`\nsandbox proof that all SDK/CLI/MCP/GOCLMCP surfaces leave zero objects\nbehind. `demo_seed`\ncreates only prefix-namespaced objects, and `clockify_demo_cleanup` requires a\nstored-preview confirmation token and publishes `destructiveHint:true` so a\nclient surfaces it as destructive before execution.\n\n## Dates and time zones\n\nClockify reads a date window as a **wall clock in the account's time zone**, not\nas the UTC instant the `Z` suffix denotes. Three consequences:\n\n- **Whole days are correct.** `clockify_review_day` and `clockify_review_week`\n  ask for a UTC-midnight window, which arrives as the account's own local day.\n- **Which day is the default is not.** An omitted `date` / `week_start` resolves\n  to the **UTC** calendar day. Near local midnight outside UTC that is the wrong\n  day, so pass the day explicitly there.\n- **Report bounds and results follow `timeZone`.** All five report tools pass\n  the requested zone through without browser reinterpretation. Their\n  `dateRangeStart`/`dateRangeEnd` values are read in that zone and results are\n  rendered in it. Pass `\"UTC\"` for literal UTC bounds. Attendance uses an\n  inclusive end instant; a whole UTC day ends at `23:59:59.999Z`, not the next\n  midnight.\n  The same instant is `2026-08-07T22:15:00Z` from the core host and\n  `2026-08-08T10:15:00+12:00` from the reports host under `Pacific/Auckland` — a\n  different calendar date, so never take a day by slicing a report timestamp.\n\nAn impossible day such as `2026-02-30` is rejected. It is not rolled forward.\n\n## Resources and Prompts\n\nThe server exposes seven resources: six guide and diagnostic resources for\nagent discovery, plus the Reports App:\n\n- `clockify://guide/axioms` — product axioms and safety boundaries.\n- `clockify://guide/workflows` — workflow-first guidance and tool sequencing.\n- `clockify://guide/safety` — write-safety rules including dry_run and confirm_token.\n- `clockify://guide/agent-mode` — when to use the read-only discovery tools.\n- `clockify://guide/which-tool` — intent → first-tool decision tree across time tracking, billing, and admin.\n- `clockify://mcp/doctor` — No-network diagnostics checklist for local readiness.\n- `ui://clockify115/reports-dashboard` — self-contained Reports App resource.\n\nThe read-only `clockify_docs_search`, `clockify_operation_guide`, and\n`clockify_sdk_snippet` tools help an agent pick the smallest correct SDK, CLI,\nor MCP path before touching live data.\n\nPrompts:\n\n- `clockify-workflow-plan` — interactive workflow plan for time tracking and admin flows.\n- `clockify-getting-started` — first-run setup walkthrough from API key and workspace to your first logged entry.\n\n## Naming\n\nTools follow two grammars. **Workflow tools** read as action\nverb-phrases (`clockify_log_work`, `clockify_review_day`,\n`clockify_create_work_package`) so an agent picks them by intent.\n**Domain tools** follow `clockify_<group>_<action>`\n(`clockify_projects_create`, `clockify_entries_delete`) to mirror the\nunderlying Clockify resource. The canonical rules — and how they map to\nSDK methods, CLI commands, and OpenAPI operations — live in\n[`docs/naming-taxonomy-policy.md`](../docs/naming-taxonomy-policy.md),\nthe source of truth.\n\n## Domain Tools\n\n<!-- BEGIN generated:mcp-domain-tools -->\n| Resource group | Count | Tools |\n|---|---:|---|\n| `clients` | 5 | list, get, create, update, delete |\n| `projects` | 11 | list, get, create, update, delete, set_member_rate, memberships_list, memberships_update, estimates_update, templates_list, templates_mark |\n| `tasks` | 6 | list, get, create, update, delete, set_rate |\n| `tags` | 5 | list, get, create, update, delete |\n| `entries` | 7 | list, get, get_many, log, update, delete, mark_invoiced |\n| `timer` | 2 | start, stop |\n| `invoices` | 14 | list, get, create, update, delete, update_status, import_time, info, items_list, items_add, items_delete, payments_list, payments_create, payments_delete |\n| `expenses` | 10 | expense list/get/create/update/delete; category CRUD plus archive |\n| `webhooks` | 7 | list, get, delivery_diagnose, create, update, delete, events |\n| `custom_fields` | 7 | workspace CRUD plus project field list/update/remove |\n| `time_off` | 18 | requests (incl. for another user), policies, balance reads/update, and balance assignments |\n| `users` | 8 | list, member_profile_get, grant_role, revoke_role, set_status, set_member_rate, invite, member_profile_update |\n| `scheduling` | 8 | assignments list/create/update/delete/copy plus publish and capacity |\n| `reports` | 5 | summary, detailed, weekly, attendance, expense |\n| `shared_reports` | 5 | list, view, create, update, delete |\n| `groups` | 8 | CRUD plus membership tools |\n| `holidays` | 5 | list/create/update/delete |\n| `approvals` | 6 | list, submit, submit with type, submit for user with type, update state, resubmit |\n| `audit_log` | 1 | search |\n| `entity_changes` | 1 | list (experimental, changeType-routed) |\n| `workspace` | 1 | settings (read-only) |\n<!-- END generated:mcp-domain-tools -->\n\n## Result Envelope\n\nEvery tool returns JSON in both `content[0].text` and\n`structuredContent`. Every advertised tool also carries the shared\noutput schema for this envelope so MCP clients can validate the shape\nbefore calling tools.\n\nBinary file exports are intentionally absent until MCP has a bounded resource\nor file-safe transport. `clockify_shared_reports_view` accepts `JSON_V1` /\n`JSON` and returns parsed JSON; use the SDK with an explicit file sink or\nClockify's own download link when a PDF or spreadsheet file is required.\n\nSuccess:\n\n```json\n{\n    \"ok\": true,\n    \"action\": \"clockify_create_work_package\",\n    \"entity\": \"work_package\",\n    \"ids\": { \"workspaceId\": \"...\", \"projectId\": \"...\", \"taskId\": \"...\" },\n    \"data\": {},\n    \"meta\": { \"workspaceId\": \"...\" },\n    \"changed\": {\n        \"created\": [{ \"type\": \"project\", \"id\": \"...\", \"name\": \"Website\" }],\n        \"reused\": [{ \"type\": \"tag\", \"id\": \"...\", \"name\": \"Deep Work\" }]\n    },\n    \"next\": [\n        {\n            \"tool\": \"clockify_log_work\",\n            \"args\": { \"project_id\": \"...\", \"task_id\": \"...\" },\n            \"reason\": \"Log finished work against this package.\"\n        }\n    ]\n}\n```\n\nName resolution (`clarification`): when a name is passed where a\nuser/group/project id is expected and it is ambiguous or unknown, the\ntool returns a success-shaped receipt that asks for disambiguation\ninstead of calling Clockify. `candidates` carries the real ids the\nagent should pick from.\n\n```json\n{\n    \"ok\": true,\n    \"action\": \"clockify_groups_add_member\",\n    \"clarification\": {\n        \"question\": \"Multiple users match \\\"Bob\\\". Which one?\",\n        \"field\": \"userId\",\n        \"candidates\": [\n            { \"type\": \"user\", \"id\": \"...\", \"name\": \"Bob Lee\" },\n            { \"type\": \"user\", \"id\": \"...\", \"name\": \"Bob Ng\" }\n        ]\n    }\n}\n```\n\nRecoverable error:\n\n```json\n{\n    \"ok\": false,\n    \"action\": \"clockify_log_work\",\n    \"error\": { \"code\": \"invalid_request\", \"message\": \"end is required\" },\n    \"recovery\": {\n        \"hint\": \"Check entry, project, task, tag, and time fields; use returned IDs or exact names.\",\n        \"tool\": \"clockify_review_day\"\n    }\n}\n```\n\nStable error codes:\n\n| Code | Meaning |\n|---|---|\n| `invalid_request` | Local validation or Clockify 400. |\n| `auth_or_permission` | Clockify 401/403. |\n| `feature_unavailable` | Plan-gated or unavailable Clockify feature. |\n| `not_found` | Missing ID or unresolved exact match. |\n| `conflict` | Clockify 409. |\n| `rate_limited` | Clockify 429. |\n| `clockify_upstream_error` | Clockify 5xx. |\n| `connection_error` | Could not reach Clockify before any HTTP response (network/DNS/TLS). |\n| `aborted` | The caller cancelled the request. |\n| `rate_limited_retry_after` | Clockify 429 that named a `Retry-After` / `X-RateLimit-Reset` window. |\n| `addon_token_restricted` | Add-on-token 401 on an endpoint outside the token's allowed surface. |\n| `active_resource_delete_blocked` | Clockify 400 refusing a bare DELETE of an active project, task, or client. |\n| `error` | Unknown local/runtime error. |\n| `setup_required` | Server started without `CLOCKIFY_API_KEY` / `CLOCKIFY_WORKSPACE_ID`. |\n\nThe generated registry ([`docs/error-codes.md`](../docs/error-codes.md)) is the full list.\n\n## Telemetry\n\n`loadContext()` accepts SDK `composedFetch` hooks, so hosted callers or\ntests can wire OpenTelemetry without forking the MCP server:\n\n```ts\nimport { buildServer } from \"@apet97/clockify-mcp-115/server\";\nimport { loadContext } from \"@apet97/clockify-mcp-115/client\";\nimport { otelHooks } from \"clockify-sdk-ts-115/otel-hooks\";\n\nconst ctx = loadContext(process.env, {\n    hooks: otelHooks({\n        startSpan: (name, attrs) => tracer.startSpan(name, { attributes: attrs }),\n    }),\n});\n\nconst server = buildServer(ctx);\n```\n\n## TypeScript vs Go MCP\n\n| | `@apet97/clockify-mcp-115` | `go-clockify` |\n|---|---|---|\n| Language | TypeScript / Node 22.13+ | Go |\n| Transport | dual-era stdio; authenticated stateless HTTP | stdio |\n| Tools | 163 | 156 |\n| Strength | Node install, SDK-vendor style workflows, full domain CRUD | Drift gates, reports, raw API fallback, broader live evidence |\n| Use when | You want a pure-JS Clockify MCP with workflow-complete daily use | You need the canonical, drift-gated reference server |\n\n## Development\n\n```sh\nnpm ci && make sdk-codegen              # from the repo root, once\nnpm run build -w clockify-sdk-ts-115    # build the workspace-linked SDK\ncd mcp\nnpm install\nnpm run type-check\nnpm test\nnpm run build\nnpm pack --dry-run\n```\n\nRun live sandbox proof only through the repository-root orchestrator. It\nrequires an explicit match for the sacrificial workspace, supplies one\ngoverned prefix, and emits a sanitized zero-leftover receipt:\n\n```sh\ncd ..\nexport CLOCKIFY_LIVE_WORKSPACE_CONFIRM=\"$CLOCKIFY_WORKSPACE_ID\"\nmake perfect-live\nmake mcp-remote-live-proof  # separate; run serially after remote fixture proof\n```\n\nRuntime tool-count smoke:\n\n```sh\nnode dist/index.js <<<'{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/list\",\"params\":{}}' \\\n  | jq '.result.tools | length'\n```\n\nThe default list contains 162 advertised tools. The owned registry contains\nall 163 definitions; `clockify_tools_search` is registered but disabled and\nhidden until discovery mode is enabled, where it replaces the hidden domain\nsurface and loads matching tools on demand.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}