{"_id":"@anton.andrusenko/shopify-mcp-admin","_rev":"29-faef1e06df5665a1b76a5fd50a588aaa","name":"@anton.andrusenko/shopify-mcp-admin","dist-tags":{"latest":"2.6.0"},"versions":{"0.1.0":{"name":"@anton.andrusenko/shopify-mcp-admin","version":"0.1.0","keywords":["shopify","mcp","model-context-protocol","ai","llm","ecommerce","claude","chatgpt","cursor","admin-api"],"author":{"name":"shopify-mcp-admin contributors"},"license":"MIT","_id":"@anton.andrusenko/shopify-mcp-admin@0.1.0","maintainers":[{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"}],"homepage":"https://github.com/AntonAndrusenko/shopify-mcp-admin#readme","bugs":{"url":"https://github.com/AntonAndrusenko/shopify-mcp-admin/issues"},"bin":{"shopify-mcp-admin":"dist/index.js"},"dist":{"shasum":"2a2a0a35ccc42b2c53ab52938c62594c16148bcb","tarball":"https://registry.npmjs.org/@anton.andrusenko/shopify-mcp-admin/-/shopify-mcp-admin-0.1.0.tgz","fileCount":5,"integrity":"sha512-bq1SLmXWg7DK52audEoboKSFG4ruwuW5k7eUtXZSA6xMP8dlMMLg1voYHDiQjVukviYrtTE48TIcD5l6b6ekVQ==","signatures":[{"sig":"MEYCIQDWs82jz9YzFb8lF+/Xs0v1kyt59zlB67YgHqvW4tzB8gIhAMRuvy9WSCOwhlk+GHQJ8zhUlr2X2u6YuqQEbi4aOrdt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":317383},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"71b17d4d933455e07aad5297a56449ca041d46c3","scripts":{"dev":"tsx src/index.ts","lint":"biome check src/","test":"vitest --run","build":"tsup src/index.ts --format esm --dts","start":"node dist/index.js","format":"biome format --write src/","lint:fix":"biome check --fix src/","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run lint && npm run typecheck && npm run test && npm run build","test:integration":"vitest run tests/integration/*.test.ts --testTimeout=60000"},"_npmUser":{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"},"repository":{"url":"git+https://github.com/AntonAndrusenko/shopify-mcp-admin.git","type":"git"},"_npmVersion":"11.6.0","description":"MCP server for Shopify Admin API - enables AI agents to manage Shopify stores with 40+ tools for products, inventory, collections, content, and SEO","directories":{},"sideEffects":false,"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.25.76","express":"^5.1.0","@shopify/shopify-api":"^11.14.1","@modelcontextprotocol/sdk":"^1.22.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","tsup":"^8.5.1","vitest":"^3.2.4","supertest":"^7.1.4","typescript":"^5.9.3","@types/node":"^22.19.1","@biomejs/biome":"^1.9.4","@types/express":"^5.0.5","@types/supertest":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/shopify-mcp-admin_0.1.0_1764254788275_0.6302079899877919","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@anton.andrusenko/shopify-mcp-admin","version":"0.2.0","keywords":["shopify","mcp","model-context-protocol","ai","llm","ecommerce","claude","chatgpt","cursor","admin-api"],"author":{"name":"shopify-mcp-admin contributors"},"license":"MIT","_id":"@anton.andrusenko/shopify-mcp-admin@0.2.0","maintainers":[{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"}],"homepage":"https://github.com/AntonAndrusenko/shopify-mcp-admin#readme","bugs":{"url":"https://github.com/AntonAndrusenko/shopify-mcp-admin/issues"},"bin":{"shopify-mcp-admin":"dist/index.js"},"dist":{"shasum":"0d4272558ca7482088141719ae0c9fcdf1035031","tarball":"https://registry.npmjs.org/@anton.andrusenko/shopify-mcp-admin/-/shopify-mcp-admin-0.2.0.tgz","fileCount":5,"integrity":"sha512-zbb+Bgm0IXBjS/a76NJpIuI7YxQFJp4E+321jajkGYY+MYW6xr8jmp7xija+gNs31gE9JsEeApRSyZpyFUbLag==","signatures":[{"sig":"MEUCIBV26G+55U5+UG0zVICKy+doY/akDuqBSa0959zkL8U6AiEAqKNO3+rTebcL0cWBtTOmyXSooTPfDFjiVnK5mZAJN4E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":329008},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"c252ee68c15999035a323cd00a2b7af10ac14197","scripts":{"dev":"tsx src/index.ts","lint":"biome check src/","test":"vitest --run","build":"tsup src/index.ts --format esm --dts","start":"node dist/index.js","format":"biome format --write src/","lint:fix":"biome check --fix src/","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run lint && npm run typecheck && npm run test && npm run build","test:integration":"vitest run tests/integration/*.test.ts --testTimeout=60000"},"_npmUser":{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"},"repository":{"url":"git+https://github.com/AntonAndrusenko/shopify-mcp-admin.git","type":"git"},"_npmVersion":"11.6.0","description":"MCP server for Shopify Admin API - enables AI agents to manage Shopify stores with 40+ tools for products, inventory, collections, content, and SEO","directories":{},"sideEffects":false,"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.25.76","express":"^5.1.0","@shopify/shopify-api":"^11.14.1","@modelcontextprotocol/sdk":"^1.22.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","tsup":"^8.5.1","vitest":"^3.2.4","supertest":"^7.1.4","typescript":"^5.9.3","@types/node":"^22.19.1","@biomejs/biome":"^1.9.4","@types/express":"^5.0.5","@types/supertest":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/shopify-mcp-admin_0.2.0_1764261405355_0.5994192409510448","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@anton.andrusenko/shopify-mcp-admin","version":"0.3.0","keywords":["shopify","mcp","model-context-protocol","ai","llm","ecommerce","claude","chatgpt","cursor","admin-api"],"author":{"name":"shopify-mcp-admin contributors"},"license":"MIT","_id":"@anton.andrusenko/shopify-mcp-admin@0.3.0","maintainers":[{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"}],"homepage":"https://github.com/AntonAndrusenko/shopify-mcp-admin#readme","bugs":{"url":"https://github.com/AntonAndrusenko/shopify-mcp-admin/issues"},"bin":{"shopify-mcp-admin":"dist/index.js"},"dist":{"shasum":"e1c21d6841545b85bf328549ab86725f50517947","tarball":"https://registry.npmjs.org/@anton.andrusenko/shopify-mcp-admin/-/shopify-mcp-admin-0.3.0.tgz","fileCount":5,"integrity":"sha512-ndiLt4nf+JtwssiZtT8Hg4ZlKiLeSYZWLRg4OkPxAirNvTenL7n4katNBbU14x7w1wbA/+uatEmREc69MUjNWg==","signatures":[{"sig":"MEUCIEXE/j1Gl4rqvwXDH2kustG6boYBINqZSByEwhOuV+kQAiEA7SQS4hvKsak2OKdkxnMsAIDsE+zVQ5mHRG2zWSw9bu8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":344453},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"20b159d121e4c006b55171286c994e354c99aabe","scripts":{"ci":"npm run lint && npm run typecheck && npm run test && npm run build","dev":"tsx src/index.ts","lint":"biome check src/","test":"vitest --run","build":"tsup src/index.ts --format esm --dts","start":"node dist/index.js","format":"biome format --write src/","inspect":"npx @modelcontextprotocol/inspector node dist/index.js","release":"npm run ci && npm publish --access public","lint:fix":"biome check --fix src/","typecheck":"tsc --noEmit","test:watch":"vitest","inspect:dev":"npx @modelcontextprotocol/inspector npx tsx src/index.ts","test:coverage":"vitest run --coverage","version:major":"npm version major --no-git-tag-version","version:minor":"npm version minor --no-git-tag-version","version:patch":"npm version patch --no-git-tag-version","inspect:config":"npx @modelcontextprotocol/inspector --config mcp-inspector.json","prepublishOnly":"npm run ci","test:integration":"vitest run tests/integration/*.test.ts --testTimeout=60000"},"_npmUser":{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"},"repository":{"url":"git+https://github.com/AntonAndrusenko/shopify-mcp-admin.git","type":"git"},"_npmVersion":"11.6.0","description":"MCP server for Shopify Admin API - enables AI agents to manage Shopify stores with 40+ tools for products, inventory, collections, content, and SEO","directories":{},"sideEffects":false,"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.25.76","express":"^5.1.0","@shopify/shopify-api":"^11.14.1","@modelcontextprotocol/sdk":"^1.22.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","tsup":"^8.5.1","vitest":"^3.2.4","supertest":"^7.1.4","typescript":"^5.9.3","@types/node":"^22.19.1","@biomejs/biome":"^1.9.4","@types/express":"^5.0.5","@types/supertest":"^6.0.3","@vitest/coverage-v8":"^3.2.4"},"_npmOperationalInternal":{"tmp":"tmp/shopify-mcp-admin_0.3.0_1764333848395_0.7586890571364151","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@anton.andrusenko/shopify-mcp-admin","version":"0.4.0","keywords":["shopify","mcp","model-context-protocol","ai","llm","ecommerce","claude","chatgpt","cursor","admin-api"],"author":{"name":"shopify-mcp-admin contributors"},"license":"MIT","_id":"@anton.andrusenko/shopify-mcp-admin@0.4.0","maintainers":[{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"}],"homepage":"https://github.com/AntonAndrusenko/shopify-mcp-admin#readme","bugs":{"url":"https://github.com/AntonAndrusenko/shopify-mcp-admin/issues"},"bin":{"shopify-mcp-admin":"dist/index.js"},"dist":{"shasum":"799f33ec4fbc976bf86bd5e09a5c45f10da90c52","tarball":"https://registry.npmjs.org/@anton.andrusenko/shopify-mcp-admin/-/shopify-mcp-admin-0.4.0.tgz","fileCount":5,"integrity":"sha512-hXDwjzCkGCTH5rS7IqTfDcfBOuAy9QNMSowAnfhhHnjc+B2Na50uWx4jJ+o5KdTaZL80rgJznCSjjBEfBjeZtA==","signatures":[{"sig":"MEYCIQDrv9mRvhI0ZP5VUoJbunHo+OOS6/2Oknel/dYWTsse/wIhALA4sGv5M2LD+lH6bY2sDOMwkkdd0Fs4xMzeGA2YpUC9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":365904},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"8b8716185d2d7fedcaf8fafb9f6a47f3ec6a8ac6","scripts":{"ci":"npm run lint && npm run typecheck && npm run test && npm run build","dev":"tsx src/index.ts","lint":"biome check src/","test":"vitest --run","build":"tsup src/index.ts --format esm --dts","start":"node dist/index.js","format":"biome format --write src/","inspect":"npx @modelcontextprotocol/inspector node dist/index.js","release":"npm run ci && npm publish --access public","lint:fix":"biome check --fix src/","typecheck":"tsc --noEmit","test:watch":"vitest","inspect:dev":"npx @modelcontextprotocol/inspector npx tsx src/index.ts","test:coverage":"vitest run --coverage","version:major":"npm version major --no-git-tag-version","version:minor":"npm version minor --no-git-tag-version","version:patch":"npm version patch --no-git-tag-version","inspect:config":"npx @modelcontextprotocol/inspector --config mcp-inspector.json","prepublishOnly":"npm run ci","test:integration":"vitest run tests/integration/*.test.ts --testTimeout=60000"},"_npmUser":{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"},"repository":{"url":"git+https://github.com/AntonAndrusenko/shopify-mcp-admin.git","type":"git"},"_npmVersion":"11.6.0","description":"MCP server for Shopify Admin API - enables AI agents to manage Shopify stores with 40+ tools for products, inventory, collections, content, and SEO","directories":{},"sideEffects":false,"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.25.76","express":"^5.1.0","@shopify/shopify-api":"^11.14.1","@modelcontextprotocol/sdk":"^1.22.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","tsup":"^8.5.1","vitest":"^3.2.4","supertest":"^7.1.4","typescript":"^5.9.3","@types/node":"^22.19.1","@biomejs/biome":"^1.9.4","@types/express":"^5.0.5","@types/supertest":"^6.0.3","@vitest/coverage-v8":"^3.2.4"},"_npmOperationalInternal":{"tmp":"tmp/shopify-mcp-admin_0.4.0_1764341217261_0.021319803966030282","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@anton.andrusenko/shopify-mcp-admin","version":"0.4.1","keywords":["shopify","mcp","model-context-protocol","ai","llm","ecommerce","claude","chatgpt","cursor","admin-api"],"author":{"name":"shopify-mcp-admin contributors"},"license":"MIT","_id":"@anton.andrusenko/shopify-mcp-admin@0.4.1","maintainers":[{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"}],"homepage":"https://github.com/AntonAndrusenko/shopify-mcp-admin#readme","bugs":{"url":"https://github.com/AntonAndrusenko/shopify-mcp-admin/issues"},"bin":{"shopify-mcp-admin":"dist/index.js"},"dist":{"shasum":"1a2d20a2d88e4e7ff425328dd9f29a2eb6f503a2","tarball":"https://registry.npmjs.org/@anton.andrusenko/shopify-mcp-admin/-/shopify-mcp-admin-0.4.1.tgz","fileCount":5,"integrity":"sha512-L1SEYJUOwlcTje08H5NFSm4kffSbOwgp0rdTYaAGYIYCSnvz1E5Jpn0XT1N1ozex5G8ho6nCi/LqGWeyPuJYJw==","signatures":[{"sig":"MEQCIH2VuUN95qbOPyy2f+JFxNnpbpdDFgitdXbS9oqdmeOLAiAhONPNHTasYW98kK37gtCdmyxfUwdUEh8vWnTkgqNxZQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":366432},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"d33077e7ac65a5d918fb6503820e6f654073d925","scripts":{"ci":"npm run lint && npm run typecheck && npm run test && npm run build","dev":"tsx src/index.ts","lint":"biome check src/","test":"vitest --run","build":"tsup src/index.ts --format esm --dts","start":"node dist/index.js","format":"biome format --write src/","inspect":"npx @modelcontextprotocol/inspector node dist/index.js","release":"npm run ci && npm publish --access public","lint:fix":"biome check --fix src/","typecheck":"tsc --noEmit","test:watch":"vitest","inspect:dev":"npx @modelcontextprotocol/inspector npx tsx src/index.ts","test:coverage":"vitest run --coverage","version:major":"npm version major --no-git-tag-version","version:minor":"npm version minor --no-git-tag-version","version:patch":"npm version patch --no-git-tag-version","inspect:config":"npx @modelcontextprotocol/inspector --config mcp-inspector.json","prepublishOnly":"npm run ci","test:integration":"vitest run tests/integration/*.test.ts --testTimeout=60000"},"_npmUser":{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"},"repository":{"url":"git+https://github.com/AntonAndrusenko/shopify-mcp-admin.git","type":"git"},"_npmVersion":"11.6.0","description":"MCP server for Shopify Admin API - enables AI agents to manage Shopify stores with 40+ tools for products, inventory, collections, content, and SEO","directories":{},"sideEffects":false,"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.25.76","express":"^5.1.0","@shopify/shopify-api":"^11.14.1","@modelcontextprotocol/sdk":"^1.22.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","tsup":"^8.5.1","vitest":"^3.2.4","supertest":"^7.1.4","typescript":"^5.9.3","@types/node":"^22.19.1","@biomejs/biome":"^1.9.4","@types/express":"^5.0.5","@types/supertest":"^6.0.3","@vitest/coverage-v8":"^3.2.4"},"_npmOperationalInternal":{"tmp":"tmp/shopify-mcp-admin_0.4.1_1764341985364_0.729973581145579","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@anton.andrusenko/shopify-mcp-admin","version":"0.5.0","keywords":["shopify","mcp","model-context-protocol","ai","llm","ecommerce","claude","chatgpt","cursor","admin-api"],"author":{"name":"shopify-mcp-admin contributors"},"license":"MIT","_id":"@anton.andrusenko/shopify-mcp-admin@0.5.0","maintainers":[{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"}],"homepage":"https://github.com/AntonAndrusenko/shopify-mcp-admin#readme","bugs":{"url":"https://github.com/AntonAndrusenko/shopify-mcp-admin/issues"},"bin":{"shopify-mcp-admin":"dist/index.js"},"dist":{"shasum":"85f29c62e7a4e5f7affe1341e6b32c202937c48a","tarball":"https://registry.npmjs.org/@anton.andrusenko/shopify-mcp-admin/-/shopify-mcp-admin-0.5.0.tgz","fileCount":5,"integrity":"sha512-VrzB6C0wfragDbiUBo6fjcAbxVa59TB81Ii+aP9iFZZPEEqW/s+qBcXiQEeb2GBooOoaKOgz4sGdYnK4+FGStQ==","signatures":[{"sig":"MEUCIQDvugpJ+FlmkIuoXDAPm2V57aDf8/8Th+GucER+vC+jLgIgDYiVcyk1ZtvTKje9otLfO6lErpCEEeVU5WKOhWLccYA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":416705},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"16eb41dd615a229a1ee51d63e126014a91c2cbfb","scripts":{"ci":"npm run lint && npm run typecheck && npm run test && npm run build","dev":"tsx src/index.ts","lint":"biome check src/","test":"vitest --run","build":"tsup src/index.ts --format esm --dts","start":"node dist/index.js","format":"biome format --write src/","inspect":"npx @modelcontextprotocol/inspector node dist/index.js","release":"npm run ci && npm publish --access public","lint:fix":"biome check --fix src/","typecheck":"tsc --noEmit","test:watch":"vitest","inspect:dev":"npx @modelcontextprotocol/inspector npx tsx src/index.ts","test:coverage":"vitest run --coverage","version:major":"npm version major --no-git-tag-version","version:minor":"npm version minor --no-git-tag-version","version:patch":"npm version patch --no-git-tag-version","inspect:config":"npx @modelcontextprotocol/inspector --config mcp-inspector.json","prepublishOnly":"npm run ci","test:integration":"vitest run tests/integration/*.test.ts --testTimeout=60000"},"_npmUser":{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"},"repository":{"url":"git+https://github.com/AntonAndrusenko/shopify-mcp-admin.git","type":"git"},"_npmVersion":"11.6.0","description":"MCP server for Shopify Admin API - enables AI agents to manage Shopify stores with 54 tools for products, inventory, collections, content, SEO, markets & translations","directories":{},"sideEffects":false,"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.25.76","express":"^5.1.0","@shopify/shopify-api":"^11.14.1","@modelcontextprotocol/sdk":"^1.22.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","tsup":"^8.5.1","vitest":"^3.2.4","supertest":"^7.1.4","typescript":"^5.9.3","@types/node":"^22.19.1","@biomejs/biome":"^1.9.4","@types/express":"^5.0.5","@types/supertest":"^6.0.3","@vitest/coverage-v8":"^3.2.4"},"_npmOperationalInternal":{"tmp":"tmp/shopify-mcp-admin_0.5.0_1764350089353_0.8194401014251673","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@anton.andrusenko/shopify-mcp-admin","version":"0.6.0","keywords":["shopify","mcp","model-context-protocol","ai","llm","ecommerce","claude","chatgpt","cursor","admin-api"],"author":{"name":"shopify-mcp-admin contributors"},"license":"MIT","_id":"@anton.andrusenko/shopify-mcp-admin@0.6.0","maintainers":[{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"}],"homepage":"https://github.com/AntonAndrusenko/shopify-mcp-admin#readme","bugs":{"url":"https://github.com/AntonAndrusenko/shopify-mcp-admin/issues"},"bin":{"shopify-mcp-admin":"dist/index.js"},"dist":{"shasum":"d7edd6de57aab6f8b04c5180b5e702e61e4562b9","tarball":"https://registry.npmjs.org/@anton.andrusenko/shopify-mcp-admin/-/shopify-mcp-admin-0.6.0.tgz","fileCount":5,"integrity":"sha512-DNa4SINoGUwsRbMgvsEV1SjhfYNAA9P/vWDxVTQ0OUqCcp12eO5hNgMacH2eNcAwFxNy/NVs3gy2Ue3P3lywTQ==","signatures":[{"sig":"MEUCIQDZTH/S/9I4of21vOWncjKYXNrUZeDfmRuVO3HBiDDr0wIgIzAtTN28U31iNB31nlWVaB5k6WCXVo7FzZUrrG1O2Pw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":499727},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"3788f1a5e296de3f6a64975fa11e1c46440b0d8f","scripts":{"ci":"npm run lint && npm run typecheck && npm run test && npm run build","dev":"tsx src/index.ts","lint":"biome check src/","test":"vitest --run","build":"tsup src/index.ts --format esm --dts","start":"node dist/index.js","format":"biome format --write src/","inspect":"npx @modelcontextprotocol/inspector node dist/index.js","release":"npm run ci && npm publish --access public","lint:fix":"biome check --fix src/","typecheck":"tsc --noEmit","test:watch":"vitest","inspect:dev":"npx @modelcontextprotocol/inspector npx tsx src/index.ts","test:coverage":"vitest run --coverage","version:major":"npm version major --no-git-tag-version","version:minor":"npm version minor --no-git-tag-version","version:patch":"npm version patch --no-git-tag-version","inspect:config":"npx @modelcontextprotocol/inspector --config mcp-inspector.json","prepublishOnly":"npm run ci","test:integration":"vitest run tests/integration/*.test.ts --testTimeout=60000"},"_npmUser":{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"},"repository":{"url":"git+https://github.com/AntonAndrusenko/shopify-mcp-admin.git","type":"git"},"_npmVersion":"11.6.0","description":"MCP server for Shopify Admin API - enables AI agents to manage Shopify stores with 70 tools for products, inventory, collections, content, SEO, metafields, markets & translations","directories":{},"sideEffects":false,"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.25.76","express":"^5.1.0","@shopify/shopify-api":"^11.14.1","@modelcontextprotocol/sdk":"^1.22.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","tsup":"^8.5.1","vitest":"^3.2.4","supertest":"^7.1.4","typescript":"^5.9.3","@types/node":"^22.19.1","@biomejs/biome":"^1.9.4","@types/express":"^5.0.5","@types/supertest":"^6.0.3","@vitest/coverage-v8":"^3.2.4"},"_npmOperationalInternal":{"tmp":"tmp/shopify-mcp-admin_0.6.0_1764439858995_0.10445656738935583","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@anton.andrusenko/shopify-mcp-admin","version":"0.7.0","keywords":["shopify","mcp","model-context-protocol","ai","llm","ecommerce","claude","chatgpt","cursor","admin-api"],"author":{"name":"shopify-mcp-admin contributors"},"license":"MIT","_id":"@anton.andrusenko/shopify-mcp-admin@0.7.0","maintainers":[{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"}],"homepage":"https://github.com/AntonAndrusenko/shopify-mcp-admin#readme","bugs":{"url":"https://github.com/AntonAndrusenko/shopify-mcp-admin/issues"},"bin":{"shopify-mcp-admin":"dist/index.js"},"dist":{"shasum":"c3ee3ca46898e1121b8ba3d90fc67f0d33d1d94b","tarball":"https://registry.npmjs.org/@anton.andrusenko/shopify-mcp-admin/-/shopify-mcp-admin-0.7.0.tgz","fileCount":5,"integrity":"sha512-LULUEofY0N4ur9rPTtS3aWgZTM6Cmqm1kauyw5A2b4yPYmdbYXvmO2IwxSwCPF2r75ceg3R34dutJDcMftWXug==","signatures":[{"sig":"MEYCIQDYFaj42DGdmLMuVShim4PhqPhHYPgN85fr66kTfFJv5wIhAJYvI5pMZV4SSOA4U+m2BmojMlFbt+PD6rzadZxnUvUT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":504735},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"72e96c17a331623dcaf06b61f5d23c52d512a716","scripts":{"ci":"npm run lint && npm run typecheck && npm run test && npm run build","dev":"tsx src/index.ts","lint":"biome check src/","test":"vitest --run","build":"tsup src/index.ts --format esm --dts","start":"node dist/index.js","format":"biome format --write src/","inspect":"npx @modelcontextprotocol/inspector node dist/index.js","release":"npm run ci && npm publish --access public","lint:fix":"biome check --fix src/","typecheck":"tsc --noEmit","test:watch":"vitest","inspect:dev":"npx @modelcontextprotocol/inspector npx tsx src/index.ts","test:coverage":"vitest run --coverage","version:major":"npm version major --no-git-tag-version","version:minor":"npm version minor --no-git-tag-version","version:patch":"npm version patch --no-git-tag-version","inspect:config":"npx @modelcontextprotocol/inspector --config mcp-inspector.json","prepublishOnly":"npm run ci","test:integration":"vitest run tests/integration/*.test.ts --testTimeout=60000"},"_npmUser":{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"},"repository":{"url":"git+https://github.com/AntonAndrusenko/shopify-mcp-admin.git","type":"git"},"_npmVersion":"11.6.0","description":"MCP server for Shopify Admin API - enables AI agents to manage Shopify stores with 71 tools for products, inventory, collections, content, SEO, metafields, markets & translations","directories":{},"sideEffects":false,"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.25.76","express":"^5.1.0","@shopify/shopify-api":"^11.14.1","@modelcontextprotocol/sdk":"^1.22.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","tsup":"^8.5.1","vitest":"^3.2.4","supertest":"^7.1.4","typescript":"^5.9.3","@types/node":"^22.19.1","@biomejs/biome":"^1.9.4","@types/express":"^5.0.5","@types/supertest":"^6.0.3","@vitest/coverage-v8":"^3.2.4"},"_npmOperationalInternal":{"tmp":"tmp/shopify-mcp-admin_0.7.0_1764448346553_0.5356872957912857","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@anton.andrusenko/shopify-mcp-admin","version":"0.8.0","keywords":["shopify","mcp","model-context-protocol","ai","llm","ecommerce","claude","chatgpt","cursor","admin-api"],"author":{"name":"shopify-mcp-admin contributors"},"license":"MIT","_id":"@anton.andrusenko/shopify-mcp-admin@0.8.0","maintainers":[{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"}],"homepage":"https://github.com/AntonAndrusenko/shopify-mcp-admin#readme","bugs":{"url":"https://github.com/AntonAndrusenko/shopify-mcp-admin/issues"},"bin":{"shopify-mcp-admin":"dist/index.js"},"dist":{"shasum":"f47b09f994d74379ed43c80037965156d0d6dcf3","tarball":"https://registry.npmjs.org/@anton.andrusenko/shopify-mcp-admin/-/shopify-mcp-admin-0.8.0.tgz","fileCount":5,"integrity":"sha512-XwOGq0oTMvrw/VHpS5SeisI/QIm58m6ttuxIEBZPZ44MAaoPnXx9dobXN6T6Vdg6PUeHP1pmhPF+AVACo01t0g==","signatures":[{"sig":"MEQCIASxmUn3WsJ3FNvcca4SJIyXrP7Ivs87EDkSK7w7eCDCAiBf+giiDemTdxvhAFZ/HWsYiSoYCdR5UCUUwr8NUYgAXg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":539359},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"d19c28bd95d0a5c05422dceb3d6482e5e9ee1194","scripts":{"ci":"npm run lint && npm run typecheck && npm run test && npm run build","dev":"tsx src/index.ts","lint":"biome check src/","test":"vitest --run","build":"tsup src/index.ts --format esm --dts","start":"node dist/index.js","format":"biome format --write src/","inspect":"npx @modelcontextprotocol/inspector node dist/index.js","release":"npm run ci && npm publish --access public","lint:fix":"biome check --fix src/","typecheck":"tsc --noEmit","test:watch":"vitest","inspect:dev":"npx @modelcontextprotocol/inspector npx tsx src/index.ts","test:coverage":"vitest run --coverage","version:major":"npm version major --no-git-tag-version","version:minor":"npm version minor --no-git-tag-version","version:patch":"npm version patch --no-git-tag-version","inspect:config":"npx @modelcontextprotocol/inspector --config mcp-inspector.json","prepublishOnly":"npm run ci","test:integration":"vitest run tests/integration/*.test.ts --testTimeout=60000"},"_npmUser":{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"},"repository":{"url":"git+https://github.com/AntonAndrusenko/shopify-mcp-admin.git","type":"git"},"_npmVersion":"11.6.0","description":"MCP server for Shopify Admin API - enables AI agents to manage Shopify stores with 71 tools for products, inventory, collections, content, SEO, metafields, markets & translations","directories":{},"sideEffects":false,"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.25.76","express":"^5.1.0","@shopify/shopify-api":"^11.14.1","@modelcontextprotocol/sdk":"^1.22.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","tsup":"^8.5.1","vitest":"^3.2.4","supertest":"^7.1.4","typescript":"^5.9.3","@types/node":"^22.19.1","@biomejs/biome":"^1.9.4","@types/express":"^5.0.5","@types/supertest":"^6.0.3","@vitest/coverage-v8":"^3.2.4"},"_npmOperationalInternal":{"tmp":"tmp/shopify-mcp-admin_0.8.0_1764529697820_0.6862746833663338","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@anton.andrusenko/shopify-mcp-admin","version":"1.0.0","keywords":["shopify","mcp","model-context-protocol","ai","llm","ecommerce","claude","chatgpt","cursor","admin-api"],"author":{"name":"shopify-mcp-admin contributors"},"license":"MIT","_id":"@anton.andrusenko/shopify-mcp-admin@1.0.0","maintainers":[{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"}],"homepage":"https://github.com/AntonAndrusenko/shopify-mcp-admin#readme","bugs":{"url":"https://github.com/AntonAndrusenko/shopify-mcp-admin/issues"},"bin":{"shopify-mcp-admin":"dist/index.js"},"dist":{"shasum":"82a6438f0a27f6ff1f4e0c33961aac1eeafb3f9b","tarball":"https://registry.npmjs.org/@anton.andrusenko/shopify-mcp-admin/-/shopify-mcp-admin-1.0.0.tgz","fileCount":5,"integrity":"sha512-KyD5w5eEQy7MAag0bcl72fFtN3/OIIN0Jkwhi4jYIUStQydiab49yoEo2QarrhcZJHHxYyj+WZyQsu89GXPzuA==","signatures":[{"sig":"MEUCIQDEqgCTlFgNT0bHZinmF7YduuAvpHQAOo+gkPecpLCOeQIgQWf5kiZT/UHmD2qT4YkZE47JpnYWrUNHIONAsXkvGcc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":578736},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"bed8262456642ed19a02f561c9dd22576399dfb1","scripts":{"ci":"npm run lint && npm run typecheck && npm run test && npm run build","dev":"tsx src/index.ts","lint":"biome check src/","test":"vitest --run","build":"tsup src/index.ts --format esm --dts","start":"node dist/index.js","format":"biome format --write src/","inspect":"npx @modelcontextprotocol/inspector node dist/index.js","release":"npm run ci && npm publish --access public","lint:fix":"biome check --fix src/","typecheck":"tsc --noEmit","test:watch":"vitest","inspect:dev":"npx @modelcontextprotocol/inspector npx tsx src/index.ts","test:coverage":"vitest run --coverage","version:major":"npm version major --no-git-tag-version","version:minor":"npm version minor --no-git-tag-version","version:patch":"npm version patch --no-git-tag-version","inspect:config":"npx @modelcontextprotocol/inspector --config mcp-inspector.json","prepublishOnly":"npm run ci","test:integration":"vitest run tests/integration/*.test.ts --testTimeout=60000"},"_npmUser":{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"},"repository":{"url":"git+https://github.com/AntonAndrusenko/shopify-mcp-admin.git","type":"git"},"_npmVersion":"11.6.0","description":"MCP server for Shopify Admin API - enables AI agents to manage Shopify stores with 71 tools for products, inventory, collections, content, SEO, metafields, markets & translations","directories":{},"sideEffects":false,"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.25.76","express":"^5.1.0","@shopify/shopify-api":"^11.14.1","@modelcontextprotocol/sdk":"^1.22.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","tsup":"^8.5.1","vitest":"^3.2.4","supertest":"^7.1.4","typescript":"^5.9.3","@types/node":"^22.19.1","@biomejs/biome":"^1.9.4","@types/express":"^5.0.5","@types/supertest":"^6.0.3","@vitest/coverage-v8":"^3.2.4"},"_npmOperationalInternal":{"tmp":"tmp/shopify-mcp-admin_1.0.0_1764544639956_0.059612439840820874","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@anton.andrusenko/shopify-mcp-admin","version":"1.0.1","keywords":["shopify","mcp","model-context-protocol","ai","llm","ecommerce","claude","chatgpt","cursor","admin-api"],"author":{"name":"shopify-mcp-admin contributors"},"license":"MIT","_id":"@anton.andrusenko/shopify-mcp-admin@1.0.1","maintainers":[{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"}],"homepage":"https://github.com/AntonAndrusenko/shopify-mcp-admin#readme","bugs":{"url":"https://github.com/AntonAndrusenko/shopify-mcp-admin/issues"},"bin":{"shopify-mcp-admin":"dist/index.js"},"dist":{"shasum":"e0e9b6230201b02ad5fc2d5da5f7ff17297670f1","tarball":"https://registry.npmjs.org/@anton.andrusenko/shopify-mcp-admin/-/shopify-mcp-admin-1.0.1.tgz","fileCount":5,"integrity":"sha512-g63/jaOw3T7tnUYbOVdW5D8r0eB8xSCjlJHyrCrHkMwlnUmOrK5u9KhxamecK5jIhUNFQO3jvLLwoWau73oi8Q==","signatures":[{"sig":"MEQCIByxi4rLVYcCyIjMF2v+pxzWDKy+H+bgeLZgydDm7BEfAiBYAtEESTVceb0NrZzaa1bBkFc5DzbVn1IC0/gWr3CP1Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":579097},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"6c3b041f76caeb4020331cd3d1aa72fc31056bd5","scripts":{"ci":"npm run lint && npm run typecheck && npm run test && npm run build","dev":"tsx src/index.ts","lint":"biome check src/","test":"vitest --run","build":"tsup src/index.ts --format esm --dts","start":"node dist/index.js","format":"biome format --write src/","inspect":"npx @modelcontextprotocol/inspector node dist/index.js","release":"npm run ci && npm publish --access public","lint:fix":"biome check --fix src/","typecheck":"tsc --noEmit","test:watch":"vitest","inspect:dev":"npx @modelcontextprotocol/inspector npx tsx src/index.ts","test:coverage":"vitest run --coverage","version:major":"npm version major --no-git-tag-version","version:minor":"npm version minor --no-git-tag-version","version:patch":"npm version patch --no-git-tag-version","inspect:config":"npx @modelcontextprotocol/inspector --config mcp-inspector.json","prepublishOnly":"npm run ci","test:integration":"vitest run tests/integration/*.test.ts --testTimeout=60000"},"_npmUser":{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"},"repository":{"url":"git+https://github.com/AntonAndrusenko/shopify-mcp-admin.git","type":"git"},"_npmVersion":"11.6.0","description":"MCP server for Shopify Admin API - enables AI agents to manage Shopify stores with 71 tools for products, inventory, collections, content, SEO, metafields, markets & translations","directories":{},"sideEffects":false,"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.25.76","express":"^5.1.0","@shopify/shopify-api":"^11.14.1","@modelcontextprotocol/sdk":"^1.22.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","tsup":"^8.5.1","vitest":"^3.2.4","supertest":"^7.1.4","typescript":"^5.9.3","@types/node":"^22.19.1","@biomejs/biome":"^1.9.4","@types/express":"^5.0.5","@types/supertest":"^6.0.3","@vitest/coverage-v8":"^3.2.4"},"_npmOperationalInternal":{"tmp":"tmp/shopify-mcp-admin_1.0.1_1764545243612_0.8851838513530876","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@anton.andrusenko/shopify-mcp-admin","version":"1.1.0","keywords":["shopify","mcp","model-context-protocol","ai","llm","ecommerce","claude","chatgpt","cursor","admin-api"],"author":{"name":"shopify-mcp-admin contributors"},"license":"MIT","_id":"@anton.andrusenko/shopify-mcp-admin@1.1.0","maintainers":[{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"}],"homepage":"https://github.com/AntonAndrusenko/shopify-mcp-admin#readme","bugs":{"url":"https://github.com/AntonAndrusenko/shopify-mcp-admin/issues"},"bin":{"shopify-mcp-admin":"dist/index.js"},"dist":{"shasum":"c911242793b08219364e33f1713b954a6b7cdfde","tarball":"https://registry.npmjs.org/@anton.andrusenko/shopify-mcp-admin/-/shopify-mcp-admin-1.1.0.tgz","fileCount":5,"integrity":"sha512-wrp8kugjqsjgsHa1xG01ZqIgiAyXqx6KdoY0FI9W4//b9gerjJ4agZBvazxSkEEQSGTaNRecVhMjPo9Kfqx49A==","signatures":[{"sig":"MEUCIApNInI4tBUsTClO7VAxIUsbTlX3b7O9fRBJF7vvcMMQAiEA0654tRYGejZwTIYaO08Iq789GINera87HbQ9g1gbEDg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":581534},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"ffbf8874dd2253e2d78d79a8f51b3b97c9fd864b","scripts":{"ci":"npm run lint && npm run typecheck && npm run test && npm run build","dev":"tsx src/index.ts","lint":"biome check src/","test":"vitest --run","build":"tsup src/index.ts --format esm --dts","start":"node dist/index.js","format":"biome format --write src/","inspect":"npx @modelcontextprotocol/inspector node dist/index.js","release":"npm run ci && npm publish --access public","lint:fix":"biome check --fix src/","typecheck":"tsc --noEmit","fast-agent":"fast-agent","test:watch":"vitest","inspect:dev":"npx @modelcontextprotocol/inspector npx tsx src/index.ts","test:coverage":"vitest run --coverage","version:major":"npm version major --no-git-tag-version","version:minor":"npm version minor --no-git-tag-version","version:patch":"npm version patch --no-git-tag-version","fast-agent:dev":"fast-agent go --servers shopify-mcp-admin-dev","inspect:config":"npx @modelcontextprotocol/inspector --config mcp-inspector.json","prepublishOnly":"npm run ci","fast-agent:chat":"fast-agent go --servers shopify-mcp-admin","fast-agent:check":"fast-agent check","test:integration":"vitest run tests/integration/*.test.ts --testTimeout=60000"},"_npmUser":{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"},"repository":{"url":"git+https://github.com/AntonAndrusenko/shopify-mcp-admin.git","type":"git"},"_npmVersion":"11.6.0","description":"MCP server for Shopify Admin API - enables AI agents to manage Shopify stores with 71 tools for products, inventory, collections, content, SEO, metafields, markets & translations","directories":{},"sideEffects":false,"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.25.76","express":"^5.1.0","@shopify/shopify-api":"^11.14.1","@modelcontextprotocol/sdk":"^1.22.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","tsup":"^8.5.1","vitest":"^3.2.4","supertest":"^7.1.4","typescript":"^5.9.3","@types/node":"^22.19.1","@biomejs/biome":"^1.9.4","@types/express":"^5.0.5","@types/supertest":"^6.0.3","@vitest/coverage-v8":"^3.2.4"},"_npmOperationalInternal":{"tmp":"tmp/shopify-mcp-admin_1.1.0_1764578682373_0.3886115298246362","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@anton.andrusenko/shopify-mcp-admin","version":"1.1.1","keywords":["shopify","mcp","model-context-protocol","ai","llm","ecommerce","claude","chatgpt","cursor","admin-api"],"author":{"name":"shopify-mcp-admin contributors"},"license":"MIT","_id":"@anton.andrusenko/shopify-mcp-admin@1.1.1","maintainers":[{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"}],"homepage":"https://github.com/AntonAndrusenko/shopify-mcp-admin#readme","bugs":{"url":"https://github.com/AntonAndrusenko/shopify-mcp-admin/issues"},"bin":{"shopify-mcp-admin":"dist/index.js"},"dist":{"shasum":"b30dca17848e03399223c84db52114db61a386b1","tarball":"https://registry.npmjs.org/@anton.andrusenko/shopify-mcp-admin/-/shopify-mcp-admin-1.1.1.tgz","fileCount":5,"integrity":"sha512-/IQRC5sGazBEHZPDiVTzEL7IOLyH5ozgvNjq/eKxA9/D80ltCnQpQe0z0A9/qOcvjPA01Rig8pmSKQA5C40r+w==","signatures":[{"sig":"MEUCIA5Uf2Wv9B22nrdHVDf9SzSZpKaaVoLmhAY7nUA5fdVyAiEAyrerqB5MsBaCMkNOAzN8L3DERYbwnJzZA4mcY9baDXY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":583837},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"5388c409ae79e79cd379e1b51ffcdd2b656a57f4","scripts":{"ci":"npm run lint && npm run typecheck && npm run test && npm run build","dev":"tsx src/index.ts","lint":"biome check src/","test":"vitest --run","build":"tsup src/index.ts --format esm --dts","start":"node dist/index.js","format":"biome format --write src/","inspect":"npx @modelcontextprotocol/inspector node dist/index.js","release":"npm run ci && npm publish --access public","lint:fix":"biome check --fix src/","typecheck":"tsc --noEmit","fast-agent":"fast-agent","test:watch":"vitest","inspect:dev":"npx @modelcontextprotocol/inspector npx tsx src/index.ts","test:coverage":"vitest run --coverage","version:major":"npm version major --no-git-tag-version","version:minor":"npm version minor --no-git-tag-version","version:patch":"npm version patch --no-git-tag-version","fast-agent:dev":"fast-agent go --servers shopify-mcp-admin-dev","inspect:config":"npx @modelcontextprotocol/inspector --config mcp-inspector.json","prepublishOnly":"npm run ci","fast-agent:chat":"fast-agent go --servers shopify-mcp-admin","fast-agent:check":"fast-agent check","test:integration":"vitest run tests/integration/*.test.ts --testTimeout=60000"},"_npmUser":{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"},"repository":{"url":"git+https://github.com/AntonAndrusenko/shopify-mcp-admin.git","type":"git"},"_npmVersion":"11.6.0","description":"MCP server for Shopify Admin API - enables AI agents to manage Shopify stores with 79 tools for products, inventory, collections, content, SEO, metafields, markets & translations","directories":{},"sideEffects":false,"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.25.76","express":"^5.1.0","@shopify/shopify-api":"^11.14.1","@modelcontextprotocol/sdk":"^1.22.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","tsup":"^8.5.1","vitest":"^3.2.4","supertest":"^7.1.4","typescript":"^5.9.3","@types/node":"^22.19.1","@biomejs/biome":"^1.9.4","@types/express":"^5.0.5","@types/supertest":"^6.0.3","@vitest/coverage-v8":"^3.2.4"},"_npmOperationalInternal":{"tmp":"tmp/shopify-mcp-admin_1.1.1_1764585217151_0.5291553021178241","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@anton.andrusenko/shopify-mcp-admin","version":"1.1.2","keywords":["shopify","mcp","model-context-protocol","ai","llm","ecommerce","claude","chatgpt","cursor","admin-api"],"author":{"name":"shopify-mcp-admin contributors"},"license":"MIT","_id":"@anton.andrusenko/shopify-mcp-admin@1.1.2","maintainers":[{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"}],"homepage":"https://github.com/AntonAndrusenko/shopify-mcp-admin#readme","bugs":{"url":"https://github.com/AntonAndrusenko/shopify-mcp-admin/issues"},"bin":{"shopify-mcp-admin":"dist/index.js"},"dist":{"shasum":"8857a7f4040a43f96d71cd64472c6ed9c34ceee4","tarball":"https://registry.npmjs.org/@anton.andrusenko/shopify-mcp-admin/-/shopify-mcp-admin-1.1.2.tgz","fileCount":5,"integrity":"sha512-44fNucGziSS0OMUfdEeDtzt/6Hw6c3KJcGX5aagdgTXUZlLMY6FB3KG5oS0s1PXiHEcriuqNWQZxJys244FNPg==","signatures":[{"sig":"MEYCIQDOtUFP5QOCpqTPl77dfX7DmAtNipCHlBAu+V+IFxW/nAIhAIFb5syL23yEwkUGsfWqPC7qVHacsYmu65G5+keWq69C","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":588737},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"ff0c8fb7ea4eab32930ee9fc3731b6af1bcf2c6a","scripts":{"ci":"npm run lint && npm run typecheck && npm run test && npm run build","dev":"tsx src/index.ts","lint":"biome check src/","test":"vitest --run","build":"tsup src/index.ts --format esm --dts","start":"node dist/index.js","format":"biome format --write src/","inspect":"npx @modelcontextprotocol/inspector node dist/index.js","release":"npm run ci && npm publish --access public","lint:fix":"biome check --fix src/","typecheck":"tsc --noEmit","test:watch":"vitest","inspect:dev":"npx @modelcontextprotocol/inspector npx tsx src/index.ts","test:coverage":"vitest run --coverage","version:major":"npm version major --no-git-tag-version","version:minor":"npm version minor --no-git-tag-version","version:patch":"npm version patch --no-git-tag-version","inspect:config":"npx @modelcontextprotocol/inspector --config mcp-inspector.json","prepublishOnly":"npm run ci","librechat:setup":"./scripts/setup-librechat.sh","test:integration":"vitest run tests/integration/*.test.ts --testTimeout=60000","librechat:setup:local":"./scripts/setup-librechat.sh --use-local"},"_npmUser":{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"},"repository":{"url":"git+https://github.com/AntonAndrusenko/shopify-mcp-admin.git","type":"git"},"_npmVersion":"11.6.0","description":"MCP server for Shopify Admin API - enables AI agents to manage Shopify stores with 79 tools for products, inventory, collections, content, SEO, metafields, markets & translations","directories":{},"sideEffects":false,"_nodeVersion":"22.19.0","dependencies":{"zod":"^3.25.76","express":"^5.1.0","@shopify/shopify-api":"^11.14.1","@modelcontextprotocol/sdk":"^1.22.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","tsup":"^8.5.1","vitest":"^3.2.4","supertest":"^7.1.4","typescript":"^5.9.3","@types/node":"^22.19.1","@biomejs/biome":"^1.9.4","@types/express":"^5.0.5","@types/supertest":"^6.0.3","@vitest/coverage-v8":"^3.2.4"},"_npmOperationalInternal":{"tmp":"tmp/shopify-mcp-admin_1.1.2_1764607002457_0.1421459563359453","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"@anton.andrusenko/shopify-mcp-admin","version":"1.1.3","keywords":["shopify","mcp","model-context-protocol","ai","llm","ecommerce","claude","chatgpt","cursor","admin-api"],"author":{"name":"shopify-mcp-admin contributors"},"license":"MIT","_id":"@anton.andrusenko/shopify-mcp-admin@1.1.3","maintainers":[{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"}],"homepage":"https://github.com/AntonAndrusenko/shopify-mcp-admin#readme","bugs":{"url":"https://github.com/AntonAndrusenko/shopify-mcp-admin/issues"},"bin":{"shopify-mcp-admin":"dist/index.js"},"dist":{"shasum":"7c9cf39e27408612e081ff55c8198da9105560bb","tarball":"https://registry.npmjs.org/@anton.andrusenko/shopify-mcp-admin/-/shopify-mcp-admin-1.1.3.tgz","fileCount":6,"integrity":"sha512-wpRdLmefZ2RwQ/CJq3Ak6RZrTlAdDOEcUKxbsXAIoiuXnGssZsjXmh6dJ7Kv4k84ulySyljSJJvCnkFbPYQ+Ag==","signatures":[{"sig":"MEYCIQDotD3+i3/8zf2Xanccbtw1z5qDouWV1NVVKmzQSdD2EAIhAPfnM1EeQ4nj0YXS3O1JcUlfabJy52DchN6xtDzLJguH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":615400},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"720599f0c6d1c08eff29d7aa58c6ab95420d72f2","scripts":{"ci":"npm run lint && npm run typecheck && npm run test && npm run build","dev":"tsx src/index.ts","lint":"biome check src/","test":"vitest --run","build":"tsup src/index.ts --format esm --dts --clean","start":"node dist/index.js","format":"biome format --write src/","wizard":"npx tsx src/index.ts init","inspect":"npx @modelcontextprotocol/inspector node dist/index.js","lint:fix":"biome check --fix src/","typecheck":"tsc --noEmit","test:watch":"vitest","inspect:dev":"npx @modelcontextprotocol/inspector npx tsx src/index.ts","wizard:build":"node dist/index.js init","test:coverage":"vitest run --coverage","version:major":"npm version major --no-git-tag-version","version:minor":"npm version minor --no-git-tag-version","version:patch":"npm version patch --no-git-tag-version","inspect:config":"npx @modelcontextprotocol/inspector --config mcp-inspector.json","librechat:setup":"./scripts/setup-librechat.sh","test:integration":"vitest run tests/integration/*.test.ts --testTimeout=60000","librechat:setup:local":"./scripts/setup-librechat.sh --use-local"},"_npmUser":{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"},"repository":{"url":"git+https://github.com/AntonAndrusenko/shopify-mcp-admin.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server for Shopify Admin API - enables AI agents to manage Shopify stores with 79 tools for products, inventory, collections, content, SEO, metafields, markets & translations","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","dependencies":{"zod":"^3.25.76","express":"^5.1.0","@inquirer/prompts":"^7.5.1","@shopify/shopify-api":"^11.14.1","@modelcontextprotocol/sdk":"^1.22.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","tsup":"^8.5.1","vitest":"^3.2.4","supertest":"^7.1.4","typescript":"^5.9.3","@types/node":"^22.19.1","@biomejs/biome":"^1.9.4","@types/express":"^5.0.5","@types/supertest":"^6.0.3","@vitest/coverage-v8":"^3.2.4"},"_npmOperationalInternal":{"tmp":"tmp/shopify-mcp-admin_1.1.3_1764664737900_0.7876031362483515","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@anton.andrusenko/shopify-mcp-admin","version":"2.0.0","keywords":["shopify","mcp","model-context-protocol","ai","llm","ecommerce","claude","chatgpt","cursor","admin-api"],"author":{"name":"shopify-mcp-admin contributors"},"license":"MIT","_id":"@anton.andrusenko/shopify-mcp-admin@2.0.0","maintainers":[{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"}],"homepage":"https://github.com/AntonAndrusenko/shopify-mcp-admin#readme","bugs":{"url":"https://github.com/AntonAndrusenko/shopify-mcp-admin/issues"},"bin":{"shopify-mcp-admin":"dist/index.js"},"dist":{"shasum":"9b8aae457c1a6b73c14330250b8349ce100f4b4c","tarball":"https://registry.npmjs.org/@anton.andrusenko/shopify-mcp-admin/-/shopify-mcp-admin-2.0.0.tgz","fileCount":11,"integrity":"sha512-dp7I2mkrEFaIxSLY1jHHtH+AKMPIb72bTRlrh2mU+76xQo9/hy0wKHQNNDQJTqHiS2K8x/V7MpygrskfYEcQcQ==","signatures":[{"sig":"MEYCIQDR05WyAhXVp2qsxu74FBWRB/PsGO8jLApPoF1d7G8q9AIhAMH4R6Ccd19BCvVHNQMhaP/IpHzsNqZRE9iHU3+zZG/d","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":749771},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"2a2fb81fc461d67ae07d5474b52146a2788ca24a","scripts":{"ci":"npm run lint && npm run typecheck && npm run test && npm run build","dev":"tsx src/index.ts","lint":"biome check src/","test":"vitest --run","build":"tsup src/index.ts --format esm --dts --clean","start":"node dist/index.js","format":"biome format --write src/","wizard":"npx tsx src/index.ts init","inspect":"npx @modelcontextprotocol/inspector node dist/index.js","lint:fix":"biome check --fix src/","test:e2e":"playwright test","build:all":"npm run build && npm run build:dashboard","typecheck":"tsc --noEmit","test:watch":"vitest","inspect:dev":"npx @modelcontextprotocol/inspector npx tsx src/index.ts","wizard:build":"node dist/index.js init","dev:dashboard":"vite --config src/dashboard/vite.config.ts","test:coverage":"vitest run --coverage","version:major":"npm version major --no-git-tag-version","version:minor":"npm version minor --no-git-tag-version","version:patch":"npm version patch --no-git-tag-version","inspect:config":"npx @modelcontextprotocol/inspector --config mcp-inspector.json","build:dashboard":"vite build --config src/dashboard/vite.config.ts","librechat:setup":"./scripts/setup-librechat.sh","test:integration":"vitest run tests/integration/*.test.ts --testTimeout=60000","librechat:setup:local":"./scripts/setup-librechat.sh --use-local"},"_npmUser":{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"},"repository":{"url":"git+https://github.com/AntonAndrusenko/shopify-mcp-admin.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server for Shopify Admin API - enables AI agents to manage Shopify stores with 79 tools for products, inventory, collections, content, SEO, metafields, markets & translations","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"zod":"^3.25.76","clsx":"^2.1.1","cmdk":"^1.1.1","cors":"^2.8.5","pino":"^9.14.0","vaul":"^1.1.2","react":"^19.2.1","bcrypt":"^5.1.1","sonner":"^2.0.7","express":"^5.1.0","recharts":"^3.5.1","react-dom":"^19.2.1","prom-client":"^15.1.3","@sentry/node":"^10.29.0","lucide-react":"^0.555.0","cookie-parser":"^1.4.7","@prisma/client":"^6.0.0","tailwind-merge":"^3.4.0","react-hook-form":"^7.67.0","react-router-dom":"^7.10.0","@inquirer/prompts":"^7.5.1","express-rate-limit":"^8.2.1","@hookform/resolvers":"^5.2.2","tailwindcss-animate":"^1.0.7","@radix-ui/react-slot":"^1.2.4","@radix-ui/react-tabs":"^1.1.0","@shopify/shopify-api":"^11.14.1","@radix-ui/react-label":"^2.1.8","@radix-ui/react-toast":"^1.2.15","@tanstack/react-query":"^5.90.11","@fontsource/geist-mono":"^5.2.7","@fontsource/geist-sans":"^5.2.5","@radix-ui/react-avatar":"^1.1.11","@radix-ui/react-dialog":"^1.1.15","@radix-ui/react-select":"^2.2.6","@radix-ui/react-tooltip":"^1.2.8","@radix-ui/react-checkbox":"^1.3.3","@radix-ui/react-progress":"^1.1.8","class-variance-authority":"^0.7.1","@modelcontextprotocol/sdk":"^1.22.0","@radix-ui/react-separator":"^1.1.8","@radix-ui/react-hover-card":"^1.1.15","@radix-ui/react-collapsible":"^1.1.12","@radix-ui/react-scroll-area":"^1.2.10","@radix-ui/react-alert-dialog":"^1.1.15","@radix-ui/react-dropdown-menu":"^2.1.16","@radix-ui/react-visually-hidden":"^1.2.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","tsup":"^8.5.1","vite":"^7.2.6","prisma":"^6.0.0","vitest":"^3.2.4","postcss":"^8.5.6","supertest":"^7.1.4","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"^22.19.1","pino-pretty":"^11.3.0","tailwindcss":"^4.1.17","@types/react":"^19.2.7","autoprefixer":"^10.4.22","@types/bcrypt":"^5.0.2","@biomejs/biome":"^1.9.4","@types/express":"^5.0.5","@playwright/test":"^1.57.0","@types/react-dom":"^19.2.3","@types/supertest":"^6.0.3","@tailwindcss/vite":"^4.1.17","@vitest/coverage-v8":"^3.2.4","@types/cookie-parser":"^1.4.10","@vitejs/plugin-react":"^5.1.1"},"_npmOperationalInternal":{"tmp":"tmp/shopify-mcp-admin_2.0.0_1764948644054_0.2643924217109641","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"@anton.andrusenko/shopify-mcp-admin","version":"2.0.1","keywords":["shopify","mcp","model-context-protocol","ai","llm","ecommerce","claude","chatgpt","cursor","admin-api"],"author":{"name":"shopify-mcp-admin contributors"},"license":"MIT","_id":"@anton.andrusenko/shopify-mcp-admin@2.0.1","maintainers":[{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"}],"homepage":"https://github.com/AntonAndrusenko/shopify-mcp-admin#readme","bugs":{"url":"https://github.com/AntonAndrusenko/shopify-mcp-admin/issues"},"bin":{"shopify-mcp-admin":"dist/index.js"},"dist":{"shasum":"eb7a519a436911c2f68a8bb0c8dc9029e7bf5cd4","tarball":"https://registry.npmjs.org/@anton.andrusenko/shopify-mcp-admin/-/shopify-mcp-admin-2.0.1.tgz","fileCount":3,"integrity":"sha512-Au4Wa7SZKwVHQOFdcmzVIAGgpXUPb7xY6mKobyJvtJ/l5juc+6ktWZ303EZXplK0s1SsL1AfUQMu3nwDpNfn/A==","signatures":[{"sig":"MEUCIQCqmo1zgEDACJZFjHt+o7d48pepexVozMtPRdB7b4E+xgIgCpLyl0gDWid399/nUoNVif4qgparvo8qO1eOXdBndTU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":56448},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"865fa5f7ee41a0f31829fc916f261cdd2a849cca","scripts":{"ci":"npm run lint && npm run typecheck && npm run test && npm run build","dev":"tsx src/index.ts","lint":"biome check src/","test":"vitest --run","build":"tsup src/index.ts --format esm --dts --clean","start":"node dist/index.js","format":"biome format --write src/","wizard":"npx tsx src/index.ts init","inspect":"npx @modelcontextprotocol/inspector node dist/index.js","lint:fix":"biome check --fix src/","test:e2e":"playwright test","build:all":"npm run build && npm run build:dashboard","typecheck":"tsc --noEmit","test:watch":"vitest","inspect:dev":"npx @modelcontextprotocol/inspector npx tsx src/index.ts","wizard:build":"node dist/index.js init","dev:dashboard":"vite --config src/dashboard/vite.config.ts","test:coverage":"vitest run --coverage","version:major":"npm version major --no-git-tag-version","version:minor":"npm version minor --no-git-tag-version","version:patch":"npm version patch --no-git-tag-version","inspect:config":"npx @modelcontextprotocol/inspector --config mcp-inspector.json","build:dashboard":"vite build --config src/dashboard/vite.config.ts","librechat:setup":"./scripts/setup-librechat.sh","test:integration":"vitest run tests/integration/*.test.ts --testTimeout=60000","librechat:setup:local":"./scripts/setup-librechat.sh --use-local"},"_npmUser":{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"},"repository":{"url":"git+https://github.com/AntonAndrusenko/shopify-mcp-admin.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server for Shopify Admin API - enables AI agents to manage Shopify stores with 79 tools for products, inventory, collections, content, SEO, metafields, markets & translations","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"zod":"^3.25.76","clsx":"^2.1.1","cmdk":"^1.1.1","cors":"^2.8.5","pino":"^9.14.0","vaul":"^1.1.2","react":"^19.2.1","bcrypt":"^5.1.1","sonner":"^2.0.7","express":"^5.1.0","recharts":"^3.5.1","react-dom":"^19.2.1","prom-client":"^15.1.3","@sentry/node":"^10.29.0","lucide-react":"^0.555.0","cookie-parser":"^1.4.7","@prisma/client":"^6.0.0","tailwind-merge":"^3.4.0","react-hook-form":"^7.67.0","react-router-dom":"^7.10.0","@inquirer/prompts":"^7.5.1","express-rate-limit":"^8.2.1","@hookform/resolvers":"^5.2.2","tailwindcss-animate":"^1.0.7","@radix-ui/react-slot":"^1.2.4","@radix-ui/react-tabs":"^1.1.0","@shopify/shopify-api":"^11.14.1","@radix-ui/react-label":"^2.1.8","@radix-ui/react-toast":"^1.2.15","@tanstack/react-query":"^5.90.11","@fontsource/geist-mono":"^5.2.7","@fontsource/geist-sans":"^5.2.5","@radix-ui/react-avatar":"^1.1.11","@radix-ui/react-dialog":"^1.1.15","@radix-ui/react-select":"^2.2.6","@radix-ui/react-tooltip":"^1.2.8","@radix-ui/react-checkbox":"^1.3.3","@radix-ui/react-progress":"^1.1.8","class-variance-authority":"^0.7.1","@modelcontextprotocol/sdk":"^1.22.0","@radix-ui/react-separator":"^1.1.8","@radix-ui/react-hover-card":"^1.1.15","@radix-ui/react-collapsible":"^1.1.12","@radix-ui/react-scroll-area":"^1.2.10","@radix-ui/react-alert-dialog":"^1.1.15","@radix-ui/react-dropdown-menu":"^2.1.16","@radix-ui/react-visually-hidden":"^1.2.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","tsup":"^8.5.1","vite":"^7.2.6","prisma":"^6.0.0","vitest":"^3.2.4","postcss":"^8.5.6","supertest":"^7.1.4","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"^22.19.1","pino-pretty":"^11.3.0","tailwindcss":"^4.1.17","@types/react":"^19.2.7","autoprefixer":"^10.4.22","@types/bcrypt":"^5.0.2","@biomejs/biome":"^1.9.4","@types/express":"^5.0.5","@playwright/test":"^1.57.0","@types/react-dom":"^19.2.3","@types/supertest":"^6.0.3","@tailwindcss/vite":"^4.1.17","@vitest/coverage-v8":"^3.2.4","@types/cookie-parser":"^1.4.10","@vitejs/plugin-react":"^5.1.1"},"_npmOperationalInternal":{"tmp":"tmp/shopify-mcp-admin_2.0.1_1764962092310_0.3079731987111285","host":"s3://npm-registry-packages-npm-production"}},"2.0.2":{"name":"@anton.andrusenko/shopify-mcp-admin","version":"2.0.2","keywords":["shopify","mcp","model-context-protocol","ai","llm","ecommerce","claude","chatgpt","cursor","admin-api"],"author":{"name":"shopify-mcp-admin contributors"},"license":"MIT","_id":"@anton.andrusenko/shopify-mcp-admin@2.0.2","maintainers":[{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"}],"homepage":"https://github.com/AntonAndrusenko/shopify-mcp-admin#readme","bugs":{"url":"https://github.com/AntonAndrusenko/shopify-mcp-admin/issues"},"bin":{"shopify-mcp-admin":"dist/index.js"},"dist":{"shasum":"fcaa437dc5a90e8b1c3bc08c922a930f2ce1cd7c","tarball":"https://registry.npmjs.org/@anton.andrusenko/shopify-mcp-admin/-/shopify-mcp-admin-2.0.2.tgz","fileCount":3,"integrity":"sha512-PX8ZUYgSE9zNRzroWYq3WIuaw1w5XskJkpJP0AbTLZjg9T5xbc+2Af8RfpsFFsvHbb8A+5MR0xpJDA7mJqLeow==","signatures":[{"sig":"MEQCIA6lMlYUAHGJc3+/WnTvHeBqnNjFGgmNA8gRGU0K8qYQAiBpbnPBUeAOCWWJs/xC4Pjd2z4yIdt1MHrrsf86C8ibxQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":56448},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"68ad62d07f67cfd9b810cbb766c580168cb7958b","scripts":{"ci":"npm run lint && npm run typecheck && npm run test && npm run build","dev":"tsx src/index.ts","lint":"biome check src/","test":"vitest --run","build":"tsup src/index.ts --format esm --dts --clean","start":"node dist/index.js","format":"biome format --write src/","wizard":"npx tsx src/index.ts init","inspect":"npx @modelcontextprotocol/inspector node dist/index.js","lint:fix":"biome check --fix src/","test:e2e":"playwright test","build:all":"npm run build && npm run build:dashboard","typecheck":"tsc --noEmit","test:watch":"vitest","inspect:dev":"npx @modelcontextprotocol/inspector npx tsx src/index.ts","wizard:build":"node dist/index.js init","dev:dashboard":"vite --config src/dashboard/vite.config.ts","test:coverage":"vitest run --coverage","version:major":"npm version major --no-git-tag-version","version:minor":"npm version minor --no-git-tag-version","version:patch":"npm version patch --no-git-tag-version","inspect:config":"npx @modelcontextprotocol/inspector --config mcp-inspector.json","build:dashboard":"vite build --config src/dashboard/vite.config.ts","librechat:setup":"./scripts/setup-librechat.sh","test:integration":"vitest run tests/integration/*.test.ts --testTimeout=60000","librechat:setup:local":"./scripts/setup-librechat.sh --use-local"},"_npmUser":{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"},"repository":{"url":"git+https://github.com/AntonAndrusenko/shopify-mcp-admin.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server for Shopify Admin API - enables AI agents to manage Shopify stores with 79 tools for products, inventory, collections, content, SEO, metafields, markets & translations","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"zod":"^3.25.76","clsx":"^2.1.1","cmdk":"^1.1.1","cors":"^2.8.5","pino":"^9.14.0","vaul":"^1.1.2","react":"^19.2.1","bcrypt":"^5.1.1","sonner":"^2.0.7","express":"^5.1.0","recharts":"^3.5.1","react-dom":"^19.2.1","prom-client":"^15.1.3","@sentry/node":"^10.29.0","lucide-react":"^0.555.0","cookie-parser":"^1.4.7","@prisma/client":"^6.0.0","tailwind-merge":"^3.4.0","react-hook-form":"^7.67.0","react-router-dom":"^7.10.0","@inquirer/prompts":"^7.5.1","express-rate-limit":"^8.2.1","@hookform/resolvers":"^5.2.2","tailwindcss-animate":"^1.0.7","@radix-ui/react-slot":"^1.2.4","@radix-ui/react-tabs":"^1.1.0","@shopify/shopify-api":"^11.14.1","@radix-ui/react-label":"^2.1.8","@radix-ui/react-toast":"^1.2.15","@tanstack/react-query":"^5.90.11","@fontsource/geist-mono":"^5.2.7","@fontsource/geist-sans":"^5.2.5","@radix-ui/react-avatar":"^1.1.11","@radix-ui/react-dialog":"^1.1.15","@radix-ui/react-select":"^2.2.6","@radix-ui/react-tooltip":"^1.2.8","@radix-ui/react-checkbox":"^1.3.3","@radix-ui/react-progress":"^1.1.8","class-variance-authority":"^0.7.1","@modelcontextprotocol/sdk":"^1.22.0","@radix-ui/react-separator":"^1.1.8","@radix-ui/react-hover-card":"^1.1.15","@radix-ui/react-collapsible":"^1.1.12","@radix-ui/react-scroll-area":"^1.2.10","@radix-ui/react-alert-dialog":"^1.1.15","@radix-ui/react-dropdown-menu":"^2.1.16","@radix-ui/react-visually-hidden":"^1.2.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","tsup":"^8.5.1","vite":"^7.2.6","prisma":"^6.0.0","vitest":"^3.2.4","postcss":"^8.5.6","supertest":"^7.1.4","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"^22.19.1","pino-pretty":"^11.3.0","tailwindcss":"^4.1.17","@types/react":"^19.2.7","autoprefixer":"^10.4.22","@types/bcrypt":"^5.0.2","@biomejs/biome":"^1.9.4","@types/express":"^5.0.5","@playwright/test":"^1.57.0","@types/react-dom":"^19.2.3","@types/supertest":"^6.0.3","@tailwindcss/vite":"^4.1.17","@vitest/coverage-v8":"^3.2.4","@types/cookie-parser":"^1.4.10","@vitejs/plugin-react":"^5.1.1"},"_npmOperationalInternal":{"tmp":"tmp/shopify-mcp-admin_2.0.2_1764964834345_0.6003788080627455","host":"s3://npm-registry-packages-npm-production"}},"2.0.3":{"name":"@anton.andrusenko/shopify-mcp-admin","version":"2.0.3","keywords":["shopify","mcp","model-context-protocol","ai","llm","ecommerce","claude","chatgpt","cursor","admin-api"],"author":{"name":"shopify-mcp-admin contributors"},"license":"MIT","_id":"@anton.andrusenko/shopify-mcp-admin@2.0.3","maintainers":[{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"}],"homepage":"https://github.com/AntonAndrusenko/shopify-mcp-admin#readme","bugs":{"url":"https://github.com/AntonAndrusenko/shopify-mcp-admin/issues"},"bin":{"shopify-mcp-admin":"dist/index.js"},"dist":{"shasum":"293ca172a7b9defc061d11f951ca5b13e2d26565","tarball":"https://registry.npmjs.org/@anton.andrusenko/shopify-mcp-admin/-/shopify-mcp-admin-2.0.3.tgz","fileCount":3,"integrity":"sha512-OO9dNN7L5x8wu+VGnehelOUN/AOdhYo3GbKgroANzHvIYcQBIWZjC6fCkSRmSOx6wMLOvD4r3KwpTfSRCIxkQA==","signatures":[{"sig":"MEUCIQDFBCNOKy/Tso4+CnyZ4w1D2iJNcAYx2yETllGhz6DuSAIge/OTCl2+vfL6Vj1ILJEg1OBoLpIMeoZ6vxCC5sWMLJs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":58381},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"f175097fe81cd9f564f8ebcc074433dafeb71945","scripts":{"ci":"npm run lint && npm run typecheck && npm run test && npm run build","dev":"tsx src/index.ts","lint":"biome check src/","test":"vitest --run","build":"tsup src/index.ts --format esm --dts --clean","start":"node dist/index.js","format":"biome format --write src/","wizard":"npx tsx src/index.ts init","inspect":"npx @modelcontextprotocol/inspector node dist/index.js","lint:fix":"biome check --fix src/","test:e2e":"playwright test","build:all":"npm run build && npm run build:dashboard","typecheck":"tsc --noEmit","test:watch":"vitest","inspect:dev":"npx @modelcontextprotocol/inspector npx tsx src/index.ts","wizard:build":"node dist/index.js init","dev:dashboard":"vite --config src/dashboard/vite.config.ts","test:coverage":"vitest run --coverage","version:major":"npm version major --no-git-tag-version","version:minor":"npm version minor --no-git-tag-version","version:patch":"npm version patch --no-git-tag-version","inspect:config":"npx @modelcontextprotocol/inspector --config mcp-inspector.json","build:dashboard":"vite build --config src/dashboard/vite.config.ts","librechat:setup":"./scripts/setup-librechat.sh","test:integration":"vitest run tests/integration/*.test.ts --testTimeout=60000","librechat:setup:local":"./scripts/setup-librechat.sh --use-local"},"_npmUser":{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"},"repository":{"url":"git+https://github.com/AntonAndrusenko/shopify-mcp-admin.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server for Shopify Admin API - enables AI agents to manage Shopify stores with 79 tools for products, inventory, collections, content, SEO, metafields, markets & translations","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"zod":"^3.25.76","clsx":"^2.1.1","cmdk":"^1.1.1","cors":"^2.8.5","pino":"^9.14.0","vaul":"^1.1.2","react":"^19.2.1","bcrypt":"^5.1.1","sonner":"^2.0.7","express":"^5.1.0","recharts":"^3.5.1","react-dom":"^19.2.1","prom-client":"^15.1.3","@sentry/node":"^10.29.0","lucide-react":"^0.555.0","cookie-parser":"^1.4.7","@prisma/client":"^6.0.0","tailwind-merge":"^3.4.0","react-hook-form":"^7.67.0","react-router-dom":"^7.10.0","@inquirer/prompts":"^7.5.1","express-rate-limit":"^8.2.1","@hookform/resolvers":"^5.2.2","tailwindcss-animate":"^1.0.7","@radix-ui/react-slot":"^1.2.4","@radix-ui/react-tabs":"^1.1.0","@shopify/shopify-api":"^11.14.1","@radix-ui/react-label":"^2.1.8","@radix-ui/react-toast":"^1.2.15","@tanstack/react-query":"^5.90.11","@fontsource/geist-mono":"^5.2.7","@fontsource/geist-sans":"^5.2.5","@radix-ui/react-avatar":"^1.1.11","@radix-ui/react-dialog":"^1.1.15","@radix-ui/react-select":"^2.2.6","@radix-ui/react-tooltip":"^1.2.8","@radix-ui/react-checkbox":"^1.3.3","@radix-ui/react-progress":"^1.1.8","class-variance-authority":"^0.7.1","@modelcontextprotocol/sdk":"^1.22.0","@radix-ui/react-separator":"^1.1.8","@radix-ui/react-hover-card":"^1.1.15","@radix-ui/react-collapsible":"^1.1.12","@radix-ui/react-scroll-area":"^1.2.10","@radix-ui/react-alert-dialog":"^1.1.15","@radix-ui/react-dropdown-menu":"^2.1.16","@radix-ui/react-visually-hidden":"^1.2.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","tsup":"^8.5.1","vite":"^7.2.6","prisma":"^6.0.0","vitest":"^3.2.4","postcss":"^8.5.6","supertest":"^7.1.4","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"^22.19.1","pino-pretty":"^11.3.0","tailwindcss":"^4.1.17","@types/react":"^19.2.7","autoprefixer":"^10.4.22","@types/bcrypt":"^5.0.2","@biomejs/biome":"^1.9.4","@types/express":"^5.0.5","@playwright/test":"^1.57.0","@types/react-dom":"^19.2.3","@types/supertest":"^6.0.3","@tailwindcss/vite":"^4.1.17","@vitest/coverage-v8":"^3.2.4","@types/cookie-parser":"^1.4.10","@vitejs/plugin-react":"^5.1.1"},"_npmOperationalInternal":{"tmp":"tmp/shopify-mcp-admin_2.0.3_1766045690895_0.41675607931825964","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"@anton.andrusenko/shopify-mcp-admin","version":"2.1.0","keywords":["shopify","mcp","model-context-protocol","ai","llm","ecommerce","claude","chatgpt","cursor","admin-api"],"author":{"name":"shopify-mcp-admin contributors"},"license":"MIT","_id":"@anton.andrusenko/shopify-mcp-admin@2.1.0","maintainers":[{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"}],"homepage":"https://github.com/AntonAndrusenko/shopify-mcp-admin#readme","bugs":{"url":"https://github.com/AntonAndrusenko/shopify-mcp-admin/issues"},"bin":{"shopify-mcp-admin":"dist/index.js"},"dist":{"shasum":"48c28c324e9f5f24e489f59f50425fbf6e680a71","tarball":"https://registry.npmjs.org/@anton.andrusenko/shopify-mcp-admin/-/shopify-mcp-admin-2.1.0.tgz","fileCount":3,"integrity":"sha512-nP6Ib/gvBTu6KQUuxUgYDaZ63Dhn2/WWmQTZLt5YZXKohZv1t7nkrUrifot6+txMob52Id/jhZefnKXPj0+XvA==","signatures":[{"sig":"MEUCIQDuLZbbWa9tIhIVK9O/H0K/mPEzFEiDp0FsOOZXqIjozAIgGkF5x8iEw9S9bPaiRgGSG47a7Xu+iRKFJB8Ble3P+kc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59112},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"4a5551e36dee99815cd6a7fb8e670d6c6534027c","scripts":{"ci":"npm run lint && npm run typecheck && npm run test && npm run build","dev":"tsx src/index.ts","lint":"biome check src/","test":"vitest --run","build":"tsup src/index.ts --format esm --dts --clean","start":"node dist/index.js","format":"biome format --write src/","wizard":"npx tsx src/index.ts init","inspect":"npx @modelcontextprotocol/inspector node dist/index.js","lint:fix":"biome check --fix src/","test:e2e":"playwright test","build:all":"npm run build && npm run build:dashboard","typecheck":"tsc --noEmit","test:watch":"vitest","inspect:dev":"npx @modelcontextprotocol/inspector npx tsx src/index.ts","wizard:build":"node dist/index.js init","dev:dashboard":"vite --config src/dashboard/vite.config.ts","test:coverage":"vitest run --coverage","version:major":"npm version major --no-git-tag-version","version:minor":"npm version minor --no-git-tag-version","version:patch":"npm version patch --no-git-tag-version","inspect:config":"npx @modelcontextprotocol/inspector --config mcp-inspector.json","build:dashboard":"vite build --config src/dashboard/vite.config.ts","librechat:setup":"./scripts/setup-librechat.sh","test:integration":"vitest run tests/integration/*.test.ts --testTimeout=60000","librechat:setup:local":"./scripts/setup-librechat.sh --use-local"},"_npmUser":{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"},"repository":{"url":"git+https://github.com/AntonAndrusenko/shopify-mcp-admin.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server for Shopify Admin API - enables AI agents to manage Shopify stores with 79 tools for products, inventory, collections, content, SEO, metafields, markets & translations","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"zod":"^3.25.76","clsx":"^2.1.1","cmdk":"^1.1.1","cors":"^2.8.5","pino":"^9.14.0","vaul":"^1.1.2","react":"^19.2.1","bcrypt":"^5.1.1","sonner":"^2.0.7","express":"^5.1.0","recharts":"^3.5.1","react-dom":"^19.2.1","prom-client":"^15.1.3","@sentry/node":"^10.29.0","lucide-react":"^0.555.0","cookie-parser":"^1.4.7","@prisma/client":"^6.0.0","tailwind-merge":"^3.4.0","react-hook-form":"^7.67.0","react-router-dom":"^7.10.0","@inquirer/prompts":"^7.5.1","express-rate-limit":"^8.2.1","@hookform/resolvers":"^5.2.2","tailwindcss-animate":"^1.0.7","@radix-ui/react-slot":"^1.2.4","@radix-ui/react-tabs":"^1.1.0","@shopify/shopify-api":"^11.14.1","@radix-ui/react-label":"^2.1.8","@radix-ui/react-toast":"^1.2.15","@tanstack/react-query":"^5.90.11","@fontsource/geist-mono":"^5.2.7","@fontsource/geist-sans":"^5.2.5","@radix-ui/react-avatar":"^1.1.11","@radix-ui/react-dialog":"^1.1.15","@radix-ui/react-select":"^2.2.6","@radix-ui/react-tooltip":"^1.2.8","@radix-ui/react-checkbox":"^1.3.3","@radix-ui/react-progress":"^1.1.8","class-variance-authority":"^0.7.1","@modelcontextprotocol/sdk":"^1.22.0","@radix-ui/react-separator":"^1.1.8","@radix-ui/react-hover-card":"^1.1.15","@radix-ui/react-collapsible":"^1.1.12","@radix-ui/react-scroll-area":"^1.2.10","@radix-ui/react-alert-dialog":"^1.1.15","@radix-ui/react-dropdown-menu":"^2.1.16","@radix-ui/react-visually-hidden":"^1.2.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","tsup":"^8.5.1","vite":"^7.2.6","prisma":"^6.0.0","vitest":"^3.2.4","postcss":"^8.5.6","supertest":"^7.1.4","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"^22.19.1","pino-pretty":"^11.3.0","tailwindcss":"^4.1.17","@types/react":"^19.2.7","autoprefixer":"^10.4.22","@types/bcrypt":"^5.0.2","@biomejs/biome":"^1.9.4","@types/express":"^5.0.5","@playwright/test":"^1.57.0","@types/react-dom":"^19.2.3","@types/supertest":"^6.0.3","@tailwindcss/vite":"^4.1.17","@vitest/coverage-v8":"^3.2.4","@types/cookie-parser":"^1.4.10","@vitejs/plugin-react":"^5.1.1"},"_npmOperationalInternal":{"tmp":"tmp/shopify-mcp-admin_2.1.0_1766134998903_0.7062619542085651","host":"s3://npm-registry-packages-npm-production"}},"2.1.1":{"name":"@anton.andrusenko/shopify-mcp-admin","version":"2.1.1","keywords":["shopify","mcp","model-context-protocol","ai","llm","ecommerce","claude","chatgpt","cursor","admin-api"],"author":{"name":"shopify-mcp-admin contributors"},"license":"MIT","_id":"@anton.andrusenko/shopify-mcp-admin@2.1.1","maintainers":[{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"}],"homepage":"https://github.com/AntonAndrusenko/shopify-mcp-admin#readme","bugs":{"url":"https://github.com/AntonAndrusenko/shopify-mcp-admin/issues"},"bin":{"shopify-mcp-admin":"dist/index.js"},"dist":{"shasum":"9d0116259edbe33fc71dcaacdc8ad70c100042a2","tarball":"https://registry.npmjs.org/@anton.andrusenko/shopify-mcp-admin/-/shopify-mcp-admin-2.1.1.tgz","fileCount":3,"integrity":"sha512-A2SemyX5mfBoH9o/0m8X3FYWg8fgGyCv88fHPaNNGvyAFzBp2ZZIlRUM12g16k1XIuaznglG4x7xfxdxFX9hfw==","signatures":[{"sig":"MEQCICw92x2KnhcrlQ6eUkQrM9nMGxrL3ino7HLFZp6pbZ4kAiAHsPS5DSyMELZcjlWIukZ4lAFxg5h8YkEEzrsq3SKYmw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":58857},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"8c4a76a18e178cd6f96c7099cdc42775332a56a0","scripts":{"ci":"npm run lint && npm run typecheck && npm run test && npm run build","dev":"tsx src/index.ts","lint":"biome check src/","test":"vitest --run","build":"tsup src/index.ts --format esm --dts --clean","start":"node dist/index.js","format":"biome format --write src/","wizard":"npx tsx src/index.ts init","inspect":"npx @modelcontextprotocol/inspector node dist/index.js","lint:fix":"biome check --fix src/","test:e2e":"playwright test","build:all":"npm run build && npm run build:dashboard","typecheck":"tsc --noEmit","test:watch":"vitest","inspect:dev":"npx @modelcontextprotocol/inspector npx tsx src/index.ts","wizard:build":"node dist/index.js init","dev:dashboard":"vite --config src/dashboard/vite.config.ts","test:coverage":"vitest run --coverage","version:major":"npm version major --no-git-tag-version","version:minor":"npm version minor --no-git-tag-version","version:patch":"npm version patch --no-git-tag-version","inspect:config":"npx @modelcontextprotocol/inspector --config mcp-inspector.json","build:dashboard":"vite build --config src/dashboard/vite.config.ts","librechat:setup":"./scripts/setup-librechat.sh","test:integration":"vitest run tests/integration/*.test.ts --testTimeout=60000","librechat:setup:local":"./scripts/setup-librechat.sh --use-local"},"_npmUser":{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"},"repository":{"url":"git+https://github.com/AntonAndrusenko/shopify-mcp-admin.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server for Shopify Admin API - enables AI agents to manage Shopify stores with 79 tools for products, inventory, collections, content, SEO, metafields, markets & translations","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"zod":"^3.25.76","clsx":"^2.1.1","cmdk":"^1.1.1","cors":"^2.8.5","pino":"^9.14.0","vaul":"^1.1.2","react":"^19.2.1","bcrypt":"^5.1.1","sonner":"^2.0.7","express":"^5.1.0","recharts":"^3.5.1","react-dom":"^19.2.1","prom-client":"^15.1.3","@sentry/node":"^10.29.0","lucide-react":"^0.555.0","cookie-parser":"^1.4.7","@prisma/client":"^6.0.0","tailwind-merge":"^3.4.0","react-hook-form":"^7.67.0","react-router-dom":"^7.10.0","@inquirer/prompts":"^7.5.1","express-rate-limit":"^8.2.1","@hookform/resolvers":"^5.2.2","tailwindcss-animate":"^1.0.7","@radix-ui/react-slot":"^1.2.4","@radix-ui/react-tabs":"^1.1.0","@shopify/shopify-api":"^11.14.1","@radix-ui/react-label":"^2.1.8","@radix-ui/react-toast":"^1.2.15","@tanstack/react-query":"^5.90.11","@fontsource/geist-mono":"^5.2.7","@fontsource/geist-sans":"^5.2.5","@radix-ui/react-avatar":"^1.1.11","@radix-ui/react-dialog":"^1.1.15","@radix-ui/react-select":"^2.2.6","@radix-ui/react-tooltip":"^1.2.8","@radix-ui/react-checkbox":"^1.3.3","@radix-ui/react-progress":"^1.1.8","class-variance-authority":"^0.7.1","@modelcontextprotocol/sdk":"^1.22.0","@radix-ui/react-separator":"^1.1.8","@radix-ui/react-hover-card":"^1.1.15","@radix-ui/react-collapsible":"^1.1.12","@radix-ui/react-scroll-area":"^1.2.10","@radix-ui/react-alert-dialog":"^1.1.15","@radix-ui/react-dropdown-menu":"^2.1.16","@radix-ui/react-visually-hidden":"^1.2.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","tsup":"^8.5.1","vite":"^7.2.6","prisma":"^6.0.0","vitest":"^3.2.4","postcss":"^8.5.6","supertest":"^7.1.4","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"^22.19.1","pino-pretty":"^11.3.0","tailwindcss":"^4.1.17","@types/react":"^19.2.7","autoprefixer":"^10.4.22","@types/bcrypt":"^5.0.2","@biomejs/biome":"^1.9.4","@types/express":"^5.0.5","@playwright/test":"^1.57.0","@types/react-dom":"^19.2.3","@types/supertest":"^6.0.3","@tailwindcss/vite":"^4.1.17","@vitest/coverage-v8":"^3.2.4","@types/cookie-parser":"^1.4.10","@vitejs/plugin-react":"^5.1.1"},"_npmOperationalInternal":{"tmp":"tmp/shopify-mcp-admin_2.1.1_1766144345452_0.49170695681847865","host":"s3://npm-registry-packages-npm-production"}},"2.1.2":{"name":"@anton.andrusenko/shopify-mcp-admin","version":"2.1.2","keywords":["shopify","mcp","model-context-protocol","ai","llm","ecommerce","claude","chatgpt","cursor","admin-api"],"author":{"name":"shopify-mcp-admin contributors"},"license":"MIT","_id":"@anton.andrusenko/shopify-mcp-admin@2.1.2","maintainers":[{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"}],"homepage":"https://github.com/AntonAndrusenko/shopify-mcp-admin#readme","bugs":{"url":"https://github.com/AntonAndrusenko/shopify-mcp-admin/issues"},"bin":{"shopify-mcp-admin":"dist/index.js"},"dist":{"shasum":"c1f4684020f11d813b8eac5a5eb0aab42d420796","tarball":"https://registry.npmjs.org/@anton.andrusenko/shopify-mcp-admin/-/shopify-mcp-admin-2.1.2.tgz","fileCount":26,"integrity":"sha512-tnroPoGOEVbAVZcpROVvRLtMuNxDoeaAdFGxDkfZxsxpHXLwpULy8XJSwVbD4De+o5CDpgb8PxdWKEbBACTr+w==","signatures":[{"sig":"MEQCIHCdTcUA+GFgMdxP+QtKBY2KlPiXGvIy4P1FfWuYoJadAiAvfQqudYS1BIkUhKHFa7zQacLwZQyq00sJI/JL92xYLA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6501292},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"9aa8faec14c0ec650f1072d6833e625efea1d07c","scripts":{"ci":"npm run lint && npm run typecheck && npm run test && npm run build","dev":"tsx src/index.ts","lint":"biome check src/","test":"vitest --run","build":"tsup src/index.ts --format esm --dts --clean","start":"node dist/index.js","format":"biome format --write src/","wizard":"npx tsx src/index.ts init","inspect":"npx @modelcontextprotocol/inspector node dist/index.js","lint:fix":"biome check --fix src/","test:e2e":"playwright test","build:all":"npm run build && npm run build:dashboard","typecheck":"tsc --noEmit","test:watch":"vitest","inspect:dev":"npx @modelcontextprotocol/inspector npx tsx src/index.ts","wizard:build":"node dist/index.js init","dev:dashboard":"vite --config src/dashboard/vite.config.ts","test:coverage":"vitest run --coverage","version:major":"npm version major --no-git-tag-version","version:minor":"npm version minor --no-git-tag-version","version:patch":"npm version patch --no-git-tag-version","inspect:config":"npx @modelcontextprotocol/inspector --config mcp-inspector.json","build:dashboard":"vite build --config src/dashboard/vite.config.ts","librechat:setup":"./scripts/setup-librechat.sh","test:integration":"vitest run tests/integration/*.test.ts --testTimeout=60000","librechat:setup:local":"./scripts/setup-librechat.sh --use-local"},"_npmUser":{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"},"repository":{"url":"git+https://github.com/AntonAndrusenko/shopify-mcp-admin.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server for Shopify Admin API - enables AI agents to manage Shopify stores with 79 tools for products, inventory, collections, content, SEO, metafields, markets & translations","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"zod":"^3.25.76","clsx":"^2.1.1","cmdk":"^1.1.1","cors":"^2.8.5","pino":"^9.14.0","vaul":"^1.1.2","react":"^19.2.1","bcrypt":"^5.1.1","sonner":"^2.0.7","express":"^5.1.0","recharts":"^3.5.1","react-dom":"^19.2.1","prom-client":"^15.1.3","@sentry/node":"^10.29.0","lucide-react":"^0.555.0","cookie-parser":"^1.4.7","@prisma/client":"^6.0.0","tailwind-merge":"^3.4.0","react-hook-form":"^7.67.0","react-router-dom":"^7.10.0","@inquirer/prompts":"^7.5.1","express-rate-limit":"^8.2.1","@hookform/resolvers":"^5.2.2","tailwindcss-animate":"^1.0.7","@radix-ui/react-slot":"^1.2.4","@radix-ui/react-tabs":"^1.1.0","@shopify/shopify-api":"^11.14.1","@radix-ui/react-label":"^2.1.8","@radix-ui/react-toast":"^1.2.15","@tanstack/react-query":"^5.90.11","@fontsource/geist-mono":"^5.2.7","@fontsource/geist-sans":"^5.2.5","@radix-ui/react-avatar":"^1.1.11","@radix-ui/react-dialog":"^1.1.15","@radix-ui/react-select":"^2.2.6","@radix-ui/react-tooltip":"^1.2.8","@radix-ui/react-checkbox":"^1.3.3","@radix-ui/react-progress":"^1.1.8","class-variance-authority":"^0.7.1","@modelcontextprotocol/sdk":"^1.22.0","@radix-ui/react-separator":"^1.1.8","@radix-ui/react-hover-card":"^1.1.15","@radix-ui/react-collapsible":"^1.1.12","@radix-ui/react-scroll-area":"^1.2.10","@radix-ui/react-alert-dialog":"^1.1.15","@radix-ui/react-dropdown-menu":"^2.1.16","@radix-ui/react-visually-hidden":"^1.2.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","tsup":"^8.5.1","vite":"^7.2.6","prisma":"^6.0.0","vitest":"^3.2.4","postcss":"^8.5.6","supertest":"^7.1.4","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"^22.19.1","pino-pretty":"^11.3.0","tailwindcss":"^4.1.17","@types/react":"^19.2.7","autoprefixer":"^10.4.22","@types/bcrypt":"^5.0.2","@biomejs/biome":"^1.9.4","@types/express":"^5.0.5","@playwright/test":"^1.57.0","@types/react-dom":"^19.2.3","@types/supertest":"^6.0.3","@tailwindcss/vite":"^4.1.17","@vitest/coverage-v8":"^3.2.4","@types/cookie-parser":"^1.4.10","@vitejs/plugin-react":"^5.1.1"},"_npmOperationalInternal":{"tmp":"tmp/shopify-mcp-admin_2.1.2_1766148580297_0.6955504840868982","host":"s3://npm-registry-packages-npm-production"}},"2.2.1":{"name":"@anton.andrusenko/shopify-mcp-admin","version":"2.2.1","keywords":["shopify","mcp","model-context-protocol","ai","llm","ecommerce","claude","chatgpt","cursor","admin-api"],"author":{"name":"shopify-mcp-admin contributors"},"license":"MIT","_id":"@anton.andrusenko/shopify-mcp-admin@2.2.1","maintainers":[{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"}],"homepage":"https://github.com/AntonAndrusenko/shopify-mcp-admin#readme","bugs":{"url":"https://github.com/AntonAndrusenko/shopify-mcp-admin/issues"},"bin":{"shopify-mcp-admin":"dist/index.js"},"dist":{"shasum":"54d504110552d2f7afc9d92b452c6d301e3344de","tarball":"https://registry.npmjs.org/@anton.andrusenko/shopify-mcp-admin/-/shopify-mcp-admin-2.2.1.tgz","fileCount":29,"integrity":"sha512-xlwACSvnkbq5DFFnU1S65Ns47UCrTCwZmS2z5LZKveCBNWpb70rEHEvM6IQ2+0bXIG74ltQh+VWj7sE//8bFVA==","signatures":[{"sig":"MEUCIF+FOxmuBMfkelQXLqXLh/bygqYOqum42wc4A+EdlicZAiEA8lw1XB+vNwIiZ2rPwqumz+PfsH0lbeahQSY+T0r7c8Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6919839},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"7cdf5cad27d6c07101d0f8a2b902ebd91d2f8b30","scripts":{"ci":"npm run lint && npm run typecheck && npm run test && npm run build","dev":"tsx src/index.ts","lint":"biome check src/","test":"vitest --run","build":"tsup src/index.ts --format esm --dts --clean","start":"node dist/index.js","format":"biome format --write src/","wizard":"npx tsx src/index.ts init","inspect":"npx @modelcontextprotocol/inspector node dist/index.js","lint:fix":"biome check --fix src/","test:e2e":"playwright test","build:all":"npm run build && npm run build:dashboard","db:studio":"npx prisma studio","typecheck":"tsc --noEmit","seed:oauth":"npx tsx scripts/seed-oauth-test-data.ts","test:watch":"vitest","inspect:dev":"npx @modelcontextprotocol/inspector npx tsx src/index.ts","wizard:build":"node dist/index.js init","dev:dashboard":"vite --config src/dashboard/vite.config.ts","test:coverage":"vitest run --coverage","version:major":"npm version major --no-git-tag-version","version:minor":"npm version minor --no-git-tag-version","version:patch":"npm version patch --no-git-tag-version","inspect:config":"npx @modelcontextprotocol/inspector --config mcp-inspector.json","build:dashboard":"vite build --config src/dashboard/vite.config.ts","librechat:setup":"./scripts/setup-librechat.sh","test:integration":"vitest run tests/integration/*.test.ts --testTimeout=60000","librechat:setup:local":"./scripts/setup-librechat.sh --use-local"},"_npmUser":{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"},"repository":{"url":"git+https://github.com/AntonAndrusenko/shopify-mcp-admin.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server for Shopify Admin API - enables AI agents to manage Shopify stores with 79 tools for products, inventory, collections, content, SEO, metafields, markets & translations","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"zod":"^3.25.76","clsx":"^2.1.1","cmdk":"^1.1.1","cors":"^2.8.5","pino":"^9.14.0","vaul":"^1.1.2","react":"^19.2.1","bcrypt":"^5.1.1","sonner":"^2.0.7","express":"^5.1.0","recharts":"^3.5.1","react-dom":"^19.2.1","prom-client":"^15.1.3","@sentry/node":"^10.29.0","lucide-react":"^0.555.0","cookie-parser":"^1.4.7","@prisma/client":"^6.0.0","tailwind-merge":"^3.4.0","react-hook-form":"^7.67.0","react-router-dom":"^7.10.0","@inquirer/prompts":"^7.5.1","express-rate-limit":"^8.2.1","@hookform/resolvers":"^5.2.2","tailwindcss-animate":"^1.0.7","@radix-ui/react-slot":"^1.2.4","@radix-ui/react-tabs":"^1.1.0","@shopify/shopify-api":"^11.14.1","@radix-ui/react-label":"^2.1.8","@radix-ui/react-toast":"^1.2.15","@tanstack/react-query":"^5.90.11","@fontsource/geist-mono":"^5.2.7","@fontsource/geist-sans":"^5.2.5","@radix-ui/react-avatar":"^1.1.11","@radix-ui/react-dialog":"^1.1.15","@radix-ui/react-select":"^2.2.6","@radix-ui/react-tooltip":"^1.2.8","@radix-ui/react-checkbox":"^1.3.3","@radix-ui/react-progress":"^1.1.8","class-variance-authority":"^0.7.1","@modelcontextprotocol/sdk":"^1.22.0","@radix-ui/react-separator":"^1.1.8","@radix-ui/react-hover-card":"^1.1.15","@radix-ui/react-collapsible":"^1.1.12","@radix-ui/react-scroll-area":"^1.2.10","@radix-ui/react-alert-dialog":"^1.1.15","@radix-ui/react-dropdown-menu":"^2.1.16","@radix-ui/react-visually-hidden":"^1.2.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","tsup":"^8.5.1","vite":"^7.2.6","prisma":"^6.0.0","vitest":"^3.2.4","postcss":"^8.5.6","supertest":"^7.1.4","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"^22.19.1","pino-pretty":"^11.3.0","tailwindcss":"^4.1.17","@types/react":"^19.2.7","autoprefixer":"^10.4.22","@types/bcrypt":"^5.0.2","@biomejs/biome":"^1.9.4","@types/express":"^5.0.5","@playwright/test":"^1.57.0","@types/react-dom":"^19.2.3","@types/supertest":"^6.0.3","@tailwindcss/vite":"^4.1.17","@vitest/coverage-v8":"^3.2.4","@types/cookie-parser":"^1.4.10","@vitejs/plugin-react":"^5.1.1"},"_npmOperationalInternal":{"tmp":"tmp/shopify-mcp-admin_2.2.1_1766579330320_0.6674795575316257","host":"s3://npm-registry-packages-npm-production"}},"2.3.0":{"name":"@anton.andrusenko/shopify-mcp-admin","version":"2.3.0","keywords":["shopify","mcp","model-context-protocol","ai","llm","ecommerce","claude","chatgpt","cursor","admin-api"],"author":{"name":"shopify-mcp-admin contributors"},"license":"MIT","_id":"@anton.andrusenko/shopify-mcp-admin@2.3.0","maintainers":[{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"}],"homepage":"https://github.com/AntonAndrusenko/shopify-mcp-admin#readme","bugs":{"url":"https://github.com/AntonAndrusenko/shopify-mcp-admin/issues"},"bin":{"shopify-mcp-admin":"dist/index.js"},"dist":{"shasum":"febdac060be17606ebbe56b3d39e6d2eae07e2e4","tarball":"https://registry.npmjs.org/@anton.andrusenko/shopify-mcp-admin/-/shopify-mcp-admin-2.3.0.tgz","fileCount":29,"integrity":"sha512-eezFl4+VYUZWFruJT/DKvZIS8YqCcuv+g45htDwvKHNI//csp6V0dgo3iI1jfjchh5+mWbUAHBrrrAgNi5uE2Q==","signatures":[{"sig":"MEQCIG5KtXIsCuEumb9yWOcSiZ/ZMc5R9X1XB7z8Pgo4FKw5AiB7gc6VXDBeHbLAX/T5vD7/YtqH39SBKgnDHoO6zS8kVg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8297797},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"e00379a1e5bf2495c1e6fa9b107ca195d208e12d","scripts":{"ci":"npm run lint && npm run typecheck && npm run test && npm run build","dev":"tsx src/index.ts","lint":"biome check src/","test":"vitest --run","build":"tsup src/index.ts --format esm --dts --clean","start":"node dist/index.js","format":"biome format --write src/","wizard":"npx tsx src/index.ts init","inspect":"npx @modelcontextprotocol/inspector node dist/index.js","lint:fix":"biome check --fix src/","test:e2e":"playwright test","build:all":"npm run build && npm run build:dashboard","db:studio":"npx prisma studio","typecheck":"tsc --noEmit","seed:oauth":"npx tsx scripts/seed-oauth-test-data.ts","test:react":"vitest --run --config vitest.react.config.ts","test:watch":"vitest","inspect:dev":"npx @modelcontextprotocol/inspector npx tsx src/index.ts","wizard:build":"node dist/index.js init","dev:dashboard":"vite --config src/dashboard/vite.config.ts","test:coverage":"vitest run --coverage","version:major":"npm version major --no-git-tag-version","version:minor":"npm version minor --no-git-tag-version","version:patch":"npm version patch --no-git-tag-version","inspect:config":"npx @modelcontextprotocol/inspector --config mcp-inspector.json","build:dashboard":"vite build --config src/dashboard/vite.config.ts","librechat:setup":"./scripts/setup-librechat.sh","test:integration":"vitest run tests/integration/*.test.ts --testTimeout=60000","librechat:setup:local":"./scripts/setup-librechat.sh --use-local"},"_npmUser":{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"},"repository":{"url":"git+https://github.com/AntonAndrusenko/shopify-mcp-admin.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server for Shopify Admin API - enables AI agents to manage Shopify stores with 79 tools for products, inventory, collections, content, SEO, metafields, markets & translations","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"zod":"^3.25.76","clsx":"^2.1.1","cmdk":"^1.1.1","cors":"^2.8.5","pino":"^9.14.0","vaul":"^1.1.2","react":"^19.2.1","bcrypt":"^5.1.1","sonner":"^2.0.7","express":"^5.1.0","date-fns":"^4.1.0","recharts":"^3.5.1","react-dom":"^19.2.1","prom-client":"^15.1.3","@sentry/node":"^10.29.0","lucide-react":"^0.555.0","cookie-parser":"^1.4.7","@prisma/client":"^6.0.0","tailwind-merge":"^3.4.0","react-hook-form":"^7.67.0","react-day-picker":"^9.13.0","react-router-dom":"^7.10.0","@inquirer/prompts":"^7.5.1","express-rate-limit":"^8.2.1","@hookform/resolvers":"^5.2.2","tailwindcss-animate":"^1.0.7","@radix-ui/react-slot":"^1.2.4","@radix-ui/react-tabs":"^1.1.0","@shopify/shopify-api":"^11.14.1","@radix-ui/react-label":"^2.1.8","@radix-ui/react-toast":"^1.2.15","@tanstack/react-query":"^5.90.11","@tanstack/react-table":"^8.21.3","@fontsource/geist-mono":"^5.2.7","@fontsource/geist-sans":"^5.2.5","@radix-ui/react-avatar":"^1.1.11","@radix-ui/react-dialog":"^1.1.15","@radix-ui/react-select":"^2.2.6","@radix-ui/react-popover":"^1.1.15","@radix-ui/react-tooltip":"^1.2.8","@radix-ui/react-checkbox":"^1.3.3","@radix-ui/react-progress":"^1.1.8","class-variance-authority":"^0.7.1","@modelcontextprotocol/sdk":"^1.22.0","@radix-ui/react-separator":"^1.1.8","@radix-ui/react-hover-card":"^1.1.15","@radix-ui/react-collapsible":"^1.1.12","@radix-ui/react-scroll-area":"^1.2.10","@radix-ui/react-alert-dialog":"^1.1.15","@radix-ui/react-dropdown-menu":"^2.1.16","@radix-ui/react-visually-hidden":"^1.2.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","tsup":"^8.5.1","vite":"^7.2.6","jsdom":"^27.3.0","prisma":"^6.0.0","vitest":"^3.2.4","postcss":"^8.5.6","supertest":"^7.1.4","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"^22.19.1","pino-pretty":"^11.3.0","tailwindcss":"^4.1.17","@types/react":"^19.2.7","autoprefixer":"^10.4.22","@types/bcrypt":"^5.0.2","@biomejs/biome":"^1.9.4","@types/express":"^5.0.5","@playwright/test":"^1.57.0","@types/react-dom":"^19.2.3","@types/supertest":"^6.0.3","@tailwindcss/vite":"^4.1.17","@vitest/coverage-v8":"^3.2.4","@types/cookie-parser":"^1.4.10","@vitejs/plugin-react":"^5.1.1","@testing-library/react":"^16.3.1","@testing-library/jest-dom":"^6.9.1","@testing-library/user-event":"^14.6.1"},"_npmOperationalInternal":{"tmp":"tmp/shopify-mcp-admin_2.3.0_1766762077457_0.31316379032550734","host":"s3://npm-registry-packages-npm-production"}},"2.4.0":{"name":"@anton.andrusenko/shopify-mcp-admin","version":"2.4.0","keywords":["shopify","mcp","model-context-protocol","ai","llm","ecommerce","claude","chatgpt","cursor","admin-api"],"author":{"name":"shopify-mcp-admin contributors"},"license":"MIT","_id":"@anton.andrusenko/shopify-mcp-admin@2.4.0","maintainers":[{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"}],"homepage":"https://github.com/AntonAndrusenko/shopify-mcp-admin#readme","bugs":{"url":"https://github.com/AntonAndrusenko/shopify-mcp-admin/issues"},"bin":{"shopify-mcp-admin":"dist/index.js"},"dist":{"shasum":"e11eb21a14ff8f7073edbc88b589bd818c7126e4","tarball":"https://registry.npmjs.org/@anton.andrusenko/shopify-mcp-admin/-/shopify-mcp-admin-2.4.0.tgz","fileCount":29,"integrity":"sha512-f4wynG1Cso572ax1XIEfpaJl/OFrYXX00um5K7SrHwF/6OBYlOJYNmFBimsmu0YVab7Q1rU/itxl/m+L6OT64w==","signatures":[{"sig":"MEQCIGdwIb7ESLk//6QF/rwh1eqvKGSVFfvyXj8ynRU7yQ49AiAlnLHyFeA6pLYsqy5W5+fDftjQ5tYD12u3OUTtYDYkAw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8498015},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"7d6087bda9b646c0619a23268ca191324b393c3e","scripts":{"ci":"npm run lint && npm run typecheck && npm run test && npm run build","dev":"tsx src/index.ts","lint":"biome check src/","test":"vitest --run","build":"tsup src/index.ts --format esm --dts --clean","start":"node dist/index.js","format":"biome format --write src/","wizard":"npx tsx src/index.ts init","inspect":"npx @modelcontextprotocol/inspector node dist/index.js","lint:fix":"biome check --fix src/","test:e2e":"playwright test","build:all":"npm run build && npm run build:dashboard","db:studio":"npx prisma studio","typecheck":"tsc --noEmit","seed:oauth":"npx tsx scripts/seed-oauth-test-data.ts","test:react":"vitest --run --config vitest.react.config.ts","test:watch":"vitest","inspect:dev":"npx @modelcontextprotocol/inspector npx tsx src/index.ts","wizard:build":"node dist/index.js init","dev:dashboard":"vite --config src/dashboard/vite.config.ts","test:coverage":"vitest run --coverage","version:major":"npm version major --no-git-tag-version","version:minor":"npm version minor --no-git-tag-version","version:patch":"npm version patch --no-git-tag-version","inspect:config":"npx @modelcontextprotocol/inspector --config mcp-inspector.json","build:dashboard":"vite build --config src/dashboard/vite.config.ts","librechat:setup":"./scripts/setup-librechat.sh","test:integration":"vitest run tests/integration/*.test.ts --testTimeout=60000","librechat:setup:local":"./scripts/setup-librechat.sh --use-local"},"_npmUser":{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"},"repository":{"url":"git+https://github.com/AntonAndrusenko/shopify-mcp-admin.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server for Shopify Admin API - enables AI agents to manage Shopify stores with 79 tools for products, inventory, collections, content, SEO, metafields, markets & translations","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"zod":"^3.25.76","clsx":"^2.1.1","cmdk":"^1.1.1","cors":"^2.8.5","pino":"^9.14.0","vaul":"^1.1.2","react":"^19.2.1","bcrypt":"^5.1.1","sonner":"^2.0.7","express":"^5.1.0","date-fns":"^4.1.0","recharts":"^3.5.1","react-dom":"^19.2.1","prom-client":"^15.1.3","@sentry/node":"^10.29.0","lucide-react":"^0.555.0","cookie-parser":"^1.4.7","@prisma/client":"^6.0.0","tailwind-merge":"^3.4.0","react-hook-form":"^7.67.0","react-day-picker":"^9.13.0","react-router-dom":"^7.10.0","@inquirer/prompts":"^7.5.1","express-rate-limit":"^8.2.1","@hookform/resolvers":"^5.2.2","tailwindcss-animate":"^1.0.7","@radix-ui/react-slot":"^1.2.4","@radix-ui/react-tabs":"^1.1.0","@shopify/shopify-api":"^11.14.1","@radix-ui/react-label":"^2.1.8","@radix-ui/react-toast":"^1.2.15","@tanstack/react-query":"^5.90.11","@tanstack/react-table":"^8.21.3","@fontsource/geist-mono":"^5.2.7","@fontsource/geist-sans":"^5.2.5","@radix-ui/react-avatar":"^1.1.11","@radix-ui/react-dialog":"^1.1.15","@radix-ui/react-select":"^2.2.6","@radix-ui/react-popover":"^1.1.15","@radix-ui/react-tooltip":"^1.2.8","@radix-ui/react-checkbox":"^1.3.3","@radix-ui/react-progress":"^1.1.8","class-variance-authority":"^0.7.1","@modelcontextprotocol/sdk":"^1.22.0","@radix-ui/react-separator":"^1.1.8","@radix-ui/react-hover-card":"^1.1.15","@radix-ui/react-collapsible":"^1.1.12","@radix-ui/react-scroll-area":"^1.2.10","@radix-ui/react-alert-dialog":"^1.1.15","@radix-ui/react-dropdown-menu":"^2.1.16","@radix-ui/react-visually-hidden":"^1.2.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","tsup":"^8.5.1","vite":"^7.2.6","jsdom":"^27.3.0","prisma":"^6.0.0","vitest":"^3.2.4","postcss":"^8.5.6","supertest":"^7.1.4","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"^22.19.1","pino-pretty":"^11.3.0","tailwindcss":"^4.1.17","@types/react":"^19.2.7","autoprefixer":"^10.4.22","@types/bcrypt":"^5.0.2","@biomejs/biome":"^1.9.4","@types/express":"^5.0.5","@playwright/test":"^1.57.0","@types/react-dom":"^19.2.3","@types/supertest":"^6.0.3","@tailwindcss/vite":"^4.1.17","@vitest/coverage-v8":"^3.2.4","@types/cookie-parser":"^1.4.10","@vitejs/plugin-react":"^5.1.1","@testing-library/react":"^16.3.1","@testing-library/jest-dom":"^6.9.1","@testing-library/user-event":"^14.6.1"},"_npmOperationalInternal":{"tmp":"tmp/shopify-mcp-admin_2.4.0_1767024108621_0.7719211215856066","host":"s3://npm-registry-packages-npm-production"}},"2.5.0":{"name":"@anton.andrusenko/shopify-mcp-admin","version":"2.5.0","keywords":["shopify","mcp","model-context-protocol","ai","llm","ecommerce","claude","chatgpt","cursor","admin-api"],"author":{"name":"shopify-mcp-admin contributors"},"license":"MIT","_id":"@anton.andrusenko/shopify-mcp-admin@2.5.0","maintainers":[{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"}],"homepage":"https://github.com/AntonAndrusenko/shopify-mcp-admin#readme","bugs":{"url":"https://github.com/AntonAndrusenko/shopify-mcp-admin/issues"},"bin":{"shopify-mcp-admin":"dist/index.js"},"dist":{"shasum":"8cc7839545f07cdac54bea2bf1267d4defb83f67","tarball":"https://registry.npmjs.org/@anton.andrusenko/shopify-mcp-admin/-/shopify-mcp-admin-2.5.0.tgz","fileCount":755,"integrity":"sha512-g9v54hd1EsVsTGWe8NhRtWUmeaYmI45pD0dB1CrmgaWSEpAG464G9xM9XC6TT+9CfvVs61XXO4PE1EOvDtn2ww==","signatures":[{"sig":"MEUCIQCFjc6etnjQtwtOtXSZluCLbKpnbOh8wIe/f4XDiJVStwIgOpRCRpH8XEnQxsmD2q85zNnDEn8gyTxdojQjSEE7VWE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47151281},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"c6e25063165fec64a3cc0752ff1b44328aba8b10","scripts":{"ci":"npm run lint && npm run typecheck && npm run test && npm run build","dev":"tsx src/index.ts","lint":"biome check src/","test":"vitest --run","build":"tsup src/index.ts --format esm --dts --clean","start":"node dist/index.js","format":"biome format --write src/","wizard":"npx tsx src/index.ts init","inspect":"npx @modelcontextprotocol/inspector node dist/index.js","lint:fix":"biome check --fix src/","test:e2e":"playwright test","build:all":"npm run build && npm run build:dashboard","db:studio":"npx prisma studio","typecheck":"tsc --noEmit","seed:oauth":"npx tsx scripts/seed-oauth-test-data.ts","test:react":"vitest --run --config vitest.react.config.ts","test:watch":"vitest","inspect:dev":"npx @modelcontextprotocol/inspector npx tsx src/index.ts","wizard:build":"node dist/index.js init","dev:dashboard":"vite --config src/dashboard/vite.config.ts","test:coverage":"vitest run --coverage","version:major":"npm version major --no-git-tag-version","version:minor":"npm version minor --no-git-tag-version","version:patch":"npm version patch --no-git-tag-version","inspect:config":"npx @modelcontextprotocol/inspector --config mcp-inspector.json","build:dashboard":"vite build --config src/dashboard/vite.config.ts","librechat:setup":"./scripts/setup-librechat.sh","test:integration":"vitest run tests/integration/*.test.ts --testTimeout=60000","librechat:setup:local":"./scripts/setup-librechat.sh --use-local"},"_npmUser":{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"},"repository":{"url":"git+https://github.com/AntonAndrusenko/shopify-mcp-admin.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server for Shopify Admin API - enables AI agents to manage Shopify stores with 79 tools for products, inventory, collections, content, SEO, metafields, markets & translations","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"ai":"^6.0.5","zod":"^3.25.76","clsx":"^2.1.1","cmdk":"^1.1.1","cors":"^2.8.5","pino":"^9.14.0","vaul":"^1.1.2","react":"^19.2.1","bcrypt":"^5.1.1","motion":"^12.23.26","nanoid":"^5.1.6","sonner":"^2.0.7","express":"^5.1.0","date-fns":"^4.1.0","recharts":"^3.5.1","react-dom":"^19.2.1","remark-gfm":"^4.0.1","streamdown":"^1.6.10","@ai-sdk/mcp":"^1.0.1","prom-client":"^15.1.3","@sentry/node":"^10.29.0","lucide-react":"^0.555.0","@ai-sdk/react":"^3.0.3","cookie-parser":"^1.4.7","@ai-sdk/openai":"^3.0.1","@prisma/client":"^6.0.0","react-markdown":"^10.1.0","tailwind-merge":"^3.4.0","react-hook-form":"^7.67.0","react-day-picker":"^9.13.0","react-router-dom":"^7.10.0","rehype-highlight":"^7.0.2","@ai-sdk/anthropic":"^3.0.1","@inquirer/prompts":"^7.5.1","express-rate-limit":"^8.2.1","@hookform/resolvers":"^5.2.2","tailwindcss-animate":"^1.0.7","use-stick-to-bottom":"^1.1.1","@radix-ui/react-slot":"^1.2.4","@radix-ui/react-tabs":"^1.1.0","@shopify/shopify-api":"^11.14.1","@radix-ui/react-label":"^2.1.8","@radix-ui/react-toast":"^1.2.15","@tanstack/react-query":"^5.90.11","@tanstack/react-table":"^8.21.3","@fontsource/geist-mono":"^5.2.7","@fontsource/geist-sans":"^5.2.5","@radix-ui/react-avatar":"^1.1.11","@radix-ui/react-dialog":"^1.1.15","@radix-ui/react-select":"^2.2.6","@radix-ui/react-popover":"^1.1.15","@radix-ui/react-tooltip":"^1.2.8","@radix-ui/react-checkbox":"^1.3.3","@radix-ui/react-progress":"^1.1.8","class-variance-authority":"^0.7.1","@modelcontextprotocol/sdk":"^1.22.0","@radix-ui/react-separator":"^1.1.8","@radix-ui/react-hover-card":"^1.1.15","@radix-ui/react-collapsible":"^1.1.12","@radix-ui/react-scroll-area":"^1.2.10","@radix-ui/react-alert-dialog":"^1.1.15","@radix-ui/react-dropdown-menu":"^2.1.16","@radix-ui/react-visually-hidden":"^1.2.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","tsup":"^8.5.1","vite":"^7.2.6","jsdom":"^27.3.0","prisma":"^6.0.0","vitest":"^3.2.4","postcss":"^8.5.6","supertest":"^7.1.4","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"^22.19.1","pino-pretty":"^11.3.0","tailwindcss":"^4.1.17","@types/react":"^19.2.7","autoprefixer":"^10.4.22","@types/bcrypt":"^5.0.2","@biomejs/biome":"^1.9.4","@types/express":"^5.0.5","@playwright/test":"^1.57.0","@types/react-dom":"^19.2.3","@types/supertest":"^6.0.3","@tailwindcss/vite":"^4.1.17","@vitest/coverage-v8":"^3.2.4","@types/cookie-parser":"^1.4.10","@vitejs/plugin-react":"^5.1.1","@testing-library/react":"^16.3.1","@testing-library/jest-dom":"^6.9.1","@testing-library/user-event":"^14.6.1"},"_npmOperationalInternal":{"tmp":"tmp/shopify-mcp-admin_2.5.0_1767172714792_0.8323325733932077","host":"s3://npm-registry-packages-npm-production"}},"2.5.1":{"name":"@anton.andrusenko/shopify-mcp-admin","version":"2.5.1","keywords":["shopify","mcp","model-context-protocol","ai","llm","ecommerce","claude","chatgpt","cursor","admin-api"],"author":{"name":"shopify-mcp-admin contributors"},"license":"MIT","_id":"@anton.andrusenko/shopify-mcp-admin@2.5.1","maintainers":[{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"}],"homepage":"https://github.com/AntonAndrusenko/shopify-mcp-admin#readme","bugs":{"url":"https://github.com/AntonAndrusenko/shopify-mcp-admin/issues"},"bin":{"shopify-mcp-admin":"dist/index.js"},"dist":{"shasum":"a179758fa45e6b32fbfd6284dda08ff92af0f4b3","tarball":"https://registry.npmjs.org/@anton.andrusenko/shopify-mcp-admin/-/shopify-mcp-admin-2.5.1.tgz","fileCount":755,"integrity":"sha512-zRCr7RZp31Abe96uU6DZQDHvtu1XU8SoERcENmD+ITOeJLWzPkuJZFZYK/P0PdCvx7HoZpbbVUH6EKKa39Zexw==","signatures":[{"sig":"MEUCIQCQ7sJsNWJYYtXWWa9BsLuLqt2WjmXQQwTjLcM0wf23XwIgYh1gvdcZ+a+KQFCX5Kbpaz1zKiK3YlLDjC3E2bvfOMg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49098268},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"a20fd51c3216c67469c42914ee9249e0f4e405ef","scripts":{"ci":"npm run lint && npm run typecheck && npm run test && npm run build","dev":"tsx src/index.ts","lint":"biome check src/","test":"vitest --run","build":"tsup src/index.ts --format esm --dts --clean","start":"node dist/index.js","format":"biome format --write src/","wizard":"npx tsx src/index.ts init","inspect":"npx @modelcontextprotocol/inspector node dist/index.js","lint:fix":"biome check --fix src/","test:e2e":"playwright test","build:all":"npm run build && npm run build:dashboard","db:studio":"npx prisma studio","typecheck":"tsc --noEmit","seed:oauth":"npx tsx scripts/seed-oauth-test-data.ts","test:react":"vitest --run --config vitest.react.config.ts","test:watch":"vitest","inspect:dev":"npx @modelcontextprotocol/inspector npx tsx src/index.ts","wizard:build":"node dist/index.js init","dev:dashboard":"vite --config src/dashboard/vite.config.ts","test:coverage":"vitest run --coverage","version:major":"npm version major --no-git-tag-version","version:minor":"npm version minor --no-git-tag-version","version:patch":"npm version patch --no-git-tag-version","inspect:config":"npx @modelcontextprotocol/inspector --config mcp-inspector.json","build:dashboard":"vite build --config src/dashboard/vite.config.ts","librechat:setup":"./scripts/setup-librechat.sh","test:integration":"vitest run tests/integration/*.test.ts --testTimeout=60000","librechat:setup:local":"./scripts/setup-librechat.sh --use-local"},"_npmUser":{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"},"repository":{"url":"git+https://github.com/AntonAndrusenko/shopify-mcp-admin.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server for Shopify Admin API - enables AI agents to manage Shopify stores with 79 tools for products, inventory, collections, content, SEO, metafields, markets & translations","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"ai":"^6.0.5","zod":"^3.25.76","clsx":"^2.1.1","cmdk":"^1.1.1","cors":"^2.8.5","pino":"^9.14.0","vaul":"^1.1.2","react":"^19.2.1","bcrypt":"^5.1.1","motion":"^12.23.26","nanoid":"^5.1.6","sonner":"^2.0.7","express":"^5.1.0","date-fns":"^4.1.0","recharts":"^3.5.1","react-dom":"^19.2.1","remark-gfm":"^4.0.1","streamdown":"^1.6.10","@ai-sdk/mcp":"^1.0.1","prom-client":"^15.1.3","@sentry/node":"^10.29.0","lucide-react":"^0.555.0","@ai-sdk/react":"^3.0.3","cookie-parser":"^1.4.7","@ai-sdk/openai":"^3.0.1","@prisma/client":"^6.0.0","react-markdown":"^10.1.0","tailwind-merge":"^3.4.0","react-hook-form":"^7.67.0","react-day-picker":"^9.13.0","react-router-dom":"^7.10.0","rehype-highlight":"^7.0.2","@ai-sdk/anthropic":"^3.0.1","@inquirer/prompts":"^7.5.1","express-rate-limit":"^8.2.1","@hookform/resolvers":"^5.2.2","tailwindcss-animate":"^1.0.7","use-stick-to-bottom":"^1.1.1","@radix-ui/react-slot":"^1.2.4","@radix-ui/react-tabs":"^1.1.0","@shopify/shopify-api":"^11.14.1","@radix-ui/react-label":"^2.1.8","@radix-ui/react-toast":"^1.2.15","@tanstack/react-query":"^5.90.11","@tanstack/react-table":"^8.21.3","@fontsource/geist-mono":"^5.2.7","@fontsource/geist-sans":"^5.2.5","@radix-ui/react-avatar":"^1.1.11","@radix-ui/react-dialog":"^1.1.15","@radix-ui/react-select":"^2.2.6","@radix-ui/react-popover":"^1.1.15","@radix-ui/react-tooltip":"^1.2.8","@radix-ui/react-checkbox":"^1.3.3","@radix-ui/react-progress":"^1.1.8","class-variance-authority":"^0.7.1","@modelcontextprotocol/sdk":"^1.22.0","@radix-ui/react-separator":"^1.1.8","@radix-ui/react-hover-card":"^1.1.15","@radix-ui/react-collapsible":"^1.1.12","@radix-ui/react-scroll-area":"^1.2.10","@radix-ui/react-alert-dialog":"^1.1.15","@radix-ui/react-dropdown-menu":"^2.1.16","@radix-ui/react-visually-hidden":"^1.2.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","tsup":"^8.5.1","vite":"^7.2.6","jsdom":"^27.3.0","prisma":"^6.0.0","vitest":"^3.2.4","postcss":"^8.5.6","supertest":"^7.1.4","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"^22.19.1","pino-pretty":"^11.3.0","tailwindcss":"^4.1.17","@types/react":"^19.2.7","autoprefixer":"^10.4.22","@types/bcrypt":"^5.0.2","@biomejs/biome":"^1.9.4","@types/express":"^5.0.5","@playwright/test":"^1.57.0","@types/react-dom":"^19.2.3","@types/supertest":"^6.0.3","@tailwindcss/vite":"^4.1.17","@vitest/coverage-v8":"^3.2.4","@types/cookie-parser":"^1.4.10","@vitejs/plugin-react":"^5.1.1","@testing-library/react":"^16.3.1","@testing-library/jest-dom":"^6.9.1","@testing-library/user-event":"^14.6.1"},"_npmOperationalInternal":{"tmp":"tmp/shopify-mcp-admin_2.5.1_1767354935926_0.8514863521249194","host":"s3://npm-registry-packages-npm-production"}},"2.5.2":{"name":"@anton.andrusenko/shopify-mcp-admin","version":"2.5.2","keywords":["shopify","mcp","model-context-protocol","ai","llm","ecommerce","claude","chatgpt","cursor","admin-api"],"author":{"name":"shopify-mcp-admin contributors"},"license":"MIT","_id":"@anton.andrusenko/shopify-mcp-admin@2.5.2","maintainers":[{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"}],"homepage":"https://github.com/AntonAndrusenko/shopify-mcp-admin#readme","bugs":{"url":"https://github.com/AntonAndrusenko/shopify-mcp-admin/issues"},"bin":{"shopify-mcp-admin":"dist/index.js"},"dist":{"shasum":"c1b1f3a3cf7cc4dc4ffadc18e410a817cdf93bbe","tarball":"https://registry.npmjs.org/@anton.andrusenko/shopify-mcp-admin/-/shopify-mcp-admin-2.5.2.tgz","fileCount":755,"integrity":"sha512-Vhgdo1junQKDu7f2Z0OHfKafCSLWJlBjpfK0D5u8BLaU+xoE5w1V3CDWUDgpNpw7AagnJfh87DaWfzCGJzw7Uw==","signatures":[{"sig":"MEYCIQDK48Urq9wh3yvam2YvUWOnXlCOaxv9uUw9GsQpHm+RkwIhAJpC4b38+AFYBpg6gHYffvJuY0RM5jwxMh37kiL0iOAV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49340641},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"77d809312e186dd88d1282ac4fcd72d7ea5f8667","scripts":{"ci":"npm run lint && npm run typecheck && npm run test && npm run build","dev":"tsx src/index.ts","lint":"biome check src/","test":"vitest --run","build":"tsup src/index.ts --format esm --dts --clean","start":"node dist/index.js","format":"biome format --write src/","wizard":"npx tsx src/index.ts init","inspect":"npx @modelcontextprotocol/inspector node dist/index.js","lint:fix":"biome check --fix src/","test:e2e":"playwright test","build:all":"npm run build && npm run build:dashboard","db:studio":"npx prisma studio","typecheck":"tsc --noEmit","seed:oauth":"npx tsx scripts/seed-oauth-test-data.ts","test:react":"vitest --run --config vitest.react.config.ts","test:watch":"vitest","inspect:dev":"npx @modelcontextprotocol/inspector npx tsx src/index.ts","wizard:build":"node dist/index.js init","dev:dashboard":"vite --config src/dashboard/vite.config.ts","test:coverage":"vitest run --coverage","version:major":"npm version major --no-git-tag-version","version:minor":"npm version minor --no-git-tag-version","version:patch":"npm version patch --no-git-tag-version","inspect:config":"npx @modelcontextprotocol/inspector --config mcp-inspector.json","build:dashboard":"vite build --config src/dashboard/vite.config.ts","librechat:setup":"./scripts/setup-librechat.sh","test:integration":"vitest run tests/integration/*.test.ts --testTimeout=60000","librechat:setup:local":"./scripts/setup-librechat.sh --use-local"},"_npmUser":{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"},"repository":{"url":"git+https://github.com/AntonAndrusenko/shopify-mcp-admin.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server for Shopify Admin API - enables AI agents to manage Shopify stores with 79 tools for products, inventory, collections, content, SEO, metafields, markets & translations","directories":{},"sideEffects":false,"_nodeVersion":"20.19.6","dependencies":{"ai":"^6.0.5","zod":"^3.25.76","clsx":"^2.1.1","cmdk":"^1.1.1","cors":"^2.8.5","pino":"^9.14.0","vaul":"^1.1.2","react":"^19.2.1","bcrypt":"^5.1.1","motion":"^12.23.26","nanoid":"^5.1.6","sonner":"^2.0.7","express":"^5.1.0","date-fns":"^4.1.0","recharts":"^3.5.1","react-dom":"^19.2.1","remark-gfm":"^4.0.1","streamdown":"^1.6.10","@ai-sdk/mcp":"^1.0.1","prom-client":"^15.1.3","@sentry/node":"^10.29.0","lucide-react":"^0.555.0","@ai-sdk/react":"^3.0.3","cookie-parser":"^1.4.7","@ai-sdk/openai":"^3.0.1","@prisma/client":"^6.0.0","react-markdown":"^10.1.0","tailwind-merge":"^3.4.0","react-hook-form":"^7.67.0","react-day-picker":"^9.13.0","react-router-dom":"^7.10.0","rehype-highlight":"^7.0.2","@ai-sdk/anthropic":"^3.0.1","@inquirer/prompts":"^7.5.1","express-rate-limit":"^8.2.1","@hookform/resolvers":"^5.2.2","tailwindcss-animate":"^1.0.7","use-stick-to-bottom":"^1.1.1","@radix-ui/react-slot":"^1.2.4","@radix-ui/react-tabs":"^1.1.0","@shopify/shopify-api":"^11.14.1","@radix-ui/react-label":"^2.1.8","@radix-ui/react-toast":"^1.2.15","@tanstack/react-query":"^5.90.11","@tanstack/react-table":"^8.21.3","@fontsource/geist-mono":"^5.2.7","@fontsource/geist-sans":"^5.2.5","@radix-ui/react-avatar":"^1.1.11","@radix-ui/react-dialog":"^1.1.15","@radix-ui/react-select":"^2.2.6","@radix-ui/react-popover":"^1.1.15","@radix-ui/react-tooltip":"^1.2.8","@radix-ui/react-checkbox":"^1.3.3","@radix-ui/react-progress":"^1.1.8","class-variance-authority":"^0.7.1","@modelcontextprotocol/sdk":"^1.22.0","@radix-ui/react-separator":"^1.1.8","@radix-ui/react-hover-card":"^1.1.15","@radix-ui/react-collapsible":"^1.1.12","@radix-ui/react-scroll-area":"^1.2.10","@radix-ui/react-alert-dialog":"^1.1.15","@radix-ui/react-dropdown-menu":"^2.1.16","@radix-ui/react-visually-hidden":"^1.2.4"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","tsup":"^8.5.1","vite":"^7.2.6","jsdom":"^27.3.0","prisma":"^6.0.0","vitest":"^3.2.4","postcss":"^8.5.6","supertest":"^7.1.4","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"^22.19.1","pino-pretty":"^11.3.0","tailwindcss":"^4.1.17","@types/react":"^19.2.7","autoprefixer":"^10.4.22","@types/bcrypt":"^5.0.2","@biomejs/biome":"^1.9.4","@types/express":"^5.0.5","@playwright/test":"^1.57.0","@types/react-dom":"^19.2.3","@types/supertest":"^6.0.3","@tailwindcss/vite":"^4.1.17","@vitest/coverage-v8":"^3.2.4","@types/cookie-parser":"^1.4.10","@vitejs/plugin-react":"^5.1.1","@testing-library/react":"^16.3.1","@testing-library/jest-dom":"^6.9.1","@testing-library/user-event":"^14.6.1"},"_npmOperationalInternal":{"tmp":"tmp/shopify-mcp-admin_2.5.2_1767884751518_0.1460507622635705","host":"s3://npm-registry-packages-npm-production"}},"2.6.0":{"name":"@anton.andrusenko/shopify-mcp-admin","version":"2.6.0","description":"MCP server for Shopify Admin API - enables AI agents to manage Shopify stores with 79 tools for products, inventory, collections, content, SEO, metafields, markets & translations","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","bin":{"shopify-mcp-admin":"dist/index.js"},"sideEffects":false,"scripts":{"dev":"tsx src/index.ts","dev:dashboard":"vite --config src/dashboard/vite.config.ts","build":"tsup src/index.ts --format esm --dts --clean","build:dashboard":"vite build --config src/dashboard/vite.config.ts","build:all":"npm run build && npm run build:dashboard","start":"node dist/index.js","lint":"biome check src/","lint:fix":"biome check --fix src/","format":"biome format --write src/","typecheck":"tsc --noEmit","test":"vitest --run","test:watch":"vitest","test:react":"vitest --run --config vitest.react.config.ts","test:coverage":"vitest run --coverage","test:integration":"vitest run tests/integration/*.test.ts --testTimeout=60000","test:e2e":"playwright test","inspect":"npx @modelcontextprotocol/inspector node dist/index.js","inspect:dev":"npx @modelcontextprotocol/inspector npx tsx src/index.ts","inspect:config":"npx @modelcontextprotocol/inspector --config mcp-inspector.json","wizard":"npx tsx src/index.ts init","wizard:build":"node dist/index.js init","librechat:setup":"./scripts/setup-librechat.sh","librechat:setup:local":"./scripts/setup-librechat.sh --use-local","ci":"npm run lint && npm run typecheck && npm run test && npm run build","version:patch":"npm version patch --no-git-tag-version","version:minor":"npm version minor --no-git-tag-version","version:major":"npm version major --no-git-tag-version","seed:oauth":"npx tsx scripts/seed-oauth-test-data.ts","db:studio":"npx prisma studio"},"keywords":["shopify","mcp","model-context-protocol","ai","llm","ecommerce","claude","chatgpt","cursor","admin-api"],"author":{"name":"shopify-mcp-admin contributors"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/AntonAndrusenko/shopify-mcp-admin.git"},"bugs":{"url":"https://github.com/AntonAndrusenko/shopify-mcp-admin/issues"},"homepage":"https://github.com/AntonAndrusenko/shopify-mcp-admin#readme","engines":{"node":">=20.0.0"},"dependencies":{"@ai-sdk/anthropic":"^3.0.1","@ai-sdk/google":"^1.0.11","@ai-sdk/mcp":"^1.0.1","@ai-sdk/openai":"^3.0.1","@ai-sdk/react":"^3.0.3","@aws-sdk/client-s3":"^3.965.0","@aws-sdk/s3-request-presigner":"^3.965.0","@fontsource/geist-mono":"^5.2.7","@fontsource/geist-sans":"^5.2.5","@hookform/resolvers":"^5.2.2","@inquirer/prompts":"^7.5.1","@modelcontextprotocol/sdk":"^1.22.0","@prisma/client":"^6.0.0","@radix-ui/react-alert-dialog":"^1.1.15","@radix-ui/react-avatar":"^1.1.11","@radix-ui/react-checkbox":"^1.3.3","@radix-ui/react-collapsible":"^1.1.12","@radix-ui/react-dialog":"^1.1.15","@radix-ui/react-dropdown-menu":"^2.1.16","@radix-ui/react-hover-card":"^1.1.15","@radix-ui/react-label":"^2.1.8","@radix-ui/react-popover":"^1.1.15","@radix-ui/react-progress":"^1.1.8","@radix-ui/react-scroll-area":"^1.2.10","@radix-ui/react-select":"^2.2.6","@radix-ui/react-separator":"^1.1.8","@radix-ui/react-slot":"^1.2.4","@radix-ui/react-tabs":"^1.1.0","@radix-ui/react-toast":"^1.2.15","@radix-ui/react-tooltip":"^1.2.8","@radix-ui/react-visually-hidden":"^1.2.4","@sentry/node":"^10.29.0","@shopify/shopify-api":"^11.14.1","@tanstack/react-query":"^5.90.11","@tanstack/react-table":"^8.21.3","ai":"^6.0.5","bcrypt":"^5.1.1","class-variance-authority":"^0.7.1","clsx":"^2.1.1","cmdk":"^1.1.1","cookie-parser":"^1.4.7","cors":"^2.8.5","date-fns":"^4.1.0","express":"^5.1.0","express-rate-limit":"^8.2.1","formidable":"^3.5.4","lucide-react":"^0.555.0","motion":"^12.23.26","nanoid":"^5.1.6","pdf-parse":"^2.4.5","pino":"^9.14.0","prom-client":"^15.1.3","react":"^19.2.1","react-day-picker":"^9.13.0","react-dom":"^19.2.1","react-hook-form":"^7.67.0","react-markdown":"^10.1.0","react-router-dom":"^7.10.0","recharts":"^3.5.1","rehype-highlight":"^7.0.2","remark-gfm":"^4.0.1","sonner":"^2.0.7","streamdown":"^1.6.10","tailwind-merge":"^3.4.0","tailwindcss-animate":"^1.0.7","use-stick-to-bottom":"^1.1.1","vaul":"^1.1.2","zod":"^3.25.76"},"devDependencies":{"@biomejs/biome":"^1.9.4","@playwright/test":"^1.57.0","@tailwindcss/vite":"^4.1.17","@testing-library/jest-dom":"^6.9.1","@testing-library/react":"^16.3.1","@testing-library/user-event":"^14.6.1","@types/bcrypt":"^5.0.2","@types/cookie-parser":"^1.4.10","@types/cors":"^2.8.19","@types/express":"^5.0.5","@types/formidable":"^3.4.6","@types/node":"^22.19.1","@types/react":"^19.2.7","@types/react-dom":"^19.2.3","@types/supertest":"^6.0.3","@vitejs/plugin-react":"^5.1.1","@vitest/coverage-v8":"^3.2.4","autoprefixer":"^10.4.22","jsdom":"^27.3.0","pino-pretty":"^11.3.0","postcss":"^8.5.6","prisma":"^6.0.0","supertest":"^7.1.4","tailwindcss":"^4.1.17","tsup":"^8.5.1","tsx":"^4.20.6","typescript":"^5.9.3","vite":"^7.2.6","vitest":"^3.2.4"},"_id":"@anton.andrusenko/shopify-mcp-admin@2.6.0","gitHead":"187b3ad16a1c42ea5c6148a9ed52b1e23d3d7926","_nodeVersion":"20.19.6","_npmVersion":"10.8.2","dist":{"integrity":"sha512-9rkkLMMZ+V1TYMwbveUw3Aq2/HaLWPV/FZSQ9E8wBBYnEDY4CCcRsXJ/go6Vg5mWUtHu8GKurBURCN4sXv64Ow==","shasum":"f4ac34e5b06dc841ea96848cb731c4b00d668c19","tarball":"https://registry.npmjs.org/@anton.andrusenko/shopify-mcp-admin/-/shopify-mcp-admin-2.6.0.tgz","fileCount":755,"unpackedSize":49576168,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDuFVGP9NSy16oY2YBxKHxBJSMXI/ID17ouK1uQvtRzUwIhAP7DFs2PIgcJ5ACskJ0iWDLhj7/UA6qSHd54F8RnEdlo"}]},"_npmUser":{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"},"directories":{},"maintainers":[{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/shopify-mcp-admin_2.6.0_1769013577828_0.15226693595058682"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-27T14:46:28.135Z","modified":"2026-01-21T16:39:38.370Z","0.1.0":"2025-11-27T14:46:28.470Z","0.2.0":"2025-11-27T16:36:45.583Z","0.3.0":"2025-11-28T12:44:08.619Z","0.4.0":"2025-11-28T14:46:57.475Z","0.4.1":"2025-11-28T14:59:45.562Z","0.5.0":"2025-11-28T17:14:49.622Z","0.6.0":"2025-11-29T18:10:59.202Z","0.7.0":"2025-11-29T20:32:26.762Z","0.8.0":"2025-11-30T19:08:18.025Z","1.0.0":"2025-11-30T23:17:20.186Z","1.0.1":"2025-11-30T23:27:23.830Z","1.1.0":"2025-12-01T08:44:42.675Z","1.1.1":"2025-12-01T10:33:37.426Z","1.1.2":"2025-12-01T16:36:42.651Z","1.1.3":"2025-12-02T08:38:58.117Z","2.0.0":"2025-12-05T15:30:44.217Z","2.0.1":"2025-12-05T19:14:52.475Z","2.0.2":"2025-12-05T20:00:34.500Z","2.0.3":"2025-12-18T08:14:51.054Z","2.1.0":"2025-12-19T09:03:19.111Z","2.1.1":"2025-12-19T11:39:05.610Z","2.1.2":"2025-12-19T12:49:40.539Z","2.2.1":"2025-12-24T12:28:50.525Z","2.3.0":"2025-12-26T15:14:37.687Z","2.4.0":"2025-12-29T16:01:48.882Z","2.5.0":"2025-12-31T09:18:35.274Z","2.5.1":"2026-01-02T11:55:36.362Z","2.5.2":"2026-01-08T15:05:51.910Z","2.6.0":"2026-01-21T16:39:38.253Z"},"bugs":{"url":"https://github.com/AntonAndrusenko/shopify-mcp-admin/issues"},"author":{"name":"shopify-mcp-admin contributors"},"license":"MIT","homepage":"https://github.com/AntonAndrusenko/shopify-mcp-admin#readme","keywords":["shopify","mcp","model-context-protocol","ai","llm","ecommerce","claude","chatgpt","cursor","admin-api"],"repository":{"type":"git","url":"git+https://github.com/AntonAndrusenko/shopify-mcp-admin.git"},"description":"MCP server for Shopify Admin API - enables AI agents to manage Shopify stores with 79 tools for products, inventory, collections, content, SEO, metafields, markets & translations","maintainers":[{"name":"anton.andrusenko","email":"andrusenko.av@gmail.com"}],"readme":"# @anton.andrusenko/shopify-mcp-admin\n\n> 🛍️ **MCP Server for Shopify Admin API** — Enable AI agents to manage Shopify stores with 79 powerful tools\n\n[![npm version](https://badge.fury.io/js/@anton.andrusenko%2Fshopify-mcp-admin.svg)](https://www.npmjs.com/package/@anton.andrusenko/shopify-mcp-admin)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Node.js Version](https://img.shields.io/badge/node-%3E%3D20.0.0-brightgreen)](https://nodejs.org/)\n[![codecov](https://codecov.io/gh/AntonAndrusenko/shopify-mcp-admin/graph/badge.svg)](https://codecov.io/gh/AntonAndrusenko/shopify-mcp-admin)\n\n---\n\n## ✨ Features\n\n- 🛠️ **79 MCP Tools** — Complete store management: products, inventory, collections, pages, blogs, redirects, metafields, markets, locales & translations\n- 📦 **Modular Architecture** — 7 modules with optional lazy loading for optimal AI performance (see [Tool Modules](#-tool-modules))\n- 🤖 **AI-Optimized** — Tool descriptions and error messages designed for LLM comprehension\n- 🔌 **Dual Transport** — STDIO for Claude Desktop, HTTP for ChatGPT/OpenAI\n- ⚡ **Rate Limiting** — Automatic retry with exponential backoff for Shopify API limits\n- 🔒 **Secure** — Tokens never exposed to AI agents; validated environment configuration\n\n---\n\n## 🚀 Quick Start\n\n### Prerequisites\n\n1. **Node.js 20+** — [Download](https://nodejs.org/)\n2. **Shopify Custom App** — Create one in your Shopify Admin:\n   - Go to **Settings → Apps and sales channels → Develop apps**\n   - Create a new app and configure Admin API scopes (see [Required Scopes](#required-shopify-scopes))\n   - Install the app and copy the Admin API access token\n\n### Installation\n\n```bash\n# Run directly with npx (recommended)\nnpx @anton.andrusenko/shopify-mcp-admin\n\n# Or install globally\nnpm install -g @anton.andrusenko/shopify-mcp-admin\n```\n\n### Setup Wizard (Recommended)\n\nThe easiest way to get started is with the interactive setup wizard:\n\n```bash\nnpx @anton.andrusenko/shopify-mcp-admin init\n```\n\nThe wizard will:\n1. **Prompt for your store URL** and validate the format\n2. **Choose authentication method** — Legacy token or OAuth 2.0\n3. **Test the connection** — Verifies credentials before saving\n4. **Select your AI client** — Claude Desktop, Cursor, Windsurf, VS Code, LibreChat, or OpenAI\n5. **Configure tool loading** — All tools, role preset, or lazy loading\n6. **Generate and save config** — Creates the appropriate config file for your client\n\n### Manual Configuration\n\nAlternatively, set environment variables directly:\n\n```bash\nexport SHOPIFY_STORE_URL=your-store.myshopify.com\nexport SHOPIFY_ACCESS_TOKEN=shpat_xxxxx\n```\n\n### First Tool Invocation\n\nOnce connected to an AI agent, try:\n\n> \"List all products in my Shopify store\"\n\nThe AI will use the `list-products` tool to fetch your catalog.\n\n---\n\n## 🔐 Authentication Methods\n\nshopify-mcp-admin supports multiple authentication methods depending on your use case:\n\n### Authentication Methods Overview\n\n| Method | Use Case | Client Types |\n|--------|----------|--------------|\n| **OAuth 2.0 Authorization Code + PKCE** | Web-based AI clients with browser | ChatGPT MCP Apps, Claude Web Custom Connectors |\n| **API Key Bearer Token** | Desktop/CLI apps, programmatic access | Claude Desktop, Cursor, LibreChat, VS Code |\n| **Legacy Custom App Token** | Local development, single-tenant | STDIO transport, local testing |\n| **Dev Dashboard Client Credentials** | Shopify Dev Dashboard apps | Local development with OAuth |\n\n### Which Method Should I Use?\n\n| Your Client | Recommended Method |\n|-------------|-------------------|\n| **ChatGPT (MCP Apps)** | OAuth 2.0 (automatic via DCR) — See [ChatGPT Integration](#-chatgpt-mcp-apps-integration) |\n| **Claude Web (Custom Connectors)** | OAuth 2.0 (automatic via DCR) — See [Claude Web Integration](#-claude-web-custom-connectors-integration) |\n| **Claude Desktop** | API Key Bearer Token — See [Claude Desktop](#️-claude-desktop-integration) |\n| **Cursor, VS Code** | API Key Bearer Token — See [LibreChat](#-librechat-integration) |\n| **LibreChat** | API Key Bearer Token — See [LibreChat](#-librechat-integration) |\n| **Local Development** | Legacy Token or Dev Dashboard |\n\n---\n\n### Option 1: OAuth 2.0 Authorization Code + PKCE (ChatGPT, Claude Web)\n\nFor web-based AI clients that support OAuth 2.0:\n\n- **Automatic client registration** via Dynamic Client Registration (RFC 7591)\n- **PKCE required** with S256 method (RFC 7636)\n- **No manual credentials needed** — clients handle registration automatically\n- **Browser-based authorization** with consent page\n\nThe server exposes discovery endpoints at:\n- `/.well-known/oauth-authorization-server` (RFC 8414)\n- `/.well-known/oauth-protected-resource` (RFC 9728)\n\n> See [OAuth 2.0 Endpoints Reference](#-oauth-20-endpoints-reference) for details.\n\n---\n\n### Option 2: API Key Bearer Token (Claude Desktop, Cursor, LibreChat)\n\nFor desktop apps and programmatic access:\n\n1. **Get API Key**: Visit your MCP Dashboard (`/app`) → Settings → API Keys\n2. **Generate Key**: Click \"Create New Key\" and copy the `sk_live_...` key\n3. **Configure Client**: Add `Authorization: Bearer sk_live_...` header\n4. **Ensure a Default Shop is set**: In the dashboard, go to **Settings → Default Shop** (recommended, especially if you have multiple shops connected)\n\n```bash\n# Example: Test with curl\ncurl -X POST https://shopify-mcp.com/mcp \\\n  -H \"Accept: application/json, text/event-stream\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"Authorization: Bearer sk_live_YOUR_API_KEY\" \\\n  -d '{\"jsonrpc\": \"2.0\", \"method\": \"tools/list\", \"id\": 1}'\n```\n\n> **Cursor note:** Cursor does not run an OAuth “Connect” flow inside MCP. Use an API key + `streamable-http` transport, and connect your Shopify store via the dashboard (`/app`) first.\n\n---\n\n### Option 3: Legacy Custom App Token (Local Development)\n\nIf you have a Custom App with a static access token:\n\n```bash\nSHOPIFY_STORE_URL=mystore.myshopify.com\nSHOPIFY_ACCESS_TOKEN=shpat_xxxxx\n```\n\n---\n\n### Option 4: Dev Dashboard Client Credentials (Local Development)\n\nIf you're using Shopify's new Dev Dashboard with client credentials:\n\n```bash\nSHOPIFY_STORE_URL=mystore.myshopify.com\nSHOPIFY_CLIENT_ID=xxxxx\nSHOPIFY_CLIENT_SECRET=xxxxx\n```\n\nTokens are automatically refreshed every 24 hours.\n\n> **Remote mode note (multi-tenant):** Shops connected via OAuth now support **expiring offline tokens with automatic refresh** (Shopify Dec 2025 refresh tokens). See `docs/TOKEN-REFRESH-IMPLEMENTATION.md`.\n\n---\n\n## ⚙️ Configuration Reference\n\n| Variable | Required | Default | Description |\n|----------|----------|---------|-------------|\n| `SERVER_MODE` | No | `local` | Server mode: `local` (single-tenant) or `remote` (multi-tenant) |\n| `SHOPIFY_STORE_URL` | ✅ (local mode) | — | Your Shopify store domain (e.g., `your-store.myshopify.com`) |\n| `SHOPIFY_ACCESS_TOKEN` | ⚡ See below | — | Admin API access token from your Custom App |\n| `SHOPIFY_CLIENT_ID` | ⚡ See below | — | Client ID from Dev Dashboard app |\n| `SHOPIFY_CLIENT_SECRET` | ⚡ See below | — | Client Secret from Dev Dashboard app |\n| `DATABASE_URL` | ✅ (remote mode) | — | PostgreSQL connection URL for multi-tenant mode |\n| `ENCRYPTION_KEY` | ✅ (remote mode) | — | 64-char hex key for credential encryption |\n| `SHOPIFY_API_VERSION` | No | `2025-10` | Shopify API version |\n| `TRANSPORT` | No | `stdio` | Transport mode: `stdio` or `http` |\n| `PORT` | No | `3000` | HTTP server port (when `TRANSPORT=http`) |\n| `DEBUG` | No | — | Enable debug logging (`1` or `true`) |\n| `LOG_LEVEL` | No | `info` | Log level: `debug`, `info`, `warn`, `error` |\n| `SHOPIFY_MCP_LAZY_LOADING` | No | `false` | Enable modular lazy loading (set to `true` for on-demand module loading) |\n| `SHOPIFY_MCP_ROLE` | No | — | Role preset for automatic module loading (see [Role Presets](#-role-presets)) |\n| `ALLOWED_HOSTS` | ✅ (remote mode) | — | Comma-separated list of allowed hostnames (e.g., `shopify-mcp.com`) |\n| `ALLOWED_ORIGINS` | ✅ (remote mode) | — | Comma-separated list of allowed CORS origins (e.g., `https://shopify-mcp.com`) |\n| `METRICS_ENDPOINT_ENABLED` | No | `false` | Enable Prometheus metrics endpoint at `/metrics` |\n| `ENABLE_HSTS` | No | `false` | Enable HTTP Strict Transport Security headers |\n| `SHUTDOWN_DRAIN_SECONDS` | No | `30` | Graceful shutdown drain timeout in seconds (1-300) |\n| `LOG_FORMAT` | No | `json` | Log format: `json` (production) or `pretty` (development) |\n| `SENTRY_DSN` | No | — | Sentry error tracking DSN (recommended for production) |\n\n### Server Modes\n\nshopify-mcp-admin supports two operating modes:\n\n| Mode | Description | Use Case |\n|------|-------------|----------|\n| **local** (default) | Single-tenant with env credentials | Claude Desktop, local AI agents, development |\n| **remote** | Multi-tenant with database storage | SaaS platform, hosted service |\n\n**Local Mode** (default):\n- Credentials via `SHOPIFY_STORE_URL` + `SHOPIFY_ACCESS_TOKEN` (or OAuth)\n- All 79 tools operate on a single store\n- No database required\n- Works with STDIO and HTTP transports\n\n**Remote Mode**:\n- Multi-tenant with per-tenant credentials stored in PostgreSQL\n- Requires `DATABASE_URL` and `ENCRYPTION_KEY`\n- HTTP transport only (STDIO not supported for multi-tenant)\n- Web dashboard available at `/app`\n\n**⚡ Authentication (local mode):** Provide EITHER `SHOPIFY_ACCESS_TOKEN` (legacy) OR both `SHOPIFY_CLIENT_ID` and `SHOPIFY_CLIENT_SECRET` (Dev Dashboard).\n\n### Required Shopify Scopes\n\nConfigure these scopes when creating your Custom App:\n\n| Scope | Purpose |\n|-------|---------|\n| `read_products`, `write_products` | Product management |\n| `read_inventory`, `write_inventory` | Inventory management |\n| `read_content`, `write_content` | Pages, blogs, articles |\n| `read_online_store_navigation`, `write_online_store_navigation` | URL redirects |\n| `read_markets`, `write_markets` | Markets (international selling) |\n| `read_locales`, `write_locales` | Shop locales and translations |\n| `read_translations`, `write_translations` | Translatable content |\n\n📖 **Setup Guide:** [Shopify Custom App Documentation](https://shopify.dev/docs/apps/tools/development-stores)\n\n---\n\n## 🖥️ Claude Desktop Integration\n\n### Step 1: Configure Claude Desktop\n\nEdit your Claude Desktop configuration file:\n\n- **macOS:** `~/.config/claude/claude_desktop_config.json`\n- **Windows:** `%APPDATA%\\Claude\\claude_desktop_config.json`\n\n### Step 2: Add the MCP Server\n\n**Option 1: Legacy Token Authentication**\n\n```json\n{\n  \"mcpServers\": {\n    \"shopify\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@anton.andrusenko/shopify-mcp-admin\"],\n      \"env\": {\n        \"SHOPIFY_STORE_URL\": \"your-store.myshopify.com\",\n        \"SHOPIFY_ACCESS_TOKEN\": \"shpat_xxxxx\"\n      }\n    }\n  }\n}\n```\n\n**Option 2: Dev Dashboard (OAuth 2.0)**\n\n```json\n{\n  \"mcpServers\": {\n    \"shopify\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@anton.andrusenko/shopify-mcp-admin\"],\n      \"env\": {\n        \"SHOPIFY_STORE_URL\": \"your-store.myshopify.com\",\n        \"SHOPIFY_CLIENT_ID\": \"xxxxx\",\n        \"SHOPIFY_CLIENT_SECRET\": \"xxxxx\"\n      }\n    }\n  }\n}\n```\n\n### Step 3: Restart Claude Desktop\n\nQuit and reopen Claude Desktop. You should see \"shopify\" in the MCP servers list.\n\n### Common Issues\n\n| Issue | Solution |\n|-------|----------|\n| Server not appearing | Check JSON syntax; ensure no trailing commas |\n| \"Command not found\" | Ensure Node.js 20+ is installed and in PATH |\n| Authentication errors | Verify `SHOPIFY_ACCESS_TOKEN` is correct |\n\n---\n\n## 💬 LibreChat Integration\n\n[LibreChat](https://www.librechat.ai/) is an open-source AI chat interface that supports MCP servers natively. This section provides a complete guide to set up LibreChat with the Shopify MCP server.\n\n### Prerequisites\n\n- **Docker Desktop** — [Download](https://www.docker.com/products/docker-desktop) and ensure it's running\n- **Git** — For cloning repositories\n- **LLM API Key** — OpenAI or Anthropic API key for the chat functionality\n\n### Quick Setup (Recommended)\n\nUse the included setup script for automated installation:\n\n```bash\n# Clone this repo (if you haven't already)\ngit clone https://github.com/AntonAndrusenko/shopify-mcp-admin.git\ncd shopify-mcp-admin\n\n# Run the setup script\n./scripts/setup-librechat.sh\n```\n\nThe script will:\n1. Check Docker is installed and running\n2. Clone LibreChat to `~/LibreChat`\n3. Prompt for your Shopify credentials (store URL, access token or OAuth)\n4. Create `librechat.yaml` with MCP server configuration\n5. Create `docker-compose.override.yml` to mount the config\n6. Pull Docker images and start all containers\n7. Verify the Shopify MCP server loads successfully\n\n**Script Options:**\n```bash\n# Install to a custom directory\n./scripts/setup-librechat.sh --install-dir /path/to/librechat\n\n# Use local development build instead of npm package\n./scripts/setup-librechat.sh --use-local\n\n# Show help\n./scripts/setup-librechat.sh --help\n```\n\n### Manual Setup\n\n<details>\n<summary>Click to expand manual installation steps</summary>\n\n#### Step 1: Clone and Configure LibreChat\n\n```bash\n# Clone LibreChat\ngit clone https://github.com/danny-avila/LibreChat.git\ncd LibreChat\n\n# Create environment file\ncp .env.example .env\n```\n\n#### Step 2: Create MCP Server Configuration\n\nCreate `librechat.yaml` in the LibreChat directory:\n\n```yaml\nversion: 1.2.1\n\nmcpServers:\n  shopify:\n    type: stdio\n    command: npx\n    args:\n      - -y\n      - \"@anton.andrusenko/shopify-mcp-admin\"\n    env:\n      SHOPIFY_STORE_URL: \"your-store.myshopify.com\"\n      # Option 1: Access Token\n      SHOPIFY_ACCESS_TOKEN: \"shpat_xxxxx\"\n      # Option 2: OAuth (comment out ACCESS_TOKEN, uncomment these)\n      # SHOPIFY_CLIENT_ID: \"your_client_id\"\n      # SHOPIFY_CLIENT_SECRET: \"your_client_secret\"\n      LOG_LEVEL: \"info\"\n    serverInstructions: true\n    timeout: 30000\n    initTimeout: 15000\n```\n\n#### Step 3: Mount Configuration in Docker\n\nCreate `docker-compose.override.yml`:\n\n```yaml\nservices:\n  api:\n    volumes:\n      - type: bind\n        source: ./librechat.yaml\n        target: /app/librechat.yaml\n```\n\n#### Step 4: Start LibreChat\n\n```bash\n# Pull the latest images\ndocker compose pull\n\n# Start all services\ndocker compose up -d\n\n# Verify containers are running\ndocker compose ps\n```\n\n#### Step 5: Verify MCP Server Loaded\n\n```bash\n# Check logs for MCP initialization\ndocker compose logs api | grep -i \"mcp\"\n\n# You should see:\n# [MCP][shopify] Initialized in: XXXXms\n# MCP servers initialized successfully. Added 79 MCP tools.\n```\n\n</details>\n\n### After Installation: Enable MCP in LibreChat\n\nOnce LibreChat is running, follow these steps to use the Shopify MCP server:\n\n#### 1. Create an Account\n- Open http://localhost:3080 in your browser\n- Click \"Sign up\" and create an account\n- Log in with your new credentials\n\n#### 2. Add an LLM API Key\n- Click your **profile avatar** (bottom-left)\n- Select **Settings**\n- Go to **User Provider Keys**\n- Add your API key:\n  - **OpenAI**: Paste your `sk-...` key\n  - **Anthropic**: Paste your `sk-ant-...` key\n- Click **Save**\n\n#### 3. Select the Shopify MCP Server\n- Start a **New Chat**\n- Look for the **MCP Servers** dropdown in the chat input area (shows a plug icon)\n- Click it and select **\"shopify\"**\n- You should see a \"shopify\" badge appear, indicating the MCP server is active\n\n#### 4. Test the Integration\nTry these prompts to verify everything works:\n\n```\n\"What's my store name and what plan am I on?\"\n\"List my products\"\n\"Show me products with low inventory\"\n```\n\n### Troubleshooting\n\n| Issue | Solution |\n|-------|----------|\n| MCP server not appearing | Check logs: `docker compose logs api \\| grep -i mcp` |\n| \"shopify\" badge not visible | Refresh the page, or restart: `docker compose restart` |\n| Tools not working | Verify Shopify credentials in `librechat.yaml` |\n| Docker won't start | Ensure Docker Desktop is running |\n| Permission denied on script | Run: `chmod +x ./scripts/setup-librechat.sh` |\n\n### Useful Commands\n\n```bash\n# View LibreChat logs\ncd ~/LibreChat && docker compose logs api -f\n\n# View only MCP-related logs\ncd ~/LibreChat && docker compose logs api | grep -i \"mcp\\|shopify\"\n\n# Restart LibreChat (after config changes)\ncd ~/LibreChat && docker compose restart\n\n# Stop LibreChat\ncd ~/LibreChat && docker compose down\n\n# Update LibreChat\ncd ~/LibreChat && git pull && docker compose pull && docker compose up -d\n```\n\n> 📄 **Advanced Configuration:** See `librechat.yaml.example` for multi-store setups, role presets, and HTTP/SSE transport modes.\n\n### Production Deployment (Admin-Only Access)\n\nLibreChat can be deployed alongside your production MCP server with admin-only access. The deployment is integrated into the main workflow:\n\n1. **Configure LibreChat** in your `.env.deploy` file:\n   ```bash\n   LIBRECHAT_ADMIN_EMAILS=admin@example.com,admin2@example.com\n   LIBRECHAT_DOMAIN=chat.shopify-mcp.com\n   ```\n\n2. **Deploy with the main script** — LibreChat is automatically configured:\n   ```bash\n   ./DEPLOY-NOW.sh\n   ```\n\nThe integrated deployment will:\n- ✅ Configure admin-only access (email whitelist)\n- ✅ Set up MCP server connection with your production API key\n- ✅ Configure AI model endpoints (OpenAI, Anthropic, Google, Groq)\n- ✅ Users provide their own LLM API keys in the UI\n\n📖 **Full Guide**: See [LibreChat Production Deployment](./docs/LIBRECHAT-PRODUCTION-DEPLOYMENT.md)  \n📖 **Model Setup**: See [LibreChat Models Setup](./docs/LIBRECHAT-MODELS-SETUP.md)\n\n### Testing with Remote Production Server\n\nTo connect LibreChat to your **remote production MCP server** (instead of running locally):\n\n1. **Get API Key**: Visit your production dashboard (e.g., `https://shopify-mcp.com/app`) → Settings → API Keys\n2. **Configure LibreChat**: Update `librechat.yaml` with production server URL:\n\n```yaml\nmcpServers:\n  shopify-mcp-production:\n    type: streamable-http\n    url: https://shopify-mcp.com/mcp\n    headers:\n      Authorization: \"Bearer sk_live_YOUR_API_KEY_HERE\"\n    timeout: 60000\n    serverInstructions: true\n```\n\n3. **Restart LibreChat**: `docker compose restart api`\n\n📖 **Full Guide**: See [LibreChat Production Testing Guide](docs/LIBRECHAT-PRODUCTION-TESTING.md) for detailed instructions, troubleshooting, and security best practices.\n\n---\n\n## 🤖 ChatGPT MCP Apps Integration\n\nChatGPT supports connecting to MCP servers via **OAuth 2.0 Authorization Code Flow with PKCE**. This is the recommended method for ChatGPT Plus/Pro/Team/Enterprise users.\n\n### How It Works\n\nWhen you add the Shopify MCP server in ChatGPT:\n\n1. **ChatGPT discovers** the OAuth endpoints via `/.well-known/oauth-authorization-server` (RFC 8414)\n2. **ChatGPT registers** itself as an OAuth client via `/oauth/register` (RFC 7591 Dynamic Client Registration)\n3. **You authorize** the connection via a consent page at `/oauth/authorize`\n4. **ChatGPT exchanges** the authorization code for tokens via `/oauth/token`\n5. **ChatGPT uses** the access token to call MCP tools\n\n> **No manual `client_id` or `client_secret` needed** — ChatGPT handles registration automatically!\n\n### Prerequisites\n\n1. **Deployed MCP Server** — Your server running in remote mode at `https://shopify-mcp.com` (or your own domain)\n2. **Shopify Store Connected** — At least one shop connected in your MCP Dashboard\n3. **ChatGPT Plus/Pro/Team/Enterprise** — MCP Apps require a paid ChatGPT subscription\n\n### Step-by-Step Setup\n\n#### Step 1: Ensure Your Shop is Connected\n\n1. Visit your MCP Dashboard: `https://shopify-mcp.com/app`\n2. Log in or register a tenant account\n3. Go to **Shops** and connect your Shopify store (OAuth or manual token)\n4. Verify the shop shows as \"Connected\"\n\n#### Step 2: Add MCP Server in ChatGPT\n\n1. Open ChatGPT → **Settings** → **Connectors** (or **Apps**)\n2. Enable **Developer Mode** in Advanced Settings (if required)\n3. Click **Create** or **Add New MCP Server**\n4. Fill in the configuration:\n\n| Field | Value |\n|-------|-------|\n| **Name** | `Shopify MCP` |\n| **Description** | `Manage Shopify store: products, inventory, collections, content, SEO` |\n| **MCP Server URL** | `https://shopify-mcp.com/mcp` |\n| **Authentication** | `OAuth 2.0` (auto-detected via discovery) |\n\n5. Click **Save** or **Connect**\n\n#### Step 3: Authorize the Connection\n\n1. ChatGPT will open an authorization page at `https://shopify-mcp.com/oauth/authorize`\n2. Log in with your MCP Dashboard credentials (same email/password)\n3. Review the requested scopes and click **Authorize**\n4. You'll be redirected back to ChatGPT with the connection established\n\n#### Step 4: Test the Connection\n\nIn ChatGPT, try:\n> \"List all products in my Shopify store\"\n\nChatGPT will use the `list-products` tool to fetch your catalog.\n\n### ChatGPT Troubleshooting\n\n| Issue | Solution |\n|-------|----------|\n| \"OAuth discovery failed\" | Verify server is running: `curl https://shopify-mcp.com/.well-known/oauth-authorization-server` |\n| \"Client registration failed\" | Check server logs for registration errors |\n| \"Authorization failed\" | Ensure you're logged in to the MCP Dashboard with the correct account |\n| \"No shop configured\" | Connect a shop in your MCP Dashboard first |\n| \"Token expired\" | Re-authorize the connection in ChatGPT settings |\n| Connection timeout | Check server health: `curl https://shopify-mcp.com/health` |\n\n### Re-Authorization\n\nIf your connection stops working:\n\n1. Go to ChatGPT → **Settings** → **Connectors**\n2. Find the Shopify MCP connection and click **Disconnect**\n3. Click **Connect** again to start a fresh OAuth flow\n4. Complete the authorization as described above\n\n---\n\n## 🔮 Claude Web Custom Connectors Integration\n\nClaude Web (claude.ai) supports MCP connections via **Custom Connectors** using the same OAuth 2.0 Authorization Code Flow with PKCE.\n\n> **Plan Requirements:** Claude Web Custom Connectors require **Claude Pro, Max, Team, or Enterprise** subscription.\n\n### How It Works\n\nClaude Web's Custom Connectors work similarly to ChatGPT's MCP Apps:\n\n1. **Claude discovers** OAuth endpoints via `/.well-known/oauth-authorization-server`\n2. **Claude registers** as an OAuth client via Dynamic Client Registration (RFC 7591)\n3. **You authorize** the connection via the consent page\n4. **Claude exchanges** the authorization code for tokens\n5. **Claude uses** the access token for MCP tool calls\n\n### Prerequisites\n\n1. **Deployed MCP Server** — Your server at `https://shopify-mcp.com` (or your own domain)\n2. **Shopify Store Connected** — At least one shop connected in your MCP Dashboard\n3. **Claude Pro/Max/Team/Enterprise** — Custom Connectors require a paid subscription\n\n### Step-by-Step Setup\n\n#### Step 1: Ensure Your Shop is Connected\n\n1. Visit your MCP Dashboard: `https://shopify-mcp.com/app`\n2. Log in or register a tenant account\n3. Connect your Shopify store under **Shops**\n\n#### Step 2: Add Custom Connector in Claude Web\n\n1. Go to **claude.ai** → **Settings** (gear icon)\n2. Navigate to **Integrations** or **Custom Connectors**\n3. Click **Add Connector** or **New**\n4. Fill in the configuration:\n\n| Field | Value |\n|-------|-------|\n| **Name** | `Shopify MCP` |\n| **Description** | `Manage Shopify store via MCP` |\n| **Server URL** | `https://shopify-mcp.com/mcp` |\n\n5. Click **Save** or **Connect**\n\n#### Step 3: Authorize the Connection\n\n1. Claude will redirect you to `https://shopify-mcp.com/oauth/authorize`\n2. Log in with your MCP Dashboard credentials\n3. Review and approve the authorization request\n4. You'll be redirected back to Claude with the connection active\n\n#### Step 4: Test the Connection\n\nIn Claude, try:\n> \"What products are in my Shopify store?\"\n\nClaude will use the MCP tools to query your store.\n\n### Claude Web Troubleshooting\n\n| Issue | Solution |\n|-------|----------|\n| \"Custom Connectors not available\" | Upgrade to Claude Pro, Max, Team, or Enterprise |\n| \"OAuth flow failed\" | Verify server discovery: `curl https://shopify-mcp.com/.well-known/oauth-authorization-server` |\n| \"Authorization error\" | Ensure you're using the correct MCP Dashboard credentials |\n| \"Connector not responding\" | Check server health: `curl https://shopify-mcp.com/health` |\n| \"Token expired\" | Disconnect and reconnect the Custom Connector |\n\n### Re-Authorization\n\nIf the connection expires or breaks:\n\n1. Go to Claude Web → **Settings** → **Integrations**\n2. Find the Shopify connector and click **Remove** or **Disconnect**\n3. Add the connector again and complete the authorization flow\n\n---\n\n## 🔌 OAuth 2.0 Endpoints Reference\n\nThe MCP server exposes the following OAuth 2.0 endpoints for client authentication:\n\n| Endpoint | Method | Description | RFC |\n|----------|--------|-------------|-----|\n| `/.well-known/oauth-authorization-server` | GET | Authorization server metadata (issuer, endpoints, capabilities) | [RFC 8414](https://tools.ietf.org/html/rfc8414) |\n| `/.well-known/oauth-protected-resource` | GET | Protected resource metadata (resource server, scopes) | [RFC 9728](https://tools.ietf.org/html/rfc9728) |\n| `/oauth/register` | POST | Dynamic Client Registration (automatic client registration) | [RFC 7591](https://tools.ietf.org/html/rfc7591) |\n| `/oauth/authorize` | GET | Authorization endpoint with consent UI | [RFC 6749](https://tools.ietf.org/html/rfc6749) |\n| `/oauth/token` | POST | Token endpoint (authorization_code, refresh_token grants) | [RFC 6749](https://tools.ietf.org/html/rfc6749), [RFC 7636](https://tools.ietf.org/html/rfc7636) |\n\n### OAuth Flow Diagram\n\n```\n┌─────────────┐                                    ┌─────────────────────────┐\n│   ChatGPT   │                                    │    MCP Server           │\n│  or Claude  │                                    │  (shopify-mcp.com)      │\n└──────┬──────┘                                    └───────────┬─────────────┘\n       │                                                       │\n       │  1. GET /.well-known/oauth-authorization-server       │\n       │ ───────────────────────────────────────────────────>  │\n       │  <─── Authorization server metadata (RFC 8414)        │\n       │                                                       │\n       │  2. POST /oauth/register (Dynamic Client Registration)│\n       │ ───────────────────────────────────────────────────>  │\n       │  <─── client_id, client_secret (RFC 7591)             │\n       │                                                       │\n       │  3. Redirect user to /oauth/authorize?client_id=...   │\n       │     &redirect_uri=...&code_challenge=...&state=...    │\n       │ ───────────────────────────────────────────────────>  │\n       │                                                       │\n       │        ┌─────────────────────────────────────────┐    │\n       │        │ User sees consent page, logs in,        │    │\n       │        │ approves authorization                   │    │\n       │        └─────────────────────────────────────────┘    │\n       │                                                       │\n       │  <─── Redirect to callback with authorization code    │\n       │                                                       │\n       │  4. POST /oauth/token (exchange code for tokens)      │\n       │     code=...&code_verifier=...&grant_type=...         │\n       │ ───────────────────────────────────────────────────>  │\n       │  <─── access_token, refresh_token (RFC 6749/7636)     │\n       │                                                       │\n       │  5. POST /mcp (with Bearer access_token)              │\n       │ ───────────────────────────────────────────────────>  │\n       │  <─── MCP tool results                                │\n       └───────────────────────────────────────────────────────┘\n```\n\n### Discovery Endpoint Example\n\n```bash\ncurl https://shopify-mcp.com/.well-known/oauth-authorization-server\n```\n\n```json\n{\n  \"issuer\": \"https://shopify-mcp.com\",\n  \"authorization_endpoint\": \"https://shopify-mcp.com/oauth/authorize\",\n  \"token_endpoint\": \"https://shopify-mcp.com/oauth/token\",\n  \"registration_endpoint\": \"https://shopify-mcp.com/oauth/register\",\n  \"response_types_supported\": [\"code\"],\n  \"grant_types_supported\": [\"authorization_code\", \"refresh_token\"],\n  \"code_challenge_methods_supported\": [\"S256\"],\n  \"token_endpoint_auth_methods_supported\": [\"client_secret_post\"]\n}\n```\n\n---\n\n## 🌐 OpenAI/ChatGPT Integration (Alternative Methods)\n\nIn addition to the OAuth-based ChatGPT MCP Apps integration above, you can also use API key authentication for programmatic access.\n\n### Option 1: Local Server (Development)\n\nRun the server locally for development and testing with OpenAI function calling.\n\n#### Step 1: Start the Server\n\n```bash\nTRANSPORT=http \\\nPORT=3000 \\\nSHOPIFY_STORE_URL=your-store.myshopify.com \\\nSHOPIFY_ACCESS_TOKEN=shpat_xxxxx \\\nnpx @anton.andrusenko/shopify-mcp-admin\n```\n\n#### Step 2: Test the Connection\n\n```bash\n# List available tools\ncurl -X POST http://localhost:3000/mcp \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"jsonrpc\": \"2.0\", \"method\": \"tools/list\", \"id\": 1}'\n```\n\n#### Step 3: Call a Tool\n\n```bash\n# Example: List products\ncurl -X POST http://localhost:3000/mcp \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"jsonrpc\": \"2.0\",\n    \"method\": \"tools/call\",\n    \"params\": {\n      \"name\": \"list-products\",\n      \"arguments\": { \"first\": 10 }\n    },\n    \"id\": 2\n  }'\n```\n\n---\n\n### Option 3: Remote Server with Bearer Token\n\nConnect to your production MCP server from any OpenAI-compatible client.\n\n```bash\n# Authenticated request to remote server\ncurl -X POST https://your-server.com/mcp \\\n  -H \"Content-Type: application/json\" \\\n  -H \"Authorization: Bearer sk_live_YOUR_API_KEY\" \\\n  -d '{\"jsonrpc\": \"2.0\", \"method\": \"tools/list\", \"id\": 1}'\n```\n\n---\n\n### OpenAI Function Calling Format\n\nEach tool can be converted to OpenAI function format for custom integrations:\n\n```json\n{\n  \"name\": \"list-products\",\n  \"description\": \"List products from the Shopify store with optional filtering\",\n  \"parameters\": {\n    \"type\": \"object\",\n    \"properties\": {\n      \"first\": { \"type\": \"number\", \"description\": \"Number of products to return\" },\n      \"query\": { \"type\": \"string\", \"description\": \"Search query\" }\n    }\n  }\n}\n```\n\n---\n\n## 🎭 Role Presets\n\nRole presets automatically load appropriate tool modules at startup, optimizing the tool set for specific workflows and reducing AI context overhead.\n\n### Available Presets\n\n| Preset | Modules | Tools | Use Case |\n|--------|---------|-------|----------|\n| `inventory-manager` | core | 15 | Stock management and inventory operations |\n| `product-manager` | core, store-context, collections, product-extensions | 41 | Full product catalog management |\n| `content-manager` | core, content | 37 | Pages, blogs, and content marketing |\n| `seo-specialist` | core, collections, product-extensions, advanced-redirects | 38 | SEO optimization and URL management |\n| `international-manager` | core, store-context, international, collections | 46 | Multi-market and translation management |\n| `full-access` | All 7 modules | 81 | Full store administration (includes meta-tools) |\n\n### Using Role Presets\n\nSet the `SHOPIFY_MCP_ROLE` environment variable:\n\n```bash\nexport SHOPIFY_MCP_ROLE=product-manager\nnpx @anton.andrusenko/shopify-mcp-admin\n```\n\nOr in Claude Desktop config:\n\n```json\n{\n  \"mcpServers\": {\n    \"shopify\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@anton.andrusenko/shopify-mcp-admin\"],\n      \"env\": {\n        \"SHOPIFY_STORE_URL\": \"your-store.myshopify.com\",\n        \"SHOPIFY_ACCESS_TOKEN\": \"shpat_xxxxx\",\n        \"SHOPIFY_MCP_ROLE\": \"product-manager\"\n      }\n    }\n  }\n}\n```\n\n### Module Discovery (Lazy Loading Mode)\n\nWhen lazy loading is enabled (`SHOPIFY_MCP_LAZY_LOADING=true`) and no role is set, the server starts with core tools only (15 tools). AI agents can discover and load additional modules dynamically:\n\n1. **Discover modules**: Use `list-modules` to see available modules\n2. **Load modules**: Use `load-module` with the module name to enable tools\n3. **Suggestions**: Tool responses include suggestions for relevant modules to load\n\n> **Note:** When lazy loading is disabled (default), all 79 tools are available immediately and module discovery is not needed.\n\n---\n\n## 🛠️ Available Tools\n\n@anton.andrusenko/shopify-mcp-admin provides **79 domain tools** organized into 16 categories (plus 2 meta-tools when lazy loading is enabled):\n\n<details>\n<summary><strong>🏪 Store Info (9 tools)</strong></summary>\n\n| Tool | Description |\n|------|-------------|\n| `get-store-info` | Get basic store information (name, domain, plan, currency, timezone, email) |\n| `get-store-limits` | Get store resource limits (max variants, max options, location limit) |\n| `get-store-features` | Get feature flags (gift cards, reports, storefront, bundles, subscriptions) |\n| `get-store-currencies` | Get multi-currency configuration (base currency, presentment currencies, formats) |\n| `get-store-shipping` | Get shipping configuration (ships-to countries, countries in shipping zones) |\n| `get-store-domain` | Get primary domain configuration (hostname, URL, SSL status) |\n| `get-store-taxes` | Get tax configuration (taxes included in prices, tax shipping) |\n| `get-store-policies` | Get legal policies (privacy, terms of service, refund policy) |\n| `get-store-alerts` | Get admin alerts and setup requirements |\n\n#### Example: Get Store Limits\n\n```json\n{\n  \"maxProductVariants\": 2000,\n  \"maxProductOptions\": 3,\n  \"locationLimit\": 1000,\n  \"redirectLimitReached\": false\n}\n```\n\n#### Example: Get Store Features\n\n```json\n{\n  \"giftCards\": true,\n  \"reports\": true,\n  \"storefront\": true,\n  \"bundles\": {\n    \"eligibleForBundles\": true\n  },\n  \"sellsSubscriptions\": false\n}\n```\n\n#### Example: Get Store Currencies\n\n```json\n{\n  \"currencyCode\": \"USD\",\n  \"enabledPresentmentCurrencies\": [\"USD\", \"EUR\", \"GBP\", \"CAD\"],\n  \"currencyFormats\": {\n    \"moneyFormat\": \"${{amount}}\",\n    \"moneyWithCurrencyFormat\": \"${{amount}} USD\"\n  }\n}\n```\n\n</details>\n\n<details>\n<summary><strong>📦 Product Management (7 tools)</strong></summary>\n\n| Tool | Description |\n|------|-------------|\n| `create-product` | Create a new product with title, description, variants, and images |\n| `get-product` | Retrieve a product by ID with full details |\n| `update-product` | Update product title, description, status, SEO fields |\n| `delete-product` | Delete a product by ID |\n| `list-products` | List products with pagination and search |\n| `update-product-variant` | Update variant price, SKU, inventory policy |\n| `add-product-image` | Add an image to a product from URL |\n\n</details>\n\n<details>\n<summary><strong>🏷️ Product Metafields (3 tools)</strong></summary>\n\n| Tool | Description |\n|------|-------------|\n| `get-product-metafields` | Get all metafields for a product |\n| `set-product-metafields` | Set or update metafields on a product |\n| `delete-product-metafields` | Delete specific metafields from a product |\n\n</details>\n\n<details>\n<summary><strong>📄 Page Metafields (3 tools)</strong></summary>\n\n| Tool | Description |\n|------|-------------|\n| `get-page-metafields` | Get all metafields for a page |\n| `set-page-metafields` | Set or update metafields on a page |\n| `delete-page-metafields` | Delete specific metafields from a page |\n\n</details>\n\n<details>\n<summary><strong>📝 Blog & Article Metafields (6 tools)</strong></summary>\n\n| Tool | Description |\n|------|-------------|\n| `get-blog-metafields` | Get all metafields for a blog |\n| `set-blog-metafields` | Set or update metafields on a blog |\n| `delete-blog-metafields` | Delete specific metafields from a blog |\n| `get-article-metafields` | Get all metafields for an article |\n| `set-article-metafields` | Set or update metafields on an article |\n| `delete-article-metafields` | Delete specific metafields from an article |\n\n</details>\n\n<details>\n<summary><strong>📁 Collection Metafields (3 tools)</strong></summary>\n\n| Tool | Description |\n|------|-------------|\n| `get-collection-metafields` | Get all metafields for a collection |\n| `set-collection-metafields` | Set or update metafields on a collection |\n| `delete-collection-metafields` | Delete specific metafields from a collection |\n\n</details>\n\n<details>\n<summary><strong>📁 Collection Management (7 tools)</strong></summary>\n\n| Tool | Description |\n|------|-------------|\n| `create-collection` | Create a manual or smart collection |\n| `get-collection` | Retrieve collection details and products |\n| `update-collection` | Update collection title, description, SEO |\n| `delete-collection` | Delete a collection by ID |\n| `list-collections` | List all collections with pagination |\n| `add-products-to-collection` | Add products to a manual collection |\n| `remove-products-from-collection` | Remove products from a manual collection |\n\n</details>\n\n<details>\n<summary><strong>🖼️ Enhanced Image Management (3 tools)</strong></summary>\n\n| Tool | Description |\n|------|-------------|\n| `update-product-image` | Update image alt text for SEO |\n| `delete-product-image` | Delete an image from a product |\n| `reorder-product-images` | Reorder product images by position |\n\n</details>\n\n<details>\n<summary><strong>🔀 URL Redirects (7 tools)</strong></summary>\n\n| Tool | Description |\n|------|-------------|\n| `create-redirect` | Create a URL redirect (301/302) |\n| `delete-redirect` | Delete a URL redirect |\n| `list-redirects` | List all URL redirects |\n| `bulk-delete-redirects` | Delete multiple redirects by ID |\n| `bulk-delete-redirects-by-search` | Delete redirects matching a search query |\n| `import-redirects` | Import redirects from CSV URL |\n| `submit-redirect-import` | Submit a redirect import job for processing |\n\n</details>\n\n<details>\n<summary><strong>📄 Page Management (5 tools)</strong></summary>\n\n| Tool | Description |\n|------|-------------|\n| `create-page` | Create a new page (About, Contact, etc.) |\n| `get-page` | Retrieve a page by ID or handle |\n| `update-page` | Update page title, content, SEO |\n| `delete-page` | Delete a page by ID |\n| `list-pages` | List all pages with pagination |\n\n</details>\n\n<details>\n<summary><strong>📝 Blog & Article Management (8 tools)</strong></summary>\n\n| Tool | Description |\n|------|-------------|\n| `create-blog` | Create a new blog |\n| `update-blog` | Update blog title and settings |\n| `delete-blog` | Delete a blog (and all articles) |\n| `list-blogs` | List all blogs |\n| `create-article` | Create a blog article |\n| `update-article` | Update article title, content, SEO |\n| `delete-article` | Delete an article |\n| `list-articles` | List articles in a blog |\n\n</details>\n\n<details>\n<summary><strong>📊 Inventory Management (4 tools)</strong></summary>\n\n| Tool | Description |\n|------|-------------|\n| `get-inventory` | Get inventory levels for a product variant |\n| `update-inventory` | Set or adjust inventory quantity |\n| `list-low-inventory` | Find products with low stock |\n| `get-bulk-inventory` | Get inventory for multiple variants/locations |\n\n</details>\n\n<details>\n<summary><strong>🌍 Markets Management (5 tools)</strong></summary>\n\n| Tool | Description |\n|------|-------------|\n| `create-market` | Create a new market for international selling |\n| `get-market` | Retrieve market details and configuration |\n| `update-market` | Update market name, currency, or enabled status |\n| `delete-market` | Delete a market by ID |\n| `list-markets` | List all markets with pagination |\n\n</details>\n\n<details>\n<summary><strong>🌐 Web Presence Management (4 tools)</strong></summary>\n\n| Tool | Description |\n|------|-------------|\n| `create-web-presence` | Create a web presence linking a market to domains/locales |\n| `update-web-presence` | Update web presence default locale or domain settings |\n| `delete-web-presence` | Delete a web presence by ID |\n| `list-web-presences` | List all web presences with market associations |\n\n</details>\n\n<details>\n<summary><strong>🗣️ Shop Locales (3 tools)</strong></summary>\n\n| Tool | Description |\n|------|-------------|\n| `enable-shop-locale` | Enable a locale for your shop |\n| `disable-shop-locale` | Disable and unpublish a shop locale |\n| `list-shop-locales` | List all enabled shop locales |\n\n</details>\n\n<details>\n<summary><strong>🌐 Translation Management (2 tools)</strong></summary>\n\n| Tool | Description |\n|------|-------------|\n| `register-translations` | Register translations for products, collections, etc. |\n| `remove-translations` | Remove translations for specific resources |\n\n</details>\n\n---\n\n## 📦 Tool Modules\n\nshopify-mcp-admin uses a modular architecture to optimize AI agent performance. Instead of loading all 79 tools at startup (which can degrade AI performance by up to 85%), tools can be organized into 7 modules that load on demand when lazy loading is enabled.\n\n### How Module Loading Works (when `SHOPIFY_MCP_LAZY_LOADING=true`)\n\n1. **At startup:** Only the **Core Module** (15 tools including meta-tools) is loaded\n2. **Discovery:** AI agents use `list-modules` to see available modules\n3. **Loading:** AI agents use `load-module` to enable additional tools\n\n> **Default behavior:** When lazy loading is disabled (default), all 79 domain tools are available immediately without module loading.\n4. **Suggestions:** Tool responses include hints about which modules to load next\n\n### Module Dependency Diagram\n\n```\n┌─────────────────────────────────────────────────────────────────┐\n│                         CORE MODULE                              │\n│        (Always Loaded - 13 domain + 2 meta* tools)              │\n│   Products (7) • Inventory (4) • Store Info (2) • Meta* (2)     │\n└─────────────────────────────────────────────────────────────────┘\n*Meta tools only available when lazy loading is enabled\n        │\n        ├──────────────────────────────────────────────────────────┐\n        │                                                          │\n        ▼                                                          ▼\n┌───────────────────┐  ┌───────────────────┐  ┌───────────────────┐\n│  STORE CONTEXT    │  │   COLLECTIONS     │  │     CONTENT       │\n│     (7 tools)     │  │    (10 tools)     │  │    (22 tools)     │\n│   No deps         │  │   No deps         │  │    No deps        │\n└───────────────────┘  └───────────────────┘  └───────────────────┘\n                               │\n        ├──────────────────────┼──────────────────────────────────┐\n        │                      │                                  │\n        ▼                      ▼                                  ▼\n┌───────────────────┐  ┌───────────────────┐  ┌───────────────────┐\n│   INTERNATIONAL   │  │ PRODUCT EXTENSIONS│  │ ADVANCED REDIRECTS│\n│    (14 tools)     │  │     (9 tools)     │  │     (4 tools)     │\n│    No deps        │  │    No deps        │  │ Deps: product-ext │\n└───────────────────┘  └───────────────────┘  └───────────────────┘\n```\n\n### Module: Core (13-15 tools) — Always Loaded\n\n**Description:** Essential product and inventory management tools that form the foundation for most Shopify operations. Always loaded at startup.\n\n**Dependencies:** None\n\n**Tools:**\n\n| Category | Tools |\n|----------|-------|\n| Products (7) | `create-product`, `get-product`, `update-product`, `delete-product`, `list-products`, `update-product-variant`, `add-product-image` |\n| Inventory (4) | `get-inventory`, `update-inventory`, `list-low-inventory`, `get-bulk-inventory` |\n| Store Info (2) | `get-store-info`, `get-store-limits` |\n| Meta Tools (2)* | `list-modules`, `load-module` |\n\n> *Meta tools are only included when lazy loading is enabled (`SHOPIFY_MCP_LAZY_LOADING=true`). When disabled (default), core has 13 domain tools.\n\n**Use Case:** Basic product catalog management, inventory tracking, and store information queries.\n\n---\n\n### Module: Store Context (7 tools)\n\n**Description:** Extended store configuration and context tools from Epic 11. Provides deep insights into store configuration including features, currencies, shipping, and more.\n\n**Dependencies:** None\n\n**Tools:**\n- `get-store-features` — Feature flags (gift cards, reports, storefront, bundles)\n- `get-store-currencies` — Multi-currency configuration\n- `get-store-shipping` — Shipping countries and zones\n- `get-store-domain` — Primary domain configuration\n- `get-store-taxes` — Tax configuration\n- `get-store-policies` — Legal policies (privacy, terms, refund)\n- `get-store-alerts` — Admin alerts and setup requirements\n\n**Use Case:** Understanding store capabilities before operations, multi-currency setup, tax configuration.\n\n**Load Command:** `load-module(module: \"store-context\")`\n\n---\n\n### Module: Collections (10 tools)\n\n**Description:** Product collection management for organizing products and navigation. Includes CRUD operations and metafields.\n\n**Dependencies:** None\n\n**Tools:**\n\n| Category | Tools |\n|----------|-------|\n| CRUD (7) | `list-collections`, `get-collection`, `create-collection`, `update-collection`, `delete-collection`, `add-products-to-collection`, `remove-products-from-collection` |\n| Metafields (3) | `get-collection-metafields`, `set-collection-metafields`, `delete-collection-metafields` |\n\n**Use Case:** Organizing products into collections, SEO optimization, storefront navigation.\n\n**Load Command:** `load-module(module: \"collections\")`\n\n---\n\n### Module: Product Extensions (9 tools)\n\n**Description:** Extended product management including metafields, advanced image operations, and URL redirects for SEO.\n\n**Dependencies:** None\n\n**Tools:**\n\n| Category | Tools |\n|----------|-------|\n| Metafields (3) | `get-product-metafields`, `set-product-metafields`, `delete-product-metafields` |\n| Images (3) | `update-product-image`, `delete-product-image`, `reorder-product-images` |\n| Redirects (3) | `create-redirect`, `list-redirects`, `delete-redirect` |\n\n**Use Case:** Adding custom metadata to products, SEO image alt text, URL redirects when changing product handles.\n\n**Load Command:** `load-module(module: \"product-extensions\")`\n\n---\n\n### Module: Content (22 tools)\n\n**Description:** Content management for pages, blogs, and articles. Complete CRUD operations plus metafields for content marketing and SEO.\n\n**Dependencies:** None\n\n**Tools:**\n\n| Category | Tools |\n|----------|-------|\n| Pages (8) | `list-pages`, `get-page`, `create-page`, `update-page`, `delete-page`, `get-page-metafields`, `set-page-metafields`, `delete-page-metafields` |\n| Blogs (7) | `list-blogs`, `create-blog`, `update-blog`, `delete-blog`, `get-blog-metafields`, `set-blog-metafields`, `delete-blog-metafields` |\n| Articles (7) | `list-articles`, `create-article`, `update-article`, `delete-article`, `get-article-metafields`, `set-article-metafields`, `delete-article-metafields` |\n\n**Use Case:** Content marketing, blog management, static pages (About, Contact, FAQ).\n\n**Load Command:** `load-module(module: \"content\")`\n\n---\n\n### Module: International (14 tools)\n\n**Description:** International commerce and localization tools. Markets, web presence, and shop locale translations for multi-region stores.\n\n**Dependencies:** None\n\n**Tools:**\n\n| Category | Tools |\n|----------|-------|\n| Markets (5) | `list-markets`, `get-market`, `create-market`, `update-market`, `delete-market` |\n| Web Presence (4) | `list-web-presences`, `create-web-presence`, `update-web-presence`, `delete-web-presence` |\n| Translations (5) | `list-shop-locales`, `enable-shop-locale`, `disable-shop-locale`, `register-translations`, `remove-translations` |\n\n**Use Case:** Multi-region selling, localized storefronts, translation management.\n\n**Load Command:** `load-module(module: \"international\")`\n\n---\n\n### Module: Advanced Redirects (4 tools)\n\n**Description:** Bulk URL redirect operations for large-scale SEO management. Import and mass-delete capabilities.\n\n**Dependencies:** `product-extensions` (auto-loaded when you load this module)\n\n**Tools:**\n- `bulk-delete-redirects` — Delete multiple redirects by ID\n- `bulk-delete-redirects-by-search` — Delete redirects matching a search query\n- `import-redirects` — Import redirects from CSV URL\n- `submit-redirect-import` — Submit a redirect import job for processing\n\n**Use Case:** Site migrations, bulk URL updates, SEO cleanup operations.\n\n**Load Command:** `load-module(module: \"advanced-redirects\")`\n\n> **Note:** Loading this module automatically loads `product-extensions` (9 tools) as a dependency.\n\n---\n\n### Choosing the Right Module\n\n| If you need to... | Load these modules |\n|-------------------|-------------------|\n| Manage basic products and inventory | Core only (default) |\n| Work with collections and organize products | `collections` |\n| Add product metafields or manage images | `product-extensions` |\n| Manage blog posts and pages | `content` |\n| Set up international markets | `international` |\n| Bulk manage URL redirects | `advanced-redirects` |\n| Full store administration | Use `full-access` role preset |\n\n---\n\n## 🔄 Upgrading from Previous Versions\n\n### What's New in v2.0.0+: Modular Tool Loading\n\nStarting with v2.0.0, shopify-mcp-admin supports **modular lazy loading** to optimize AI agent performance. Research shows that presenting more than 30 tools to an AI agent can degrade performance by up to 85%.\n\n**Default Behavior (All Tools Loaded):**\n- All 79 domain tools are loaded at startup for maximum compatibility\n- Works with Claude Desktop and all MCP clients\n- Server instructions describe all tools as immediately available\n- Module meta-tools (`list-modules`, `load-module`) are NOT registered (not needed)\n\n**Optional: Enable Lazy Loading:**\n- Only 15 core tools are loaded at startup (13 domain + 2 meta-tools)\n- Additional tools are loaded on-demand via `load-module`\n- AI agents discover available modules using `list-modules`\n- Token usage reduced by up to 81% compared to loading all tools\n- Server instructions explain module discovery and loading\n\n> **Note:** Claude Desktop doesn't support dynamic tool list refresh, so lazy loading is disabled by default. Enable it for MCP clients that support `notifications/tools/list_changed`.\n\n### Enabling Lazy Loading\n\nFor MCP clients that support dynamic tool refresh:\n\n```bash\n# Option 1: Environment variable\nexport SHOPIFY_MCP_LAZY_LOADING=true\n\n# Option 2: In MCP client config\n{\n  \"mcpServers\": {\n    \"shopify\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@anton.andrusenko/shopify-mcp-admin\"],\n      \"env\": {\n        \"SHOPIFY_STORE_URL\": \"your-store.myshopify.com\",\n        \"SHOPIFY_ACCESS_TOKEN\": \"shpat_xxxxx\",\n        \"SHOPIFY_MCP_LAZY_LOADING\": \"true\"\n      }\n    }\n  }\n}\n```\n\n### Configuration Options\n\n1. **Default (all tools)** — All 79 domain tools available immediately. Best for Claude Desktop and MCP clients without dynamic tool refresh.\n\n2. **Role Preset** — Pre-configured module sets for specific workflows:\n   ```bash\n   export SHOPIFY_MCP_ROLE=product-manager\n   ```\n\n3. **Lazy Loading** — Enable for MCP clients that support `notifications/tools/list_changed`:\n   ```bash\n   export SHOPIFY_MCP_LAZY_LOADING=true\n   ```\n   - AI uses `list-modules` to see available modules\n   - AI uses `load-module` with module name to enable tools\n   - Tool responses suggest relevant modules automatically\n\n### When to Use Each Mode\n\n| Mode | Tools | Best For |\n|------|-------|----------|\n| **Default (all tools)** | 79 | Claude Desktop, maximum compatibility |\n| **Role Preset** | 15-81 based on role | Specific workflows (e.g., content manager) |\n| **Lazy Loading** | 15 at startup | MCP clients with dynamic tool refresh |\n\n### Performance Comparison\n\n| Mode | Tools at Startup | Est. Token Usage | AI Performance |\n|------|------------------|------------------|----------------|\n| Lazy Loading | 15 | ~4,500 | ⭐⭐⭐ Optimal |\n| inventory-manager | 15 | ~4,500 | ⭐⭐⭐ Optimal |\n| content-manager | 37 | ~11,100 | ⭐⭐ Good |\n| product-manager | 41 | ~12,300 | ⭐⭐ Good |\n| international-manager | 46 | ~13,800 | ⭐⭐ Good |\n| full-access / Default | 79-81 | ~24,000 | ⭐ May degrade |\n\n### Troubleshooting Module Loading\n\n| Issue | Solution |\n|-------|----------|\n| Tool not found with lazy loading | Load the appropriate module: `load-module(module: \"collections\")` |\n| \"Module not found\" error | Use `list-modules` to see valid module names |\n| Want modular lazy loading | Set `SHOPIFY_MCP_LAZY_LOADING=true` (requires MCP client that supports tool list refresh) |\n| AI agent loading too many modules | Use a role preset instead of on-demand loading |\n\n---\n\n## 🔧 Troubleshooting\n\n### Common Errors\n\n| Error | Cause | Solution |\n|-------|-------|----------|\n| `401 Unauthorized` | Invalid access token | Regenerate token in Shopify Admin |\n| `403 Forbidden` | Missing API scopes | Add required scopes to Custom App |\n| `429 Too Many Requests` | Rate limited | Wait; shopify-mcp-admin auto-retries |\n| `ECONNREFUSED` | Server not running | Start server with `npx @anton.andrusenko/shopify-mcp-admin` |\n| `Invalid store URL` | Wrong URL format | Use `store.myshopify.com` format |\n\n### OAuth Connection Troubleshooting\n\nIf you're having issues connecting ChatGPT or Claude Web via OAuth:\n\n#### \"OAuth discovery failed\" or \"Server not found\"\n\n1. Verify the server is running:\n   ```bash\n   curl https://shopify-mcp.com/.well-known/oauth-authorization-server\n   ```\n   Expected: JSON response with `issuer`, `authorization_endpoint`, etc.\n\n2. Check server health:\n   ```bash\n   curl https://shopify-mcp.com/health\n   ```\n   Expected: `200 OK` with `{\"status\": \"healthy\", ...}`\n\n#### \"Client registration failed\"\n\n- **Cause**: Dynamic Client Registration (DCR) endpoint issue\n- **Solution**: Check server logs for `/oauth/register` errors\n- **Verify**: `curl -X POST https://shopify-mcp.com/oauth/register -H \"Content-Type: application/json\" -d '{\"client_name\":\"test\",\"redirect_uris\":[\"https://example.com/callback\"]}'`\n\n#### \"Authorization failed\" or \"Invalid credentials\"\n\n- **Cause**: Wrong MCP Dashboard credentials\n- **Solution**: Log in to `https://shopify-mcp.com/app` directly to verify your email/password\n- **Note**: OAuth login uses your MCP Dashboard account, not Shopify credentials\n\n#### \"No shop configured\" or \"No shops connected\"\n\n- **Cause**: No Shopify store connected to your tenant account\n- **Solution**: \n  1. Log in to `https://shopify-mcp.com/app`\n  2. Go to **Shops** → **Connect Shop**\n  3. Complete the OAuth flow or enter a manual access token\n\n#### \"Token expired\" or \"Access denied\"\n\n- **Cause**: OAuth access token expired (tokens last 1 hour by default)\n- **Solution**: \n  1. Disconnect the MCP connection in ChatGPT/Claude settings\n  2. Reconnect and complete the OAuth flow again\n  3. The server will issue fresh tokens\n\n#### \"PKCE verification failed\"\n\n- **Cause**: PKCE code_verifier doesn't match code_challenge\n- **Solution**: This is a client-side issue; report to ChatGPT/Claude support\n- **Note**: The server requires S256 PKCE method (plain is not supported)\n\n#### \"Invalid redirect_uri\"\n\n- **Cause**: The OAuth callback URL doesn't match a registered pattern\n- **Solution**: \n  - ChatGPT: Redirect URIs must match `https://chatgpt.com/*` or `https://chat.openai.com/*`\n  - Claude Web: Redirect URIs must match `https://claude.ai/*`\n\n### Re-Authorizing OAuth Connections\n\nIf your OAuth connection stops working:\n\n**For ChatGPT:**\n1. Go to ChatGPT → **Settings** → **Connectors** (or **Apps**)\n2. Find the Shopify MCP connection\n3. Click **Disconnect** or **Remove**\n4. Click **Connect** again and complete the OAuth flow\n\n**For Claude Web:**\n1. Go to claude.ai → **Settings** → **Integrations**\n2. Find the Shopify MCP connector\n3. Click **Disconnect** or **Remove**\n4. Re-add the connector and authorize again\n\n### Debug Mode\n\nEnable verbose logging to diagnose issues:\n\n```bash\n# Option 1: DEBUG flag\nDEBUG=1 npx @anton.andrusenko/shopify-mcp-admin\n\n# Option 2: LOG_LEVEL\nLOG_LEVEL=debug npx @anton.andrusenko/shopify-mcp-admin\n```\n\n### MCP Inspector\n\nUse [MCP Inspector](https://github.com/modelcontextprotocol/inspector) to visually test and debug the server:\n\n```bash\n# Test production build\nnpm run build\nnpm run inspect\n\n# Development mode (no build needed)\nnpm run inspect:dev\n\n# With saved configuration\ncp mcp-inspector.example.json mcp-inspector.json\n# Edit mcp-inspector.json with your credentials\nnpm run inspect:config\n```\n\nMCP Inspector opens a web UI at `http://localhost:6274` where you can:\n\n- 📋 Browse registered tools with schemas (79 tools by default, or 15 core tools with lazy loading)\n- 📦 Test module loading via `list-modules` and `load-module` (when lazy loading is enabled)\n- 📊 Access 9 MCP resources for store context\n- ▶️ Execute tools interactively and view results\n- 🔍 Inspect JSON-RPC protocol messages\n- 📊 Monitor server events in real-time\n\n> **Tip:** Copy `mcp-inspector.example.json` to `mcp-inspector.json` for pre-configured role presets like `product-manager` or `full-access`.\n\n---\n\n## 📊 MCP Resources\n\nThe MCP server exposes comprehensive store context information via MCP resources. These are read-only data sources that AI agents can query for context.\n\n### Extended Store Resources\n\n| Resource URI | Description |\n|--------------|-------------|\n| `shopify://store/info` | Basic store info (name, domain, plan, currency, timezone) |\n| `shopify://store/limits` | Resource limits (max variants, max options, location limit) |\n| `shopify://store/features` | Feature flags (gift cards, reports, storefront, bundles) |\n| `shopify://store/currencies` | Multi-currency configuration (base currency, presentment currencies) |\n| `shopify://store/shipping` | Shipping configuration (ships-to countries, shipping zones) |\n| `shopify://store/domain` | Primary domain configuration (hostname, URL, SSL status) |\n| `shopify://store/taxes` | Tax configuration (taxes included, tax shipping) |\n| `shopify://store/policies` | Legal policies (privacy, terms of service, refund) |\n| `shopify://store/alerts` | Admin alerts and setup requirements |\n\n> **Note:** For MCP clients that don't support resources (e.g., Claude Desktop), equivalent tools are available. See **Store Info Tools** below.\n\n---\n\n### FAQ\n\n**Q: Can I connect to multiple stores?**  \nA: Run separate server instances with different credentials.\n\n**Q: Does this work with development stores?**  \nA: Yes, development stores work with Custom Apps.\n\n**Q: How do I test without affecting production?**  \nA: Use a [development store](https://shopify.dev/docs/apps/tools/development-stores) for testing.\n\n**Q: Where can I report bugs?**  \nA: Open an issue on [GitHub Issues](https://github.com/AntonAndrusenko/shopify-mcp-admin/issues).\n\n---\n\n## 🔄 CI/CD Pipeline\n\nThis project uses GitHub Actions for continuous integration and automated releases.\n\n### Continuous Integration\n\nEvery push to `main` and every pull request triggers the CI workflow:\n\n```yaml\n# Runs on Node.js 20.x and 22.x\nnpm ci        # Install dependencies\nnpm run lint  # Biome linting\nnpm run typecheck  # TypeScript type checking\nnpm run test  # Vitest unit tests\nnpm run build # Production build\n```\n\nAll checks must pass before merging pull requests.\n\n### Automated Releases\n\nTo publish a new version to npm:\n\n```bash\n# 1. Bump version (does NOT create a tag)\nnpm run version:patch  # or version:minor, or version:major\n\n# 2. Commit + push the version bump to main (this triggers CI + Railway auto-deploy)\ngit add package.json package-lock.json\ngit commit -m \"Release v$(node -p \\\"require('./package.json').version\\\")\"\ngit push origin main\n\n# 3. Create and push the version tag (this triggers the Release workflow)\nVERSION=$(node -p \"require('./package.json').version\")\ngit tag \"v$VERSION\"\ngit push origin \"v$VERSION\"\n```\n\nThe release workflow automatically:\n1. Reads release notes from `CHANGELOG.md`\n2. Builds the package (including dashboard assets)\n3. Publishes to npm\n4. Creates a GitHub Release\n\n**Important:** The Release workflow triggers on tags (`v*`) and does **not** rerun the full CI matrix. Tag releases only after the `CI` workflow is green for the commit you’re tagging.\n\n### Repository Setup (for Maintainers)\n\n#### Required Secrets\n\nConfigure these in **Settings → Secrets and variables → Actions**:\n\n| Secret | Description |\n|--------|-------------|\n| `NPM_TOKEN` | npm automation token for publishing ([create one](https://docs.npmjs.com/creating-and-viewing-access-tokens)) |\n\n#### Branch Protection (Recommended)\n\nEnable these settings for the `main` branch in **Settings → Branches**:\n\n- ✅ Require a pull request before merging\n- ✅ Require status checks to pass before merging\n  - Select: `build (20.x)` and `build (22.x)`\n- ✅ Require branches to be up to date before merging\n\n---\n\n## 🎨 Tenant Dashboard (Remote Mode)\n\nWhen running in remote mode (`SERVER_MODE=remote`), shopify-mcp-admin includes a web-based dashboard for tenant management. The dashboard provides a modern, responsive UI for:\n\n- **Shop Management** — View and connect Shopify stores\n- **API Key Management** — Generate, copy, and revoke API keys\n- **Usage Statistics** — Monitor API calls and activity\n- **Account Settings** — Update profile and change password\n\n### Accessing the Dashboard\n\n1. Start the server in remote mode:\n```bash\nSERVER_MODE=remote npm start\n```\n\n2. Navigate to `http://localhost:3000/app` in your browser\n\n3. Log in with your tenant credentials\n\n### Dashboard Features\n\n- ✨ **Modern UI** — Built with React, Vite, and Tailwind CSS\n- 📱 **Responsive Design** — Works on desktop, tablet, and mobile\n- ♿ **Accessible** — WCAG AA compliant with keyboard navigation\n- 🔐 **Secure** — Session-based authentication with HttpOnly cookies\n- 🎯 **Optimized** — <150KB gzipped bundle size\n\n### Tech Stack\n\n- **Frontend:** React 18 + Vite + TypeScript\n- **Styling:** Tailwind CSS + shadcn/ui components\n- **State:** React Query for server state management\n- **Forms:** React Hook Form + Zod validation\n- **Auth:** Session cookies with automatic expiry handling\n\n### Shopify Token Refresh (Remote Mode)\n\nWhen shops are connected via OAuth in remote mode, the server stores **expiring offline tokens** (access + refresh token) and refreshes access tokens automatically before they expire.\n\n- **Legacy compatibility:** Existing non-expiring tokens continue to work; shops upgrade to refreshable tokens on reconnect.\n- **DB migration required:** Ensure Prisma migrations are deployed in production before rolling out the server.\n- **Details:** See `docs/TOKEN-REFRESH-IMPLEMENTATION.md`.\n\n---\n\n## 🤝 Contributing\n\nContributions are welcome! Here's how to get started:\n\n### Development Setup\n\n```bash\n# Clone the repository\ngit clone https://github.com/AntonAndrusenko/shopify-mcp-admin.git\ncd shopify-mcp-admin\n\n# Install dependencies\nnpm install\n\n# Run in development mode\nnpm run dev\n```\n\n### Available Scripts\n\n| Command | Description |\n|---------|-------------|\n| `npm run dev` | Start development server with hot reload |\n| `npm run build` | Build for production |\n| `npm run test` | Run unit tests |\n| `npm run test:coverage` | Run tests with coverage report |\n| `npm run lint` | Run Biome linter |\n| `npm run lint:fix` | Auto-fix linting issues |\n| `npm run inspect` | Open MCP Inspector with production build |\n| `npm run inspect:dev` | Open MCP Inspector in development mode |\n\n### Pull Request Guidelines\n\n1. Fork the repository\n2. Create a feature branch (`git checkout -b feature/amazing-feature`)\n3. Make your changes with tests\n4. Run `npm run lint && npm run test`\n5. Commit with conventional commits (`feat:`, `fix:`, `docs:`, etc.)\n6. Open a Pull Request\n\n### Code Style\n\nThis project uses [Biome](https://biomejs.dev/) for linting and formatting. Configuration is in `biome.json`.\n\n---\n\n## 📜 License\n\nThis project is licensed under the **MIT License** — see the [LICENSE](LICENSE) file for details.\n\n---\n\n## 🙏 Acknowledgments\n\n- [Model Context Protocol](https://modelcontextprotocol.io/) by Anthropic\n- [Shopify Admin API](https://shopify.dev/docs/api/admin)\n- Built with TypeScript, Express, and Zod\n\n---\n\n<p align=\"center\">\n  <strong>Made with ❤️ for the AI-powered commerce era</strong>\n</p>\n\n---\n\n## 🚀 Deployment\n\nshopify-mcp-admin supports multiple deployment options for different environments.\n\n### Production Deployment\n\nFor production deployment on Railway with Cloudflare, Sentry, and uptime monitoring, see the comprehensive deployment guide:\n\n📖 **[Production Deployment Guide](./docs/deployment.md)**\n\nThe guide includes:\n- **Railway Setup**: Step-by-step instructions for deploying to Railway\n- **Cloudflare DNS**: DNS configuration and SSL/TLS setup\n- **Database Setup**: Prisma migrations and backup strategy\n- **Staging Environment**: Separate staging deployment configuration\n- **Monitoring**: Sentry error tracking and uptime monitoring setup\n- **LibreChat Integration**: Automatically deployed with admin-only access (optional)\n\n**Quick Deploy**: Run `./DEPLOY-NOW.sh` - LibreChat is included automatically if configured in `.env.deploy`\n\n### Production URLs\n\nThe production service is available at:\n\n**Root Domain:**\n- **Dashboard:** `https://shopify-mcp.com/` → redirects to `/app`\n- **Dashboard UI:** `https://shopify-mcp.com/app`\n- **Health Check:** `https://shopify-mcp.com/health`\n- **Metrics:** `https://shopify-mcp.com/metrics`\n- **MCP Endpoint:** `https://shopify-mcp.com/mcp`\n\n**Available Endpoints:**\n\n| Endpoint | Description | Authentication |\n|----------|-------------|----------------|\n| `/` | Root path - redirects to `/app` (dashboard) | None |\n| `/app` | Dashboard UI (React SPA) | Session cookie |\n| `/health` | Health check endpoint | None |\n| `/metrics` | Prometheus metrics | None |\n| `/mcp` | MCP protocol endpoint | API key or session |\n| `/api/tenants` | Tenant management API | Session cookie |\n| `/api/shops` | Shop connection API | Session cookie |\n| `/api/keys` | API key management | Session cookie |\n\n**Note:** The root domain (`shopify-mcp.com`) redirects to the dashboard (`/app`) for a better user expe","readmeFilename":"README.md"}