{"_id":"skylight-mcp","_rev":"31-d1b4929fff622d5c13da761b0db18c35","name":"skylight-mcp","dist-tags":{"latest":"1.3.0"},"versions":{"0.1.0":{"name":"skylight-mcp","version":"0.1.0","keywords":["mcp","model-context-protocol","claude","ai","skylight","calendar","chores","family"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"skylight-mcp@0.1.0","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/skylight-mcp#readme","bugs":{"url":"https://github.com/chrischall/skylight-mcp/issues"},"bin":{"skylight-mcp":"dist/index.js"},"dist":{"shasum":"0230d93c1f9d2babfa5ae6c72440c5558c4bb1ca","tarball":"https://registry.npmjs.org/skylight-mcp/-/skylight-mcp-0.1.0.tgz","fileCount":16,"integrity":"sha512-Xdk/AsGHe2HtUrxwY7qtW5KUCD5cX3DeuU1uThtXqIZdIo1bgiKkqBHCIWOQjGUXSCSD2VHlLgIkRB33U4UqWQ==","signatures":[{"sig":"MEUCIQC98lEWkUc4VMM/kvAu+Wet/T6dPo66g9swSR2uvPe1oQIgJeUGrN8a4emlRsOtja+yFKjaHhRklTr22rt+elR331Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1183454},"type":"module","gitHead":"12b36f058bb3f848c2644e701011045225b3e4c5","mcpName":"io.github.chrischall/skylight-mcp","scripts":{"dev":"node --env-file=.env dist/index.js","test":"vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --banner:js='import { createRequire as __createRequire } from \"module\"; const require = __createRequire(import.meta.url);' --outfile=dist/bundle.js","test:watch":"vitest"},"_npmUser":{"name":"chrischall","email":"chris.c.hall@gmail.com"},"repository":{"url":"git+https://github.com/chrischall/skylight-mcp.git","type":"git"},"_npmVersion":"11.12.1","description":"Skylight Calendar MCP — read/write family calendar events, chores, rewards, and shared lists.","directories":{},"_nodeVersion":"26.0.0","dependencies":{"zod":"^4.4.3","dotenv":"^17.4.2","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.7","esbuild":"^0.28.0","typescript":"^6.0.3","@types/node":"^25.9.1","@vitest/coverage-v8":"^4.1.7"},"_npmOperationalInternal":{"tmp":"tmp/skylight-mcp_0.1.0_1780162202303_0.47858949217680213","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"skylight-mcp","version":"0.2.1","keywords":["mcp","model-context-protocol","claude","ai","skylight","calendar","chores","family"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"skylight-mcp@0.2.1","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/skylight-mcp#readme","bugs":{"url":"https://github.com/chrischall/skylight-mcp/issues"},"bin":{"skylight-mcp":"dist/index.js"},"dist":{"shasum":"c44b5d3a224484fef5c7b5743236444d73f2c3d3","tarball":"https://registry.npmjs.org/skylight-mcp/-/skylight-mcp-0.2.1.tgz","fileCount":16,"integrity":"sha512-YAUX1W5d+hZeuRhJLkjdV1iXNq/5Ms8p9zfUeq/nxewbfeG3f1p4IJCuPYDewppSx1+YDW3miJDX4WopXrDOrQ==","signatures":[{"sig":"MEQCIAjXQ0QY0UkW49yE0shjj2sFUCFMSE8o2HDhFXkSk5ZFAiBkyecsI+SacmITIaa5bc4TLURCy1kdmpspHby3hVhEFA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/skylight-mcp@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1183530},"type":"module","gitHead":"e0db1ec3b8ec3ccd9163a0c9d818e9eb769f7792","mcpName":"io.github.chrischall/skylight-mcp","scripts":{"dev":"node --env-file=.env dist/index.js","test":"vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --banner:js='import { createRequire as __createRequire } from \"module\"; const require = __createRequire(import.meta.url);' --outfile=dist/bundle.js","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2d6d87c9-b66b-4c73-b306-960e98f907d7"}},"repository":{"url":"git+https://github.com/chrischall/skylight-mcp.git","type":"git"},"_npmVersion":"11.13.0","description":"Skylight Calendar MCP — read/write family calendar events, chores, rewards, and shared lists.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"zod":"^4.4.3","dotenv":"^17.4.2","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.7","esbuild":"^0.28.0","typescript":"^6.0.3","@types/node":"^25.9.1","@vitest/coverage-v8":"^4.1.7"},"_npmOperationalInternal":{"tmp":"tmp/skylight-mcp_0.2.1_1780163244561_0.25683416098785816","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"skylight-mcp","version":"0.2.2","keywords":["mcp","model-context-protocol","claude","ai","skylight","calendar","chores","family"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"skylight-mcp@0.2.2","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/skylight-mcp#readme","bugs":{"url":"https://github.com/chrischall/skylight-mcp/issues"},"bin":{"skylight-mcp":"dist/index.js"},"dist":{"shasum":"913546b1928296421f141b7b3fb7c4f8db1470ac","tarball":"https://registry.npmjs.org/skylight-mcp/-/skylight-mcp-0.2.2.tgz","fileCount":16,"integrity":"sha512-jSPX41LZCwdp3VxL0Ety8eXhp9rPUOXbE4z4Y0CQGGM2S+fEgqGAKMFTqg7DjWO6XsQFlO7akyOkgM30sy4eaw==","signatures":[{"sig":"MEUCIFyriQyYPfDFgJ+AK38h8fUEZeF6Y0Q9j3PSa9tcFVSAAiEAuvyKZK3fnZ/9KkY8SJyabNT/6ivKFBjBkSsyZS+zBdM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/skylight-mcp@0.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1183530},"type":"module","gitHead":"ff0172ee867db1f19008a31acd96a67b03144627","mcpName":"io.github.chrischall/skylight-mcp","scripts":{"dev":"node --env-file=.env dist/index.js","test":"vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --banner:js='import { createRequire as __createRequire } from \"module\"; const require = __createRequire(import.meta.url);' --outfile=dist/bundle.js","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2d6d87c9-b66b-4c73-b306-960e98f907d7"}},"repository":{"url":"git+https://github.com/chrischall/skylight-mcp.git","type":"git"},"_npmVersion":"11.13.0","description":"Skylight Calendar MCP — read/write family calendar events, chores, rewards, and shared lists.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"zod":"^4.4.3","dotenv":"^17.4.2","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.7","esbuild":"^0.28.0","typescript":"^6.0.3","@types/node":"^25.9.1","@vitest/coverage-v8":"^4.1.7"},"_npmOperationalInternal":{"tmp":"tmp/skylight-mcp_0.2.2_1780164732811_0.18026896308166607","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"skylight-mcp","version":"0.3.0","keywords":["mcp","model-context-protocol","claude","ai","skylight","calendar","chores","family"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"skylight-mcp@0.3.0","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/skylight-mcp#readme","bugs":{"url":"https://github.com/chrischall/skylight-mcp/issues"},"bin":{"skylight-mcp":"dist/index.js"},"dist":{"shasum":"beef7522bd63b6559a15648be7e226ec16a79b4a","tarball":"https://registry.npmjs.org/skylight-mcp/-/skylight-mcp-0.3.0.tgz","fileCount":23,"integrity":"sha512-aWXxczLckflAF4MsNCAxuTYeB9Fb1XFiWlxebRqppZq6CIEXVSYT6nUt/5d3sCEzkoomwGU4ZrPDVAmJPbvpzA==","signatures":[{"sig":"MEUCIFAoyQj7RgG9h4ixu2PLRn+Rtb110IoQp+e6n9+hcm9kAiEAtIIw6Zzmp/gkKu8GFLtfZPCgS5uhGmdbmHSUluZd8WI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/skylight-mcp@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1257691},"type":"module","gitHead":"4cd540f4589ee086138ca131943317d65beb8d28","mcpName":"io.github.chrischall/skylight-mcp","scripts":{"dev":"node --env-file=.env dist/index.js","test":"vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --banner:js='import { createRequire as __createRequire } from \"module\"; const require = __createRequire(import.meta.url);' --outfile=dist/bundle.js","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2d6d87c9-b66b-4c73-b306-960e98f907d7"}},"repository":{"url":"git+https://github.com/chrischall/skylight-mcp.git","type":"git"},"_npmVersion":"11.13.0","description":"Skylight Calendar MCP — read/write family calendar events, chores, rewards, and shared lists.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"zod":"^4.4.3","dotenv":"^17.4.2","@chrischall/mcp-utils":"^0.2.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.7","esbuild":"^0.28.0","typescript":"^6.0.3","@types/node":"^25.9.1","@vitest/coverage-v8":"^4.1.7"},"_npmOperationalInternal":{"tmp":"tmp/skylight-mcp_0.3.0_1780331185766_0.1137906739576946","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"skylight-mcp","version":"0.4.0","keywords":["mcp","model-context-protocol","claude","ai","skylight","calendar","chores","family"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"skylight-mcp@0.4.0","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/skylight-mcp#readme","bugs":{"url":"https://github.com/chrischall/skylight-mcp/issues"},"bin":{"skylight-mcp":"dist/index.js"},"dist":{"shasum":"bf564237a38c7059b5a3e76e9e479aea0891f932","tarball":"https://registry.npmjs.org/skylight-mcp/-/skylight-mcp-0.4.0.tgz","fileCount":26,"integrity":"sha512-u5fPJEbhbgcRSqKHHBsPUJuvo3yjmeMhev4udFjQ49KmrcaD3dc49lsIwbsvBidBc8M0gOGbOAj7BUgYyWdGDA==","signatures":[{"sig":"MEUCIQDNvb8orfFGNzH2tjY/K+SLcpoc3q5cYk7KF1qnd+4MzwIgW/jHBC88qfu5OssBdAH9aKD8qZALkBl5YWUKCEYtA+I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/skylight-mcp@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1321674},"type":"module","gitHead":"f63a76fcada9e43ba2eaed3497de3e0efe6dc94b","mcpName":"io.github.chrischall/skylight-mcp","scripts":{"dev":"node --env-file=.env dist/index.js","test":"vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --banner:js='import { createRequire as __createRequire } from \"module\"; const require = __createRequire(import.meta.url);' --outfile=dist/bundle.js","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2d6d87c9-b66b-4c73-b306-960e98f907d7"}},"repository":{"url":"git+https://github.com/chrischall/skylight-mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"Skylight Calendar MCP — read/write family calendar events, chores, rewards, and shared lists.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"zod":"^4.4.3","dotenv":"^17.4.2","@chrischall/mcp-utils":"^0.4.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.7","esbuild":"^0.28.0","typescript":"^6.0.3","@types/node":"^25.9.1","@vitest/coverage-v8":"^4.1.7"},"_npmOperationalInternal":{"tmp":"tmp/skylight-mcp_0.4.0_1780401303418_0.025153979177592767","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"skylight-mcp","version":"0.4.1","keywords":["mcp","model-context-protocol","claude","ai","skylight","calendar","chores","family"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"skylight-mcp@0.4.1","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/skylight-mcp#readme","bugs":{"url":"https://github.com/chrischall/skylight-mcp/issues"},"bin":{"skylight-mcp":"dist/index.js"},"dist":{"shasum":"db41456457948ce0c053b14140268539e343c6d1","tarball":"https://registry.npmjs.org/skylight-mcp/-/skylight-mcp-0.4.1.tgz","fileCount":27,"integrity":"sha512-1qtfMv5vVZ6Jwf3rY9yL7YplqTd1o0LXMlmM/R8G9/zfI9nJ4EwTgEvlPjqALo6XMVynjPbjTiUPNB/az9KURA==","signatures":[{"sig":"MEYCIQCA+edAn2/a3nR8AjpDhkQZ7rU8E/uABgRrfFkJPMWdjQIhAIxavKAd3vAFBzZkUXxYMP0+IecNFNkIQADZWha34Sxn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/skylight-mcp@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1336022},"type":"module","gitHead":"02570d760059a6934ff0afd248b1f823435fc195","mcpName":"io.github.chrischall/skylight-mcp","scripts":{"dev":"node --env-file=.env dist/index.js","test":"vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --banner:js='import { createRequire as __createRequire } from \"module\"; const require = __createRequire(import.meta.url);' --outfile=dist/bundle.js","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2d6d87c9-b66b-4c73-b306-960e98f907d7"}},"repository":{"url":"git+https://github.com/chrischall/skylight-mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"Skylight Calendar MCP — read/write family calendar events, chores, rewards, and shared lists.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"zod":"^4.4.3","dotenv":"^17.4.2","@chrischall/mcp-utils":"^0.9.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.7","esbuild":"^0.28.0","typescript":"^6.0.3","@types/node":"^25.9.1","@vitest/coverage-v8":"^4.1.7"},"_npmOperationalInternal":{"tmp":"tmp/skylight-mcp_0.4.1_1781057399924_0.30391584495743396","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"skylight-mcp","version":"0.4.2","keywords":["mcp","model-context-protocol","claude","ai","skylight","calendar","chores","family"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"skylight-mcp@0.4.2","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/skylight-mcp#readme","bugs":{"url":"https://github.com/chrischall/skylight-mcp/issues"},"bin":{"skylight-mcp":"dist/index.js"},"dist":{"shasum":"83bfcdab2d55c0aa72cbf4ffa0380222422f9780","tarball":"https://registry.npmjs.org/skylight-mcp/-/skylight-mcp-0.4.2.tgz","fileCount":28,"integrity":"sha512-S8ysSGq6yH/rWkzfafdhB6Dte4RlCTl/Hozj0kB3RzigtsenFxp9xlAtxh7LRlp7C9ERNTYOapie9PB0y/6DEA==","signatures":[{"sig":"MEQCIEYIrwb+XeVItzgmhepKMkjQLpVeMTgzQinrLHDAnhGIAiAOvYGAsv2f9AFAdL/aJKIqxjNc4mGfpFQpEb0pN5+ksQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/skylight-mcp@0.4.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1337460},"type":"module","gitHead":"4d87132d5b4d5d91d2800d867414e40b18aad0c6","mcpName":"io.github.chrischall/skylight-mcp","scripts":{"dev":"node --env-file=.env dist/index.js","test":"vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --banner:js='import { createRequire as __createRequire } from \"module\"; const require = __createRequire(import.meta.url);' --outfile=dist/bundle.js","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2d6d87c9-b66b-4c73-b306-960e98f907d7"}},"repository":{"url":"git+https://github.com/chrischall/skylight-mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"Skylight Calendar MCP — read/write family calendar events, chores, rewards, and shared lists.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"zod":"^4.4.3","dotenv":"^17.4.2","@chrischall/mcp-utils":"^0.10.3","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.7","esbuild":"^0.28.0","typescript":"^6.0.3","@types/node":"^25.9.1","@vitest/coverage-v8":"^4.1.7"},"_npmOperationalInternal":{"tmp":"tmp/skylight-mcp_0.4.2_1781309218396_0.4681981999984075","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"skylight-mcp","version":"0.4.3","keywords":["mcp","model-context-protocol","claude","ai","skylight","calendar","chores","family"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"skylight-mcp@0.4.3","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/skylight-mcp#readme","bugs":{"url":"https://github.com/chrischall/skylight-mcp/issues"},"bin":{"skylight-mcp":"dist/index.js"},"dist":{"shasum":"7cce89ea4f67eedec12f8dfe49c285760d94856d","tarball":"https://registry.npmjs.org/skylight-mcp/-/skylight-mcp-0.4.3.tgz","fileCount":28,"integrity":"sha512-M4A8nQLB0FKNr9h0HfbbCaJ8dpqd/14zDp/AY1x+wPmdiWx3yI44h9lleE0PKGN0M+JunSjulfXnVNEF3smjUQ==","signatures":[{"sig":"MEQCIHFfHzWPre6e16snGhAkrnu+tYntU1BD4pdUeYWsbhJAAiBLwUi0r8S1q3b3TTLdnlXN6CP6Bzhw6/AWa0JWOgnRZg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/skylight-mcp@0.4.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1337460},"type":"module","gitHead":"67fb0341b7564720ea6b1639c0e59b8d489f7902","mcpName":"io.github.chrischall/skylight-mcp","scripts":{"dev":"node --env-file=.env dist/index.js","test":"vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --banner:js='import { createRequire as __createRequire } from \"module\"; const require = __createRequire(import.meta.url);' --outfile=dist/bundle.js","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2d6d87c9-b66b-4c73-b306-960e98f907d7"}},"repository":{"url":"git+https://github.com/chrischall/skylight-mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"Skylight Calendar MCP — read/write family calendar events, chores, rewards, and shared lists.","directories":{},"_nodeVersion":"26.3.0","dependencies":{"zod":"^4.4.3","dotenv":"^17.4.2","@chrischall/mcp-utils":"^0.10.3","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.7","esbuild":"^0.28.0","typescript":"^6.0.3","@types/node":"^25.9.1","@vitest/coverage-v8":"^4.1.7"},"_npmOperationalInternal":{"tmp":"tmp/skylight-mcp_0.4.3_1781534067945_0.42276795988198823","host":"s3://npm-registry-packages-npm-production"}},"0.4.4":{"name":"skylight-mcp","version":"0.4.4","keywords":["mcp","model-context-protocol","claude","ai","skylight","calendar","chores","family"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"skylight-mcp@0.4.4","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/skylight-mcp#readme","bugs":{"url":"https://github.com/chrischall/skylight-mcp/issues"},"bin":{"skylight-mcp":"dist/index.js"},"dist":{"shasum":"8a9ad0697cd200892277f25b6cd1dd8461148b82","tarball":"https://registry.npmjs.org/skylight-mcp/-/skylight-mcp-0.4.4.tgz","fileCount":29,"integrity":"sha512-jgu2bfUFXEc/IwxKlyto05i+rH8RJ3O0hAr90Bwswfmwbih9wWcL/t7YKJ7GoZ2d2wMHwuakpjo+olzaoSWh+Q==","signatures":[{"sig":"MEQCIHLpm8QyHQ7642w/zxEE0X30SSaOLW3YoDJP4o/kqqH+AiAT+iGWsVdRFfqHuyLb+DO6kw30gnPAb/0HFvlVf0CW4Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/skylight-mcp@0.4.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1347530},"type":"module","gitHead":"1de1cdd01c10c0cc1e0a5078df78c11ae4b8f7c7","mcpName":"io.github.chrischall/skylight-mcp","scripts":{"dev":"node --env-file=.env dist/index.js","test":"vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --banner:js='import { createRequire as __createRequire } from \"module\"; const require = __createRequire(import.meta.url);' --outfile=dist/bundle.js","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2d6d87c9-b66b-4c73-b306-960e98f907d7"}},"repository":{"url":"git+https://github.com/chrischall/skylight-mcp.git","type":"git"},"_npmVersion":"11.17.0","description":"Skylight Calendar MCP — read/write family calendar events, chores, rewards, and shared lists.","directories":{},"_nodeVersion":"26.4.0","dependencies":{"zod":"^4.4.3","dotenv":"^17.4.2","@chrischall/mcp-utils":"^0.12.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.7","esbuild":"^0.28.0","typescript":"^6.0.3","@types/node":"^26.0.0","@vitest/coverage-v8":"^4.1.7"},"_npmOperationalInternal":{"tmp":"tmp/skylight-mcp_0.4.4_1783436987346_0.012098413317676693","host":"s3://npm-registry-packages-npm-production"}},"0.4.5":{"name":"skylight-mcp","version":"0.4.5","keywords":["mcp","model-context-protocol","claude","ai","skylight","calendar","chores","family"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"skylight-mcp@0.4.5","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/skylight-mcp#readme","bugs":{"url":"https://github.com/chrischall/skylight-mcp/issues"},"bin":{"skylight-mcp":"dist/index.js"},"dist":{"shasum":"f8cc6c8e5a184ca615950b2399f7a25514b59835","tarball":"https://registry.npmjs.org/skylight-mcp/-/skylight-mcp-0.4.5.tgz","fileCount":30,"integrity":"sha512-uGgm8o/KJZ8P4LHPVlAmhydm26iHxslol4ZTUxsP6DvEL+3bdsJvesrzKDOzy1+4vc2a6C+Yh0pG4QzojRXlyw==","signatures":[{"sig":"MEUCIF6avtvFbcscI4MsnwhkY+JJZcARQl1cmEbVwBUrmLtlAiEAixAMTVEy6/ckRv0nWQKB/8TAIkt9X7d+0w/ZPwrfC3o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/skylight-mcp@0.4.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1350569},"type":"module","gitHead":"a7733d721d6d0f92af7d642d66fd670a32efdacd","mcpName":"io.github.chrischall/skylight-mcp","scripts":{"dev":"node --env-file=.env dist/index.js","test":"vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --banner:js='import { createRequire as __createRequire } from \"module\"; const require = __createRequire(import.meta.url);' --outfile=dist/bundle.js","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2d6d87c9-b66b-4c73-b306-960e98f907d7"}},"repository":{"url":"git+https://github.com/chrischall/skylight-mcp.git","type":"git"},"_npmVersion":"11.17.0","description":"Skylight Calendar MCP — read/write family calendar events, chores, rewards, and shared lists.","directories":{},"_nodeVersion":"26.5.0","dependencies":{"zod":"^4.4.3","dotenv":"^17.4.2","@chrischall/mcp-utils":"^0.13.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.7","esbuild":"^0.28.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^4.1.7"},"_npmOperationalInternal":{"tmp":"tmp/skylight-mcp_0.4.5_1784025646684_0.3503510817414741","host":"s3://npm-registry-packages-npm-production"}},"0.4.6":{"name":"skylight-mcp","version":"0.4.6","keywords":["mcp","model-context-protocol","claude","ai","skylight","calendar","chores","family"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"skylight-mcp@0.4.6","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/skylight-mcp#readme","bugs":{"url":"https://github.com/chrischall/skylight-mcp/issues"},"bin":{"skylight-mcp":"dist/index.js"},"dist":{"shasum":"bd7fafbbeadc48f6223cd94e00622d86b91b2956","tarball":"https://registry.npmjs.org/skylight-mcp/-/skylight-mcp-0.4.6.tgz","fileCount":30,"integrity":"sha512-/5qntEj9pUrCaES6MERFzb8Cw5+JJiZ1G2p3BHuuoZzl1crV+ek6zLq1hgOHMZfx6O4tgGBpJ45d1O47kFQJTg==","signatures":[{"sig":"MEYCIQD+jZaDwduMK6zdGd+3aUYbjNvzSjCGliXBFCoK52VTFQIhAKRy9GL8K8WRFcdNJerp2Iy3EAaphPS8Mpu/efH9l7On","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/skylight-mcp@0.4.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1350569},"type":"module","gitHead":"9ec73b9cea960dc49645ef8835b75413c6cb617f","mcpName":"io.github.chrischall/skylight-mcp","scripts":{"dev":"node --env-file=.env dist/index.js","test":"vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --banner:js='import { createRequire as __createRequire } from \"module\"; const require = __createRequire(import.meta.url);' --outfile=dist/bundle.js","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2d6d87c9-b66b-4c73-b306-960e98f907d7"}},"repository":{"url":"git+https://github.com/chrischall/skylight-mcp.git","type":"git"},"_npmVersion":"11.17.0","description":"Skylight Calendar MCP — read/write family calendar events, chores, rewards, and shared lists.","directories":{},"_nodeVersion":"26.5.0","dependencies":{"zod":"^4.4.3","dotenv":"^17.4.2","@chrischall/mcp-utils":"^0.13.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.7","esbuild":"^0.28.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^4.1.7"},"_npmOperationalInternal":{"tmp":"tmp/skylight-mcp_0.4.6_1784465208495_0.6333488216016094","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"skylight-mcp","version":"0.5.0","keywords":["mcp","model-context-protocol","claude","ai","skylight","calendar","chores","family"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"skylight-mcp@0.5.0","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/skylight-mcp#readme","bugs":{"url":"https://github.com/chrischall/skylight-mcp/issues"},"bin":{"skylight-mcp":"dist/index.js"},"dist":{"shasum":"f81a92d77d67809ab95d59d5c627496fa7ab0dc7","tarball":"https://registry.npmjs.org/skylight-mcp/-/skylight-mcp-0.5.0.tgz","fileCount":30,"integrity":"sha512-rp3TNJKGVorloSuxTG4pzcZZn7FPMHNl1L7IdKux9ZykuaJYZkzwnU3X1vPZj43VPxXKFDBehNizMx7upHhh6A==","signatures":[{"sig":"MEQCIFmK6RNeP5mMhjqdQWzbkFXa2otLwHYAYlB0hO8ESn4SAiA7Hq4juRsxuOsSXZnx5lG1vB3Sx2G9PZEhKv+IImWplQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/skylight-mcp@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1359483},"type":"module","gitHead":"5d390e8d49ffa915cebc3a7ed0bdf8e67dba93db","mcpName":"io.github.chrischall/skylight-mcp","scripts":{"dev":"node --env-file=.env dist/index.js","test":"vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --banner:js='import { createRequire as __createRequire } from \"module\"; const require = __createRequire(import.meta.url);' --outfile=dist/bundle.js","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2d6d87c9-b66b-4c73-b306-960e98f907d7"}},"repository":{"url":"git+https://github.com/chrischall/skylight-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"Skylight Calendar MCP — read/write family calendar events, chores, rewards, and shared lists.","directories":{},"_nodeVersion":"26.7.0","dependencies":{"zod":"^4.4.3","dotenv":"^17.4.2","@chrischall/mcp-utils":"^0.14.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.7","esbuild":"^0.28.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^4.1.7"},"_npmOperationalInternal":{"tmp":"tmp/skylight-mcp_0.5.0_1786309379537_0.9918658195213945","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"skylight-mcp","version":"0.6.0","keywords":["mcp","model-context-protocol","claude","ai","skylight","calendar","chores","family"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"skylight-mcp@0.6.0","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/skylight-mcp#readme","bugs":{"url":"https://github.com/chrischall/skylight-mcp/issues"},"bin":{"skylight-mcp":"dist/index.js"},"dist":{"shasum":"1b7d535dc1195b1b6a38ddbd44004870a1dedcb2","tarball":"https://registry.npmjs.org/skylight-mcp/-/skylight-mcp-0.6.0.tgz","fileCount":30,"integrity":"sha512-aAx7e/s0CFpzjv7Bu7i3Ykadr1uTMQ9iid07b040OeZD37NvXUwL98WnMcrB3gUwKqHpFAhaCfXeOQBMUEb11Q==","signatures":[{"sig":"MEMCIDPMmL/HihhWgJWl9xWmNmotPyY4I8HhACx7EcKxJl3WAh9WjuMIt3esF1A7PSyZeRqm4+1rrLae4sEncvpjY8IE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/skylight-mcp@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1364868},"type":"module","gitHead":"d8e3aa7c2b54b34805f7339c43fdf3ffb5d76deb","mcpName":"io.github.chrischall/skylight-mcp","scripts":{"dev":"node --env-file=.env dist/index.js","test":"vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --banner:js='import { createRequire as __createRequire } from \"module\"; const require = __createRequire(import.meta.url);' --outfile=dist/bundle.js","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2d6d87c9-b66b-4c73-b306-960e98f907d7"}},"repository":{"url":"git+https://github.com/chrischall/skylight-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"Skylight Calendar MCP — read/write family calendar events, chores, rewards, and shared lists.","directories":{},"_nodeVersion":"26.7.0","dependencies":{"zod":"^4.4.3","dotenv":"^17.4.2","@chrischall/mcp-utils":"^0.14.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.7","esbuild":"^0.28.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^4.1.7"},"_npmOperationalInternal":{"tmp":"tmp/skylight-mcp_0.6.0_1786381969772_0.10515140678870138","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"skylight-mcp","version":"0.7.0","keywords":["mcp","model-context-protocol","claude","ai","skylight","calendar","chores","family"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"skylight-mcp@0.7.0","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/skylight-mcp#readme","bugs":{"url":"https://github.com/chrischall/skylight-mcp/issues"},"bin":{"skylight-mcp":"dist/index.js"},"dist":{"shasum":"f77fcf6810a6485a7407a9572ecce324a0748470","tarball":"https://registry.npmjs.org/skylight-mcp/-/skylight-mcp-0.7.0.tgz","fileCount":32,"integrity":"sha512-qUGvpGCUWMixUDDU1PcFKv36Q7Twtd03/CB1pM8YpUkxhpgQwOHgEU9D3/w4w2mLleE1nsljAF85lclng1NeeQ==","signatures":[{"sig":"MEUCIQCXItdpHSRf0nRGRd0Z1ZxhnTOhjEv3Ke2jPf3jQkoJvAIgTtBla9WdmhOYfzWnyvmp0fJeRTH6GiFUeStBF/DaZ7U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/skylight-mcp@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1395416},"type":"module","gitHead":"4363ae39fb7f16858e303c2f827f0dfecb4b27be","mcpName":"io.github.chrischall/skylight-mcp","scripts":{"dev":"node --env-file=.env dist/index.js","test":"npm run typecheck && vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --banner:js='import { createRequire as __createRequire } from \"module\"; const require = __createRequire(import.meta.url);' --outfile=dist/bundle.js","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","test:coverage":"npm run typecheck && vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2d6d87c9-b66b-4c73-b306-960e98f907d7"}},"repository":{"url":"git+https://github.com/chrischall/skylight-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"Skylight Calendar MCP — read/write family calendar events, chores, rewards, and shared lists.","directories":{},"_nodeVersion":"26.8.1","dependencies":{"zod":"^4.4.3","dotenv":"^17.4.2","@chrischall/mcp-utils":"^0.17.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.7","esbuild":"^0.28.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^4.1.7"},"_npmOperationalInternal":{"tmp":"tmp/skylight-mcp_0.7.0_1787916905276_0.5073384437369004","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"skylight-mcp","version":"0.7.1","keywords":["mcp","model-context-protocol","claude","ai","skylight","calendar","chores","family"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"skylight-mcp@0.7.1","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/skylight-mcp#readme","bugs":{"url":"https://github.com/chrischall/skylight-mcp/issues"},"bin":{"skylight-mcp":"dist/index.js"},"dist":{"shasum":"61428f481bdf9c2664e873c64778df85922806f0","tarball":"https://registry.npmjs.org/skylight-mcp/-/skylight-mcp-0.7.1.tgz","fileCount":32,"integrity":"sha512-08RqQuLMwdqeoSGByrAg7ZkeBc/gxEpaMty13+MXO+hbBh6zEwVYp7HN2Syg7yuXnK4ltH/wbRtMIaiEGQ3/iw==","signatures":[{"sig":"MEUCIQC0Ey1RxcRiW+2wefbqgNdwYREE7PSLOD50JC+8FDO5JQIgM2bFlxd+p2gMZmAIrBc2fWI5wh54EpU1M8e9JlzqdxI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/skylight-mcp@0.7.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1395957},"type":"module","gitHead":"7d93b54f101c512bc7165c61ff1a3ba46dfe4573","mcpName":"io.github.chrischall/skylight-mcp","scripts":{"dev":"node --env-file=.env dist/index.js","test":"npm run typecheck && vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --banner:js='import { createRequire as __createRequire } from \"module\"; const require = __createRequire(import.meta.url);' --outfile=dist/bundle.js","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","test:coverage":"npm run typecheck && vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2d6d87c9-b66b-4c73-b306-960e98f907d7"}},"repository":{"url":"git+https://github.com/chrischall/skylight-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"Skylight Calendar MCP — read/write family calendar events, chores, rewards, and shared lists.","directories":{},"_nodeVersion":"26.8.1","dependencies":{"zod":"^4.4.3","dotenv":"^17.4.2","@chrischall/mcp-utils":"^0.17.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.7","esbuild":"^0.28.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^4.1.7"},"_npmOperationalInternal":{"tmp":"tmp/skylight-mcp_0.7.1_1787951236343_0.1658743746980864","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"skylight-mcp","version":"0.8.0","keywords":["mcp","model-context-protocol","claude","ai","skylight","calendar","chores","family"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"skylight-mcp@0.8.0","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/skylight-mcp#readme","bugs":{"url":"https://github.com/chrischall/skylight-mcp/issues"},"bin":{"skylight-mcp":"dist/index.js"},"dist":{"shasum":"cbbd39a94236eb1d37def49a67739741b9011a72","tarball":"https://registry.npmjs.org/skylight-mcp/-/skylight-mcp-0.8.0.tgz","fileCount":32,"integrity":"sha512-xtM1RUCvPaMYYyeSnE98ptugzg7NNeyKjMd5o9Nh6tPBhMUYc0ToFR5eQi8+LWe43x/mRUCD2vEEiaFGmglyLQ==","signatures":[{"sig":"MEQCIFLM5H0/yL4UtzRzOLjfo0Y7TU8thY3oT7ZqpiDz7TzQAiBVC7T3UGBtS1XUy5upqgtcDrrDtZbGVCrVOkpqPxBeeA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/skylight-mcp@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1416434},"type":"module","gitHead":"a9a1c0df376c98afc65c5ad9167eb2aec9a67940","mcpName":"io.github.chrischall/skylight-mcp","scripts":{"dev":"node --env-file=.env dist/index.js","test":"npm run typecheck && vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --banner:js='import { createRequire as __createRequire } from \"module\"; const require = __createRequire(import.meta.url);' --outfile=dist/bundle.js","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","test:coverage":"npm run typecheck && vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2d6d87c9-b66b-4c73-b306-960e98f907d7"}},"repository":{"url":"git+https://github.com/chrischall/skylight-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"Skylight Calendar MCP — read/write family calendar events, chores, rewards, and shared lists.","directories":{},"_nodeVersion":"26.8.1","dependencies":{"zod":"^4.4.3","dotenv":"^17.4.2","@chrischall/mcp-utils":"^0.17.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.7","esbuild":"^0.28.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^4.1.7"},"_npmOperationalInternal":{"tmp":"tmp/skylight-mcp_0.8.0_1788134110850_0.3505567382429542","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"skylight-mcp","version":"0.8.1","keywords":["mcp","model-context-protocol","claude","ai","skylight","calendar","chores","family"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"skylight-mcp@0.8.1","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/skylight-mcp#readme","bugs":{"url":"https://github.com/chrischall/skylight-mcp/issues"},"bin":{"skylight-mcp":"dist/index.js"},"dist":{"shasum":"46c6f22027c47ddb80cce064e84148eb052beb93","tarball":"https://registry.npmjs.org/skylight-mcp/-/skylight-mcp-0.8.1.tgz","fileCount":32,"integrity":"sha512-6mocdNIXISuE11ULouY7IknnVObj+P2hpX2M7YV6/AG9YFDT8TVKEznZjes4Mo24UziSpvUZ/QjwjAwqocepjQ==","signatures":[{"sig":"MEUCIQCoo4cGTllCcRSNHFt1u7ZlUrUscQydH67bR3HBG0WjzQIgZpWzAoSdvqhPHsaYCSvdvQcsDGTXQ7JmA6HBtROWX98=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/skylight-mcp@0.8.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1417973},"type":"module","gitHead":"f22bcca1fd32b220c442151804f3aeabc4b24124","mcpName":"io.github.chrischall/skylight-mcp","scripts":{"dev":"node --env-file=.env dist/index.js","test":"npm run typecheck && vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --banner:js='import { createRequire as __createRequire } from \"module\"; const require = __createRequire(import.meta.url);' --outfile=dist/bundle.js","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","test:coverage":"npm run typecheck && vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2d6d87c9-b66b-4c73-b306-960e98f907d7"}},"repository":{"url":"git+https://github.com/chrischall/skylight-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"Skylight Calendar MCP — read/write family calendar events, chores, rewards, and shared lists.","directories":{},"_nodeVersion":"26.8.1","dependencies":{"zod":"^4.4.3","dotenv":"^17.4.2","@chrischall/mcp-utils":"^0.17.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.7","esbuild":"^0.28.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^4.1.7"},"_npmOperationalInternal":{"tmp":"tmp/skylight-mcp_0.8.1_1788179331672_0.8338323625611996","host":"s3://npm-registry-packages-npm-production"}},"0.8.2":{"name":"skylight-mcp","version":"0.8.2","keywords":["mcp","model-context-protocol","claude","ai","skylight","calendar","chores","family"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"skylight-mcp@0.8.2","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/skylight-mcp#readme","bugs":{"url":"https://github.com/chrischall/skylight-mcp/issues"},"bin":{"skylight-mcp":"dist/index.js"},"dist":{"shasum":"298a5a98b0867a2701c510676f799a391dc22e7d","tarball":"https://registry.npmjs.org/skylight-mcp/-/skylight-mcp-0.8.2.tgz","fileCount":32,"integrity":"sha512-VhvAkrLfbk9JbsmnVhDGCAxq44ThO9FyKiR1xx3rA/3T5VqrTTaEl/X2PW4KyOzaGjqvMyrcmii1IUTRk6Wgug==","signatures":[{"sig":"MEUCIQDF0v9RFg0qdkjl7OTOqDSWfIRbpM9zJqKgtmvqLvbn0gIgJ8A8lagCk5T58XW1SGVXuFf+M03OOOFb4O58D8S+rNM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/skylight-mcp@0.8.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1421150},"type":"module","gitHead":"22a9604cd1a0069994b4d35b6ee2e0b6a23ff1cb","mcpName":"io.github.chrischall/skylight-mcp","scripts":{"dev":"node --env-file=.env dist/index.js","test":"npm run typecheck && vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --banner:js='import { createRequire as __createRequire } from \"module\"; const require = __createRequire(import.meta.url);' --outfile=dist/bundle.js","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","test:coverage":"npm run typecheck && vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2d6d87c9-b66b-4c73-b306-960e98f907d7"}},"repository":{"url":"git+https://github.com/chrischall/skylight-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"Skylight Calendar MCP — read/write family calendar events, chores, rewards, and shared lists.","directories":{},"_nodeVersion":"26.8.1","dependencies":{"zod":"^4.4.3","dotenv":"^17.4.2","@chrischall/mcp-utils":"^0.17.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.7","esbuild":"^0.28.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^4.1.7"},"_npmOperationalInternal":{"tmp":"tmp/skylight-mcp_0.8.2_1788228789382_0.858841170963462","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"skylight-mcp","version":"0.9.0","keywords":["mcp","model-context-protocol","claude","ai","skylight","calendar","chores","family"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"skylight-mcp@0.9.0","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/skylight-mcp#readme","bugs":{"url":"https://github.com/chrischall/skylight-mcp/issues"},"bin":{"skylight-mcp":"dist/index.js"},"dist":{"shasum":"0bef7d8488b2ee1d324aecadfcec9617de704632","tarball":"https://registry.npmjs.org/skylight-mcp/-/skylight-mcp-0.9.0.tgz","fileCount":33,"integrity":"sha512-RgceW9ApMKlol0Klht/WOx8LWKMTm1d42M27nR16sfZDYQu/vkTeuogZdEVhGOApJE8FUMSIyNm3j6WtnXQbWA==","signatures":[{"sig":"MEQCIBnGK+e6ec2Cmly5vPnppdNXquPLKfauu/yFLjtaVovmAiBPukCecbucwwKTlTydFp7CPA6js1sUTo9CHy+6t2ej7g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/skylight-mcp@0.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1434624},"type":"module","gitHead":"ac5d6e762ab5ed11b1a89b45c36ee438708ce6d6","mcpName":"io.github.chrischall/skylight-mcp","scripts":{"dev":"node --env-file=.env dist/index.js","test":"npm run typecheck && vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --banner:js='import { createRequire as __createRequire } from \"module\"; const require = __createRequire(import.meta.url);' --outfile=dist/bundle.js","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","test:coverage":"npm run typecheck && vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2d6d87c9-b66b-4c73-b306-960e98f907d7"}},"repository":{"url":"git+https://github.com/chrischall/skylight-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"Skylight Calendar MCP — read/write family calendar events, chores, rewards, and shared lists.","directories":{},"_nodeVersion":"26.8.1","dependencies":{"zod":"^4.4.3","dotenv":"^17.4.2","@chrischall/mcp-utils":"^0.19.3","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.7","esbuild":"^0.28.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^4.1.7"},"_npmOperationalInternal":{"tmp":"tmp/skylight-mcp_0.9.0_1788231286093_0.051872259495646444","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"skylight-mcp","version":"0.9.1","keywords":["mcp","model-context-protocol","claude","ai","skylight","calendar","chores","family"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"skylight-mcp@0.9.1","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/skylight-mcp#readme","bugs":{"url":"https://github.com/chrischall/skylight-mcp/issues"},"bin":{"skylight-mcp":"dist/index.js"},"dist":{"shasum":"a520e854ca8cb54ee77f11af21a3299e10211e69","tarball":"https://registry.npmjs.org/skylight-mcp/-/skylight-mcp-0.9.1.tgz","fileCount":33,"integrity":"sha512-5js7JGmPOvb6gvtPNPsTLFyr4r4uIyJoLeLYhqPU1e7o74B7WF4loKBAqzSipP02i2dbDJuAS+8z+kRRWzXdyg==","signatures":[{"sig":"MEQCIEF6TibNgq2HQ1bjW7xANpp9bEXY9Dq36YS6cZWcJKPbAiAphypqn78QuBsUGHVeFsMN7/XzLMC5rw3XduBcrJ58iw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/skylight-mcp@0.9.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1439368},"type":"module","gitHead":"853665c65055e790a4bf8b6351fea2f24160fcfe","mcpName":"io.github.chrischall/skylight-mcp","scripts":{"dev":"node --env-file=.env dist/index.js","test":"npm run typecheck && vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --banner:js='import { createRequire as __createRequire } from \"module\"; const require = __createRequire(import.meta.url);' --outfile=dist/bundle.js","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","test:coverage":"npm run typecheck && vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2d6d87c9-b66b-4c73-b306-960e98f907d7"}},"repository":{"url":"git+https://github.com/chrischall/skylight-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"Skylight Calendar MCP — read/write family calendar events, chores, rewards, and shared lists.","directories":{},"_nodeVersion":"26.8.1","dependencies":{"zod":"^4.4.3","dotenv":"^17.4.2","@chrischall/mcp-utils":"^0.19.3","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.7","esbuild":"^0.28.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^4.1.7"},"_npmOperationalInternal":{"tmp":"tmp/skylight-mcp_0.9.1_1788303065429_0.15200880450005805","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"skylight-mcp","version":"0.10.0","keywords":["mcp","model-context-protocol","claude","ai","skylight","calendar","chores","family"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"skylight-mcp@0.10.0","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/skylight-mcp#readme","bugs":{"url":"https://github.com/chrischall/skylight-mcp/issues"},"bin":{"skylight-mcp":"dist/index.js"},"dist":{"shasum":"7f3acec485ff3a31b63f459625d5ed13b187d484","tarball":"https://registry.npmjs.org/skylight-mcp/-/skylight-mcp-0.10.0.tgz","fileCount":33,"integrity":"sha512-2DrmTVp+5cqXfWintezxNlr+2E696UsLwr/m1NXHjM5D2XRbFf7QgdNeIgxYX3fCCrnFtRufbzC4+u+jCVgj4g==","signatures":[{"sig":"MEUCIHw0sijYftgfV+7R+vaAGQQMOYkuYM0UWzVCD3IQF3xxAiEAw3T/shWSFv0U44b3f4p/hITwLr7oi5pJ2uCbEJQxAdg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/skylight-mcp@0.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1479666},"type":"module","gitHead":"26c192442b084f6e98d6373c2957742ddd99a10c","mcpName":"io.github.chrischall/skylight-mcp","scripts":{"dev":"node --env-file=.env dist/index.js","test":"npm run typecheck && vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --banner:js='import { createRequire as __createRequire } from \"module\"; const require = __createRequire(import.meta.url);' --outfile=dist/bundle.js","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","test:coverage":"npm run typecheck && vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2d6d87c9-b66b-4c73-b306-960e98f907d7"}},"repository":{"url":"git+https://github.com/chrischall/skylight-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"Skylight Calendar MCP — read/write family calendar events, chores, rewards, and shared lists.","directories":{},"_nodeVersion":"26.8.1","dependencies":{"zod":"^4.4.3","dotenv":"^17.4.2","@chrischall/mcp-utils":"^0.23.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.7","esbuild":"^0.28.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^4.1.7"},"_npmOperationalInternal":{"tmp":"tmp/skylight-mcp_0.10.0_1788560511546_0.3023679979411147","host":"s3://npm-registry-packages-npm-production"}},"0.10.1":{"name":"skylight-mcp","version":"0.10.1","keywords":["mcp","model-context-protocol","claude","ai","skylight","calendar","chores","family"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"skylight-mcp@0.10.1","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/skylight-mcp#readme","bugs":{"url":"https://github.com/chrischall/skylight-mcp/issues"},"bin":{"skylight-mcp":"dist/index.js"},"dist":{"shasum":"9369ee6934c5eba2348a1344529ab7d8d887c8c2","tarball":"https://registry.npmjs.org/skylight-mcp/-/skylight-mcp-0.10.1.tgz","fileCount":33,"integrity":"sha512-CqklGzFaY6foGIqsPFGNtJeW3NkstGLOmOVqrJ3YrAc/DJ4YQtwJ9pjnHRc/7b4QAOaIlc1roxxY3VddzW/10A==","signatures":[{"sig":"MEQCIFsGn2dc8IJx0/ht1RhdxId+W0vKoDdXGbV6qrKx2K4LAiAdnJKbNwMthZYy7XPRdmkLn0aWcsp0kGE4GN5qL0hDlw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/skylight-mcp@0.10.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1660718},"type":"module","gitHead":"d70285e19e645f180135a023f126a00de2d6b713","mcpName":"io.github.chrischall/skylight-mcp","scripts":{"dev":"node --env-file=.env dist/index.js","test":"npm run typecheck && vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --banner:js='import { createRequire as __createRequire } from \"module\"; const require = __createRequire(import.meta.url);' --outfile=dist/bundle.js","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","test:coverage":"npm run typecheck && vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2d6d87c9-b66b-4c73-b306-960e98f907d7"}},"repository":{"url":"git+https://github.com/chrischall/skylight-mcp.git","type":"git"},"_npmVersion":"11.19.1","description":"Skylight Calendar MCP — read/write family calendar events, chores, rewards, and shared lists.","directories":{},"_nodeVersion":"26.8.2","dependencies":{"zod":"^4.5.4","dotenv":"^17.4.2","@chrischall/mcp-utils":"^0.26.1","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^5.0.0","esbuild":"^0.28.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/skylight-mcp_0.10.1_1789062689044_0.9862051896056034","host":"s3://npm-registry-packages-npm-production"}},"0.10.2":{"name":"skylight-mcp","version":"0.10.2","keywords":["mcp","model-context-protocol","claude","ai","skylight","calendar","chores","family"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"skylight-mcp@0.10.2","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/skylight-mcp#readme","bugs":{"url":"https://github.com/chrischall/skylight-mcp/issues"},"bin":{"skylight-mcp":"dist/index.js"},"dist":{"shasum":"93c0ba006fa6d1df9ea86f2cc018d2e728dbf4f4","tarball":"https://registry.npmjs.org/skylight-mcp/-/skylight-mcp-0.10.2.tgz","fileCount":33,"integrity":"sha512-h+SzXTqg6fXcb1Rov2/rR7knylGOkBm4NM6cZlut/8i/UsuZYLKvGniCvJjge//8P67S+nTBzyMKrgevn38Vgw==","signatures":[{"sig":"MEUCIACk6LIZ4/Mb9TCL0uU2d9AQ95+YkUEjvHbB4KUz7kIlAiEA1nwUZGbzSPD53JrxXhWDYDM8mLvMIgteKJUPSSKsmIg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQC2RnIaVqtw6e8PpAZugwcA+LEUGDBURbhrs5VVZkGmCAIhAO4iBudCW23A7rlWmGWoTo0wQ12HwPRfZierCDHmA4bY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/skylight-mcp@0.10.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1662256},"type":"module","gitHead":"d8f034e375a786d4a6ff5f67f6ade2deb71387aa","mcpName":"io.github.chrischall/skylight-mcp","scripts":{"dev":"node --env-file=.env dist/index.js","test":"npm run typecheck && vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --banner:js='import { createRequire as __createRequire } from \"module\"; const require = __createRequire(import.meta.url);' --outfile=dist/bundle.js","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","test:coverage":"npm run typecheck && vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2d6d87c9-b66b-4c73-b306-960e98f907d7"}},"repository":{"url":"git+https://github.com/chrischall/skylight-mcp.git","type":"git"},"_npmVersion":"11.19.1","description":"Skylight Calendar MCP — read/write family calendar events, chores, rewards, and shared lists.","directories":{},"_nodeVersion":"26.9.0","dependencies":{"zod":"^4.5.4","dotenv":"^17.4.2","@chrischall/mcp-utils":"^0.26.1","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^5.0.0","esbuild":"^0.28.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/skylight-mcp_0.10.2_1789766352822_0.3797842051596727","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"skylight-mcp","version":"1.0.0","keywords":["mcp","model-context-protocol","claude","ai","skylight","calendar","chores","family"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"skylight-mcp@1.0.0","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/skylight-mcp#readme","bugs":{"url":"https://github.com/chrischall/skylight-mcp/issues"},"bin":{"skylight-mcp":"dist/index.js"},"dist":{"shasum":"bfc0166ed1e083f401575d379ae5acc1cd302a21","tarball":"https://registry.npmjs.org/skylight-mcp/-/skylight-mcp-1.0.0.tgz","fileCount":33,"integrity":"sha512-3iox6SBXnFKKWzAmYf97uUqYEU251tJDgBBxxMfwoiQD33EEd6CIoGjRz7BZmlQ8Twcln8tcYJJ8h7WOepuNtA==","signatures":[{"sig":"MEUCIQDLnZD1/z3DGRz8N01L3VhMM3P5/UsCmx0creRscP7ilQIgPJkL6AoTZCd2SHaAYGlznYkfmQ61wfbH1AMFxiVhr4A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCtp2N6DU4QOFL5Afs2lVw/m9TMsMFRFCVytutM7BgSzgIgVe0s2OxK7PyasFUykNSMpIy5rny5lwejMSJnKAEhEtM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/skylight-mcp@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2676681},"type":"module","gitHead":"a95a51a56d8ce60cb5a4df5958877d347d61914c","mcpName":"io.github.chrischall/skylight-mcp","scripts":{"dev":"node --env-file=.env dist/index.js","test":"npm run typecheck && vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --alias:zod/v4=./node_modules/zod/v4/index.cjs --platform=node --format=esm --external:dotenv --banner:js='import { createRequire as __createRequire } from \"module\"; const require = __createRequire(import.meta.url);' --outfile=dist/bundle.js","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","test:coverage":"npm run typecheck && vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2d6d87c9-b66b-4c73-b306-960e98f907d7"}},"repository":{"url":"git+https://github.com/chrischall/skylight-mcp.git","type":"git"},"_npmVersion":"11.19.1","description":"Skylight Calendar MCP — read/write family calendar events, chores, rewards, and shared lists.","directories":{},"_nodeVersion":"26.9.0","dependencies":{"zod":"^4.6.2","dotenv":"^17.4.2","@chrischall/mcp-utils":"^0.28.0","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^5.0.0","esbuild":"^0.28.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^5.0.0","@modelcontextprotocol/client":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/skylight-mcp_1.0.0_1789780783887_0.5290336249766077","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"skylight-mcp","version":"1.0.1","keywords":["mcp","model-context-protocol","claude","ai","skylight","calendar","chores","family"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"skylight-mcp@1.0.1","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/skylight-mcp#readme","bugs":{"url":"https://github.com/chrischall/skylight-mcp/issues"},"bin":{"skylight-mcp":"dist/index.js"},"dist":{"shasum":"531e8ef37642ae51fc253bb78ee7ab0f8727fd0b","tarball":"https://registry.npmjs.org/skylight-mcp/-/skylight-mcp-1.0.1.tgz","fileCount":33,"integrity":"sha512-lXkgXF1GEwW9zobwO9DAmcfhFtiMg2S3/EBSvxIxXwXgWg22VysLIGOLor2z0R5993smIaXU1HkgBphTNY0izw==","signatures":[{"sig":"MEUCIGFe9wa/dyuaAGLpoE+D93+rNwSbyF5V1EXcKGi7sXqRAiEA5xi3yWNnzN4poK9dyT94/PpG2OWWDEdmLEpP2D6gzKY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIEc/MLvIy30gvkczMLDOvXJPb3HfBiEBx9PbTIQ5FEQiAiEAi1+PY8gGNU4NSueQxkKe86snze4Z0tNFZvVoaEP29YM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/skylight-mcp@1.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2702513},"type":"module","gitHead":"9d0c0101e97a0d2a78cf4cdcf77b99aa2caa269d","mcpName":"io.github.chrischall/skylight-mcp","scripts":{"dev":"node --env-file=.env dist/index.js","test":"npm run build && vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --alias:zod/v4=./node_modules/zod/v4/index.cjs --platform=node --format=esm --external:dotenv --banner:js='import { createRequire as __createRequire } from \"module\"; const require = __createRequire(import.meta.url);' --outfile=dist/bundle.js","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","test:coverage":"npm run build && vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2d6d87c9-b66b-4c73-b306-960e98f907d7"}},"repository":{"url":"git+https://github.com/chrischall/skylight-mcp.git","type":"git"},"_npmVersion":"11.19.1","description":"Skylight Calendar MCP — read/write family calendar events, chores, rewards, and shared lists.","directories":{},"_nodeVersion":"26.9.0","dependencies":{"zod":"^4.6.2","dotenv":"^17.4.2","@chrischall/mcp-utils":"^0.28.0","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^5.0.0","esbuild":"^0.28.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^5.0.0","@modelcontextprotocol/client":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/skylight-mcp_1.0.1_1789822783749_0.1897622935359573","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"skylight-mcp","version":"1.1.0","keywords":["mcp","model-context-protocol","claude","ai","skylight","calendar","chores","family"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"skylight-mcp@1.1.0","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/skylight-mcp#readme","bugs":{"url":"https://github.com/chrischall/skylight-mcp/issues"},"bin":{"skylight-mcp":"dist/index.js"},"dist":{"shasum":"e56284e4628c276e450016489e224f6a9c14bbab","tarball":"https://registry.npmjs.org/skylight-mcp/-/skylight-mcp-1.1.0.tgz","fileCount":33,"integrity":"sha512-qad4v/p/8QYtdN9oAQ0FxW3vlagVcWHljj9vgcDgoFLjW/tBX38YRkQ7+h/ZoL5kUY2RpIAiHmhZhl/7V1SXnA==","signatures":[{"sig":"MEYCIQCE6wzMJ1UFXvfWCiv4WimJV7bC8DBIFiwMPhMXpA46sAIhAJGV6m1j8IWJykWSuAloT8OQHNxIryH8/BgoA6ATBRHu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCNT7Flk4bZkocWZ6GJBnNHn+TPTVbgBf6yMBxZFA50XQIgO0kJOBAoSsgJHanqMtqHEvJ/AOYak62pveaMLEnO2Pk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/skylight-mcp@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2702512},"type":"module","gitHead":"1ff02d0a4468baceca1dc5247950bd69e8ad4efc","mcpName":"io.github.chrischall/skylight-mcp","scripts":{"dev":"node --env-file=.env dist/index.js","test":"npm run build && vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --alias:zod/v4=./node_modules/zod/v4/index.cjs --platform=node --format=esm --external:dotenv --banner:js='import { createRequire as __createRequire } from \"module\"; const require = __createRequire(import.meta.url);' --outfile=dist/bundle.js","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","test:coverage":"npm run build && vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2d6d87c9-b66b-4c73-b306-960e98f907d7"}},"repository":{"url":"git+https://github.com/chrischall/skylight-mcp.git","type":"git"},"_npmVersion":"11.19.1","description":"Skylight Calendar MCP — read/write family calendar events, chores, rewards, and shared lists.","directories":{},"_nodeVersion":"26.9.0","dependencies":{"zod":"^4.6.2","dotenv":"^17.4.2","@chrischall/mcp-utils":"^1.0.0","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^5.0.0","esbuild":"^0.28.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^5.0.0","@modelcontextprotocol/client":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/skylight-mcp_1.1.0_1789872713061_0.6017243565078172","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"skylight-mcp","version":"1.1.1","keywords":["mcp","model-context-protocol","claude","ai","skylight","calendar","chores","family"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"skylight-mcp@1.1.1","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/skylight-mcp#readme","bugs":{"url":"https://github.com/chrischall/skylight-mcp/issues"},"bin":{"skylight-mcp":"dist/index.js"},"dist":{"shasum":"cd600acdd2ca4a2b14212145ad385fb32ec76e77","tarball":"https://registry.npmjs.org/skylight-mcp/-/skylight-mcp-1.1.1.tgz","fileCount":33,"integrity":"sha512-cGgRM2aZ0oHRW6cK8v2yLOE/KcjRuwDOM7k+PPBA9ZvkeKV/PUiLDC0BmrxFXNQG17RviVdtszNhagANPRDYeQ==","signatures":[{"sig":"MEUCIQDuKZ+awdkPeWp2LQMs0mMuTfWrVzl8ordrrnLrAqskhQIgYimfS1RVCB07zcNplXRv6p5Iozk70UJIDcWsDEbjTzU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDGpTKCGer89Mrbq+0/Wt6lUYJQsd5vY+/4AfSUlca3aAIhAItmwAFgdKQIjathcIqCh8ikJGef8mnwp7bLOpcF/78O","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/skylight-mcp@1.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2705838},"type":"module","gitHead":"f4556d0163df7ccb7e3251daa3c97a4e37f2bf3c","mcpName":"io.github.chrischall/skylight-mcp","scripts":{"dev":"node --env-file=.env dist/index.js","test":"npm run build && vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --alias:zod/v4=./node_modules/zod/v4/index.cjs --platform=node --format=esm --external:dotenv --banner:js='import { createRequire as __createRequire } from \"module\"; const require = __createRequire(import.meta.url);' --outfile=dist/bundle.js","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","test:coverage":"npm run build && vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2d6d87c9-b66b-4c73-b306-960e98f907d7"}},"repository":{"url":"git+https://github.com/chrischall/skylight-mcp.git","type":"git"},"_npmVersion":"11.19.1","description":"Skylight Calendar MCP — read/write family calendar events, chores, rewards, and shared lists.","directories":{},"_nodeVersion":"26.9.0","dependencies":{"zod":"^4.6.2","dotenv":"^17.4.2","@chrischall/mcp-utils":"^1.0.0","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^5.0.0","esbuild":"^0.28.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^5.0.0","@modelcontextprotocol/client":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/skylight-mcp_1.1.1_1789963908456_0.8897344443215629","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"skylight-mcp","version":"1.1.2","keywords":["mcp","model-context-protocol","claude","ai","skylight","calendar","chores","family"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"skylight-mcp@1.1.2","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/skylight-mcp#readme","bugs":{"url":"https://github.com/chrischall/skylight-mcp/issues"},"bin":{"skylight-mcp":"dist/index.js"},"dist":{"shasum":"c2c12f0c23f0c85de90c9db74a5c29b585900bfa","tarball":"https://registry.npmjs.org/skylight-mcp/-/skylight-mcp-1.1.2.tgz","fileCount":33,"integrity":"sha512-TQhJ8yndqR4OQUpJ8OiZuL2d8NQl3iCDt4V21OG7kbYEIxRzqJYqJSaPNVW+uzb+lqPkqQk58LASm/xQC40kRA==","signatures":[{"sig":"MEQCIEJ9Kl4b2Uo8KNDguBZwNeOGciUu25HftwwXisNQm/yuAiA3xBWgp/WaKwsw9AMGCQTFtdE4aK3MzSH2eMYfTf8+7g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIFcH9/LlhSdGmQU4TBcuSH1mQHdZ2YQgAsA916Hfx8IFAiEAt8fRxH7m6n08fC/vQhqAq9NWHQUoKw/zuHOEdPWUgkM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/skylight-mcp@1.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2717075},"type":"module","gitHead":"a048120221e01912c22b940feb8222fc2b2a7d4b","mcpName":"io.github.chrischall/skylight-mcp","scripts":{"dev":"node --env-file=.env dist/index.js","test":"npm run build && vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --alias:zod/v4=./node_modules/zod/v4/index.cjs --platform=node --format=esm --external:dotenv --banner:js='import { createRequire as __createRequire } from \"module\"; const require = __createRequire(import.meta.url);' --outfile=dist/bundle.js","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","test:coverage":"npm run build && vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2d6d87c9-b66b-4c73-b306-960e98f907d7"}},"repository":{"url":"git+https://github.com/chrischall/skylight-mcp.git","type":"git"},"_npmVersion":"11.19.1","description":"Skylight Calendar MCP — read/write family calendar events, chores, rewards, and shared lists.","directories":{},"_nodeVersion":"26.10.0","dependencies":{"zod":"^4.6.5","dotenv":"^17.4.2","@chrischall/mcp-utils":"^2.4.0","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^5.0.0","esbuild":"^0.28.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^5.0.0","@modelcontextprotocol/client":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/skylight-mcp_1.1.2_1790177948791_0.9741116538132637","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"skylight-mcp","version":"1.1.3","keywords":["mcp","model-context-protocol","claude","ai","skylight","calendar","chores","family"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"skylight-mcp@1.1.3","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/skylight-mcp#readme","bugs":{"url":"https://github.com/chrischall/skylight-mcp/issues"},"bin":{"skylight-mcp":"dist/index.js"},"dist":{"shasum":"fcbe29dba4d704d7e85fd9a8c2fa24aeca4bf09e","tarball":"https://registry.npmjs.org/skylight-mcp/-/skylight-mcp-1.1.3.tgz","fileCount":34,"integrity":"sha512-iYZwpENkoOsQj9Bg2FNBvEQWU+oTFKglsWoj6xmink0AaE/zV8Mvy8F2yfdUK7ahrn0L82kWnGQMzzmfGpXeQg==","signatures":[{"sig":"MEUCIQDmhC9/BLC7c39aNr6eJIWmuqqpAmKS6boihDQZgyRYGAIgfjtbaL7dbqqe4bqXwTtgJtnApvk3eiC01pOUM3ubTvg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIFhZaAK+wZPXJ4ts1+jX8EDdYlIweBZk+duRpqR1Beo4AiEAkZ6a0yrYyPJWaQz/WCoiirr2U8H8efN+I6rEXFN63do=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/skylight-mcp@1.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2736197},"type":"module","gitHead":"d27cbdd03f4b0ef5a8b75e4a0b5319336f5bc426","mcpName":"io.github.chrischall/skylight-mcp","scripts":{"dev":"node --env-file=.env dist/index.js","test":"npm run build && vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --alias:zod/v4=./node_modules/zod/v4/index.cjs --platform=node --format=esm --external:dotenv --banner:js='import { createRequire as __createRequire } from \"module\"; const require = __createRequire(import.meta.url);' --outfile=dist/bundle.js","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","test:coverage":"npm run build && vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2d6d87c9-b66b-4c73-b306-960e98f907d7"}},"repository":{"url":"git+https://github.com/chrischall/skylight-mcp.git","type":"git"},"_npmVersion":"11.19.1","description":"Skylight Calendar MCP — read/write family calendar events, chores, rewards, and shared lists.","directories":{},"_nodeVersion":"26.10.0","dependencies":{"zod":"^4.6.5","dotenv":"^17.4.2","@chrischall/mcp-utils":"^2.4.0","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^5.0.0","esbuild":"^0.28.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^5.0.0","@modelcontextprotocol/client":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/skylight-mcp_1.1.3_1790199682239_0.5735825563264612","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"skylight-mcp","version":"1.2.0","keywords":["mcp","model-context-protocol","claude","ai","skylight","calendar","chores","family"],"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","_id":"skylight-mcp@1.2.0","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"homepage":"https://github.com/chrischall/skylight-mcp#readme","bugs":{"url":"https://github.com/chrischall/skylight-mcp/issues"},"bin":{"skylight-mcp":"dist/index.js"},"dist":{"shasum":"d0ae4e04e004abf886d72e9ade24cabbf9439da2","tarball":"https://registry.npmjs.org/skylight-mcp/-/skylight-mcp-1.2.0.tgz","fileCount":34,"integrity":"sha512-I7Zma8b8aI3rQkiZQx9h85kAR4iZnQNsEqcmjxwzhqMs7iP/2+7Df18AkQ3csvJWOl451QS4Uufv2fVGUE7fuQ==","signatures":[{"sig":"MEUCIBXky4ur0buy249SEigI5Wwso0zVn7TcmAQdTy192GWYAiEAhkaeuEqGXscQcV5rmyf2eSMQFjh8SPnmpacvxAvlIQA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIGFTi4ffQM/EKR83kou4htmZPVBA3k9zCyr2MCMUr2GDAiEAxpv+BIesD/PcE74j7X3aorzjl6xmJpgieXwpJrcOSPE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/skylight-mcp@1.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2767809},"type":"module","gitHead":"1965cda216b42540e546000e956000467d1b7602","mcpName":"io.github.chrischall/skylight-mcp","scripts":{"dev":"node --env-file=.env dist/index.js","test":"npm run build && vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --alias:zod/v4=./node_modules/zod/v4/index.cjs --platform=node --format=esm --external:dotenv --banner:js='import { createRequire as __createRequire } from \"module\"; const require = __createRequire(import.meta.url);' --outfile=dist/bundle.js","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","test:coverage":"npm run build && vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2d6d87c9-b66b-4c73-b306-960e98f907d7"}},"repository":{"url":"git+https://github.com/chrischall/skylight-mcp.git","type":"git"},"_npmVersion":"11.19.1","description":"Skylight Calendar MCP — read/write family calendar events, chores, rewards, and shared lists.","directories":{},"_nodeVersion":"26.10.0","dependencies":{"zod":"^4.6.5","dotenv":"^17.4.2","@chrischall/mcp-utils":"^2.6.0","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^5.0.0","esbuild":"^0.28.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^5.0.0","@modelcontextprotocol/client":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/skylight-mcp_1.2.0_1790262699455_0.38777849385919927","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"_id":"skylight-mcp@1.3.0","bin":{"skylight-mcp":"dist/index.js"},"bugs":{"url":"https://github.com/chrischall/skylight-mcp/issues"},"dist":{"shasum":"22d13a42796a84fed9743487308c1cb4c25b3a0a","tarball":"https://registry.npmjs.org/skylight-mcp/-/skylight-mcp-1.3.0.tgz","fileCount":59,"integrity":"sha512-jODK7Jt/MgEW/9+iPdc2xRVd3ex2vTuL5uo35l6K/GleliLoEE6e0aqnHUdQNEu7IYxvTbFlvCMkSd5YCHCd8Q==","signatures":[{"sig":"MEYCIQCzQ1aqncz9lN/q0kACNUKlFelR9JmGraKVDxEjZw7t2QIhAKt2jBfUz1ncfK5q/q/aP24wwJTrTWdynKWK2Dpwjgvu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCSbOOJyrXoqbbvqG+wI5z/NUpI2+XdVKm9iOuPIMxaBAIhAK/O+/yOPif7aTwiy+BVZXDqdHHOuSVQewo5Ch6XKx7M"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/skylight-mcp@1.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2827870},"name":"skylight-mcp","type":"module","author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"exports":{"./auth":{"types":"./dist/auth-session-login.d.ts","import":"./dist/auth-session-login.js"},"./package.json":"./package.json"},"gitHead":"362d161b452a27001dc00a3fc3276c98c0a241f6","license":"MIT","mcpName":"io.github.chrischall/skylight-mcp","scripts":{"dev":"node --env-file=.env dist/index.js","test":"npm run build && vitest run","build":"tsc && npm run bundle","bundle":"esbuild src/index.ts --bundle --alias:zod/v4=./node_modules/zod/v4/index.cjs --platform=node --format=esm --external:dotenv --banner:js='import { createRequire as __createRequire } from \"module\"; const require = __createRequire(import.meta.url);' --outfile=dist/bundle.js","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest","test:coverage":"npm run build && vitest run --coverage"},"version":"1.3.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2d6d87c9-b66b-4c73-b306-960e98f907d7"}},"homepage":"https://github.com/chrischall/skylight-mcp#readme","keywords":["mcp","model-context-protocol","claude","ai","skylight","calendar","chores","family"],"repository":{"url":"git+https://github.com/chrischall/skylight-mcp.git","type":"git"},"_npmVersion":"11.19.1","description":"Skylight Calendar MCP — read/write family calendar events, chores, rewards, and shared lists.","directories":{},"maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"_nodeVersion":"26.10.0","dependencies":{"zod":"^4.6.5","dotenv":"^18.0.2","@chrischall/mcp-utils":"^2.6.0","@modelcontextprotocol/server":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^5.0.0","esbuild":"^0.28.0","typescript":"^7.0.2","@types/node":"^26.0.0","@vitest/coverage-v8":"^5.0.0","@modelcontextprotocol/client":"^2.0.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/skylight-mcp_1.3.0_1790352705645_0.6285088432006742"}}},"time":{"created":"2026-05-30T17:30:02.149Z","modified":"2026-09-25T16:11:46.498Z","0.1.0":"2026-05-30T17:30:02.457Z","0.2.1":"2026-05-30T17:47:24.719Z","0.2.2":"2026-05-30T18:12:12.986Z","0.3.0":"2026-06-01T16:26:25.957Z","0.4.0":"2026-06-02T11:55:03.612Z","0.4.1":"2026-06-10T02:10:00.103Z","0.4.2":"2026-06-13T00:06:58.563Z","0.4.3":"2026-06-15T14:34:28.127Z","0.4.4":"2026-07-07T15:09:47.565Z","0.4.5":"2026-07-14T10:40:46.874Z","0.4.6":"2026-07-19T12:46:48.674Z","0.5.0":"2026-08-09T21:02:59.737Z","0.6.0":"2026-08-10T17:12:49.946Z","0.7.0":"2026-08-28T11:35:05.450Z","0.7.1":"2026-08-28T21:07:16.490Z","0.8.0":"2026-08-30T23:55:11.007Z","0.8.1":"2026-08-31T12:28:51.802Z","0.8.2":"2026-09-01T02:13:09.531Z","0.9.0":"2026-09-01T02:54:46.317Z","0.9.1":"2026-09-01T22:51:05.585Z","0.10.0":"2026-09-04T22:21:51.698Z","0.10.1":"2026-09-10T17:51:29.228Z","0.10.2":"2026-09-18T21:19:12.913Z","1.0.0":"2026-09-19T01:19:44.023Z","1.0.1":"2026-09-19T12:59:43.857Z","1.1.0":"2026-09-20T02:51:53.191Z","1.1.1":"2026-09-21T04:11:48.594Z","1.1.2":"2026-09-23T15:39:08.928Z","1.1.3":"2026-09-23T21:41:22.389Z","1.2.0":"2026-09-24T15:11:39.581Z","1.3.0":"2026-09-25T16:11:46.167Z"},"bugs":{"url":"https://github.com/chrischall/skylight-mcp/issues"},"author":{"url":"AI","name":"Claude Code","email":"https://www.anthropic.com/claude"},"license":"MIT","homepage":"https://github.com/chrischall/skylight-mcp#readme","keywords":["mcp","model-context-protocol","claude","ai","skylight","calendar","chores","family"],"repository":{"url":"git+https://github.com/chrischall/skylight-mcp.git","type":"git"},"description":"Skylight Calendar MCP — read/write family calendar events, chores, rewards, and shared lists.","maintainers":[{"name":"chrischall","email":"chris.c.hall@gmail.com"}],"readme":"# skylight-mcp\n\n[![CI](https://github.com/chrischall/skylight-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/chrischall/skylight-mcp/actions/workflows/ci.yml)\n[![npm](https://img.shields.io/npm/v/skylight-mcp)](https://www.npmjs.com/package/skylight-mcp)\n[![license](https://img.shields.io/npm/l/skylight-mcp)](LICENSE)\n\nMCP server for [Skylight Calendar](https://www.ourskylight.com) — 114 tools across calendar events (read+write), shared lists (read+write), chores and rewards (read+write), task-box items (read+write), meals (read+write), AI auto-creation (meal-plan + activity-idea generators with draft review/approve), messages and albums (read+write), photo/video upload, and frame/device/account settings + calendar + member management (read+write, incl. preset and custom-photo avatars).\n\nEvery API request carries the `skylight-api-version: 2026-05-01` header (matching the official mobile app); without it some features 422 with \"API version does not support …\".\n\n## MCP protocol support\n\nThe server uses the official TypeScript SDK v2 and supports the stateless `2026-07-28` protocol revision over stdio. Clients can discover and call tools without an initialization handshake. Existing clients can still use the `2025-11-25` handshake.\n\nThe transport remains stdio. A host can expose it over authenticated HTTP. This package does not open a network listener.\n\n## Auth\n\nThe server uses a headless email+password OAuth2 authorization-code flow — no SSO, no 2FA, no browser extension required. Configure it with `SKYLIGHT_REFRESH_TOKEN` if you already hold a token, or `SKYLIGHT_EMAIL` + `SKYLIGHT_PASSWORD` to log in for one.\n\nOn first tool call, the server performs four steps against `https://app.ourskylight.com`:\n1. `GET /auth/session/new` — fetch the Rails CSRF token and session cookie.\n2. `POST /auth/session` — log in with email + password (must happen before OAuth authorize).\n3. `GET /oauth/authorize` — send an S256 PKCE `code_challenge` (the server requires it) and receive the one-time authorization code via redirect.\n4. `POST /oauth/token` — exchange the code plus the matching `code_verifier` for a bearer `access_token` + `refresh_token` (currently a 24-hour expiry; the client reads the returned `expires_in` rather than assuming).\n\nOAuth redirects stay on the authentication origin. Relative redirects resolve against the current URL. The configured callback supplies the authorization code without receiving a request or session cookie. Unexpected destinations fail without including the redirect URL in the error.\n\nThe client then refreshes the token proactively (~60 s before expiry) and reactively on any 401. No bot wall has been observed — the headless flow works directly from Node.\n\n**No env vars → clean start:** if credentials are not set, the server still starts without error. Auth is deferred to the first tool call, so MCP hosts can complete install-time tool listing before credentials are configured.\n\n### Using the auth helpers from your own code\n\nThe package also exports Skylight's session login and refresh, so a separate program can authenticate without copying `src/`:\n\n```ts\nimport { login, refresh } from 'skylight-mcp/auth';\n\nconst tokens = await login({\n  authBaseUrl: 'https://app.ourskylight.com',\n  email: process.env.SKYLIGHT_EMAIL!,\n  password: process.env.SKYLIGHT_PASSWORD!,\n});\n// Skylight rotates refresh tokens: store the one each call returns.\nconst next = await refresh({ authBaseUrl: 'https://app.ourskylight.com', refreshToken: tokens.refreshToken });\n```\n\nThis is the only library entry point; everything else in the package is the MCP server. It is ESM-only and ships type declarations.\n\n## Frame model\n\nAll data in Skylight is scoped to a *frame* (the family hub device). On first use the client auto-discovers the single frame on the account. If the account has more than one frame, set `SKYLIGHT_FRAME_ID` to the frame ID you want. Every tool that reads frame-scoped data accepts an optional `frameId` arg to override the default.\n\n## Tools\n\n| Module | Tool | R/W | Description |\n|---|---|---|---|\n| frames | `skylight_list_frames` | R | List all frames on the account |\n| frames | `skylight_get_frame` | R | Get details for a specific frame |\n| frames | `skylight_list_frame_members` | R | List members associated with a frame |\n| frames | `skylight_list_devices` | R | List physical devices linked to a frame |\n| frames | `skylight_get_plus_access` | R | Get Skylight Plus subscription / entitlement status |\n| frames | `skylight_get_reward_points` | R | Get reward-point balances per family member |\n| frames | `skylight_get_household_config` | R | Get household configuration for the frame |\n| frames | `skylight_list_calendars` | R | List the frame's calendar accounts and active calendars |\n| frames | `skylight_get_event_notification_settings` | R | Get the frame's calendar-event notification settings |\n| frames | `skylight_resolve_member` | R | Resolve a family-member name to its category id |\n| frames | `skylight_get_calendar` | R | Get one calendar account |\n| frames | `skylight_list_nudges` | R | List nudges (reminders) in a date range |\n| frames | `skylight_update_frame` | W | Update frame display/sleep settings |\n| frames | `skylight_rename_frame` | W | Rename a frame |\n| frames | `skylight_update_profile` | W | Update the frame profile (name, birthday) |\n| frames | `skylight_update_household_config` | W | Update household configuration |\n| frames | `skylight_set_reminder_profile` | W | Set the global reminder cadence (interval_weeks) |\n| frames | `skylight_add_webcal` | W | Subscribe the frame to a webcal/ICS calendar URL |\n| frames | `skylight_update_calendar` | W | Set which sub-calendars of a connected account are active |\n| frames | `skylight_delete_source_calendar` | W | Remove a connected source calendar (incl. webcal subscriptions) |\n| frames | `skylight_set_default_calendar` | W | Set the default source calendar for new events |\n| frames | `skylight_link_apple_calendar` | W | Link an Apple/iCloud calendar; the app-specific password comes from `SKYLIGHT_APPLE_APP_PASSWORD`, never a tool argument (confirm-gated) |\n| frames | `skylight_categorize_source_calendar` | W | Attribute a source calendar's events to one or more family members |\n| frames | `skylight_create_source_calendar` | W | Create a source calendar from raw provider attributes (advanced) |\n| frames | `skylight_invite_user` | W | Invite a user to the frame by email (confirm-gated) |\n| frames | `skylight_approve_user` | W | Approve a pending frame user (confirm-gated) |\n| frames | `skylight_remove_user` | W | Remove a user from the frame (confirm-gated; the preview names the member) |\n| frames | `skylight_delete_category` | W | Delete a category / family member (optional `reassign_to_category_id`, inferred; confirm-gated, the preview names the member) |\n| frames | `skylight_update_family_member` | W | Update a family member's profile — birthday, dietary preferences (the name is the category label; set via `skylight_update_category`) |\n| frames | `skylight_update_category` | W | Update a category — rename/recolor, or convert a label into a family-member profile (`linked_to_profile`) |\n| frames | `skylight_create_category` | W | Create a category / family member (optional `linked_to_profile`, `avatar_id`) |\n| frames | `skylight_list_avatars` | R | List the preset avatar library (emoji/icon images) |\n| frames | `skylight_set_member_avatar` | W | Set a family member's avatar to a custom photo (confirm-gated) |\n| frames | `skylight_set_device_album` | W | Set which photo album a device displays (inferred) |\n| frames | `skylight_rename_device` | W | Rename a Skylight device |\n| events | `skylight_list_events` | R | List calendar events within a date range |\n| events | `skylight_get_event` | R | Get details for a specific event |\n| events | `skylight_create_event` | W | Create a new calendar event (optional `category_ids` assigns members) |\n| events | `skylight_update_event` | W | Update an existing calendar event (optional `category_ids` assigns members) |\n| events | `skylight_delete_event` | W | Delete a calendar event |\n| events | `skylight_list_categories` | R | List event categories for a frame |\n| events | `skylight_list_source_calendars` | R | List external source calendars linked to a frame |\n| events | `skylight_list_recent_invited_emails` | R | List recently-invited email addresses |\n| events | `skylight_update_event_notification_settings` | W | Update calendar-event notification settings |\n| lists | `skylight_list_lists` | R | List all shared lists on a frame |\n| lists | `skylight_get_list_items` | R | Get items in a specific shared list |\n| lists | `skylight_create_list` | W | Create a new shared list (label + color + kind) |\n| lists | `skylight_update_list` | W | Update a list's name, color, or type |\n| lists | `skylight_delete_list` | W | Delete a shared list |\n| lists | `skylight_add_list_item` | W | Add an item to a shared list |\n| lists | `skylight_update_list_item` | W | Rename a list item, check/uncheck it, or set its section |\n| lists | `skylight_delete_list_item` | W | Delete an item from a shared list |\n| lists | `skylight_delete_list_items` | W | Bulk-delete specific list items |\n| lists | `skylight_move_list_item` | W | Reorder a list item |\n| lists | `skylight_clear_list` | W | Remove all items from a list (single bulk delete; confirm-gated, the preview lists the items) |\n| lists | `skylight_set_list_item_section` | W | Move list items into a named section (or clear it) |\n| chores | `skylight_list_chores` | R | List chores within a date range |\n| chores | `skylight_search_chores` | R | Search chores (incl. unscheduled/template chores) |\n| chores | `skylight_create_chore` | W | Create a new chore (summary + category) |\n| chores | `skylight_create_recurring_chore` | W | Create a recurring chore or routine (RRULE) |\n| chores | `skylight_complete_chore` | W | Mark a chore complete |\n| chores | `skylight_uncomplete_chore` | W | Reopen (un-complete) a chore |\n| chores | `skylight_update_chore` | W | Update a chore (supports recurrence + `apply_to`) |\n| chores | `skylight_complete_chore_instance` | W | Mark a specific recurring-chore occurrence complete |\n| chores | `skylight_delete_chore` | W | Delete a chore (occurrence or whole series via `apply_to`) |\n| chores | `skylight_list_rewards` | R | List rewards configured for a frame |\n| rewards | `skylight_get_reward` | R | Get one reward |\n| rewards | `skylight_create_reward` | W | Create a reward (name + description + point_value + respawn_on_redemption + category_ids) |\n| rewards | `skylight_update_reward` | W | Update a reward |\n| rewards | `skylight_delete_reward` | W | Delete a reward |\n| rewards | `skylight_redeem_reward` | W | Redeem a reward |\n| rewards | `skylight_unredeem_reward` | W | Reverse a reward redemption |\n| rewards | `skylight_add_reward_points` | W | Grant or deduct reward points to members |\n| meals | `skylight_list_meals` | R | List planned meals in a date range (date_min + date_max both required) |\n| meals | `skylight_list_recipes` | R | List meal recipes for the frame |\n| meals | `skylight_list_meal_categories` | R | List meal categories for the frame |\n| meals | `skylight_get_recipe` | R | Get one meal recipe |\n| meals | `skylight_create_recipe` | W | Create a meal recipe (meal_category_id + summary) |\n| meals | `skylight_update_recipe` | W | Update a meal recipe |\n| meals | `skylight_delete_recipe` | W | Delete a meal recipe |\n| meals | `skylight_add_recipe_to_grocery_list` | W | Add a recipe's ingredients to a grocery list |\n| meals | `skylight_plan_meal` | W | Plan a meal on a date (optionally repeating, link a recipe, add to grocery list) |\n| meals | `skylight_update_meal` | W | Update a planned meal (name, recipe, slot, notes, date, repeat rule) at a chosen recurrence scope |\n| meals | `skylight_delete_meal` | W | Remove a planned meal — one occurrence, this-and-future, or the whole series (confirm-gated) |\n| messages | `skylight_list_messages` | R | List messages posted to the frame |\n| messages | `skylight_list_albums` | R | List photo albums on the frame |\n| messages | `skylight_get_message` | R | Get one frame message |\n| messages | `skylight_create_album` | W | Create a photo album |\n| messages | `skylight_update_album` | W | Update a photo album (rename, hide from slideshow) |\n| messages | `skylight_delete_album` | W | Delete a photo album |\n| messages | `skylight_add_to_album` | W | Add messages/photos to albums |\n| messages | `skylight_remove_from_album` | W | Remove messages/photos from albums |\n| messages | `skylight_copy_messages_to_frames` | W | Copy messages/photos to other frames on the account (inferred) |\n| messages | `skylight_add_message_comment` | W | Comment on a frame message/photo |\n| messages | `skylight_set_message_caption` | W | Set a message/photo caption |\n| messages | `skylight_like_message` | W | Like a frame message/photo |\n| messages | `skylight_unlike_message` | W | Remove a like from a message/photo |\n| messages | `skylight_delete_message` | W | Delete a frame message/photo |\n| messages | `skylight_delete_messages` | W | Bulk-delete messages/photos from the frame (confirm-gated, the preview lists each id with its caption) |\n| tasks | `skylight_list_tasks` | R | List task-box items |\n| tasks | `skylight_create_task` | W | Create a task-box item |\n| tasks | `skylight_update_task` | W | Update a task-box item |\n| tasks | `skylight_delete_task` | W | Delete a task-box item |\n| ai | `skylight_generate_meal_plan` | W | Generate an AI meal plan for given dates (draft meal sittings — async) |\n| ai | `skylight_generate_activity_ideas` | W | Generate AI activity/event ideas for a location + time range (draft events — async) |\n| ai | `skylight_get_auto_creation_intent` | R | Get an AI auto-creation intent (status + draft results) |\n| ai | `skylight_list_auto_creation_drafts` | R | List the events an AI intent drafted (review before approving) |\n| ai | `skylight_list_auto_creation_intents` | R | List all AI auto-creation intents on the frame |\n| ai | `skylight_list_auto_creation_items` | R | List every draft item an AI intent created (meals, activities, list items) |\n| ai | `skylight_approve_auto_creation` | W | Approve AI-drafted events into real calendar events |\n| ai | `skylight_undo_auto_creation` | W | Undo/discard an AI auto-creation intent and its drafts |\n| photos | `skylight_upload_photo` | W | Upload a photo/video from a local file to the frame (confirm-gated) |\n| photos | `skylight_import_events_from_photo` | W | Import calendar events from a photo of a flyer/invite using Skylight's AI (best-effort; confirm-gated) |\n| health | `skylight_healthcheck` | R | Report whether the connector is working: which credential resolved, whether Skylight accepted it, and what to fix |\n\n## Configuration\n\n### Required — one of these two\n\n**A refresh token you already hold** (preferred: scoped, revocable, and it never\ntouches the rate-limited login endpoint):\n\n```\nSKYLIGHT_REFRESH_TOKEN=your-refresh-token\n```\n\n**Or the login pair**, which mints one for you:\n\n```\nSKYLIGHT_EMAIL=you@example.com\nSKYLIGHT_PASSWORD=your-password\n```\n\nSetting both is also valid, and is the most robust configuration: the token is\nused first, and if it has expired the login quietly mints a replacement. With a\ntoken alone, an expired token is reported as expired — the server says so\nplainly rather than claiming it is unconfigured.\n\n**A supplied refresh token is single-use.** Skylight rotates the refresh token\nevery time it is spent, so the server's first start uses up\n`SKYLIGHT_REFRESH_TOKEN` and keeps working on the rotated one — which lives only\nin the [token cache](#token-cache). With a token alone, keep that cache enabled\nand writable, and never share one token between two hosts: a start that finds\nthe env token already spent cannot recover without the login pair.\n\n### Optional\n\n| Env var | Default | Purpose |\n|---|---|---|\n| `SKYLIGHT_FRAME_ID` | auto-discovered | Force a specific frame when the account has multiple |\n| `SKYLIGHT_NAME` | *(none)* | Friendly label used in startup logs |\n| `SKYLIGHT_BASE_URL` | `https://app.ourskylight.com/api` | Override the API base URL |\n| `SKYLIGHT_APPLE_APP_PASSWORD` | *(none)* | App-specific password (from appleid.apple.com) that `skylight_link_apple_calendar` sends to Skylight. Env-only by design: it is never a tool argument, so it never passes through the model, the transcript or the host's tool-call log |\n| `SKYLIGHT_APPLE_ID` | *(none)* | Apple ID email for `skylight_link_apple_calendar`; the tool's `email` argument overrides it |\n| `SKYLIGHT_UPLOAD_DIR` | *(none — any path)* | Directories that `skylight_upload_photo`, `skylight_import_events_from_photo` and `skylight_set_member_avatar` may upload from (several separated by `:`, or `;` on Windows; `~` allowed). When set, any other path is refused before the confirmation preview, and the avatar read re-checks it when the file is opened. Unset means no directory restriction (the type, symlink, size and content checks still apply) |\n\nTreat `.env` like a password file — it is gitignored, do not commit it.\n\n### Confirmations\n\nSome writes ask you to confirm before anything happens: uploading a local\nphoto or avatar; inviting, approving or removing a user; deleting a family\nmember; linking an Apple calendar; opening the frame to the public; the two\nbulk deletes (`skylight_delete_messages`, `skylight_clear_list`), whose preview\nlists every item that would go; and meal/chore edits or deletes whose\n`apply_to` reaches past the one occurrence named. A client that can show a confirmation prompt (Claude Code) shows one.\nElsewhere the first call makes no change and returns a preview of exactly what\nwould be sent plus a `confirmToken`; only a repeat call with that token, and\nthe same arguments, performs it — once.\n\n| variable | default | |\n|---|---|---|\n| `MCP_CONFIRM_MODE` | `ask-user` | What a write does on a client that cannot show a confirmation prompt (claude.ai, Claude Desktop). `ask-user`: two steps — the first call does nothing and returns a preview plus a token, and the model must get your approval in chat before calling again with it. `auto`: the same two steps, but the model may use the token after reviewing the preview itself. `refuse`: writes are refused on such clients. A client that can show prompts (Claude Code) always gets the real prompt. An unrecognised value is treated as `refuse`. |\n| `MCP_CONFIRM_TTL_SECONDS` | `600` | How long a token stays valid. |\n| `MCP_CONFIRM_SECRET` | random per process | Signing key; set it only if tokens must survive a server restart. |\n\n### Token cache\n\nAfter the first login the OAuth token pair is cached at\n`$MCP_DATA_DIR/.skylight-mcp/tokens.json` (falling back to `$HOME`), written\n`0600`. A later start reuses it instead of re-running the four-step login —\nwhich matters because Skylight's login endpoint rate-limits, and a hosted\nserver that scales to zero cold-starts constantly.\n\nOnly the tokens are written; your email and password stay in the environment.\nA cached token that has expired is refreshed rather than re-logged-in, and a\nrefresh token the server rejects falls back to a fresh login, so a stale file\ncannot lock you out.\n\nThe cache is bound to whichever credential minted it — the password pair, or the\nsupplied `SKYLIGHT_REFRESH_TOKEN`. Rotate that credential, or point the server at\na different account, and the cached token is discarded rather than kept in play.\nOnly a salted digest is stored; no email, password or supplied token reaches the\nfile.\n\nSet `SKYLIGHT_TOKEN_CACHE=false` to turn it off and log in on every start, or\n`SKYLIGHT_TOKEN_FILE` to put the cache somewhere specific.\n\nIf a write fails (read-only or full data dir) the server logs to stderr and\nkeeps working on the in-memory token — only the next start pays for it. With\nthe login pair that cost is one login. With only `SKYLIGHT_REFRESH_TOKEN` it is\na lockout, because the rotated token was never saved: the server says so loudly\non stderr, and warns at startup if `SKYLIGHT_TOKEN_CACHE=false` is set without\na login pair.\n\n## Local dev\n\n```\nnpm install\nnpm run build\nnpm test\nnpm run dev   # requires .env with credentials\n```\n\nTests: vitest, 100% line/branch/function/statement coverage enforced. All tests are mocked — no network calls in CI.\n\nDeveloped and maintained by AI (Claude). Use at your own discretion.\n","readmeFilename":"README.md"}