{"_id":"@cliftonz/tandoor-recipes-mcp","_rev":"16-4af24eddce884c6b1d9c63ca40484895","name":"@cliftonz/tandoor-recipes-mcp","dist-tags":{"next":"1.4.0-rc.8","latest":"2.0.1"},"versions":{"1.2.1":{"name":"@cliftonz/tandoor-recipes-mcp","version":"1.2.1","keywords":["mcp","model-context-protocol","tandoor","recipes","meal-planning","cooking","food","recipe-management","claude","anthropic"],"author":{"name":"Zac Clifton"},"license":"MIT","_id":"@cliftonz/tandoor-recipes-mcp@1.2.1","maintainers":[{"name":"cliftonz","email":"zac16530@gmail.com"}],"homepage":"https://github.com/Cliftonz/tandoor-recipe-mcp#readme","bugs":{"url":"https://github.com/Cliftonz/tandoor-recipe-mcp/issues"},"bin":{"tandoor-recipes-mcp":"build/index.js"},"dist":{"shasum":"34cf0a74168518f01d498ec6f920b3fe69d39dd0","tarball":"https://registry.npmjs.org/@cliftonz/tandoor-recipes-mcp/-/tandoor-recipes-mcp-1.2.1.tgz","fileCount":92,"integrity":"sha512-Y6BPID3U8tiePGQWyknlasTviA9vOrqczt/7vf9Xv81PJyf/tkmF84/Z21bBjPBchAxd1NdYPkaXz1mIOnqQBg==","signatures":[{"sig":"MEQCICuXx2daFTJmHRGY3VTptXdpio/5tK4yQadK1ULKBq5oAiAURwy6inZfEia7eWMGAFg5IBwuhGawYZTp79RGyfVVig==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":339074},"main":"./build/index.js","type":"module","types":"./build/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"65e321ecc0cb468be8ec94efcbd5e55b89bf4a7c","scripts":{"test":"vitest run","build":"tsc","watch":"tsc --watch","prepare":"npm run build","test:e2e":"vitest run --config vitest.e2e.config.ts","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"cliftonz","email":"zac16530@gmail.com"},"repository":{"url":"git+https://github.com/Cliftonz/tandoor-recipe-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"Model Context Protocol server for Tandoor — recipes, meal plans, shopping lists, ingredients, cook logs, nutrition, AI import, and more.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"zod":"^3.25.0 || ^4.0.0","@modelcontextprotocol/sdk":"^1.24.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"dotenv":"^16.4.7","vitest":"^2.1.9","typescript":"^5.7.2","@types/node":"^22.10.2"},"_npmOperationalInternal":{"tmp":"tmp/tandoor-recipes-mcp_1.2.1_1776957260758_0.0036576441420821393","host":"s3://npm-registry-packages-npm-production"}},"1.2.4":{"name":"@cliftonz/tandoor-recipes-mcp","version":"1.2.4","keywords":["mcp","model-context-protocol","tandoor","recipes","meal-planning","cooking","food","recipe-management","claude","anthropic"],"author":{"name":"Zac Clifton"},"license":"MIT","_id":"@cliftonz/tandoor-recipes-mcp@1.2.4","maintainers":[{"name":"cliftonz","email":"zac16530@gmail.com"}],"homepage":"https://github.com/Cliftonz/tandoor-recipe-mcp#readme","bugs":{"url":"https://github.com/Cliftonz/tandoor-recipe-mcp/issues"},"bin":{"tandoor-recipes-mcp":"build/index.js"},"dist":{"shasum":"b85dd822c7a47a64a56f3db2daef120ba5abd62e","tarball":"https://registry.npmjs.org/@cliftonz/tandoor-recipes-mcp/-/tandoor-recipes-mcp-1.2.4.tgz","fileCount":92,"integrity":"sha512-/tQhZmGsAyRLejuPWilWI3kcpOQPeGg38yv6UeGURgT2YQphuCfFcDQ1RQCYobja32MviyNKqqnSdaZY1KCTjQ==","signatures":[{"sig":"MEUCIQDsfNQZM1qZQCenBZqf73MfKipO3BVoYVMgKWflkuLGZAIgHHlLgABp8Mmg1AUK8idf5eor1hFV0htp5iEeuVFU4f8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@cliftonz%2ftandoor-recipes-mcp@1.2.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":339074},"main":"./build/index.js","type":"module","types":"./build/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"8d0a41e50ed47685cf3a678155663196ec5954c5","scripts":{"test":"vitest run","build":"tsc","watch":"tsc --watch","prepare":"npm run build","test:e2e":"vitest run --config vitest.e2e.config.ts","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f8b033f2-a2da-41a1-b13d-840ccb36dc00"}},"repository":{"url":"git+https://github.com/Cliftonz/tandoor-recipe-mcp.git","type":"git"},"_npmVersion":"11.11.0","description":"Model Context Protocol server for Tandoor — recipes, meal plans, shopping lists, ingredients, cook logs, nutrition, AI import, and more.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"zod":"^3.25.0 || ^4.0.0","@modelcontextprotocol/sdk":"^1.24.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"dotenv":"^16.4.7","vitest":"^2.1.9","typescript":"^5.7.2","@types/node":"^22.10.2"},"_npmOperationalInternal":{"tmp":"tmp/tandoor-recipes-mcp_1.2.4_1776958330434_0.02045156971967388","host":"s3://npm-registry-packages-npm-production"}},"1.2.5":{"name":"@cliftonz/tandoor-recipes-mcp","version":"1.2.5","keywords":["mcp","model-context-protocol","tandoor","recipes","meal-planning","cooking","food","recipe-management","claude","anthropic"],"author":{"name":"Zac Clifton"},"license":"MIT","_id":"@cliftonz/tandoor-recipes-mcp@1.2.5","maintainers":[{"name":"cliftonz","email":"zac16530@gmail.com"}],"homepage":"https://github.com/Cliftonz/tandoor-recipe-mcp#readme","bugs":{"url":"https://github.com/Cliftonz/tandoor-recipe-mcp/issues"},"bin":{"tandoor-recipes-mcp":"build/index.js"},"dist":{"shasum":"da5b50283511696154ed466206c7267663dc3f04","tarball":"https://registry.npmjs.org/@cliftonz/tandoor-recipes-mcp/-/tandoor-recipes-mcp-1.2.5.tgz","fileCount":92,"integrity":"sha512-1k98gyHton4PfnKK2JHUM+ix16tACGfg5jl9JruSyuouRAjU5uDT/Ax/xW/Pe7DlTDMAc2raRt9NMACB65C/xg==","signatures":[{"sig":"MEQCICXwSYMPsHdksDNHN4K+YaJNTLRCdyCHiyxVI8muvSHtAiAZYXAH5FqBcrbsWRhMHW4pTxlKtFBO2+u5hI5hY6xtuA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@cliftonz%2ftandoor-recipes-mcp@1.2.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":340016},"main":"./build/index.js","type":"module","types":"./build/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"c55715f54364e925130184f41673f11e35ccb769","scripts":{"test":"vitest run","build":"tsc","watch":"tsc --watch","prepare":"npm run build","version":"node scripts/sync-plugin-version.js && git add .claude-plugin/plugin.json .claude-plugin/marketplace.json","test:e2e":"vitest run --config vitest.e2e.config.ts","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f8b033f2-a2da-41a1-b13d-840ccb36dc00"}},"repository":{"url":"git+https://github.com/Cliftonz/tandoor-recipe-mcp.git","type":"git"},"_npmVersion":"11.11.0","description":"Model Context Protocol server for Tandoor — recipes, meal plans, shopping lists, ingredients, cook logs, nutrition, AI import, and more.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"zod":"^3.25.0 || ^4.0.0","@modelcontextprotocol/sdk":"^1.24.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"dotenv":"^16.4.7","vitest":"^2.1.9","typescript":"^5.7.2","@types/node":"^22.10.2"},"_npmOperationalInternal":{"tmp":"tmp/tandoor-recipes-mcp_1.2.5_1776971874712_0.14268409646607316","host":"s3://npm-registry-packages-npm-production"}},"1.2.6":{"name":"@cliftonz/tandoor-recipes-mcp","version":"1.2.6","keywords":["mcp","model-context-protocol","tandoor","recipes","meal-planning","cooking","food","recipe-management","claude","anthropic"],"author":{"name":"Zac Clifton"},"license":"MIT","_id":"@cliftonz/tandoor-recipes-mcp@1.2.6","maintainers":[{"name":"cliftonz","email":"zac16530@gmail.com"}],"homepage":"https://github.com/Cliftonz/tandoor-recipe-mcp#readme","bugs":{"url":"https://github.com/Cliftonz/tandoor-recipe-mcp/issues"},"bin":{"tandoor-recipes-mcp":"build/index.js"},"dist":{"shasum":"7ff7fcbfd3c4e2b37eee36b9b49e411a5acf6e57","tarball":"https://registry.npmjs.org/@cliftonz/tandoor-recipes-mcp/-/tandoor-recipes-mcp-1.2.6.tgz","fileCount":92,"integrity":"sha512-rHVYhtC10pqpNYGaTCD52zt2Fa3Iqojj3B0ZySPBAiz+bFsTUrcFerS91BZ5k10qfIw85WhJMwVmEFiBZIUHGQ==","signatures":[{"sig":"MEYCIQCEka2D+ouptA5TFEAeYIVqozO3Mz/YYctROBmBcazh9QIhALKu4cDc+cSdHkFAQAdMVTqCDHfMmPjfuVydzmVpy/yG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@cliftonz%2ftandoor-recipes-mcp@1.2.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":352888},"main":"./build/index.js","type":"module","types":"./build/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"1a3e1eba20bbcaf4bebb3dd37eb22b04f2df228b","scripts":{"test":"vitest run","build":"tsc","watch":"tsc --watch","prepare":"npm run build","version":"node scripts/sync-plugin-version.js && git add .claude-plugin/plugin.json .claude-plugin/marketplace.json","test:e2e":"vitest run --config vitest.e2e.config.ts","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f8b033f2-a2da-41a1-b13d-840ccb36dc00"}},"repository":{"url":"git+https://github.com/Cliftonz/tandoor-recipe-mcp.git","type":"git"},"_npmVersion":"11.11.0","description":"Model Context Protocol server for Tandoor — recipes, meal plans, shopping lists, ingredients, cook logs, nutrition, AI import, and more.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"zod":"^3.25.0 || ^4.0.0","@modelcontextprotocol/sdk":"^1.24.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"dotenv":"^16.4.7","vitest":"^2.1.9","typescript":"^5.7.2","@types/node":"^22.10.2"},"_npmOperationalInternal":{"tmp":"tmp/tandoor-recipes-mcp_1.2.6_1776990914750_0.5259520176278492","host":"s3://npm-registry-packages-npm-production"}},"1.2.7":{"name":"@cliftonz/tandoor-recipes-mcp","version":"1.2.7","keywords":["mcp","model-context-protocol","tandoor","recipes","meal-planning","cooking","food","recipe-management","claude","anthropic"],"author":{"name":"Zac Clifton"},"license":"MIT","_id":"@cliftonz/tandoor-recipes-mcp@1.2.7","maintainers":[{"name":"cliftonz","email":"zac16530@gmail.com"}],"homepage":"https://github.com/Cliftonz/tandoor-recipe-mcp#readme","bugs":{"url":"https://github.com/Cliftonz/tandoor-recipe-mcp/issues"},"bin":{"tandoor-recipes-mcp":"build/index.js"},"dist":{"shasum":"26d321f50a7f69099e6cf9f83d8cba14918b955a","tarball":"https://registry.npmjs.org/@cliftonz/tandoor-recipes-mcp/-/tandoor-recipes-mcp-1.2.7.tgz","fileCount":92,"integrity":"sha512-KPkZE7Px06bPxDQa8pWRGcfJH5J1P91uLaxVmwqGntLYHeBUmjIrrGQa6zKjn6E8YVspikkpY2BJ3xBkd4j2rQ==","signatures":[{"sig":"MEUCIGkGl+9Hao9mgMrDm0QCQLHJjqcyYFZ18d+5KZ4tlkLmAiEAg0YhskeQ/UBDiYq7+bvmJXZbA7Iioykiof/YbvBao2A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@cliftonz%2ftandoor-recipes-mcp@1.2.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":359528},"main":"./build/index.js","type":"module","types":"./build/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"63dbd86074b44ff0034bb8122e7976c44e7affa6","scripts":{"test":"vitest run","build":"tsc","watch":"tsc --watch","prepare":"npm run build","version":"node scripts/sync-plugin-version.js && git add .claude-plugin/plugin.json .claude-plugin/marketplace.json","test:e2e":"vitest run --config vitest.e2e.config.ts","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f8b033f2-a2da-41a1-b13d-840ccb36dc00"}},"repository":{"url":"git+https://github.com/Cliftonz/tandoor-recipe-mcp.git","type":"git"},"_npmVersion":"11.11.0","description":"Model Context Protocol server for Tandoor — recipes, meal plans, shopping lists, ingredients, cook logs, nutrition, AI import, and more.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"zod":"^3.25.0 || ^4.0.0","@modelcontextprotocol/sdk":"^1.24.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"dotenv":"^16.4.7","vitest":"^2.1.9","typescript":"^5.7.2","@types/node":"^22.10.2"},"_npmOperationalInternal":{"tmp":"tmp/tandoor-recipes-mcp_1.2.7_1777057677229_0.3712448953977736","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@cliftonz/tandoor-recipes-mcp","version":"1.3.0","keywords":["mcp","model-context-protocol","tandoor","recipes","meal-planning","cooking","food","recipe-management","claude","anthropic"],"author":{"name":"Zac Clifton"},"license":"MIT","_id":"@cliftonz/tandoor-recipes-mcp@1.3.0","maintainers":[{"name":"cliftonz","email":"zac16530@gmail.com"}],"homepage":"https://github.com/Cliftonz/tandoor-recipe-mcp#readme","bugs":{"url":"https://github.com/Cliftonz/tandoor-recipe-mcp/issues"},"bin":{"tandoor-recipes-mcp":"build/index.js"},"dist":{"shasum":"36067729b94545bf4cd37692568f2f0036e0e56a","tarball":"https://registry.npmjs.org/@cliftonz/tandoor-recipes-mcp/-/tandoor-recipes-mcp-1.3.0.tgz","fileCount":92,"integrity":"sha512-y7tLz0Xy0KObWIFv3AtWMxrC5V1dhcjsRZXgZBte7Q4yQS90WqfHwl+g21Iqjy6Q+bmg9CxFfvVQ/NZm9XhspA==","signatures":[{"sig":"MEUCIHeRKdQx1a9IJxh8Mg6ldZxIbPM7XO8E9lS4q212lnydAiEAo2lgJO/Y3wY5BH/6YsOCsMj4SobawGbEbByGa0KIr/w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@cliftonz%2ftandoor-recipes-mcp@1.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":376833},"main":"./build/index.js","type":"module","types":"./build/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"a0e869067d7176ec87b06783b819619dc48a8ba8","scripts":{"test":"vitest run","build":"tsc","watch":"tsc --watch","prepare":"npm run build","version":"node scripts/sync-plugin-version.js && git add .claude-plugin/plugin.json .claude-plugin/marketplace.json","test:e2e":"vitest run --config vitest.e2e.config.ts","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f8b033f2-a2da-41a1-b13d-840ccb36dc00"}},"repository":{"url":"git+https://github.com/Cliftonz/tandoor-recipe-mcp.git","type":"git"},"_npmVersion":"11.11.0","description":"Model Context Protocol server for Tandoor — recipes, meal plans, shopping lists, ingredients, cook logs, nutrition, AI import, and more.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"zod":"^3.25.0 || ^4.0.0","@modelcontextprotocol/sdk":"^1.24.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"dotenv":"^16.4.7","vitest":"^2.1.9","typescript":"^5.7.2","@types/node":"^22.10.2"},"_npmOperationalInternal":{"tmp":"tmp/tandoor-recipes-mcp_1.3.0_1777059363599_0.13842108617827464","host":"s3://npm-registry-packages-npm-production"}},"1.4.0-rc.1":{"name":"@cliftonz/tandoor-recipes-mcp","version":"1.4.0-rc.1","keywords":["mcp","model-context-protocol","tandoor","recipes","meal-planning","cooking","food","recipe-management","claude","anthropic"],"author":{"name":"Zac Clifton"},"license":"MIT","_id":"@cliftonz/tandoor-recipes-mcp@1.4.0-rc.1","maintainers":[{"name":"cliftonz","email":"zac16530@gmail.com"}],"homepage":"https://github.com/Cliftonz/tandoor-recipe-mcp#readme","bugs":{"url":"https://github.com/Cliftonz/tandoor-recipe-mcp/issues"},"bin":{"tandoor-recipes-mcp":"build/index.js"},"dist":{"shasum":"8f1befcd78e203db5840fce0345eda9e7f03d8b5","tarball":"https://registry.npmjs.org/@cliftonz/tandoor-recipes-mcp/-/tandoor-recipes-mcp-1.4.0-rc.1.tgz","fileCount":106,"integrity":"sha512-JU9F38B7xvTXoDkrf6n0dJH189LvqKL25EYO/Ze/yjkCUMYK4WhElFYpfARbZIuROdgIDeheVgPCQhEkTxGYdw==","signatures":[{"sig":"MEUCIQCUA/p03zy/mDcr0DHgy00MNIx9lW+iblVpCJsbpNCTwgIgPdiI4EBotTkZC6U29VW8gUOlOLX5OlKQzLv9OF/dqwA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@cliftonz%2ftandoor-recipes-mcp@1.4.0-rc.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":415847},"main":"./build/index.js","type":"module","types":"./build/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"babb6c3ee34aff00c0fa20d1f1297190a0da8909","scripts":{"test":"vitest run","build":"tsc","watch":"tsc --watch","prepare":"npm run build","version":"node scripts/sync-plugin-version.js && git add .claude-plugin/plugin.json .claude-plugin/marketplace.json","test:e2e":"vitest run --config vitest.e2e.config.ts","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f8b033f2-a2da-41a1-b13d-840ccb36dc00"}},"repository":{"url":"git+https://github.com/Cliftonz/tandoor-recipe-mcp.git","type":"git"},"_npmVersion":"11.13.0","description":"Model Context Protocol server for Tandoor — recipes, meal plans, shopping lists, ingredients, cook logs, nutrition, AI import, and more.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"zod":"^4.4.3","jq-wasm":"1.1.0-jq-1.8.1","@modelcontextprotocol/sdk":"1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"dotenv":"^17.4.2","vitest":"^4.1.6","typescript":"6.0.3","@types/node":"^22.19.18"},"_npmOperationalInternal":{"tmp":"tmp/tandoor-recipes-mcp_1.4.0-rc.1_1781202215681_0.38829694593504027","host":"s3://npm-registry-packages-npm-production"}},"1.4.0-rc.2":{"name":"@cliftonz/tandoor-recipes-mcp","version":"1.4.0-rc.2","keywords":["mcp","model-context-protocol","tandoor","recipes","meal-planning","cooking","food","recipe-management","claude","anthropic"],"author":{"name":"Zac Clifton"},"license":"MIT","_id":"@cliftonz/tandoor-recipes-mcp@1.4.0-rc.2","maintainers":[{"name":"cliftonz","email":"zac16530@gmail.com"}],"homepage":"https://github.com/Cliftonz/tandoor-recipe-mcp#readme","bugs":{"url":"https://github.com/Cliftonz/tandoor-recipe-mcp/issues"},"bin":{"tandoor-recipes-mcp":"build/index.js"},"dist":{"shasum":"d71966fbf28869507bbaf03294ed6e2436179daa","tarball":"https://registry.npmjs.org/@cliftonz/tandoor-recipes-mcp/-/tandoor-recipes-mcp-1.4.0-rc.2.tgz","fileCount":108,"integrity":"sha512-gyNYlYEIzUaXCnqVEpP7P4LIo4QT+XZ13qGY7Y5GYTwynwR28tvYShtSOROV0bZIz2DZDc8rx4N6Y9eUY21QkQ==","signatures":[{"sig":"MEUCIQCGY3R3DuVSFaLeo6E4onjZuSVl54d4AW6ICRgCkrF/yAIgP15sQQBaMtEfpfQ/5iNNP4hgvymsN2yBrOEwpm47njg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@cliftonz%2ftandoor-recipes-mcp@1.4.0-rc.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":419567},"main":"./build/index.js","type":"module","types":"./build/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"66bc34b4a83d0149a880a8ecb24b7423ca5c5b03","scripts":{"test":"vitest run","build":"tsc","watch":"tsc --watch","prepare":"npm run build","version":"node scripts/sync-plugin-version.js && git add .claude-plugin/plugin.json .claude-plugin/marketplace.json","test:e2e":"vitest run --config vitest.e2e.config.ts","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f8b033f2-a2da-41a1-b13d-840ccb36dc00"}},"repository":{"url":"git+https://github.com/Cliftonz/tandoor-recipe-mcp.git","type":"git"},"_npmVersion":"11.13.0","description":"Model Context Protocol server for Tandoor — recipes, meal plans, shopping lists, ingredients, cook logs, nutrition, AI import, and more.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"zod":"^4.4.3","jq-wasm":"1.1.0-jq-1.8.1","@modelcontextprotocol/sdk":"1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"dotenv":"^17.4.2","vitest":"^4.1.6","typescript":"6.0.3","@types/node":"^22.19.18"},"_npmOperationalInternal":{"tmp":"tmp/tandoor-recipes-mcp_1.4.0-rc.2_1781269751954_0.10303428430622041","host":"s3://npm-registry-packages-npm-production"}},"1.4.0-rc.3":{"name":"@cliftonz/tandoor-recipes-mcp","version":"1.4.0-rc.3","keywords":["mcp","model-context-protocol","tandoor","recipes","meal-planning","cooking","food","recipe-management","claude","anthropic"],"author":{"name":"Zac Clifton"},"license":"MIT","_id":"@cliftonz/tandoor-recipes-mcp@1.4.0-rc.3","maintainers":[{"name":"cliftonz","email":"zac16530@gmail.com"}],"homepage":"https://github.com/Cliftonz/tandoor-recipe-mcp#readme","bugs":{"url":"https://github.com/Cliftonz/tandoor-recipe-mcp/issues"},"bin":{"tandoor-recipes-mcp":"build/index.js"},"dist":{"shasum":"8972234e55a874e97d341e93aa94afe4441d90eb","tarball":"https://registry.npmjs.org/@cliftonz/tandoor-recipes-mcp/-/tandoor-recipes-mcp-1.4.0-rc.3.tgz","fileCount":108,"integrity":"sha512-JdBYTQt03G1tJ1Jszz1vKVdkpFj+Wv/U+Sak0ayKT1SYnvuDpCZs5RsZlGLlldRDu08xLH7lYDOYqFlIvQQm2Q==","signatures":[{"sig":"MEUCIF2uOOm+qwLmSUnx8q6eQwlnXzC1SlW8wu8sM+K3iqajAiEA9RN9bRKZXsPUkKSCoNvXIaoEBw7+mBhsVrwJC6bEJBk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@cliftonz%2ftandoor-recipes-mcp@1.4.0-rc.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":420081},"main":"./build/index.js","type":"module","types":"./build/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"d16d90b4636d72b9af91c79f94fe60a067995ca9","scripts":{"test":"vitest run","build":"tsc","watch":"tsc --watch","prepare":"npm run build","version":"node scripts/sync-plugin-version.js && git add .claude-plugin/plugin.json .claude-plugin/marketplace.json","test:e2e":"vitest run --config vitest.e2e.config.ts","test:watch":"vitest","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f8b033f2-a2da-41a1-b13d-840ccb36dc00"}},"repository":{"url":"git+https://github.com/Cliftonz/tandoor-recipe-mcp.git","type":"git"},"_npmVersion":"11.13.0","description":"Model Context Protocol server for Tandoor — recipes, meal plans, shopping lists, ingredients, cook logs, nutrition, AI import, and more.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"zod":"^4.4.3","jq-wasm":"1.1.0-jq-1.8.1","@modelcontextprotocol/sdk":"1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"dotenv":"^17.4.2","vitest":"^4.1.6","typescript":"6.0.3","@types/node":"^22.19.18"},"_npmOperationalInternal":{"tmp":"tmp/tandoor-recipes-mcp_1.4.0-rc.3_1781273138660_0.9290882982845037","host":"s3://npm-registry-packages-npm-production"}},"1.4.0-rc.4":{"name":"@cliftonz/tandoor-recipes-mcp","version":"1.4.0-rc.4","keywords":["mcp","model-context-protocol","tandoor","recipes","meal-planning","cooking","food","recipe-management","claude","anthropic"],"author":{"name":"Zac Clifton"},"license":"MIT","_id":"@cliftonz/tandoor-recipes-mcp@1.4.0-rc.4","maintainers":[{"name":"cliftonz","email":"zac16530@gmail.com"}],"homepage":"https://github.com/Cliftonz/tandoor-recipe-mcp#readme","bugs":{"url":"https://github.com/Cliftonz/tandoor-recipe-mcp/issues"},"bin":{"tandoor-recipes-mcp":"build/index.js"},"dist":{"shasum":"886ea3270da80dd926738e22b779f160c877ca5a","tarball":"https://registry.npmjs.org/@cliftonz/tandoor-recipes-mcp/-/tandoor-recipes-mcp-1.4.0-rc.4.tgz","fileCount":116,"integrity":"sha512-RlGBzkZwQLr0cxkpSM86ph4fbf3OaWE9jazjQBofEArd8s9jIZYCVoB88xn1RS1mRt4q5LkWw/vTwIIZmFw/9A==","signatures":[{"sig":"MEUCICxj+x+VujVqaciIv2W0V4WmZgnq3SFWRWVt+aXLJlv1AiEAhhfeL7Dh8DxNDHnl2IA1VxiBteiwvi4o3wnXltuEVZw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@cliftonz%2ftandoor-recipes-mcp@1.4.0-rc.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":461733},"main":"./build/index.js","type":"module","types":"./build/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"760eb6ab82ea53784e4997f1a5b735faaa98f671","scripts":{"test":"vitest run","build":"tsc","watch":"tsc --watch","prepare":"npm run build","test:ci":"cross-env CI=1 vitest run","version":"node scripts/sync-plugin-version.js && git add .claude-plugin/plugin.json .claude-plugin/marketplace.json","test:e2e":"vitest run --config vitest.e2e.config.ts","test:watch":"vitest","prepublishOnly":"npm run build && npm run test:ci"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f8b033f2-a2da-41a1-b13d-840ccb36dc00"}},"repository":{"url":"git+https://github.com/Cliftonz/tandoor-recipe-mcp.git","type":"git"},"_npmVersion":"11.13.0","description":"Model Context Protocol server for Tandoor — recipes, meal plans, shopping lists, ingredients, cook logs, nutrition, AI import, and more.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"zod":"^4.4.3","undici":"^8.5.0","jq-wasm":"1.1.0-jq-1.8.1","@modelcontextprotocol/sdk":"1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"yaml":"^2.9.0","dotenv":"^17.4.2","vitest":"^4.1.6","cross-env":"^10.1.0","typescript":"6.0.3","@types/node":"^22.19.18"},"_npmOperationalInternal":{"tmp":"tmp/tandoor-recipes-mcp_1.4.0-rc.4_1781617963335_0.45123521324425675","host":"s3://npm-registry-packages-npm-production"}},"1.4.0-rc.5":{"name":"@cliftonz/tandoor-recipes-mcp","version":"1.4.0-rc.5","keywords":["mcp","model-context-protocol","tandoor","recipes","meal-planning","cooking","food","recipe-management","claude","anthropic"],"author":{"name":"Zac Clifton"},"license":"MIT","_id":"@cliftonz/tandoor-recipes-mcp@1.4.0-rc.5","maintainers":[{"name":"cliftonz","email":"zac16530@gmail.com"}],"homepage":"https://github.com/Cliftonz/tandoor-recipe-mcp#readme","bugs":{"url":"https://github.com/Cliftonz/tandoor-recipe-mcp/issues"},"bin":{"tandoor-recipes-mcp":"build/index.js"},"dist":{"shasum":"b8f9f4f7bd5d661ec25ed9b6d6611f9637a761ec","tarball":"https://registry.npmjs.org/@cliftonz/tandoor-recipes-mcp/-/tandoor-recipes-mcp-1.4.0-rc.5.tgz","fileCount":120,"integrity":"sha512-d/eKq490eHdeND3n+ZJsP9tlbIA8jQIjXQGPnak0AQRMBweCHYsEtuyOuIbGgPcdZw42sH2/daGAp0m2UYT0JA==","signatures":[{"sig":"MEYCIQCbVqGgd/eYJUO0MS4gCtfsis8SQvvZGJqQ7G2Vcsk19wIhAOzfC3rxD6QpOz+1oxCri1E+OuJH9SimYSb79yIDUXWy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@cliftonz%2ftandoor-recipes-mcp@1.4.0-rc.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":481900},"main":"./build/index.js","type":"module","types":"./build/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"b2a64d53086b3f44c117f960e88b413da98fc05c","scripts":{"test":"vitest run","build":"tsc","watch":"tsc --watch","prepare":"npm run build","test:ci":"cross-env CI=1 vitest run","version":"node scripts/sync-plugin-version.js && git add .claude-plugin/plugin.json .claude-plugin/marketplace.json","test:e2e":"vitest run --config vitest.e2e.config.ts","test:watch":"vitest","prepublishOnly":"npm run build && npm run test:ci"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f8b033f2-a2da-41a1-b13d-840ccb36dc00"}},"repository":{"url":"git+https://github.com/Cliftonz/tandoor-recipe-mcp.git","type":"git"},"_npmVersion":"11.13.0","description":"Model Context Protocol server for Tandoor — recipes, meal plans, shopping lists, ingredients, cook logs, nutrition, AI import, and more.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"zod":"^4.4.3","undici":"^8.5.0","jq-wasm":"1.1.0-jq-1.8.1","@modelcontextprotocol/sdk":"1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"yaml":"^2.9.0","dotenv":"^17.4.2","vitest":"^4.1.6","cross-env":"^10.1.0","typescript":"6.0.3","@types/node":"^22.19.18"},"_npmOperationalInternal":{"tmp":"tmp/tandoor-recipes-mcp_1.4.0-rc.5_1781628360407_0.59549690767202","host":"s3://npm-registry-packages-npm-production"}},"1.4.0-rc.7":{"name":"@cliftonz/tandoor-recipes-mcp","version":"1.4.0-rc.7","keywords":["mcp","model-context-protocol","tandoor","recipes","meal-planning","cooking","food","recipe-management","claude","anthropic"],"author":{"name":"Zac Clifton"},"license":"MIT","_id":"@cliftonz/tandoor-recipes-mcp@1.4.0-rc.7","maintainers":[{"name":"cliftonz","email":"zac16530@gmail.com"}],"homepage":"https://github.com/Cliftonz/tandoor-recipe-mcp#readme","bugs":{"url":"https://github.com/Cliftonz/tandoor-recipe-mcp/issues"},"bin":{"tandoor-recipes-mcp":"build/index.js"},"dist":{"shasum":"ea37cddcecd61043d209266abfc2f76f2a97b6f5","tarball":"https://registry.npmjs.org/@cliftonz/tandoor-recipes-mcp/-/tandoor-recipes-mcp-1.4.0-rc.7.tgz","fileCount":120,"integrity":"sha512-XVsHIW0EzMT8zqduUEs+QtlmT+Z5Cc0U1Vt7L6ojgEDvkAVmfiW4dUhDmT4KnD4scHbbRMJ83wk/BwYgXIb6Xg==","signatures":[{"sig":"MEYCIQCaea5pcB1EFLkaMwCQOzKG5gGrz2zbP+vsoPPDHinMKAIhAOezqtKDEE0Wkvn2owte2ugaqAxLkdfIA3MxvBX86CG+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@cliftonz%2ftandoor-recipes-mcp@1.4.0-rc.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":481900},"main":"./build/index.js","type":"module","types":"./build/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"c7df355a0761c1663de290d6033efad9b6664195","scripts":{"test":"vitest run","build":"tsc","watch":"tsc --watch","prepare":"npm run build","test:ci":"cross-env CI=1 vitest run","version":"node scripts/sync-plugin-version.js && git add .claude-plugin/plugin.json .claude-plugin/marketplace.json","test:e2e":"vitest run --config vitest.e2e.config.ts","test:watch":"vitest","prepublishOnly":"npm run build && npm run test:ci"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:11d45d59-dc66-408c-bf4a-64a75d1b4df4"}},"repository":{"url":"git+https://github.com/Cliftonz/tandoor-recipe-mcp.git","type":"git"},"_npmVersion":"11.13.0","description":"Model Context Protocol server for Tandoor — recipes, meal plans, shopping lists, ingredients, cook logs, nutrition, AI import, and more.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"zod":"^4.4.3","undici":"^8.5.0","jq-wasm":"1.1.0-jq-1.8.1","@modelcontextprotocol/sdk":"1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"yaml":"^2.9.0","dotenv":"^17.4.2","vitest":"^4.1.6","cross-env":"^10.1.0","typescript":"6.0.3","@types/node":"^22.19.18"},"_npmOperationalInternal":{"tmp":"tmp/tandoor-recipes-mcp_1.4.0-rc.7_1781633611695_0.8299877298363201","host":"s3://npm-registry-packages-npm-production"}},"1.4.0-rc.8":{"name":"@cliftonz/tandoor-recipes-mcp","version":"1.4.0-rc.8","keywords":["mcp","model-context-protocol","tandoor","recipes","meal-planning","cooking","food","recipe-management","claude","anthropic"],"author":{"name":"Zac Clifton"},"license":"MIT","_id":"@cliftonz/tandoor-recipes-mcp@1.4.0-rc.8","maintainers":[{"name":"cliftonz","email":"zac16530@gmail.com"}],"homepage":"https://github.com/Cliftonz/tandoor-recipe-mcp#readme","bugs":{"url":"https://github.com/Cliftonz/tandoor-recipe-mcp/issues"},"bin":{"tandoor-recipes-mcp":"build/index.js"},"dist":{"shasum":"a72230e1b08f4586d2ea2c9f9b3519d76c4fca66","tarball":"https://registry.npmjs.org/@cliftonz/tandoor-recipes-mcp/-/tandoor-recipes-mcp-1.4.0-rc.8.tgz","fileCount":120,"integrity":"sha512-5u9E+KHM+CRzOQmFtNUuW+WEAtkyS8rF3lXifPyRq4ecI0tsIIyMon0mMalmDdcmaYbgG7jnizEYnZAFUxGf2Q==","signatures":[{"sig":"MEUCIQC2S131HAKwapX4dD7/qpAmDamuMoQjzQME5lg54UhC0QIgC5Vz2SC4R+1CEaW7mqLlXff9zrlzU8GTlj+pTPjU9oo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@cliftonz%2ftandoor-recipes-mcp@1.4.0-rc.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":482428},"main":"./build/index.js","type":"module","types":"./build/index.d.ts","engines":{"node":">=24.0.0"},"gitHead":"9ea34537059d23b716759ffaf6147d8883f37b47","scripts":{"test":"vitest run","build":"tsc","watch":"tsc --watch","prepare":"npm run build","test:ci":"cross-env CI=1 vitest run","version":"node scripts/sync-plugin-version.js && git add .claude-plugin/plugin.json .claude-plugin/marketplace.json","test:e2e":"vitest run --config vitest.e2e.config.ts","test:watch":"vitest","prepublishOnly":"npm run build && npm run test:ci"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:11d45d59-dc66-408c-bf4a-64a75d1b4df4"}},"repository":{"url":"git+https://github.com/Cliftonz/tandoor-recipe-mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"Model Context Protocol server for Tandoor — recipes, meal plans, shopping lists, ingredients, cook logs, nutrition, AI import, and more.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^4.4.3","undici":"^8.5.0","jq-wasm":"3.0.0-jq-1.8.2","@modelcontextprotocol/sdk":"1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"yaml":"^2.9.0","dotenv":"^17.4.2","vitest":"^4.1.6","cross-env":"^10.1.0","typescript":"7.0.2","@types/node":"^24.13.3"},"_npmOperationalInternal":{"tmp":"tmp/tandoor-recipes-mcp_1.4.0-rc.8_1784570385700_0.4134834568953871","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@cliftonz/tandoor-recipes-mcp","version":"1.4.0","keywords":["mcp","model-context-protocol","tandoor","recipes","meal-planning","cooking","food","recipe-management","claude","anthropic"],"author":{"name":"Zac Clifton"},"license":"MIT","_id":"@cliftonz/tandoor-recipes-mcp@1.4.0","maintainers":[{"name":"cliftonz","email":"zac16530@gmail.com"}],"homepage":"https://github.com/Cliftonz/tandoor-recipe-mcp#readme","bugs":{"url":"https://github.com/Cliftonz/tandoor-recipe-mcp/issues"},"bin":{"tandoor-recipes-mcp":"build/index.js"},"dist":{"shasum":"32adb2bf2e09e4e3d0a68898d365076fe92a13c2","tarball":"https://registry.npmjs.org/@cliftonz/tandoor-recipes-mcp/-/tandoor-recipes-mcp-1.4.0.tgz","fileCount":120,"integrity":"sha512-XjcMDGa0xhxflnSUTpxjb3pf1/Metfto43nKdkz3xwNXPLm23im1aB5SDJu29nOsgIubgyz5CGgdDn6BiduUHw==","signatures":[{"sig":"MEYCIQCGT7Wyb42BXIVtbfPGObYzTwnJ19R6/pEqOyWW5a37kQIhAJqwqXda7wL82rLV8BTUukWckUHjPZjXMlUU6bqfZWCw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@cliftonz%2ftandoor-recipes-mcp@1.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":487170},"main":"./build/index.js","type":"module","types":"./build/index.d.ts","engines":{"node":">=24.0.0"},"gitHead":"f58e7f6c5300389981778e861ff4314d158ea55a","scripts":{"test":"vitest run","build":"tsc","watch":"tsc --watch","prepare":"npm run build","test:ci":"cross-env CI=1 vitest run","version":"node scripts/sync-plugin-version.js && git add .claude-plugin/plugin.json .claude-plugin/marketplace.json","test:e2e":"vitest run --config vitest.e2e.config.ts","test:watch":"vitest","prepublishOnly":"npm run build && npm run test:ci"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:11d45d59-dc66-408c-bf4a-64a75d1b4df4"}},"repository":{"url":"git+https://github.com/Cliftonz/tandoor-recipe-mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"Model Context Protocol server for Tandoor — recipes, meal plans, shopping lists, ingredients, cook logs, nutrition, AI import, and more.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^4.4.3","undici":"^8.5.0","jq-wasm":"3.0.0-jq-1.8.2","@modelcontextprotocol/sdk":"1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"yaml":"^2.9.0","dotenv":"^17.4.2","vitest":"^4.1.6","cross-env":"^10.1.0","typescript":"7.0.2","@types/node":"^24.13.3"},"_npmOperationalInternal":{"tmp":"tmp/tandoor-recipes-mcp_1.4.0_1784681638348_0.9733593716737359","host":"s3://npm-registry-packages-npm-production"}},"1.5.2":{"name":"@cliftonz/tandoor-recipes-mcp","version":"1.5.2","keywords":["mcp","model-context-protocol","tandoor","recipes","meal-planning","cooking","food","recipe-management","claude","anthropic"],"author":{"name":"Zac Clifton"},"license":"MIT","_id":"@cliftonz/tandoor-recipes-mcp@1.5.2","maintainers":[{"name":"cliftonz","email":"zac16530@gmail.com"}],"homepage":"https://github.com/Cliftonz/tandoor-recipe-mcp#readme","bugs":{"url":"https://github.com/Cliftonz/tandoor-recipe-mcp/issues"},"bin":{"tandoor-recipes-mcp":"build/index.js"},"dist":{"shasum":"06e41c8a045f9566d87b20c43b572a10df9c120c","tarball":"https://registry.npmjs.org/@cliftonz/tandoor-recipes-mcp/-/tandoor-recipes-mcp-1.5.2.tgz","fileCount":190,"integrity":"sha512-ETLhtuaVP8F6CBSVTFYHA5mBEQ9EwjIsbvFxtenKBjUNSnDHQAncIFsgB6fiXpUVAJNxpqeWvQja2kdAt7olqA==","signatures":[{"sig":"MEQCIAjBsLMKCpChHdG3P7rK7aY2wuyhCiZEHRmkQA26anxnAiBI0v+g/jAx2gzA3qcaVnw1tQmN6yItugCEJvzatzlCJw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@cliftonz%2ftandoor-recipes-mcp@1.5.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":704065},"main":"./build/index.js","type":"module","types":"./build/index.d.ts","engines":{"node":">=24.0.0"},"gitHead":"fdccc28885d8d6678a95e7df25fd9f1cef8a72a8","scripts":{"test":"vitest run","build":"tsc","watch":"tsc --watch","prepare":"npm run build","test:ci":"cross-env CI=1 vitest run","version":"node scripts/sync-plugin-version.js && git add .claude-plugin/plugin.json .claude-plugin/marketplace.json","test:e2e":"vitest run --config vitest.e2e.config.ts","test:watch":"vitest","prepublishOnly":"npm run build && npm run test:ci"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:11d45d59-dc66-408c-bf4a-64a75d1b4df4"}},"repository":{"url":"git+https://github.com/Cliftonz/tandoor-recipe-mcp.git","type":"git"},"_npmVersion":"11.17.0","description":"Model Context Protocol server for Tandoor — recipes, meal plans, shopping lists, ingredients, cook logs, nutrition, AI import, and more.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"^4.4.3","undici":"^8.10.0","jq-wasm":"3.0.0-jq-1.8.2","@modelcontextprotocol/sdk":"1.30.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"yaml":"^2.9.0","dotenv":"^17.4.2","vitest":"^4.1.11","cross-env":"^10.1.0","typescript":"7.0.2","@types/node":"^26.2.0"},"_npmOperationalInternal":{"tmp":"tmp/tandoor-recipes-mcp_1.5.2_1787326944212_0.5099251995162755","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"@cliftonz/tandoor-recipes-mcp","version":"2.0.1","description":"Model Context Protocol server for Tandoor — recipes, meal plans, shopping lists, ingredients, cook logs, nutrition, AI import, and more.","type":"module","main":"./build/index.js","bin":{"tandoor-recipes-mcp":"build/index.js"},"scripts":{"build":"tsc","watch":"tsc --watch","test":"vitest run","test:ci":"cross-env CI=1 vitest run","test:watch":"vitest","test:e2e":"vitest run --config vitest.e2e.config.ts","prepare":"npm run build","prepublishOnly":"npm run build && npm run test:ci","version":"node scripts/sync-plugin-version.js && git add .claude-plugin/plugin.json .claude-plugin/marketplace.json"},"keywords":["mcp","model-context-protocol","tandoor","recipes","meal-planning","cooking","food","recipe-management","claude","anthropic"],"author":{"name":"Zac Clifton"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/Cliftonz/tandoor-recipe-mcp.git"},"bugs":{"url":"https://github.com/Cliftonz/tandoor-recipe-mcp/issues"},"homepage":"https://github.com/Cliftonz/tandoor-recipe-mcp#readme","publishConfig":{"access":"public"},"engines":{"node":">=24.0.0"},"dependencies":{"@modelcontextprotocol/sdk":"1.30.0","jq-wasm":"3.0.0-jq-1.8.2","undici":"^8.10.0","zod":"^4.4.3"},"devDependencies":{"@types/node":"^26.2.0","cross-env":"^10.1.0","dotenv":"^17.4.2","typescript":"7.0.2","vitest":"^4.1.11","yaml":"^2.9.0"},"gitHead":"bfacd25257ce2abbe73e6ebd15abcb60d41647cd","types":"./build/index.d.ts","_id":"@cliftonz/tandoor-recipes-mcp@2.0.1","_nodeVersion":"24.19.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-jl3y52isBF0GVnltgWPk35PMvZTfbCA++PSpm7UlIfwruJHwlrpHMrARMJ3ki87rrw053CB6FY5he6TCzXfvqA==","shasum":"ecf4ecbce6aaa5798600408c636acb18a3742f78","tarball":"https://registry.npmjs.org/@cliftonz/tandoor-recipes-mcp/-/tandoor-recipes-mcp-2.0.1.tgz","fileCount":190,"unpackedSize":707581,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@cliftonz%2ftandoor-recipes-mcp@2.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICQl1dj6Jdu0SaFWKl8LGPqs5nXBplVrf5FEKSFu7oZYAiA62dLUKuYohFjIqwOjt8KnPkTIKHDRgm+PjW4FKzDMoA=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:11d45d59-dc66-408c-bf4a-64a75d1b4df4"}},"directories":{},"maintainers":[{"name":"cliftonz","email":"zac16530@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/tandoor-recipes-mcp_2.0.1_1787335618864_0.9635421754918443"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-23T15:14:20.663Z","modified":"2026-08-21T18:06:59.353Z","1.2.1":"2026-04-23T15:14:20.960Z","1.2.4":"2026-04-23T15:32:10.602Z","1.2.5":"2026-04-23T19:17:54.880Z","1.2.6":"2026-04-24T00:35:14.896Z","1.2.7":"2026-04-24T19:07:57.365Z","1.3.0":"2026-04-24T19:36:03.757Z","1.4.0-rc.1":"2026-06-11T18:23:35.832Z","1.4.0-rc.2":"2026-06-12T13:09:12.100Z","1.4.0-rc.3":"2026-06-12T14:05:38.852Z","1.4.0-rc.4":"2026-06-16T13:52:43.528Z","1.4.0-rc.5":"2026-06-16T16:46:00.552Z","1.4.0-rc.7":"2026-06-16T18:13:31.831Z","1.4.0-rc.8":"2026-07-20T17:59:45.846Z","1.4.0":"2026-07-22T00:53:58.499Z","1.5.2":"2026-08-21T15:42:24.376Z","2.0.1":"2026-08-21T18:06:59.000Z"},"bugs":{"url":"https://github.com/Cliftonz/tandoor-recipe-mcp/issues"},"author":{"name":"Zac Clifton"},"license":"MIT","homepage":"https://github.com/Cliftonz/tandoor-recipe-mcp#readme","keywords":["mcp","model-context-protocol","tandoor","recipes","meal-planning","cooking","food","recipe-management","claude","anthropic"],"repository":{"type":"git","url":"git+https://github.com/Cliftonz/tandoor-recipe-mcp.git"},"description":"Model Context Protocol server for Tandoor — recipes, meal plans, shopping lists, ingredients, cook logs, nutrition, AI import, and more.","maintainers":[{"name":"cliftonz","email":"zac16530@gmail.com"}],"readme":"# Tandoor Recipes MCP\n\n[![npm version](https://img.shields.io/npm/v/@cliftonz/tandoor-recipes-mcp.svg)](https://www.npmjs.com/package/@cliftonz/tandoor-recipes-mcp)\n\nA Model Context Protocol (MCP) server that gives LLM agents full read/write access to a [Tandoor Recipes](https://tandoor.dev) instance: recipes, meal plans, ingredients, shopping lists, cook logs, nutrition, AI-powered URL/image imports, invite/access tokens, storages, sync, spaces, exports, imports, and more.\n\n> Turn \"plan the week and make me a grocery list\" into one prompt.\n\n## New in 1.5.0\n\n- **271 tools across 21 groups** (up from ~135 across 16 in 1.4.0). Coverage push against the Tandoor 2.3.6 OpenAPI.\n- **Stateless HTTP transport** via `TANDOOR_MCP_TRANSPORT=http`, loopback-only bind on `127.0.0.1:3737`, optional bearer auth. See [Transport modes](#transport-modes).\n- **33 tree-safety delete previews.** Preview the blast radius before every destructive call.\n- **Escalation-surface warnings** on every tool that mints tokens or grants access.\n- **Credential redaction on slim reads** for storages (`token`, `password`) and AI providers (`api_key`).\n- **New CRUD families:** meal-type, supermarket, invite-link, access-token, export, import queue, storage, sync, multi-space, AI-provider extend + step sort, housekeeping reads.\n- **Requires Tandoor server 2.3.6 or later.** See [Tandoor compatibility](#tandoor-compatibility).\n\n## Why this server\n\n- **Full Tandoor 2.3.6 API coverage.** 271 typed tools, spanning every domain the Tandoor OpenAPI exposes.\n- **Resources + prompts, not just tools.** Read-only subscribable resources like `tandoor://meal-plan/this-week` and `tandoor://pantry/on-hand`, plus ready-made prompts (`plan_week`, `grocery_list_for_plan`, `what_can_i_make_tonight`). Most Tandoor MCP forks ship tools only.\n- **Slim-by-default responses.** A full recipe GET shrinks from ~20k characters to ~2k by stripping substitute trees, readonly timestamps, image URLs, etc. Pass `format: \"full\"` anywhere for the raw Tandoor response.\n- **Dynamic tool gating.** ~25 core tools are visible at boot; the LLM enables the rest on demand via `enable_tool_group`. Cuts the boot-time context cost of loading every tool schema.\n- **jq stash for large payloads.** Responses larger than 5KB return a stash handle plus a schema summary; the LLM follows up with `jq_query` to project just the fields it needs.\n- **3-stage URL import with a real fallback.** Tries Tandoor's native scraper first, then extracts schema.org JSON-LD from the page directly (works when Tandoor can't reach the URL or doesn't support the site), with an optional stub-on-failure escape hatch.\n- **AI import from images / PDFs.** Multipart upload to Tandoor's `ai-import/` endpoint, saves the parsed recipe.\n- **Two transport modes.** Stdio (default, for Claude Desktop / Claude Code) or stateless HTTP (for out-of-Claude callers).\n- **Destructive-action safety layer.** Every tree-shaped delete has a `preview_*` sibling that projects the cascade before it runs; every token-mint tool leads with an ESCALATION SURFACE warning.\n\n## Install\n\n```bash\nnpm install -g @cliftonz/tandoor-recipes-mcp\n```\n\nOr `npx` without installing:\n\n```bash\nnpx -y @cliftonz/tandoor-recipes-mcp\n```\n\nNode 24 or later is required (see `engines.node` in `package.json`).\n\n## Configure\n\n1. In Tandoor: **Settings, API Tokens, Create new token**.\n2. Point your MCP client at the server.\n\n### Claude Code, one-shot plugin install\n\n```\n/plugin marketplace add Cliftonz/tandoor-recipe-mcp\n/plugin install tandoor-recipes-mcp@cliftonz-tandoor\n```\n\nClaude Code prompts you for `TANDOOR_URL` and `TANDOOR_TOKEN` on install and stores the token securely. No `mcpServers` JSON editing needed.\n\n### Claude Desktop / Claude Code, manual config\n\n```json\n{\n  \"mcpServers\": {\n    \"tandoor\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@cliftonz/tandoor-recipes-mcp\"],\n      \"env\": {\n        \"TANDOOR_URL\": \"https://your-tandoor-instance.com\",\n        \"TANDOOR_TOKEN\": \"your-api-token\"\n      }\n    }\n  }\n}\n```\n\n### Recommended Claude Code permissions\n\nThe repo ships a `.claude/settings.json` that auto-allows read tools and prompts for everything else. Copy these into your own project's `.claude/settings.json` to reduce permission friction:\n\n```json\n{\n  \"permissions\": {\n    \"allow\": [\n      \"mcp__tandoor__list_*\",\n      \"mcp__tandoor__get_*\",\n      \"mcp__tandoor__preview_*\"\n    ],\n    \"ask\": [\n      \"mcp__tandoor__create_*\",\n      \"mcp__tandoor__update_*\",\n      \"mcp__tandoor__delete_*\",\n      \"mcp__tandoor__merge_*\",\n      \"mcp__tandoor__switch_active_space\",\n      \"mcp__tandoor__create_access_token\",\n      \"mcp__tandoor__create_invite_link\"\n    ]\n  }\n}\n```\n\n## Transport modes\n\nThe server ships two transports. Default is `stdio`; opt in to HTTP with an env var.\n\n| Mode | When to use | Auth |\n|---|---|---|\n| `stdio` (default) | Claude Desktop, Claude Code, any MCP client that spawns the server as a subprocess. | Inherited from parent process. |\n| `http` (stateless) | Out-of-Claude callers, local scripts, other agents on the same host. | Optional bearer via `TANDOOR_MCP_HTTP_TOKEN`. |\n\n### HTTP mode\n\n```bash\nTANDOOR_URL=https://tandoor.example.com \\\nTANDOOR_TOKEN=... \\\nTANDOOR_MCP_TRANSPORT=http \\\nTANDOOR_MCP_HTTP_PORT=3737 \\\nTANDOOR_MCP_HTTP_TOKEN=some-long-random-string \\\nnpx -y @cliftonz/tandoor-recipes-mcp\n```\n\nThe server listens on `http://127.0.0.1:${TANDOOR_MCP_HTTP_PORT:-3737}/mcp` (POST for JSON-RPC requests, GET for the streaming session). The bind is loopback-only; expose it to another host only through an operator-managed reverse proxy.\n\nIf `TANDOOR_MCP_HTTP_TOKEN` is set, every request must include `Authorization: Bearer <token>`. Missing or wrong tokens get a 401 with `WWW-Authenticate: Bearer`.\n\n**HTTP-mode constraints:** the jq stash and dynamic tool gating both assume a single long-lived session. In HTTP mode both are auto-disabled: `enable_tool_group` and `disable_tool_group` throw, and every tool response is inlined rather than stashed. Use `TANDOOR_MCP_PROFILE=full` in HTTP mode to expose every tool at boot.\n\n## Environment variables\n\n| Var | Required | Default | Purpose |\n|---|---|---|---|\n| `TANDOOR_URL` | yes | none | Base URL of your Tandoor instance. |\n| `TANDOOR_TOKEN` | yes | none | API token with write access. |\n| `TANDOOR_MCP_TRANSPORT` | no | `stdio` | `stdio` or `http`. |\n| `TANDOOR_MCP_HTTP_PORT` | no | `3737` | HTTP-mode port. |\n| `TANDOOR_MCP_HTTP_TOKEN` | no | none | HTTP-mode bearer token. If unset, HTTP transport runs open (loopback-only, still). |\n| `TANDOOR_MCP_PROFILE` | no | `core` | `core` (default) exposes ~25 always-on tools plus the meta gating tools; `basic` skips admin/misc families entirely (legacy); `full` exposes every tool at boot. |\n| `TANDOOR_MCP_INCLUDE_ONLY` | no | none | Comma-separated allowlist (glob `*` supported). E.g. `list_*,get_*,create_meal_plan`. |\n| `TANDOOR_MCP_EXCLUDE` | no | none | Comma-separated denylist. E.g. `merge_*,delete_*` to hide destructive tools. |\n| `TANDOOR_MCP_LOG` | no | none | Stderr trace mode. `request`, `response`, `error`, `all`, or comma list. Bearer token redacted. |\n| `TANDOOR_MCP_STASH_ENABLED` | no | `1` | Park large tool results in an in-memory cache and return a `{stashed:true, handle, shape}` summary; the LLM calls `jq_query` to extract subsets. Set `0` to disable. Auto-disabled in HTTP mode. |\n| `TANDOOR_MCP_STASH_THRESHOLD` | no | `25000` | Stash payloads strictly larger than this many bytes. |\n| `TANDOOR_MCP_STASH_MAX_ENTRIES` | no | `32` | LRU cap on stashed handles. |\n| `TANDOOR_MCP_STASH_MAX_BYTES` | no | `32000000` | Total-bytes cap on the stash; LRU eviction kicks in past this budget. |\n| `TANDOOR_MCP_STASH_TTL_MS` | no | `600000` | Per-entry TTL in milliseconds (default 10 minutes). |\n\n`core` (default) is best for most stdio callers: the LLM sees a small tool list at boot and enables groups on demand. `INCLUDE_ONLY` and `EXCLUDE` compose on top of the profile for finer control (\"give me only read tools\" or \"hide destructive ops from this agent\").\n\n## Tandoor compatibility\n\n**Minimum:** Tandoor server 2.3.6.\n\nThe 1.5.0 tool surface targets the endpoints in the 2.3.6 OpenAPI spec (see `tandoor api specification.yaml`, `info.version` header). Older 2.x instances will 404 on the new tools; the pre-1.5.0 surface still works.\n\nTo check your instance version from an LLM session:\n\n```\n> Ask: what version of Tandoor am I connected to?\n> Claude calls: get_version\n> Returns: { mcp: \"1.5.0\", protocol: \"...\", tandoor: \"2.3.6\" }\n```\n\nThe server also probes `/api/version/` at boot and writes a WARNING to stderr if the connected instance is older than 2.x.\n\n## Migration from 1.4.0\n\n- **Stdio users:** nothing required. No breaking changes, no config edits.\n- **HTTP users:** opt in with `TANDOOR_MCP_TRANSPORT=http`. Set `TANDOOR_MCP_HTTP_TOKEN` and expect the jq stash + dynamic gating to be off (both are stdio-session assumptions).\n- **Anyone pinning `TANDOOR_MCP_PROFILE=basic`:** unchanged. `basic` still skips admin/misc entirely and now also skips every 1.5.0 group by definition; `core` is the better lever if you want smaller boot context but keep-on-demand access.\n\n## Tool matrix\n\n271 tools across 21 groups (including the synthetic `core` always-on group).\n\n| Group | Tools | Purpose |\n|---|---:|---|\n| `core` | 23 | Always-on: recipe/meal-plan/shopping/foods reads, `jq_query`, `get_version`, gating meta tools. |\n| `recipe-write` | 8 | Create / update / delete recipes, URL import, image upload, batch update. |\n| `mealplan-write` | 9 | Meal-plan writes + meal-type CRUD + auto-plan + bulk week create. |\n| `shopping-write` | 11 | Shopping entry CRUD + bulk check + shopping-list-recipe CRUD. |\n| `foods-write` | 8 | Food CRUD, merge/move, FDC lookup, batch update. |\n| `ingredients-write` | 4 | Ingredient CRUD (usually managed via recipes). |\n| `keywords` | 5 | Keyword CRUD + merge/move. |\n| `cooklog` | 5 | Cook-log entries: when and how often you made a recipe. |\n| `recipebook` | 9 | Recipe books (collections / cookbooks). |\n| `ai` | 7 | AI recipe import from image/PDF/text; AI provider CRUD; AI step sort. |\n| `steps` | 5 | Step-level CRUD inside a recipe. |\n| `units` | 17 | Unit CRUD + supermarket-category entities. |\n| `unit-conversions` | 5 | Unit conversion rules (cup to ml, etc). |\n| `properties` | 10 | Property types + values (nutrition labels, allergens). |\n| `custom-filters` | 5 | Saved custom recipe filters (Tandoor filter DSL). |\n| `admin` | 51 | Server settings, user prefs, automations, user files, view/import/AI logs, share/invite links, access tokens, storages, connectors, groups, users, syncs. |\n| `supermarket-write` | 5 | **New in 1.5.0.** Physical-store CRUD for aisle-ordering. |\n| `import-export` | 28 | **New in 1.5.0.** Export recipes, import queue (recipe-import, bookmarklet, open-data, FDC search, food-inherit), export logs. |\n| `multi-space` | 10 | **New in 1.5.0.** Space CRUD, user-space memberships, `switch_active_space` (DESTRUCTIVE). |\n| `tree-safety` | 33 | **New in 1.5.0.** Delete-preview tools (cascading / nulling / protecting) for tree-shaped resources. Call before `delete_*`. |\n| `housekeeping-read` | 13 | **New in 1.5.0.** Read-only: localization, groups, users, view-log CRUD (skip write), search prefs, recipe file metadata, meal-plan iCal. |\n\nFull tool lists per group are in `src/lib/tool-groups.ts`. From an active session, call `list_tool_groups` for a live listing.\n\n## Example conversations\n\n**Plan the week + generate a grocery list:**\n\n> You: \"Plan dinners for the week biased toward vegetarian recipes I've rated 4+, using what's on-hand where possible. Then give me the shopping list grouped by aisle.\"\n>\n> Claude:\n> 1. Reads `tandoor://pantry/on-hand` and `tandoor://meal-types`\n> 2. Calls `list_recipes({keywords_or: [<vegetarian>], rating_gte: 4, sort_order: '-rating'})`\n> 3. Calls `create_meal_plan` for each day of the week\n> 4. Calls `add_recipe_to_shopping_list` for each plan\n> 5. Reads `tandoor://shopping-list/active` and groups by supermarket category\n\n**Import a recipe from a URL and schedule it:**\n\n> You: \"Import https://example.com/lasagna and schedule it for Friday dinner, 4 servings.\"\n>\n> Claude:\n> 1. `import_recipe_from_url({url: \"...\"})`, JSON-LD extraction handles sites Tandoor doesn't know\n> 2. `create_meal_plan({recipe_id, meal_type_id: <Dinner>, from_date: \"2026-04-24\", servings: 4})`\n\n**Preview a destructive delete before running it:**\n\n> You: \"Delete the 'Test Keyword' keyword.\"\n>\n> Claude:\n> 1. `preview_keyword_delete_protecting({id: <k>})` to see what recipes still reference it\n> 2. If safe: `delete_keyword({id: <k>})`\n> 3. If not safe: reports the reference list back to you before proceeding\n\n## Destructive tools\n\nDestructive tools (`delete_*`, `merge_*`, `switch_active_space`, `create_access_token`, `create_invite_link`) are irreversible or expose escalation surface. Their descriptions instruct the model to:\n\n- **For deletes on tree-shaped resources**, call the matching `preview_*_delete_{cascading,nulling,protecting}` first.\n- **For merges**, verify `numrecipe` counts and base-unit compatibility first.\n- **For token / invite creation**, warn the user before generating the call. Every such description leads with an explicit ESCALATION SURFACE line.\n\nOperators who want them gone entirely can set `TANDOOR_MCP_EXCLUDE=\"delete_*,merge_*,switch_active_space,create_access_token,create_invite_link\"`. The permission config in [Recommended Claude Code permissions](#recommended-claude-code-permissions) makes Claude Code ask before any destructive call.\n\n## Gotchas\n\n### FDC lookups rate-limit after 30 requests/hour\n\n`food_fdc_lookup` delegates to Tandoor, which calls the USDA FoodData Central API. Out of the box Tandoor uses USDA's public `DEMO_KEY`, capped at **30 requests/hour per IP**. Bulk-enriching a grocery list hits that ceiling fast and you'll see 429s on Tandoor's side.\n\n**Fix (takes 2 minutes):**\n\n1. Register a free personal key at [api.data.gov/signup](https://api.data.gov/signup/); no approval needed, instant.\n2. Set it on the Tandoor container, **not** the MCP server:\n\n   ```yaml\n   # docker-compose.yml, under the tandoor service\n   environment:\n     - FDC_API_KEY=<your-key>\n   ```\n\n   Kubernetes / Helm: add `FDC_API_KEY` to the Tandoor deployment's env or a secret. Restart the Tandoor pod.\n\n3. The limit jumps to **1,000 requests/hour**; plenty for bulk enrichment.\n\nIf FDC returns 404 for a food, the `fdc_id` you passed doesn't exist in USDA's database; try `food_ai_properties` as a fallback (uses Tandoor's configured AI provider instead of USDA).\n\n## Resources\n\n| URI | Purpose |\n|---|---|\n| `tandoor://meal-plan/this-week` | Monday to Sunday meal plan entries, slimmed to `{id, date, meal_type, recipe_name, servings, note}` |\n| `tandoor://pantry/on-hand` | Foods flagged `food_onhand=true` |\n| `tandoor://shopping-list/active` | Unchecked, recent shopping entries |\n| `tandoor://meal-types` | Breakfast/Lunch/Dinner/etc. with IDs |\n\n## Prompts\n\n| Name | Purpose |\n|---|---|\n| `plan_week` | Plan 7 days of dinners, optionally pantry-biased and keyword-filtered |\n| `grocery_list_for_plan` | Turn this week's meal plan into a shopping list grouped by aisle |\n| `what_can_i_make_tonight` | Find makeable recipes at most N minutes from on-hand foods |\n| `import_and_plan` | Import a URL recipe and schedule it in one shot |\n\n## Development\n\n```bash\ngit clone https://github.com/Cliftonz/tandoor-recipe-mcp.git\ncd tandoor-recipe-mcp\nnpm install\nnpm run build\nnpm test\n```\n\nTests use Vitest and mock `fetch`; no live Tandoor instance needed for the default run.\n\n### End-to-end tests\n\nAn opt-in E2E suite exercises the full write path against a real Tandoor instance. **Run it only against a throwaway/isolated Tandoor space**; the suite creates and deletes real rows.\n\n```bash\nTANDOOR_URL=https://your-tandoor.example \\\nTANDOOR_TOKEN=... \\\nnpm run test:e2e\n```\n\n| Var | Effect |\n|---|---|\n| `TANDOOR_E2E_KEEP=1` | Skip cleanup; leave created resources for inspection |\n| `TANDOOR_E2E_SKIP_IMPORT=1` | Skip the URL-import step (offline runners) |\n| `TANDOOR_E2E_IMPORT_URL=<url>` | Override the default recipe URL |\n| `TANDOOR_E2E_AI_PROVIDER=<id>` | Run the AI-import step against this provider |\n\n## Security posture\n\nThis server treats the configured Tandoor instance as **trusted enough to read+write on your behalf**; you provide the bearer token. It does NOT treat the instance as fully trusted for content:\n\n- **Tool responses from `create_meal_plan` / `update_meal_plan` are slimmed.** Only ids and structural fields flow back to the LLM. User-visible names (`recipe.name`, `meal_type.name`, keyword names) are omitted so a hostile or compromised Tandoor instance can't inject model-steering text into Claude's context via these paths. Call `get_recipe` or `list_meal_types` if you need the human-readable form.\n- **Storage `token` / `password` and AI-provider `api_key` are redacted in slim reads.** `format: \"full\"` still surfaces them for operator inspection. Default (LLM-facing) responses never leak credentials into the model's context.\n- **Keyword payloads are capped at 50 entries and projected to `{id, name}`** before being forwarded into writes; stops amplification and mass-assignment exposure.\n- **Every mint-a-token / grant-access tool description leads with an ESCALATION SURFACE warning.** `create_access_token`, `update_access_token`, `create_invite_link`, `update_invite_link`, and `authenticate` all warn in-context that the returned token bypasses this MCP's own bearer redaction.\n- **Bearer tokens are redacted** from every error message and log line.\n- **HTTP transport binds loopback-only** (`127.0.0.1`) with optional bearer auth and stateless session handling. No per-connection state accumulates across requests.\n\nIf your Tandoor deployment is single-tenant and you own every recipe, the posture is conservative for your case. If you share a Tandoor instance with untrusted users, or run one exposed to the public internet with anonymous sharing, the hardening above matters.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}