{"_id":"@michelabboud/visual-forge-mcp","_rev":"30-dd4a702d0b7ab4294d739a8b97f7c084","name":"@michelabboud/visual-forge-mcp","dist-tags":{"latest":"0.12.2"},"versions":{"0.4.1":{"name":"@michelabboud/visual-forge-mcp","version":"0.4.1","keywords":["mcp","mcp-server","ai","image-generation","dall-e","stable-diffusion","flux","leonardo","replicate","technical-documentation"],"author":{"name":"Michel Abboud"},"license":"SEE LICENSE IN LICENSE","_id":"@michelabboud/visual-forge-mcp@0.4.1","maintainers":[{"name":"michelabboud","email":"michelabboudnpm@gmail.com"}],"homepage":"https://github.com/michelabboud/visual-forge-mcp#readme","bugs":{"url":"https://github.com/michelabboud/visual-forge-mcp/issues"},"dist":{"shasum":"4374e6106e826a5b915ebcccedbe81fd53e463f1","tarball":"https://registry.npmjs.org/@michelabboud/visual-forge-mcp/-/visual-forge-mcp-0.4.1.tgz","fileCount":208,"integrity":"sha512-/P8jG29zzvBCVE0eT1tMZDsLgfbIQjpxCmyFUbVqG68Vw4VZpQbbatymUiqvAdnXtw//Fy319HAgu26VsUDnGA==","signatures":[{"sig":"MEUCIQDVlU7jfbAr6cX2wzHkI34NkOHoJkm5Z8HuSpB5LScq5AIgO6CvlJFi6kaxWIgeBe38O1Lwxy1ChsY28ww5wM8neCY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":568003},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.0.0"},"gitHead":"dd6ca93003371f1049f0a9e21e1c066880535cce","scripts":{"dev":"tsx src/index.ts","lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rm -rf dist","dev:http":"tsx src/http-server.ts","start:http":"node dist/http-server.js","test:watch":"jest --watch","pricing:set":"node scripts/update-pricing.js set","pricing:show":"node scripts/update-pricing.js show","pricing:check":"node scripts/update-pricing.js check","pricing:update":"node scripts/update-pricing.js update"},"_npmUser":{"name":"michelabboud","email":"michelabboudnpm@gmail.com"},"deprecated":"Please upgrade to v0.5.2 - Critical fixes for API testing, output verification, and workflow enforcement","repository":{"url":"git+https://github.com/michelabboud/visual-forge-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI image generation from markdown and HTML with multi-provider support","directories":{},"_nodeVersion":"24.12.0","dependencies":{"ora":"^8.1.0","zod":"^3.25.0","cors":"^2.8.5","uuid":"^10.0.0","axios":"^1.7.0","chalk":"^5.4.0","sharp":"^0.33.0","dotenv":"^16.4.0","cheerio":"^1.1.2","express":"^4.21.0","commander":"^12.0.0","axios-retry":"^4.5.0","@modelcontextprotocol/sdk":"^1.25.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","jest":"^29.7.0","eslint":"^9.0.0","ts-jest":"^29.2.0","prettier":"^3.3.0","typescript":"^5.7.0","@types/cors":"^2.8.17","@types/jest":"^29.5.0","@types/node":"^22.0.0","@types/uuid":"^10.0.0","@types/express":"^4.17.21","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/visual-forge-mcp_0.4.1_1768304694544_0.8327859887661404","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@michelabboud/visual-forge-mcp","version":"0.4.2","keywords":["mcp","mcp-server","ai","image-generation","dall-e","stable-diffusion","flux","leonardo","replicate","technical-documentation"],"author":{"name":"Michel Abboud"},"license":"SEE LICENSE IN LICENSE","_id":"@michelabboud/visual-forge-mcp@0.4.2","maintainers":[{"name":"michelabboud","email":"michelabboudnpm@gmail.com"}],"homepage":"https://github.com/michelabboud/visual-forge-mcp#readme","bugs":{"url":"https://github.com/michelabboud/visual-forge-mcp/issues"},"dist":{"shasum":"e03a27a6f820d48fd7d09cef57ee8a076dadcccd","tarball":"https://registry.npmjs.org/@michelabboud/visual-forge-mcp/-/visual-forge-mcp-0.4.2.tgz","fileCount":208,"integrity":"sha512-v40sglLQ/TmI/4pD3Zk0WyJv/JW0xeieqA/Y3vcn8+HPT8alye411zGjspLgK/H+PTEwtI4Xoh506Q+D5wb9IQ==","signatures":[{"sig":"MEQCIEJxoCJ3NvDsqJseUirdu5SdLqVRuy8N5VUZySvfsXAcAiA+px+w/WoEvV7hgn9UWL8ezfbenJVxwCldO58UeeoqGg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":568372},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.0.0"},"gitHead":"4770844ea15a3457890477de2f84b984f7804ca7","scripts":{"dev":"tsx src/index.ts","lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rm -rf dist","dev:http":"tsx src/http-server.ts","start:http":"node dist/http-server.js","test:watch":"jest --watch","pricing:set":"node scripts/update-pricing.js set","pricing:show":"node scripts/update-pricing.js show","pricing:check":"node scripts/update-pricing.js check","pricing:update":"node scripts/update-pricing.js update"},"_npmUser":{"name":"michelabboud","email":"michelabboudnpm@gmail.com"},"overrides":{"whatwg-encoding":"npm:@exodus/bytes@^1.0.0"},"deprecated":"Please upgrade to v0.5.2 - Critical fixes for API testing, output verification, and workflow enforcement","repository":{"url":"git+https://github.com/michelabboud/visual-forge-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI image generation from markdown and HTML with multi-provider support","directories":{},"_nodeVersion":"24.12.0","dependencies":{"ora":"^8.1.0","zod":"^3.25.0","cors":"^2.8.5","uuid":"^10.0.0","axios":"^1.7.0","chalk":"^5.4.0","sharp":"^0.33.0","dotenv":"^16.4.0","cheerio":"^1.1.2","express":"^4.21.0","commander":"^12.0.0","axios-retry":"^4.5.0","@modelcontextprotocol/sdk":"^1.25.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","jest":"^29.7.0","eslint":"^9.0.0","ts-jest":"^29.2.0","prettier":"^3.3.0","typescript":"^5.7.0","@types/cors":"^2.8.17","@types/jest":"^29.5.0","@types/node":"^22.0.0","@types/uuid":"^10.0.0","@types/express":"^4.17.21","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/visual-forge-mcp_0.4.2_1768305552471_0.5669694794215601","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"@michelabboud/visual-forge-mcp","version":"0.4.3","keywords":["mcp","mcp-server","ai","image-generation","dall-e","stable-diffusion","flux","leonardo","replicate","technical-documentation"],"author":{"name":"Michel Abboud"},"license":"SEE LICENSE IN LICENSE","_id":"@michelabboud/visual-forge-mcp@0.4.3","maintainers":[{"name":"michelabboud","email":"michelabboudnpm@gmail.com"}],"homepage":"https://github.com/michelabboud/visual-forge-mcp#readme","bugs":{"url":"https://github.com/michelabboud/visual-forge-mcp/issues"},"dist":{"shasum":"2f77a7a8f19491ba0f83cb3c24f8c156efc35f58","tarball":"https://registry.npmjs.org/@michelabboud/visual-forge-mcp/-/visual-forge-mcp-0.4.3.tgz","fileCount":208,"integrity":"sha512-XKXi5zv1BnnChG+lH8WcO/oS5O5qB7N+/KvP4UqI0s75PgWrqWKA6CCrsVFgQc26Avkt/4GlcuP74tYYb4sgQw==","signatures":[{"sig":"MEUCIQCPTcGDaDDVokX6nDzQt5fkMao8GyH/NRR50eCEl6ojYQIgex4n7FZoYfLCuficHw0wgeqzNBP3Z/Vn7nZAohcYcVY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":568300},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.0.0"},"gitHead":"a13be9eb418f3a10644b9524c55712aa61d3118a","scripts":{"dev":"tsx src/index.ts","lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rm -rf dist","dev:http":"tsx src/http-server.ts","start:http":"node dist/http-server.js","test:watch":"jest --watch","pricing:set":"node scripts/update-pricing.js set","pricing:show":"node scripts/update-pricing.js show","pricing:check":"node scripts/update-pricing.js check","pricing:update":"node scripts/update-pricing.js update"},"_npmUser":{"name":"michelabboud","email":"michelabboudnpm@gmail.com"},"deprecated":"Please upgrade to v0.5.2 - Critical fixes for API testing, output verification, and workflow enforcement","repository":{"url":"git+https://github.com/michelabboud/visual-forge-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI image generation from markdown and HTML with multi-provider support","directories":{},"_nodeVersion":"24.12.0","dependencies":{"ora":"^8.1.0","zod":"^3.25.0","cors":"^2.8.5","uuid":"^10.0.0","axios":"^1.7.0","chalk":"^5.4.0","sharp":"^0.33.0","dotenv":"^16.4.0","cheerio":"^1.1.2","express":"^4.21.0","commander":"^12.0.0","axios-retry":"^4.5.0","@modelcontextprotocol/sdk":"^1.25.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","jest":"^29.7.0","eslint":"^9.0.0","ts-jest":"^29.2.0","prettier":"^3.3.0","typescript":"^5.7.0","@types/cors":"^2.8.17","@types/jest":"^29.5.0","@types/node":"^22.0.0","@types/uuid":"^10.0.0","@types/express":"^4.17.21","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/visual-forge-mcp_0.4.3_1768305856012_0.16976683905736145","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@michelabboud/visual-forge-mcp","version":"0.5.0","keywords":["mcp","mcp-server","ai","image-generation","dall-e","stable-diffusion","flux","leonardo","replicate","technical-documentation"],"author":{"name":"Michel Abboud"},"license":"SEE LICENSE IN LICENSE","_id":"@michelabboud/visual-forge-mcp@0.5.0","maintainers":[{"name":"michelabboud","email":"michelabboudnpm@gmail.com"}],"homepage":"https://github.com/michelabboud/visual-forge-mcp#readme","bugs":{"url":"https://github.com/michelabboud/visual-forge-mcp/issues"},"dist":{"shasum":"e9ce0da0e6d3be4578e4ac8b3edfd28ae6690e36","tarball":"https://registry.npmjs.org/@michelabboud/visual-forge-mcp/-/visual-forge-mcp-0.5.0.tgz","fileCount":212,"integrity":"sha512-HMtTXMfdJe2IsuXl+XS+K1k4K1jcFz/DDxpFpeDEf0Io/ilfoRGz/yGpTByzT65rea0mylYQEkIiVmsZ0PqQ9g==","signatures":[{"sig":"MEUCIFuSZ4vURWvrfGmESDbpltLm7lKcDPeiBX0qsIoevF7xAiEAg7bUBjQN8EXJlEjdNIMh1g6CMh+lbV9eBCvSPPoTcIA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":602853},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.0.0"},"gitHead":"a13be9eb418f3a10644b9524c55712aa61d3118a","scripts":{"dev":"tsx src/index.ts","lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rm -rf dist","dev:http":"tsx src/http-server.ts","start:http":"node dist/http-server.js","test:watch":"jest --watch","pricing:set":"node scripts/update-pricing.js set","pricing:show":"node scripts/update-pricing.js show","pricing:check":"node scripts/update-pricing.js check","pricing:update":"node scripts/update-pricing.js update"},"_npmUser":{"name":"michelabboud","email":"michelabboudnpm@gmail.com"},"deprecated":"Please upgrade to v0.5.2 - Critical fixes for API testing, output verification, and workflow enforcement","repository":{"url":"git+https://github.com/michelabboud/visual-forge-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI image generation from markdown and HTML with multi-provider support","directories":{},"_nodeVersion":"24.12.0","dependencies":{"ora":"^8.1.0","zod":"^3.25.0","cors":"^2.8.5","uuid":"^10.0.0","axios":"^1.7.0","chalk":"^5.4.0","sharp":"^0.33.0","dotenv":"^16.4.0","cheerio":"^1.1.2","express":"^4.21.0","commander":"^12.0.0","axios-retry":"^4.5.0","@modelcontextprotocol/sdk":"^1.25.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","jest":"^29.7.0","eslint":"^9.0.0","ts-jest":"^29.2.0","prettier":"^3.3.0","typescript":"^5.7.0","@types/cors":"^2.8.17","@types/jest":"^29.5.0","@types/node":"^22.0.0","@types/uuid":"^10.0.0","@types/express":"^4.17.21","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/visual-forge-mcp_0.5.0_1768312582311_0.12291397146788041","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@michelabboud/visual-forge-mcp","version":"0.5.1","keywords":["mcp","mcp-server","ai","image-generation","dall-e","stable-diffusion","flux","leonardo","replicate","technical-documentation"],"author":{"name":"Michel Abboud"},"license":"SEE LICENSE IN LICENSE","_id":"@michelabboud/visual-forge-mcp@0.5.1","maintainers":[{"name":"michelabboud","email":"michelabboudnpm@gmail.com"}],"homepage":"https://github.com/michelabboud/visual-forge-mcp#readme","bugs":{"url":"https://github.com/michelabboud/visual-forge-mcp/issues"},"dist":{"shasum":"3e5151759378963398075801fc2bfc8ca4885afa","tarball":"https://registry.npmjs.org/@michelabboud/visual-forge-mcp/-/visual-forge-mcp-0.5.1.tgz","fileCount":212,"integrity":"sha512-9xN7zKOTFIc6pYvJkhBgjzfhG4bhj8U2oNT+p0wbncwhhqfBySqwIroGCPuuD2mjENHKIRFl+6c17m5jqBuBlQ==","signatures":[{"sig":"MEUCICPT5YFsiLpP3vW7QHydpacJ8T8bd1stFW5ETxayhtOMAiEA0TjdbbXRuw/6fS58crfaqt3NBf6mVSQyLWQswNYYxyI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":615004},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.0.0"},"gitHead":"a13be9eb418f3a10644b9524c55712aa61d3118a","scripts":{"dev":"tsx src/index.ts","lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rm -rf dist","dev:http":"tsx src/http-server.ts","start:http":"node dist/http-server.js","test:watch":"jest --watch","pricing:set":"node scripts/update-pricing.js set","pricing:show":"node scripts/update-pricing.js show","pricing:check":"node scripts/update-pricing.js check","pricing:update":"node scripts/update-pricing.js update"},"_npmUser":{"name":"michelabboud","email":"michelabboudnpm@gmail.com"},"deprecated":"Please upgrade to v0.5.2 - Critical fixes for API testing, output verification, and workflow enforcement","repository":{"url":"git+https://github.com/michelabboud/visual-forge-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI image generation from markdown and HTML with multi-provider support","directories":{},"_nodeVersion":"24.12.0","dependencies":{"ora":"^8.1.0","zod":"^3.25.0","cors":"^2.8.5","uuid":"^10.0.0","axios":"^1.7.0","chalk":"^5.4.0","sharp":"^0.33.0","dotenv":"^16.4.0","cheerio":"^1.1.2","express":"^4.21.0","commander":"^12.0.0","axios-retry":"^4.5.0","@modelcontextprotocol/sdk":"^1.25.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","jest":"^29.7.0","eslint":"^9.0.0","ts-jest":"^29.2.0","prettier":"^3.3.0","typescript":"^5.7.0","@types/cors":"^2.8.17","@types/jest":"^29.5.0","@types/node":"^22.0.0","@types/uuid":"^10.0.0","@types/express":"^4.17.21","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/visual-forge-mcp_0.5.1_1768334604925_0.6735881480631392","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"@michelabboud/visual-forge-mcp","version":"0.5.2","keywords":["mcp","mcp-server","ai","image-generation","dall-e","stable-diffusion","flux","leonardo","replicate","technical-documentation"],"author":{"name":"Michel Abboud"},"license":"SEE LICENSE IN LICENSE","_id":"@michelabboud/visual-forge-mcp@0.5.2","maintainers":[{"name":"michelabboud","email":"michelabboudnpm@gmail.com"}],"homepage":"https://github.com/michelabboud/visual-forge-mcp#readme","bugs":{"url":"https://github.com/michelabboud/visual-forge-mcp/issues"},"dist":{"shasum":"265c3231f13f2d1bd07d32758002666012c7b0dd","tarball":"https://registry.npmjs.org/@michelabboud/visual-forge-mcp/-/visual-forge-mcp-0.5.2.tgz","fileCount":212,"integrity":"sha512-XkWKdJX0IopephZBdgOZ0qxSeM55i7iCqivmMsiHASOOVffPBpjBtX2+g4cNlijqaNTi3von6p5o3PUkMkfIfg==","signatures":[{"sig":"MEUCIQDOe14wEb2kUyPao35aCViIyGtQzvzLbh35I2WMbDyUTgIgJaq8TQETjv+oUbTp7qpSmm+14ZGIrV60nR0ZAlDHyvA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":649399},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.0.0"},"gitHead":"a13be9eb418f3a10644b9524c55712aa61d3118a","scripts":{"dev":"tsx src/index.ts","lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rm -rf dist","dev:http":"tsx src/http-server.ts","start:http":"node dist/http-server.js","test:watch":"jest --watch","pricing:set":"node scripts/update-pricing.js set","pricing:show":"node scripts/update-pricing.js show","pricing:check":"node scripts/update-pricing.js check","pricing:update":"node scripts/update-pricing.js update"},"_npmUser":{"name":"michelabboud","email":"michelabboudnpm@gmail.com"},"deprecated":"Critical bug: globalContext crash. Upgrade to 0.5.3+ immediately.","repository":{"url":"git+https://github.com/michelabboud/visual-forge-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI image generation from markdown and HTML with multi-provider support","directories":{},"_nodeVersion":"24.12.0","dependencies":{"ora":"^8.1.0","zod":"^3.25.0","cors":"^2.8.5","uuid":"^10.0.0","axios":"^1.7.0","chalk":"^5.4.0","sharp":"^0.33.0","dotenv":"^16.4.0","cheerio":"^1.1.2","express":"^4.21.0","commander":"^12.0.0","axios-retry":"^4.5.0","@modelcontextprotocol/sdk":"^1.25.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","jest":"^29.7.0","eslint":"^9.0.0","ts-jest":"^29.2.0","prettier":"^3.3.0","typescript":"^5.7.0","@types/cors":"^2.8.17","@types/jest":"^29.5.0","@types/node":"^22.0.0","@types/uuid":"^10.0.0","@types/express":"^4.17.21","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/visual-forge-mcp_0.5.2_1768349420461_0.4696150062254234","host":"s3://npm-registry-packages-npm-production"}},"0.5.3":{"name":"@michelabboud/visual-forge-mcp","version":"0.5.3","keywords":["mcp","mcp-server","ai","image-generation","dall-e","stable-diffusion","flux","leonardo","replicate","technical-documentation"],"author":{"name":"Michel Abboud"},"license":"SEE LICENSE IN LICENSE","_id":"@michelabboud/visual-forge-mcp@0.5.3","maintainers":[{"name":"michelabboud","email":"michelabboudnpm@gmail.com"}],"homepage":"https://github.com/michelabboud/visual-forge-mcp#readme","bugs":{"url":"https://github.com/michelabboud/visual-forge-mcp/issues"},"dist":{"shasum":"f0101472984badb082c61cdc94780e3f2a52dc61","tarball":"https://registry.npmjs.org/@michelabboud/visual-forge-mcp/-/visual-forge-mcp-0.5.3.tgz","fileCount":212,"integrity":"sha512-2tc95QZPkiNXJv4nJ7Ve261fgAqZmL+MxgM1TZ041PUVwHWm5HLyk5aFVpsSDXb1JwARpdGbUc9d4HDG8rehdQ==","signatures":[{"sig":"MEYCIQDBUW0uV9eSuwT5zvWL6cIbXaAb61KU54M1+wBAwROYrAIhANAXSromnUKKPMTgXm9psBaUZ8O+AmLU9a2AJzMJFvwI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":662107},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.0.0"},"gitHead":"a13be9eb418f3a10644b9524c55712aa61d3118a","scripts":{"dev":"tsx src/index.ts","lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rm -rf dist","dev:http":"tsx src/http-server.ts","start:http":"node dist/http-server.js","test:watch":"jest --watch","pricing:set":"node scripts/update-pricing.js set","pricing:show":"node scripts/update-pricing.js show","pricing:check":"node scripts/update-pricing.js check","pricing:update":"node scripts/update-pricing.js update"},"_npmUser":{"name":"michelabboud","email":"michelabboudnpm@gmail.com"},"repository":{"url":"git+https://github.com/michelabboud/visual-forge-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI image generation from markdown and HTML with multi-provider support","directories":{},"_nodeVersion":"24.12.0","dependencies":{"ora":"^8.1.0","zod":"^3.25.0","cors":"^2.8.5","uuid":"^10.0.0","axios":"^1.7.0","chalk":"^5.4.0","sharp":"^0.33.0","dotenv":"^16.4.0","cheerio":"^1.1.2","express":"^4.21.0","commander":"^12.0.0","axios-retry":"^4.5.0","@modelcontextprotocol/sdk":"^1.25.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","jest":"^29.7.0","eslint":"^9.0.0","ts-jest":"^29.2.0","prettier":"^3.3.0","typescript":"^5.7.0","@types/cors":"^2.8.17","@types/jest":"^29.5.0","@types/node":"^22.0.0","@types/uuid":"^10.0.0","@types/express":"^4.17.21","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/visual-forge-mcp_0.5.3_1768354516631_0.09529322417586239","host":"s3://npm-registry-packages-npm-production"}},"0.5.4":{"name":"@michelabboud/visual-forge-mcp","version":"0.5.4","keywords":["mcp","mcp-server","ai","image-generation","dall-e","stable-diffusion","flux","leonardo","replicate","technical-documentation"],"author":{"name":"Michel Abboud"},"license":"SEE LICENSE IN LICENSE","_id":"@michelabboud/visual-forge-mcp@0.5.4","maintainers":[{"name":"michelabboud","email":"michelabboudnpm@gmail.com"}],"homepage":"https://github.com/michelabboud/visual-forge-mcp#readme","bugs":{"url":"https://github.com/michelabboud/visual-forge-mcp/issues"},"dist":{"shasum":"bdc26e3f408c8573c004df99de48bcb2e7144cb6","tarball":"https://registry.npmjs.org/@michelabboud/visual-forge-mcp/-/visual-forge-mcp-0.5.4.tgz","fileCount":212,"integrity":"sha512-NnA4WqnzpBEGAb7fY9O+/nz7Kt/blaL/Iq1N9SHBc7F1bEcu4rTrPslMj25borehxC/1Pa/YB8oyHCr6M5luuw==","signatures":[{"sig":"MEYCIQCerrmzwv/JqONVG8ASfO/YtQkwSgPuleK8/8AYFmdB1AIhAPIPNiMXO7XU5XDGvjKlkXjHJ2WdRUmS8ot/P/NWE4Ca","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":675526},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.0.0"},"gitHead":"a13be9eb418f3a10644b9524c55712aa61d3118a","scripts":{"dev":"tsx src/index.ts","lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rm -rf dist","dev:http":"tsx src/http-server.ts","start:http":"node dist/http-server.js","test:watch":"jest --watch","pricing:set":"node scripts/update-pricing.js set","pricing:show":"node scripts/update-pricing.js show","pricing:check":"node scripts/update-pricing.js check","pricing:update":"node scripts/update-pricing.js update"},"_npmUser":{"name":"michelabboud","email":"michelabboudnpm@gmail.com"},"deprecated":"Critical backup issues: No backup when adding placeholders, unnecessary image backups. Upgrade to 0.5.5+","repository":{"url":"git+https://github.com/michelabboud/visual-forge-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI image generation from markdown and HTML with multi-provider support","directories":{},"_nodeVersion":"24.12.0","dependencies":{"ora":"^8.1.0","zod":"^3.25.0","cors":"^2.8.5","uuid":"^10.0.0","axios":"^1.7.0","chalk":"^5.4.0","sharp":"^0.33.0","dotenv":"^16.4.0","cheerio":"^1.1.2","express":"^4.21.0","commander":"^12.0.0","axios-retry":"^4.5.0","@modelcontextprotocol/sdk":"^1.25.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","jest":"^29.7.0","eslint":"^9.0.0","ts-jest":"^29.2.0","prettier":"^3.3.0","typescript":"^5.7.0","@types/cors":"^2.8.17","@types/jest":"^29.5.0","@types/node":"^22.0.0","@types/uuid":"^10.0.0","@types/express":"^4.17.21","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/visual-forge-mcp_0.5.4_1768356102492_0.21624141590849733","host":"s3://npm-registry-packages-npm-production"}},"0.5.5":{"name":"@michelabboud/visual-forge-mcp","version":"0.5.5","keywords":["mcp","mcp-server","ai","image-generation","dall-e","stable-diffusion","flux","leonardo","replicate","technical-documentation"],"author":{"name":"Michel Abboud"},"license":"SEE LICENSE IN LICENSE","_id":"@michelabboud/visual-forge-mcp@0.5.5","maintainers":[{"name":"michelabboud","email":"michelabboudnpm@gmail.com"}],"homepage":"https://github.com/michelabboud/visual-forge-mcp#readme","bugs":{"url":"https://github.com/michelabboud/visual-forge-mcp/issues"},"dist":{"shasum":"d8b077979b7afd53ac7849bf80c79aa5b9bba0a0","tarball":"https://registry.npmjs.org/@michelabboud/visual-forge-mcp/-/visual-forge-mcp-0.5.5.tgz","fileCount":212,"integrity":"sha512-hjSoS//l0X5S+iMGDICEVoN1/vxUlgQkIRPh0cp4UAx+TgCcG6p4BhEirN0ybIxy83Pp7+cSj5Kle8c3JHYykw==","signatures":[{"sig":"MEUCIQDqm6SobvrDozZRf7fG9U/GOfvjGcOVbMA4h2l5WiuhUQIgRR2EjJwbX+b5PDjjm4h5qXjyBpV0V3Qb7j06XrzngS0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":676907},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.0.0"},"gitHead":"a13be9eb418f3a10644b9524c55712aa61d3118a","scripts":{"dev":"tsx src/index.ts","lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rm -rf dist","dev:http":"tsx src/http-server.ts","start:http":"node dist/http-server.js","test:watch":"jest --watch","pricing:set":"node scripts/update-pricing.js set","pricing:show":"node scripts/update-pricing.js show","pricing:check":"node scripts/update-pricing.js check","pricing:update":"node scripts/update-pricing.js update"},"_npmUser":{"name":"michelabboud","email":"michelabboudnpm@gmail.com"},"repository":{"url":"git+https://github.com/michelabboud/visual-forge-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI image generation from markdown and HTML with multi-provider support","directories":{},"_nodeVersion":"24.12.0","dependencies":{"ora":"^8.1.0","zod":"^3.25.0","cors":"^2.8.5","uuid":"^10.0.0","axios":"^1.7.0","chalk":"^5.4.0","sharp":"^0.33.0","dotenv":"^16.4.0","cheerio":"^1.1.2","express":"^4.21.0","commander":"^12.0.0","axios-retry":"^4.5.0","@modelcontextprotocol/sdk":"^1.25.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","jest":"^29.7.0","eslint":"^9.0.0","ts-jest":"^29.2.0","prettier":"^3.3.0","typescript":"^5.7.0","@types/cors":"^2.8.17","@types/jest":"^29.5.0","@types/node":"^22.0.0","@types/uuid":"^10.0.0","@types/express":"^4.17.21","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/visual-forge-mcp_0.5.5_1768356404618_0.901131141633698","host":"s3://npm-registry-packages-npm-production"}},"0.5.6":{"name":"@michelabboud/visual-forge-mcp","version":"0.5.6","keywords":["mcp","mcp-server","ai","image-generation","dall-e","stable-diffusion","flux","leonardo","replicate","technical-documentation"],"author":{"name":"Michel Abboud"},"license":"SEE LICENSE IN LICENSE","_id":"@michelabboud/visual-forge-mcp@0.5.6","maintainers":[{"name":"michelabboud","email":"michelabboudnpm@gmail.com"}],"homepage":"https://github.com/michelabboud/visual-forge-mcp#readme","bugs":{"url":"https://github.com/michelabboud/visual-forge-mcp/issues"},"dist":{"shasum":"02abad55d7a68e40d794f326b7fb720b01cbb842","tarball":"https://registry.npmjs.org/@michelabboud/visual-forge-mcp/-/visual-forge-mcp-0.5.6.tgz","fileCount":212,"integrity":"sha512-3o0QqT6zy/ejSXflNNk113H+AgTnFBQzkWtW2+wK64e7AuxHMKOsEOqbOyg4mSTBl6Ru09gomMgKHnrk5kIoWQ==","signatures":[{"sig":"MEYCIQDQqzq7lY/c6oQmlZyW3Ofua6kFETTb4o/ONZV4nQ57gQIhALPpdaX6JH0pZs1SA1maF84dfQMnUnomHbStrJcXlUbd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":675640},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.0.0"},"gitHead":"bbb56a6d0d068de280e765e04756c86d7590fdc2","scripts":{"dev":"tsx src/index.ts","lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rm -rf dist","dev:http":"tsx src/http-server.ts","start:http":"node dist/http-server.js","test:watch":"jest --watch","pricing:set":"node scripts/update-pricing.js set","pricing:show":"node scripts/update-pricing.js show","pricing:check":"node scripts/update-pricing.js check","pricing:update":"node scripts/update-pricing.js update"},"_npmUser":{"name":"michelabboud","email":"michelabboudnpm@gmail.com"},"repository":{"url":"git+https://github.com/michelabboud/visual-forge-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI image generation from markdown and HTML with multi-provider support","directories":{},"_nodeVersion":"24.12.0","dependencies":{"ora":"^8.1.0","zod":"^3.25.0","cors":"^2.8.5","uuid":"^10.0.0","axios":"^1.7.0","chalk":"^5.4.0","sharp":"^0.33.0","dotenv":"^16.4.0","cheerio":"^1.1.2","express":"^4.21.0","commander":"^12.0.0","axios-retry":"^4.5.0","@modelcontextprotocol/sdk":"^1.25.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","jest":"^29.7.0","eslint":"^9.0.0","ts-jest":"^29.2.0","prettier":"^3.3.0","typescript":"^5.7.0","@types/cors":"^2.8.17","@types/jest":"^29.5.0","@types/node":"^22.0.0","@types/uuid":"^10.0.0","@types/express":"^4.17.21","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/visual-forge-mcp_0.5.6_1768356896256_0.7485269651434268","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@michelabboud/visual-forge-mcp","version":"0.6.0","keywords":["mcp","mcp-server","ai","image-generation","image-optimization","webp","sharp","dall-e","stable-diffusion","flux","leonardo","replicate","gemini","technical-documentation","markdown","documentation-tools"],"author":{"name":"Michel Abboud"},"license":"SEE LICENSE IN LICENSE","_id":"@michelabboud/visual-forge-mcp@0.6.0","maintainers":[{"name":"michelabboud","email":"michelabboudnpm@gmail.com"}],"homepage":"https://github.com/michelabboud/visual-forge-mcp#readme","bugs":{"url":"https://github.com/michelabboud/visual-forge-mcp/issues"},"bin":{"visual-forge-mcp":"dist/index.js"},"dist":{"shasum":"74bf4c563ef63f740a33154be33065abdf33d558","tarball":"https://registry.npmjs.org/@michelabboud/visual-forge-mcp/-/visual-forge-mcp-0.6.0.tgz","fileCount":226,"integrity":"sha512-Y9uqmiKo6QOFEnLbec//TFv6bPW4aeboZhvy2MvNGgpKMFUjbaNljap4WCBBEpd4wJtZsQeKc7yCXFn3vX9miw==","signatures":[{"sig":"MEYCIQC67xqeEh0l05G5GT15IHNCFOVA2XbSKa8b75W34QnsPgIhAP0e7Ia1BvXXB+1wiJwGBkY/XGAL1Bvu5dl+iZU3xbI+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":813468},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.0.0"},"gitHead":"8bcac0a3718c0daf17f4b7e560a4c315b9bb37c0","scripts":{"dev":"tsx src/index.ts","lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rm -rf dist","dev:http":"tsx src/http-server.ts","start:http":"node dist/http-server.js","test:watch":"jest --watch","pricing:set":"node scripts/update-pricing.js set","pricing:show":"node scripts/update-pricing.js show","pricing:check":"node scripts/update-pricing.js check","prepublishOnly":"npm run clean && npm run build","pricing:update":"node scripts/update-pricing.js update"},"_npmUser":{"name":"michelabboud","email":"michelabboudnpm@gmail.com"},"repository":{"url":"git+https://github.com/michelabboud/visual-forge-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI image generation from markdown and HTML with multi-provider support and automatic web optimization","directories":{},"_nodeVersion":"24.12.0","dependencies":{"ora":"^8.1.0","zod":"^3.25.0","cors":"^2.8.5","uuid":"^10.0.0","axios":"^1.7.0","chalk":"^5.4.0","sharp":"^0.33.0","dotenv":"^16.4.0","cheerio":"^1.1.2","express":"^4.21.0","commander":"^12.0.0","axios-retry":"^4.5.0","@modelcontextprotocol/sdk":"^1.25.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","jest":"^29.7.0","eslint":"^9.0.0","ts-jest":"^29.2.0","prettier":"^3.3.0","typescript":"^5.7.0","@types/cors":"^2.8.17","@types/jest":"^29.5.0","@types/node":"^22.0.0","@types/uuid":"^10.0.0","@types/express":"^4.17.21","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/visual-forge-mcp_0.6.0_1768360979023_0.9766958578574456","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@michelabboud/visual-forge-mcp","version":"0.6.1","keywords":["mcp","mcp-server","ai","image-generation","image-optimization","webp","sharp","dall-e","stable-diffusion","flux","leonardo","replicate","gemini","technical-documentation","markdown","documentation-tools"],"author":{"name":"Michel Abboud"},"license":"SEE LICENSE IN LICENSE","_id":"@michelabboud/visual-forge-mcp@0.6.1","maintainers":[{"name":"michelabboud","email":"michelabboudnpm@gmail.com"}],"homepage":"https://github.com/michelabboud/visual-forge-mcp#readme","bugs":{"url":"https://github.com/michelabboud/visual-forge-mcp/issues"},"bin":{"visual-forge-mcp":"dist/index.js"},"dist":{"shasum":"c7a2554ba49de69c08ef7121dd22ab4ffbd78cb5","tarball":"https://registry.npmjs.org/@michelabboud/visual-forge-mcp/-/visual-forge-mcp-0.6.1.tgz","fileCount":232,"integrity":"sha512-GS0g7QyJS+pf7rT2ik7bA20OqGEkUDCaEohUOVxQtOAjU9NTCLStZA/W9TplX1C6PPAcM1JyNg7eRo3nV17fWg==","signatures":[{"sig":"MEUCIQCLY9D34Lw8nm337Andl1BOhyMHW5FS3oNDpQCJKNZIHAIgNs+JL4ySOJmANhk5p59banNigbEPCC+hs/OuMCwwFp0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":858882},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.0.0"},"gitHead":"150d7576e45dd6d66d2ff080db7fff76a6db4053","scripts":{"dev":"tsx src/index.ts","lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rm -rf dist","dev:http":"tsx src/http-server.ts","start:http":"node dist/http-server.js","test:watch":"jest --watch","pricing:set":"node scripts/update-pricing.js set","pricing:show":"node scripts/update-pricing.js show","pricing:check":"node scripts/update-pricing.js check","prepublishOnly":"npm run clean && npm run build && npm test","pricing:update":"node scripts/update-pricing.js update"},"_npmUser":{"name":"michelabboud","email":"michelabboudnpm@gmail.com"},"repository":{"url":"git+https://github.com/michelabboud/visual-forge-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI image generation from markdown and HTML with multi-provider support and automatic web optimization","directories":{},"_nodeVersion":"24.12.0","dependencies":{"ora":"^8.1.0","zod":"^3.25.0","cors":"^2.8.5","uuid":"^10.0.0","axios":"^1.7.0","chalk":"^5.4.0","sharp":"^0.33.0","dotenv":"^16.4.0","cheerio":"^1.1.2","express":"^4.21.0","commander":"^12.0.0","axios-retry":"^4.5.0","@modelcontextprotocol/sdk":"^1.25.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","jest":"^29.7.0","eslint":"^9.0.0","ts-jest":"^29.2.0","prettier":"^3.3.0","typescript":"^5.7.0","@types/cors":"^2.8.17","@types/jest":"^29.5.0","@types/node":"^22.0.0","@types/uuid":"^10.0.0","@types/express":"^4.17.21","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/visual-forge-mcp_0.6.1_1768497173514_0.526754854275028","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@michelabboud/visual-forge-mcp","version":"0.7.0","keywords":["mcp","mcp-server","ai","image-generation","image-optimization","webp","sharp","dall-e","stable-diffusion","flux","leonardo","replicate","gemini","technical-documentation","markdown","documentation-tools"],"author":{"name":"Michel Abboud"},"license":"SEE LICENSE IN LICENSE","_id":"@michelabboud/visual-forge-mcp@0.7.0","maintainers":[{"name":"michelabboud","email":"michelabboudnpm@gmail.com"}],"homepage":"https://github.com/michelabboud/visual-forge-mcp#readme","bugs":{"url":"https://github.com/michelabboud/visual-forge-mcp/issues"},"bin":{"visual-forge-mcp":"dist/index.js"},"dist":{"shasum":"463d0f9cf1441dfa585753b996d86fde65f080ee","tarball":"https://registry.npmjs.org/@michelabboud/visual-forge-mcp/-/visual-forge-mcp-0.7.0.tgz","fileCount":256,"integrity":"sha512-Gxho4D/oCYhPw6DmhajzRrGx1AqAHA97y1/ymBafadg+Zko1N5mX+h2yXS3qvlOe6x6f26pAZhioTQR6E06DQA==","signatures":[{"sig":"MEYCIQCaujoh+pRC/MCBvzx/KrvnKKc10hqdPgPhKW5NooZahQIhALTqLQGfw11ylfGXEuJjdvobzXSbdZ34NwbyCk6um3sm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1006764},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.0.0"},"gitHead":"2eec69d43e70b788c569ec126096d95b5d9df441","scripts":{"dev":"tsx src/index.ts","lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rm -rf dist","dev:http":"tsx src/http-server.ts","start:http":"node dist/http-server.js","test:watch":"jest --watch","pricing:set":"node scripts/update-pricing.js set","pricing:show":"node scripts/update-pricing.js show","pricing:check":"node scripts/update-pricing.js check","prepublishOnly":"npm run clean && npm run build && npm test","pricing:update":"node scripts/update-pricing.js update"},"_npmUser":{"name":"michelabboud","email":"michelabboudnpm@gmail.com"},"repository":{"url":"git+https://github.com/michelabboud/visual-forge-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI image generation from markdown and HTML with multi-provider support and automatic web optimization","directories":{},"_nodeVersion":"24.12.0","dependencies":{"ora":"^8.1.0","zod":"^3.25.0","cors":"^2.8.5","uuid":"^10.0.0","axios":"^1.7.0","chalk":"^5.4.0","sharp":"^0.33.0","dotenv":"^16.4.0","cheerio":"^1.1.2","express":"^4.21.0","commander":"^12.0.0","axios-retry":"^4.5.0","@modelcontextprotocol/sdk":"^1.25.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","jest":"^29.7.0","eslint":"^9.0.0","ts-jest":"^29.2.0","prettier":"^3.3.0","typescript":"^5.7.0","@types/cors":"^2.8.17","@types/jest":"^29.5.0","@types/node":"^22.0.0","@types/uuid":"^10.0.0","@types/express":"^4.17.21","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/visual-forge-mcp_0.7.0_1768544050733_0.008714421011403628","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@michelabboud/visual-forge-mcp","version":"0.9.0","keywords":["mcp","mcp-server","ai","image-generation","image-optimization","webp","sharp","dall-e","stable-diffusion","flux","leonardo","replicate","gemini","technical-documentation","markdown","documentation-tools"],"author":{"name":"Michel Abboud"},"license":"SEE LICENSE IN LICENSE","_id":"@michelabboud/visual-forge-mcp@0.9.0","maintainers":[{"name":"michelabboud","email":"michelabboudnpm@gmail.com"}],"homepage":"https://github.com/michelabboud/visual-forge-mcp#readme","bugs":{"url":"https://github.com/michelabboud/visual-forge-mcp/issues"},"bin":{"visual-forge-mcp":"dist/index.js"},"dist":{"shasum":"982883dde2610400b970f09280e35244cd2d8630","tarball":"https://registry.npmjs.org/@michelabboud/visual-forge-mcp/-/visual-forge-mcp-0.9.0.tgz","fileCount":269,"integrity":"sha512-ptXChX51masMn5v+P1I7Fz+x2C+SJx5JCPXNoBw0zgC4gD6HokVtNY+zADgdhzprMVBY7sgtknJllrT4T5pAPg==","signatures":[{"sig":"MEUCIQCrLp/1KGcH6E0hYp1lxP/wNrq/zLVKKmP8rx0h4/4f+gIgGlROE9ZawOJs616wmENnSdhisCV1ppMdjhoJ7bNVikU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1151599},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.0.0"},"gitHead":"e1b92746fb2ab82ed6a3a69c0d00e935b3af6c08","scripts":{"dev":"tsx src/index.ts","lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rm -rf dist","dev:http":"tsx src/http-server.ts","start:http":"node dist/http-server.js","test:watch":"jest --watch","pricing:set":"node scripts/update-pricing.js set","pricing:show":"node scripts/update-pricing.js show","pricing:check":"node scripts/update-pricing.js check","prepublishOnly":"npm run clean && npm run build && npm test","pricing:update":"node scripts/update-pricing.js update"},"_npmUser":{"name":"michelabboud","email":"michelabboudnpm@gmail.com"},"repository":{"url":"git+https://github.com/michelabboud/visual-forge-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI image generation from markdown and HTML with multi-provider support, model testing, and automatic web optimization","directories":{},"_nodeVersion":"24.12.0","dependencies":{"ora":"^8.1.0","zod":"^3.25.0","cors":"^2.8.5","uuid":"^10.0.0","axios":"^1.7.0","chalk":"^5.4.0","sharp":"^0.33.0","dotenv":"^16.4.0","cheerio":"^1.1.2","express":"^4.21.0","commander":"^12.0.0","axios-retry":"^4.5.0","@modelcontextprotocol/sdk":"^1.25.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","jest":"^29.7.0","eslint":"^9.0.0","ts-jest":"^29.2.0","prettier":"^3.3.0","typescript":"^5.7.0","@types/cors":"^2.8.17","@types/jest":"^29.5.0","@types/node":"^22.0.0","@types/uuid":"^10.0.0","@types/express":"^4.17.21","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/visual-forge-mcp_0.9.0_1768548860213_0.5939487338967826","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"@michelabboud/visual-forge-mcp","version":"0.10.0","keywords":["mcp","mcp-server","ai","image-generation","image-optimization","webp","sharp","dall-e","stable-diffusion","flux","leonardo","replicate","gemini","technical-documentation","markdown","documentation-tools"],"author":{"name":"Michel Abboud"},"license":"SEE LICENSE IN LICENSE","_id":"@michelabboud/visual-forge-mcp@0.10.0","maintainers":[{"name":"michelabboud","email":"michelabboudnpm@gmail.com"}],"homepage":"https://github.com/michelabboud/visual-forge-mcp#readme","bugs":{"url":"https://github.com/michelabboud/visual-forge-mcp/issues"},"bin":{"visual-forge-mcp":"dist/index.js"},"dist":{"shasum":"72fd8f3022e6b15da822eda63d2b759fb9c82823","tarball":"https://registry.npmjs.org/@michelabboud/visual-forge-mcp/-/visual-forge-mcp-0.10.0.tgz","fileCount":274,"integrity":"sha512-fBWiCzCa7mrTv2gZDSi3kGJpckMJtHL4yT9RgAVwIdOCNGGibtqAnW4i07phrmcqaS8/JeDBXKJsvfigOngrQA==","signatures":[{"sig":"MEQCIFOXdoktqXO47la5hO5ajxMTuD50k9BvGlAJL2iU9ZBqAiBwCDfHrWKrOkPH1sjJvQWBKtG7P8EpvQOzpzoZ+rvsAw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1194124},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.0.0"},"gitHead":"0d2eed02fa894ad6c6c7761d8ad0fae8e02a2841","scripts":{"dev":"tsx src/index.ts","lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rm -rf dist","dev:http":"tsx src/http-server.ts","start:http":"node dist/http-server.js","test:watch":"jest --watch","pricing:set":"node scripts/update-pricing.js set","pricing:show":"node scripts/update-pricing.js show","pricing:check":"node scripts/update-pricing.js check","prepublishOnly":"npm run clean && npm run build && npm test","pricing:update":"node scripts/update-pricing.js update"},"_npmUser":{"name":"michelabboud","email":"michelabboudnpm@gmail.com"},"repository":{"url":"git+https://github.com/michelabboud/visual-forge-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI image generation from markdown and HTML with multi-provider support, model testing, and automatic web optimization","directories":{},"_nodeVersion":"24.12.0","dependencies":{"ora":"^8.1.0","zod":"^3.25.0","cors":"^2.8.5","uuid":"^10.0.0","axios":"^1.7.0","chalk":"^5.4.0","sharp":"^0.33.0","dotenv":"^16.4.0","cheerio":"^1.1.2","express":"^4.21.0","commander":"^12.0.0","axios-retry":"^4.5.0","@modelcontextprotocol/sdk":"^1.25.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","jest":"^29.7.0","eslint":"^9.0.0","ts-jest":"^29.2.0","prettier":"^3.3.0","typescript":"^5.7.0","@types/cors":"^2.8.17","@types/jest":"^29.5.0","@types/node":"^22.0.0","@types/uuid":"^10.0.0","@types/express":"^4.17.21","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/visual-forge-mcp_0.10.0_1768553843158_0.1689312772326519","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"@michelabboud/visual-forge-mcp","version":"0.11.0","keywords":["mcp","mcp-server","ai","image-generation","image-optimization","webp","sharp","dall-e","stable-diffusion","flux","leonardo","replicate","gemini","technical-documentation","markdown","documentation-tools"],"author":{"name":"Michel Abboud"},"license":"SEE LICENSE IN LICENSE","_id":"@michelabboud/visual-forge-mcp@0.11.0","maintainers":[{"name":"michelabboud","email":"michelabboudnpm@gmail.com"}],"homepage":"https://github.com/michelabboud/visual-forge-mcp#readme","bugs":{"url":"https://github.com/michelabboud/visual-forge-mcp/issues"},"bin":{"visual-forge-mcp":"dist/index.js"},"dist":{"shasum":"6df20619a41f4f531bc6aadfb3416432de8095c8","tarball":"https://registry.npmjs.org/@michelabboud/visual-forge-mcp/-/visual-forge-mcp-0.11.0.tgz","fileCount":290,"integrity":"sha512-u4dSEJP1FCtj1B9t/nVDGS2+w0erPGSR/rbipJR6LujsiB52WOqye8/v/4B61lm/YttbZXw6w9TbTZ2y0dRLTQ==","signatures":[{"sig":"MEUCIQCrvzGjA20Demv/PmpZxEkFj2++om6G8EHP7zi86OPaNgIgaJ+fdLmpVyMmiCytJ2JosmLr+iHPtRtrWcK/ny9Wop8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1268663},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.0.0"},"gitHead":"d6d6e09dac1ecb31b083f04b05bd1afaee8f34c4","scripts":{"dev":"tsx src/index.ts","lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rm -rf dist","dev:http":"tsx src/http-server.ts","start:http":"node dist/http-server.js","test:watch":"jest --watch","pricing:set":"node scripts/update-pricing.js set","pricing:show":"node scripts/update-pricing.js show","pricing:check":"node scripts/update-pricing.js check","prepublishOnly":"npm run clean && npm run build && npm test","pricing:update":"node scripts/update-pricing.js update"},"_npmUser":{"name":"michelabboud","email":"michelabboudnpm@gmail.com"},"repository":{"url":"git+https://github.com/michelabboud/visual-forge-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI image generation from markdown and HTML with multi-provider support, model testing, and automatic web optimization","directories":{},"_nodeVersion":"24.12.0","dependencies":{"ora":"^8.1.0","zod":"^3.25.0","cors":"^2.8.5","uuid":"^10.0.0","axios":"^1.7.0","chalk":"^5.4.0","sharp":"^0.33.0","dotenv":"^16.4.0","cheerio":"^1.1.2","express":"^4.21.0","commander":"^12.0.0","axios-retry":"^4.5.0","@modelcontextprotocol/sdk":"^1.25.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","jest":"^29.7.0","eslint":"^9.0.0","ts-jest":"^29.2.0","prettier":"^3.3.0","typescript":"^5.7.0","@types/cors":"^2.8.17","@types/jest":"^29.5.0","@types/node":"^22.0.0","@types/uuid":"^10.0.0","@types/express":"^4.17.21","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/visual-forge-mcp_0.11.0_1768615449855_0.27694775645914005","host":"s3://npm-registry-packages-npm-production"}},"0.11.1":{"name":"@michelabboud/visual-forge-mcp","version":"0.11.1","keywords":["mcp","mcp-server","ai","image-generation","image-optimization","webp","sharp","dall-e","stable-diffusion","flux","leonardo","replicate","gemini","technical-documentation","markdown","documentation-tools"],"author":{"name":"Michel Abboud"},"license":"SEE LICENSE IN LICENSE","_id":"@michelabboud/visual-forge-mcp@0.11.1","maintainers":[{"name":"michelabboud","email":"michelabboudnpm@gmail.com"}],"homepage":"https://github.com/michelabboud/visual-forge-mcp#readme","bugs":{"url":"https://github.com/michelabboud/visual-forge-mcp/issues"},"bin":{"visual-forge-mcp":"dist/index.js"},"dist":{"shasum":"092352f0771159ddbf782c7fefee975b18a1ce59","tarball":"https://registry.npmjs.org/@michelabboud/visual-forge-mcp/-/visual-forge-mcp-0.11.1.tgz","fileCount":290,"integrity":"sha512-dNZcZSjRIFv4WWVp87GINeBKwmYuYDEQFdDzJNGAeM45HfWoLKXy2eAyHt8/FBimFbiW/GfBJTU5aDULPiUsWA==","signatures":[{"sig":"MEUCIQCHD4C3EO8yv8E1tglX96qz4l2GeMJmmGlkYBv5avnyXAIgZhnZ1q3uBztHzk11ajGwnvCDyrCKjMONu7wX/gSpbXQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1268663},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.0.0"},"gitHead":"9793d074e1aff463d545d1bd3ad9e3474b73b4d9","scripts":{"dev":"tsx src/index.ts","lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rm -rf dist","dev:http":"tsx src/http-server.ts","start:http":"node dist/http-server.js","test:watch":"jest --watch","pricing:set":"node scripts/update-pricing.js set","pricing:show":"node scripts/update-pricing.js show","pricing:check":"node scripts/update-pricing.js check","prepublishOnly":"npm run clean && npm run build && npm test","pricing:update":"node scripts/update-pricing.js update"},"_npmUser":{"name":"michelabboud","email":"michelabboudnpm@gmail.com"},"repository":{"url":"git+https://github.com/michelabboud/visual-forge-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI image generation from markdown and HTML with multi-provider support, model testing, and automatic web optimization","directories":{},"_nodeVersion":"24.12.0","dependencies":{"ora":"^8.1.0","zod":"^3.25.0","cors":"^2.8.5","uuid":"^10.0.0","axios":"^1.7.0","chalk":"^5.4.0","sharp":"^0.33.0","dotenv":"^16.4.0","cheerio":"^1.1.2","express":"^4.21.0","commander":"^12.0.0","axios-retry":"^4.5.0","@modelcontextprotocol/sdk":"^1.25.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","jest":"^29.7.0","eslint":"^9.0.0","ts-jest":"^29.2.0","prettier":"^3.3.0","typescript":"^5.7.0","@types/cors":"^2.8.17","@types/jest":"^29.5.0","@types/node":"^22.0.0","@types/uuid":"^10.0.0","@types/express":"^4.17.21","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/visual-forge-mcp_0.11.1_1768626433835_0.29762780653660226","host":"s3://npm-registry-packages-npm-production"}},"0.11.2":{"name":"@michelabboud/visual-forge-mcp","version":"0.11.2","keywords":["mcp","mcp-server","ai","image-generation","image-optimization","webp","sharp","dall-e","stable-diffusion","flux","leonardo","replicate","gemini","technical-documentation","markdown","documentation-tools"],"author":{"name":"Michel Abboud"},"license":"SEE LICENSE IN LICENSE","_id":"@michelabboud/visual-forge-mcp@0.11.2","maintainers":[{"name":"michelabboud","email":"michelabboudnpm@gmail.com"}],"homepage":"https://github.com/michelabboud/visual-forge-mcp#readme","bugs":{"url":"https://github.com/michelabboud/visual-forge-mcp/issues"},"bin":{"visual-forge-mcp":"dist/index.js"},"dist":{"shasum":"6f13a8d50b8e4c5a6ed49341c474f8291f39badb","tarball":"https://registry.npmjs.org/@michelabboud/visual-forge-mcp/-/visual-forge-mcp-0.11.2.tgz","fileCount":291,"integrity":"sha512-FUXTBbKThf513Nh+QsiYrv3gVHDtYOs99gxK/CckdXWse/aZAFGrBoYZAblGV7ng7UY2yUwmPVYURxn4uI4XLg==","signatures":[{"sig":"MEUCIFYUUvLfU/cFMq3ymG97WBQKZH9vM3gY0Hrr+BLFp+qXAiEAnpbE+cotpkbDTDP8E5etDIsU3ObEj+SSKxgnBWlfEvU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1274963},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.0.0"},"gitHead":"2f56edfdb79a69163f28f3362401523b7b66c42c","scripts":{"dev":"tsx src/index.ts","lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rm -rf dist","dev:http":"tsx src/http-server.ts","start:http":"node dist/http-server.js","test:watch":"jest --watch","pricing:set":"node scripts/update-pricing.js set","pricing:show":"node scripts/update-pricing.js show","pricing:check":"node scripts/update-pricing.js check","prepublishOnly":"npm run clean && npm run build && npm test","pricing:update":"node scripts/update-pricing.js update"},"_npmUser":{"name":"michelabboud","email":"michelabboudnpm@gmail.com"},"repository":{"url":"git+https://github.com/michelabboud/visual-forge-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI image generation from markdown and HTML with multi-provider support, model testing, and automatic web optimization","directories":{},"_nodeVersion":"24.12.0","dependencies":{"ora":"^8.1.0","zod":"^3.25.0","cors":"^2.8.5","uuid":"^10.0.0","axios":"^1.7.0","chalk":"^5.4.0","sharp":"^0.33.0","dotenv":"^16.4.0","cheerio":"^1.1.2","express":"^4.21.0","commander":"^12.0.0","axios-retry":"^4.5.0","@modelcontextprotocol/sdk":"^1.25.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","jest":"^29.7.0","eslint":"^9.0.0","ts-jest":"^29.2.0","prettier":"^3.3.0","typescript":"^5.7.0","@types/cors":"^2.8.17","@types/jest":"^29.5.0","@types/node":"^22.0.0","@types/uuid":"^10.0.0","@types/express":"^4.17.21","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/visual-forge-mcp_0.11.2_1768628569439_0.042842410864038394","host":"s3://npm-registry-packages-npm-production"}},"0.11.3":{"name":"@michelabboud/visual-forge-mcp","version":"0.11.3","keywords":["mcp","mcp-server","ai","image-generation","image-optimization","webp","sharp","dall-e","stable-diffusion","flux","leonardo","replicate","gemini","technical-documentation","markdown","documentation-tools"],"author":{"name":"Michel Abboud"},"license":"SEE LICENSE IN LICENSE","_id":"@michelabboud/visual-forge-mcp@0.11.3","maintainers":[{"name":"michelabboud","email":"michelabboudnpm@gmail.com"}],"homepage":"https://github.com/michelabboud/visual-forge-mcp#readme","bugs":{"url":"https://github.com/michelabboud/visual-forge-mcp/issues"},"bin":{"visual-forge-mcp":"dist/index.js"},"dist":{"shasum":"6bf7242ad6e8d7a38c5c84fe86a48fc50d0934d4","tarball":"https://registry.npmjs.org/@michelabboud/visual-forge-mcp/-/visual-forge-mcp-0.11.3.tgz","fileCount":291,"integrity":"sha512-JwZ+mxnqDzNYHuBTIhgFa3vVFAPl1697nwqQ5vIgMYSjXeSq6qfdhVcbQIZN/1XQgDzCL758E6VPh1cTHtN5Lg==","signatures":[{"sig":"MEUCIQDYfN4TQytqRO9EFOI0xzrL5nocJZSc8sI/1i1b4BKiJQIgctSAQX5kjc5M4/lqsFUjTk/VjnxsYJuRJ8kRUqnNVGE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1275005},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.0.0"},"gitHead":"5440338da8c55efd1ba7618788962a7b1e830dea","scripts":{"dev":"tsx src/index.ts","lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rm -rf dist","dev:http":"tsx src/http-server.ts","start:http":"node dist/http-server.js","test:watch":"jest --watch","pricing:set":"node scripts/update-pricing.js set","pricing:show":"node scripts/update-pricing.js show","pricing:check":"node scripts/update-pricing.js check","prepublishOnly":"npm run clean && npm run build && npm test","pricing:update":"node scripts/update-pricing.js update"},"_npmUser":{"name":"michelabboud","email":"michelabboudnpm@gmail.com"},"repository":{"url":"git+https://github.com/michelabboud/visual-forge-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI image generation from markdown and HTML with multi-provider support, model testing, and automatic web optimization","directories":{},"_nodeVersion":"24.12.0","dependencies":{"ora":"^8.1.0","zod":"^3.25.0","cors":"^2.8.5","uuid":"^10.0.0","axios":"^1.7.0","chalk":"^5.4.0","sharp":"^0.33.0","dotenv":"^16.4.0","cheerio":"^1.1.2","express":"^4.21.0","commander":"^12.0.0","axios-retry":"^4.5.0","@modelcontextprotocol/sdk":"^1.25.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","jest":"^29.7.0","eslint":"^9.0.0","ts-jest":"^29.2.0","prettier":"^3.3.0","typescript":"^5.7.0","@types/cors":"^2.8.17","@types/jest":"^29.5.0","@types/node":"^22.0.0","@types/uuid":"^10.0.0","@types/express":"^4.17.21","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/visual-forge-mcp_0.11.3_1768629067728_0.38893741314750696","host":"s3://npm-registry-packages-npm-production"}},"0.11.4":{"name":"@michelabboud/visual-forge-mcp","version":"0.11.4","keywords":["mcp","mcp-server","ai","image-generation","image-optimization","webp","sharp","dall-e","stable-diffusion","flux","leonardo","replicate","gemini","technical-documentation","markdown","documentation-tools"],"author":{"name":"Michel Abboud"},"license":"SEE LICENSE IN LICENSE","_id":"@michelabboud/visual-forge-mcp@0.11.4","maintainers":[{"name":"michelabboud","email":"michelabboudnpm@gmail.com"}],"homepage":"https://github.com/michelabboud/visual-forge-mcp#readme","bugs":{"url":"https://github.com/michelabboud/visual-forge-mcp/issues"},"bin":{"visual-forge-mcp":"dist/index.js"},"dist":{"shasum":"0d253ba7baf360a6102cff17f570c723ecf1a555","tarball":"https://registry.npmjs.org/@michelabboud/visual-forge-mcp/-/visual-forge-mcp-0.11.4.tgz","fileCount":295,"integrity":"sha512-JGHAmRnc+LfnuG1hr85P3pJfb7KzIZSWx2hfngwvtiF33o0ljw9qmnAR0UrfDLPcLn8zgFkCjDRBfRnoT2Atrg==","signatures":[{"sig":"MEUCIQCAHtqpCZjzdZig2qzOHb/0UwI/cMWDrPXxD6Ujc/eWmgIgdmsrwBErTcFT52HD/mV1+9z3oWTJ9Mh8aiSnYYzoEds=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1303409},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.0.0"},"gitHead":"12d647ac6f038016bd8483842ce03d1f9e96c0b4","scripts":{"dev":"tsx src/index.ts","lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rm -rf dist","dev:http":"tsx src/http-server.ts","start:http":"node dist/http-server.js","test:watch":"jest --watch","pricing:set":"node scripts/update-pricing.js set","pricing:show":"node scripts/update-pricing.js show","pricing:check":"node scripts/update-pricing.js check","prepublishOnly":"npm run clean && npm run build && npm test","pricing:update":"node scripts/update-pricing.js update"},"_npmUser":{"name":"michelabboud","email":"michelabboudnpm@gmail.com"},"repository":{"url":"git+https://github.com/michelabboud/visual-forge-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI image generation from markdown and HTML with multi-provider support, model testing, and automatic web optimization","directories":{},"_nodeVersion":"24.12.0","dependencies":{"ora":"^8.1.0","zod":"^3.25.0","cors":"^2.8.5","uuid":"^10.0.0","axios":"^1.7.0","chalk":"^5.4.0","sharp":"^0.33.0","dotenv":"^16.4.0","cheerio":"^1.1.2","express":"^4.21.0","commander":"^12.0.0","axios-retry":"^4.5.0","@modelcontextprotocol/sdk":"^1.25.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","jest":"^29.7.0","eslint":"^9.0.0","ts-jest":"^29.2.0","prettier":"^3.3.0","typescript":"^5.7.0","@types/cors":"^2.8.17","@types/jest":"^29.5.0","@types/node":"^22.0.0","@types/uuid":"^10.0.0","@types/express":"^4.17.21","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/visual-forge-mcp_0.11.4_1768631368563_0.9937918975558071","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"@michelabboud/visual-forge-mcp","version":"0.12.0","keywords":["mcp","mcp-server","ai","image-generation","image-optimization","webp","sharp","dall-e","stable-diffusion","flux","leonardo","replicate","gemini","technical-documentation","markdown","documentation-tools"],"author":{"name":"Michel Abboud"},"license":"SEE LICENSE IN LICENSE","_id":"@michelabboud/visual-forge-mcp@0.12.0","maintainers":[{"name":"michelabboud","email":"michelabboudnpm@gmail.com"}],"homepage":"https://github.com/michelabboud/visual-forge-mcp#readme","bugs":{"url":"https://github.com/michelabboud/visual-forge-mcp/issues"},"bin":{"visual-forge-mcp":"dist/index.js"},"dist":{"shasum":"cb9193cdb1e34de689ded9e224fb7b832d4395a9","tarball":"https://registry.npmjs.org/@michelabboud/visual-forge-mcp/-/visual-forge-mcp-0.12.0.tgz","fileCount":319,"integrity":"sha512-sWbCpop6HIjkKclP7kibVHZm4J0kQsJCl8iRra2imDBNeGD/qsa4zSCOOJZ1/LuvUXXW2DxB5DvsP+qVC6klVA==","signatures":[{"sig":"MEUCIBUUsr2CQqVFBkSm/f4r99ipnvGeSPpxUGsjjjEIo/1jAiEAk+x5ZbVOf6kSSyiOt6lb3YcyoMoCncj2NT2P5BJqJU4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5934801},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.0.0"},"gitHead":"07666d93ad38c0f9f90483f78bd12d8747d98dfc","scripts":{"dev":"tsx src/index.ts","lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rm -rf dist","dev:http":"tsx src/http-server.ts","start:http":"node dist/http-server.js","test:watch":"jest --watch","pricing:set":"node scripts/update-pricing.js set","pricing:show":"node scripts/update-pricing.js show","pricing:check":"node scripts/update-pricing.js check","prepublishOnly":"npm run clean && npm run build && npm test","pricing:update":"node scripts/update-pricing.js update"},"_npmUser":{"name":"michelabboud","email":"michelabboudnpm@gmail.com"},"repository":{"url":"git+https://github.com/michelabboud/visual-forge-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI image generation from markdown and HTML with multi-provider support, model testing, and automatic web optimization","directories":{},"_nodeVersion":"24.12.0","dependencies":{"ora":"^8.1.0","zod":"^3.25.0","cors":"^2.8.5","uuid":"^10.0.0","axios":"^1.7.0","chalk":"^5.4.0","sharp":"^0.33.0","dotenv":"^16.4.0","cheerio":"^1.1.2","express":"^4.21.0","wawoff2":"^2.0.1","commander":"^12.0.0","axios-retry":"^4.5.0","@modelcontextprotocol/sdk":"^1.25.2","@michelabboud/visual-forge-fonts-standard":"^1.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","jest":"^29.7.0","eslint":"^9.0.0","ts-jest":"^29.2.0","prettier":"^3.3.0","typescript":"^5.7.0","@types/cors":"^2.8.17","@types/jest":"^29.5.0","@types/node":"^22.0.0","@types/uuid":"^10.0.0","@types/express":"^4.17.21","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/visual-forge-mcp_0.12.0_1768642484587_0.21178317196985974","host":"s3://npm-registry-packages-npm-production"}},"0.12.1":{"name":"@michelabboud/visual-forge-mcp","version":"0.12.1","keywords":["mcp","mcp-server","ai","image-generation","image-optimization","webp","sharp","dall-e","stable-diffusion","flux","leonardo","replicate","gemini","technical-documentation","markdown","documentation-tools"],"author":{"name":"Michel Abboud"},"license":"SEE LICENSE IN LICENSE","_id":"@michelabboud/visual-forge-mcp@0.12.1","maintainers":[{"name":"michelabboud","email":"michelabboudnpm@gmail.com"}],"homepage":"https://github.com/michelabboud/visual-forge-mcp#readme","bugs":{"url":"https://github.com/michelabboud/visual-forge-mcp/issues"},"bin":{"visual-forge-mcp":"dist/index.js"},"dist":{"shasum":"d8221cb4ea7d2f37b610de29fcfa32223a0757b1","tarball":"https://registry.npmjs.org/@michelabboud/visual-forge-mcp/-/visual-forge-mcp-0.12.1.tgz","fileCount":319,"integrity":"sha512-JgSKwKUxNDBQeNbe2R1fOTVDn+1zei1Z8FEW94YMo6zkYFBMXJrPPEOrgFR6YO3nnjPjhDw4xL+QkiWp9x7kPA==","signatures":[{"sig":"MEUCIQCpnco7Ia6ID6yvQRfty2pdSHasUd691abS4twcOOtBHgIgSG9pOezCrXUOssXutQjj4u7iQN9kEdai/gnqseERNVI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5935970},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=24.0.0"},"gitHead":"5b750225a08da6f3aed194db1acfec7bedd49783","scripts":{"dev":"tsx src/index.ts","lint":"eslint src --ext .ts","test":"jest","build":"tsc","clean":"rm -rf dist","dev:http":"tsx src/http-server.ts","start:http":"node dist/http-server.js","test:watch":"jest --watch","pricing:set":"node scripts/update-pricing.js set","pricing:show":"node scripts/update-pricing.js show","pricing:check":"node scripts/update-pricing.js check","prepublishOnly":"npm run clean && npm run build && npm test","pricing:update":"node scripts/update-pricing.js update"},"_npmUser":{"name":"michelabboud","email":"michelabboudnpm@gmail.com"},"repository":{"url":"git+https://github.com/michelabboud/visual-forge-mcp.git","type":"git"},"_npmVersion":"11.6.2","description":"MCP server for AI image generation from markdown and HTML with multi-provider support, model testing, and automatic web optimization","directories":{},"_nodeVersion":"24.12.0","dependencies":{"ora":"^8.1.0","zod":"^3.25.0","cors":"^2.8.5","uuid":"^10.0.0","axios":"^1.7.0","chalk":"^5.4.0","sharp":"^0.33.0","dotenv":"^16.4.0","cheerio":"^1.1.2","express":"^4.21.0","wawoff2":"^2.0.1","commander":"^12.0.0","axios-retry":"^4.5.0","@modelcontextprotocol/sdk":"^1.25.2","@michelabboud/visual-forge-fonts-code":"^1.0.1","@michelabboud/visual-forge-fonts-full":"^1.0.1","@michelabboud/visual-forge-fonts-standard":"^1.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","jest":"^29.7.0","eslint":"^9.0.0","ts-jest":"^29.2.0","prettier":"^3.3.0","typescript":"^5.7.0","@types/cors":"^2.8.17","@types/jest":"^29.5.0","@types/node":"^22.0.0","@types/uuid":"^10.0.0","@types/express":"^4.17.21","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/visual-forge-mcp_0.12.1_1768644949585_0.853288275458923","host":"s3://npm-registry-packages-npm-production"}},"0.12.2":{"name":"@michelabboud/visual-forge-mcp","version":"0.12.2","description":"MCP server for AI image generation from markdown and HTML with multi-provider support, model testing, and automatic web optimization","type":"module","main":"dist/index.js","types":"dist/index.d.ts","bin":{"visual-forge-mcp":"dist/index.js"},"repository":{"type":"git","url":"git+https://github.com/michelabboud/visual-forge-mcp.git"},"bugs":{"url":"https://github.com/michelabboud/visual-forge-mcp/issues"},"homepage":"https://github.com/michelabboud/visual-forge-mcp#readme","scripts":{"build":"tsc","dev":"tsx src/index.ts","dev:http":"tsx src/http-server.ts","start:http":"node dist/http-server.js","test":"jest","test:watch":"jest --watch","lint":"eslint src --ext .ts","clean":"rm -rf dist","prepublishOnly":"npm run clean && npm run build && npm test","pricing:show":"node scripts/update-pricing.js show","pricing:update":"node scripts/update-pricing.js update","pricing:check":"node scripts/update-pricing.js check","pricing:set":"node scripts/update-pricing.js set"},"keywords":["mcp","mcp-server","ai","image-generation","image-optimization","webp","sharp","dall-e","stable-diffusion","flux","leonardo","replicate","gemini","technical-documentation","markdown","documentation-tools"],"author":{"name":"Michel Abboud"},"license":"SEE LICENSE IN LICENSE","dependencies":{"@michelabboud/visual-forge-fonts-code":"^1.0.1","@michelabboud/visual-forge-fonts-full":"^1.0.1","@michelabboud/visual-forge-fonts-standard":"^1.0.1","@modelcontextprotocol/sdk":"^1.25.2","axios":"^1.7.0","axios-retry":"^4.5.0","chalk":"^5.4.0","cheerio":"^1.1.2","commander":"^12.0.0","cors":"^2.8.5","dotenv":"^16.4.0","express":"^4.21.0","ora":"^8.1.0","sharp":"^0.33.0","uuid":"^10.0.0","wawoff2":"^2.0.1","zod":"^3.25.0"},"devDependencies":{"@types/cors":"^2.8.17","@types/express":"^4.17.21","@types/jest":"^29.5.0","@types/node":"^22.0.0","@types/uuid":"^10.0.0","@typescript-eslint/eslint-plugin":"^8.0.0","@typescript-eslint/parser":"^8.0.0","eslint":"^9.0.0","jest":"^29.7.0","prettier":"^3.3.0","ts-jest":"^29.2.0","tsx":"^4.19.0","typescript":"^5.7.0"},"publishConfig":{"access":"public"},"engines":{"node":">=24.0.0"},"gitHead":"eeb47556bca5ae44706ce09b8d47d32e0012ecb8","_id":"@michelabboud/visual-forge-mcp@0.12.2","_nodeVersion":"24.12.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-FlZvJkNEMC/MFOiLrY8nAXDS5uIT3AnHmJuMvrfHk8y1iS/WwPX4xKQ0N4D3f7N20Su+W33YvM6zZkHDtCpqog==","shasum":"fe8603bf15feab36c065b732e5e56c69f141b23c","tarball":"https://registry.npmjs.org/@michelabboud/visual-forge-mcp/-/visual-forge-mcp-0.12.2.tgz","fileCount":322,"unpackedSize":6549603,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCEPk54HnyVb4+bIrnFNOG5oqif19AoMB3SXegvPmC/VgIhAPuZ6LVe66CylOoKpPAyXuY8fnDNKiqsq5vMJaVcbzVx"}]},"_npmUser":{"name":"michelabboud","email":"michelabboudnpm@gmail.com"},"directories":{},"maintainers":[{"name":"michelabboud","email":"michelabboudnpm@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/visual-forge-mcp_0.12.2_1768645240097_0.4356416184732148"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-13T10:10:43.796Z","modified":"2026-01-17T10:20:40.542Z","0.3.0":"2026-01-13T10:10:44.148Z","0.4.1":"2026-01-13T11:44:54.720Z","0.4.2":"2026-01-13T11:59:12.648Z","0.4.3":"2026-01-13T12:04:16.215Z","0.5.0":"2026-01-13T13:56:22.466Z","0.5.1":"2026-01-13T20:03:25.091Z","0.5.2":"2026-01-14T00:10:20.653Z","0.5.3":"2026-01-14T01:35:16.830Z","0.5.4":"2026-01-14T02:01:42.683Z","0.5.5":"2026-01-14T02:06:44.790Z","0.5.6":"2026-01-14T02:14:56.493Z","0.6.0":"2026-01-14T03:22:59.229Z","0.6.1":"2026-01-15T17:12:53.725Z","0.7.0":"2026-01-16T06:14:10.885Z","0.9.0":"2026-01-16T07:34:20.370Z","0.10.0":"2026-01-16T08:57:23.343Z","0.11.0":"2026-01-17T02:04:10.046Z","0.11.1":"2026-01-17T05:07:14.027Z","0.11.2":"2026-01-17T05:42:49.565Z","0.11.3":"2026-01-17T05:51:07.947Z","0.11.4":"2026-01-17T06:29:28.751Z","0.12.0":"2026-01-17T09:34:44.870Z","0.12.1":"2026-01-17T10:15:49.849Z","0.12.2":"2026-01-17T10:20:40.422Z"},"bugs":{"url":"https://github.com/michelabboud/visual-forge-mcp/issues"},"author":{"name":"Michel Abboud"},"license":"SEE LICENSE IN LICENSE","homepage":"https://github.com/michelabboud/visual-forge-mcp#readme","keywords":["mcp","mcp-server","ai","image-generation","image-optimization","webp","sharp","dall-e","stable-diffusion","flux","leonardo","replicate","gemini","technical-documentation","markdown","documentation-tools"],"repository":{"type":"git","url":"git+https://github.com/michelabboud/visual-forge-mcp.git"},"description":"MCP server for AI image generation from markdown and HTML with multi-provider support, model testing, and automatic web optimization","maintainers":[{"name":"michelabboud","email":"michelabboudnpm@gmail.com"}],"readme":"# Visual Forge MCP 🎨\n\n> **AI-powered image generation for technical documentation** with multi-provider support\n\n![Visual Forge MCP Hero Banner](generated-images/gemini/README-img-01.png)\n\nAn MCP (Model Context Protocol) server that automates AI image generation for technical documentation. Parse markdown files containing image prompts and generate professional images using multiple AI providers.\n\n[![npm version](https://img.shields.io/npm/v/@michelabboud/visual-forge-mcp.svg)](https://www.npmjs.com/package/@michelabboud/visual-forge-mcp)\n[![Version](https://img.shields.io/badge/version-0.11.0-blue.svg)](https://github.com/michelabboud/visual-forge-mcp)\n[![License](https://img.shields.io/badge/License-Personal%20Use%20Only-red.svg)](LICENSE)\n[![Node.js](https://img.shields.io/badge/node-%3E%3D24.0.0-brightgreen.svg)](https://nodejs.org/)\n\n---\n\n## 🌟 Features\n\n- **📝 Multi-Format Support**: Extract image specifications from Markdown (.md) and HTML (.html) files\n- **🔌 Multi-Provider Support**: 8 AI providers with automatic fallback\n  - OpenAI GPT Image\n  - Google Gemini 2.5 Flash Image (Nano Banana)\n  - Stability AI SDXL\n  - Replicate FLUX Schnell\n  - Leonardo Phoenix\n  - HuggingFace Inference\n  - xAI Grok 2 Image\n  - Z.ai GLM-Image ✨ NEW - Excellent for text-heavy diagrams\n- **🎯 Multi-Model Architecture** ✨ NEW v0.8.0: Each provider can offer multiple models with different capabilities and pricing (e.g., OpenAI GPT Image 1 vs GPT Image 1 HD)\n- **🧪 Model Testing & Comparison** ✨ NEW v0.9.0: Test and compare AI models before production use\n  - Standard automated tests with quality scoring (sharpness, brightness, text rendering, color accuracy)\n  - Custom prompt testing with real use cases\n  - Side-by-side multi-provider comparison with intelligent recommendations\n  - Permission flow for cost-aware testing\n  - Persistent test results for historical tracking\n- **🎨 Detailed Global Context**: Comprehensive styling system with hex colors, typography, layout rules, and audience targeting for dramatically better, more consistent images\n- **🖼️ Multi-Format Optimization** ✨ NEW v0.7.0: Automatic generation of WebP (94% smaller), JPEG (85% smaller), and optional lossy PNG (70% smaller) with professional watermarking\n- **🔍 Quality Validation & Auto-Regeneration** ✨ NEW v0.7.0: OCR-based text detection, sharpness/brightness analysis, and automatic retry on quality failure\n- **📁 Index-Based Directories** ✨ NEW v0.7.0: Collision-free sequential directory naming with complete metadata and generation logs per image\n- **✏️ Enhanced Prompting** ✨ NEW v0.7.0: Type-specific prompt optimization to minimize AI text rendering errors\n- **💰 Cost-Effective**: Options from $0.00 to $0.12/image\n- **⚡ Flexible Workflows**: Interactive, Batch, and Bulk generation modes\n- **🔄 State Persistence**: Resume interrupted sessions without losing progress\n- **📊 Cost Tracking**: Real-time cost monitoring and estimates per provider\n- **🎯 Smart Rate Limiting**: Token bucket algorithm prevents API bans\n- **🔒 Automatic Backups**: File backup system with approve/restore workflow (optional, enabled by default)\n- **📄 PDF Generation** ✨ NEW v0.11.0: Generate PDFs from markdown using Typst engine with XeLaTeX fallback, custom templates, and automatic WebP to PNG conversion\n- **🌐 Universal MCP Support**: Compatible with 24+ MCP clients (tested with Claude Code, Claude Desktop, Zed)\n\n---\n\n## 📦 Installation\n\n### Prerequisites\n\n- **Node.js 24+** (recommended for optimal performance)\n- At least **one AI provider API key** (see [Provider Setup](#-provider-setup))\n\n### Option 1: Install from NPM\n\n```bash\nnpm install -g @michelabboud/visual-forge-mcp\n```\n\n### Option 2: Install from Source (Current)\n\n```bash\n# Clone the repository\ngit clone https://github.com/michelabboud/visual-forge-mcp.git\ncd visual-forge-mcp\n\n# Install dependencies\nnpm install\n\n# Build the project\nnpm run build\n\n# (Optional) Link globally for CLI usage\nnpm link\n```\n\n---\n\n## ⚙️ Configuration\n\n### 1. Provider Setup\n\nCreate a `.env` file in the project root with at least one provider API key:\n\n```bash\n# === AI PROVIDER API KEYS ===\n# Choose at least one provider below\n\n# Google Gemini 2.5 Flash Image ($0.039/image)\nGOOGLE_API_KEY=AIza...\n\n# Replicate FLUX Schnell ($0.003/image) - Most cost-effective\nREPLICATE_API_TOKEN=r8_...\n\n# Stability AI SDXL ($0.04/image)\nSTABILITY_API_KEY=sk-...\n\n# OpenAI GPT Image ($0.04-0.12/image)\nOPENAI_API_KEY=sk-...\n\n# xAI Grok 2 Image ($0.07/image)\nXAI_API_KEY=xai-...\n\n# Z.ai GLM-Image ($0.015/image) - NEW: Excellent for text-heavy diagrams\nZAI_API_KEY=zai-...\n\n# Leonardo Phoenix ($0.02/image)\nLEONARDO_API_KEY=...\n\n# HuggingFace Inference (no-cost models available)\nHUGGINGFACE_API_KEY=hf_...\n\n# === OPTIONAL CONFIGURATION ===\nIMAGE_GEN_OUTPUT_DIR=./generated-images\nIMAGE_GEN_STATE_DIR=~/.visual-forge-mcp\nIMAGE_GEN_LOG_LEVEL=info\nIMAGE_GEN_DEFAULT_PROVIDER=gemini\n```\n\n**Get API Keys:**\n- **Google Gemini**: [https://ai.google.dev](https://ai.google.dev)\n- **Replicate**: [https://replicate.com](https://replicate.com)\n- **Stability AI**: [https://platform.stability.ai](https://platform.stability.ai)\n- **OpenAI**: [https://platform.openai.com](https://platform.openai.com)\n- **xAI**: [https://console.x.ai](https://console.x.ai)\n- **Z.ai**: [https://z.ai](https://z.ai) ✨ NEW - Best for text-heavy diagrams\n- **Leonardo**: [https://leonardo.ai](https://leonardo.ai)\n- **HuggingFace**: [https://huggingface.co](https://huggingface.co)\n\n### 2. MCP Server Configuration\n\nAdd Visual Forge MCP to your MCP client configuration.\n\n**Two configuration options**:\n- **Option A (npm package)**: Use `npx` to run the published npm package - no local install needed\n- **Option B (local source)**: Use absolute path to your cloned repository\n\n#### 🧪 Tested Clients\n\nThese configurations have been tested and verified:\n\n##### Claude Code\n\nEdit `~/.claude/settings.json`:\n\n**Option A: Using npm package (recommended)**\n```json\n{\n  \"mcpServers\": {\n    \"visual-forge\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@michelabboud/visual-forge-mcp\"],\n      \"env\": {\n        \"GOOGLE_API_KEY\": \"${GOOGLE_API_KEY}\",\n        \"REPLICATE_API_TOKEN\": \"${REPLICATE_API_TOKEN}\",\n        \"STABILITY_API_KEY\": \"${STABILITY_API_KEY}\",\n        \"OPENAI_API_KEY\": \"${OPENAI_API_KEY}\",\n        \"XAI_API_KEY\": \"${XAI_API_KEY}\"\n      }\n    }\n  }\n}\n```\n\n**Option B: Using local source**\n```json\n{\n  \"mcpServers\": {\n    \"visual-forge\": {\n      \"command\": \"node\",\n      \"args\": [\"/path/to/visual-forge-mcp/dist/index.js\"],\n      \"env\": {\n        \"GOOGLE_API_KEY\": \"${GOOGLE_API_KEY}\",\n        \"REPLICATE_API_TOKEN\": \"${REPLICATE_API_TOKEN}\",\n        \"STABILITY_API_KEY\": \"${STABILITY_API_KEY}\",\n        \"OPENAI_API_KEY\": \"${OPENAI_API_KEY}\",\n        \"XAI_API_KEY\": \"${XAI_API_KEY}\"\n      }\n    }\n  }\n}\n```\n\n##### Claude Desktop\n\nEdit `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or `%APPDATA%\\Claude\\claude_desktop_config.json` (Windows):\n\n**Option A: Using npm package (recommended)**\n```json\n{\n  \"mcpServers\": {\n    \"visual-forge\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@michelabboud/visual-forge-mcp\"],\n      \"env\": {\n        \"GOOGLE_API_KEY\": \"your-key-here\",\n        \"REPLICATE_API_TOKEN\": \"your-token-here\"\n      }\n    }\n  }\n}\n```\n\n**Option B: Using local source**\n```json\n{\n  \"mcpServers\": {\n    \"visual-forge\": {\n      \"command\": \"node\",\n      \"args\": [\"/path/to/visual-forge-mcp/dist/index.js\"],\n      \"env\": {\n        \"GOOGLE_API_KEY\": \"your-key-here\",\n        \"REPLICATE_API_TOKEN\": \"your-token-here\"\n      }\n    }\n  }\n}\n```\n\n##### Zed\n\nEdit `~/.config/zed/settings.json`:\n\n**Option A: Using npm package (recommended)**\n```json\n{\n  \"context_servers\": {\n    \"visual-forge\": {\n      \"command\": {\n        \"path\": \"npx\",\n        \"args\": [\"-y\", \"@michelabboud/visual-forge-mcp\"]\n      }\n    }\n  }\n}\n```\n\n**Option B: Using local source**\n```json\n{\n  \"context_servers\": {\n    \"visual-forge\": {\n      \"command\": {\n        \"path\": \"node\",\n        \"args\": [\"/path/to/visual-forge-mcp/dist/index.js\"]\n      }\n    }\n  }\n}\n```\n\n---\n\n#### 🚀 MCP-Compatible Clients\n\nThese clients support MCP protocol and should work with Visual Forge. Configuration formats may vary slightly:\n\n##### Cursor\n\nSettings → Features → MCP:\n\n**Option A: Using npm package (recommended)**\n```json\n{\n  \"visual-forge\": {\n    \"command\": \"npx\",\n    \"args\": [\"-y\", \"@michelabboud/visual-forge-mcp\"]\n  }\n}\n```\n\n**Option B: Using local source**\n```json\n{\n  \"visual-forge\": {\n    \"command\": \"node\",\n    \"args\": [\"/path/to/visual-forge-mcp/dist/index.js\"]\n  }\n}\n```\n\n##### Windsurf\n\nEdit `~/.windsurf/settings.json`:\n\n**Option A: Using npm package (recommended)**\n```json\n{\n  \"mcpServers\": {\n    \"visual-forge\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@michelabboud/visual-forge-mcp\"]\n    }\n  }\n}\n```\n\n**Option B: Using local source**\n```json\n{\n  \"mcpServers\": {\n    \"visual-forge\": {\n      \"command\": \"node\",\n      \"args\": [\"/path/to/visual-forge-mcp/dist/index.js\"]\n    }\n  }\n}\n```\n\n##### Cline (VS Code Extension)\n\nEdit `~/.continue/config.json` or use Cline's settings UI:\n\n**Option A: Using npm package (recommended)**\n```json\n{\n  \"experimental\": {\n    \"mcpServers\": {\n      \"visual-forge\": {\n        \"command\": \"npx\",\n        \"args\": [\"-y\", \"@michelabboud/visual-forge-mcp\"]\n      }\n    }\n  }\n}\n```\n\n**Option B: Using local source**\n```json\n{\n  \"experimental\": {\n    \"mcpServers\": {\n      \"visual-forge\": {\n        \"command\": \"node\",\n        \"args\": [\"/path/to/visual-forge-mcp/dist/index.js\"]\n      }\n    }\n  }\n}\n```\n\n##### Continue (VS Code Extension)\n\nEdit `~/.continue/config.json`:\n\n**Option A: Using npm package (recommended)**\n```json\n{\n  \"experimental\": {\n    \"mcpServers\": {\n      \"visual-forge\": {\n        \"command\": \"npx\",\n        \"args\": [\"-y\", \"@michelabboud/visual-forge-mcp\"]\n      }\n    }\n  }\n}\n```\n\n**Option B: Using local source**\n```json\n{\n  \"experimental\": {\n    \"mcpServers\": {\n      \"visual-forge\": {\n        \"command\": \"node\",\n        \"args\": [\"/path/to/visual-forge-mcp/dist/index.js\"]\n      }\n    }\n  }\n}\n```\n\n##### Roo Code (VS Code Extension)\n\nSame as Continue (Roo Code is a fork):\n\n**Option A: Using npm package (recommended)**\n```json\n{\n  \"experimental\": {\n    \"mcpServers\": {\n      \"visual-forge\": {\n        \"command\": \"npx\",\n        \"args\": [\"-y\", \"@michelabboud/visual-forge-mcp\"]\n      }\n    }\n  }\n}\n```\n\n**Option B: Using local source**\n```json\n{\n  \"experimental\": {\n    \"mcpServers\": {\n      \"visual-forge\": {\n        \"command\": \"node\",\n        \"args\": [\"/path/to/visual-forge-mcp/dist/index.js\"]\n      }\n    }\n  }\n}\n```\n\n##### Copilot (GitHub Copilot with MCP support)\n\nConfiguration via VS Code settings or copilot config file. Consult GitHub Copilot documentation for MCP integration.\n\n##### Qodo Gen (IDE Extension)\n\nFollow Qodo Gen's MCP integration docs. Typically similar to VS Code extension format.\n\n##### JetBrains IDEs (IntelliJ, PyCharm, WebStorm, etc.)\n\nInstall MCP plugin, then add to IDE settings or `.idea/mcp-servers.json`:\n\n**Option A: Using npm package (recommended)**\n```json\n{\n  \"mcpServers\": {\n    \"visual-forge\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@michelabboud/visual-forge-mcp\"]\n    }\n  }\n}\n```\n\n**Option B: Using local source**\n```json\n{\n  \"mcpServers\": {\n    \"visual-forge\": {\n      \"command\": \"node\",\n      \"args\": [\"/path/to/visual-forge-mcp/dist/index.js\"]\n    }\n  }\n}\n```\n\n---\n\n#### 🖥️ Terminal & CLI Clients\n\n##### Aider\n\n**Option A: Using npm package (recommended)**\n```bash\naider --mcp-server \"npx -y @michelabboud/visual-forge-mcp\"\n```\n\nOr add to `~/.aider.conf.yml`:\n```yaml\nmcp-servers:\n  - name: visual-forge\n    command: npx\n    args:\n      - -y\n      - @michelabboud/visual-forge-mcp\n```\n\n**Option B: Using local source**\n```bash\naider --mcp-server \"node /path/to/visual-forge-mcp/dist/index.js\"\n```\n\nOr add to `~/.aider.conf.yml`:\n```yaml\nmcp-servers:\n  - name: visual-forge\n    command: node\n    args:\n      - /path/to/visual-forge-mcp/dist/index.js\n```\n\n##### Goose\n\nCreate `~/.config/goose/config.yaml`:\n\n**Option A: Using npm package (recommended)**\n```yaml\nmcp_servers:\n  visual-forge:\n    command: npx\n    args:\n      - -y\n      - @michelabboud/visual-forge-mcp\n```\n\n**Option B: Using local source**\n```yaml\nmcp_servers:\n  visual-forge:\n    command: node\n    args:\n      - /path/to/visual-forge-mcp/dist/index.js\n```\n\n##### Warp Terminal\n\nSettings → MCP Servers → Add Server:\n\n**Option A: Using npm package (recommended)**\n```json\n{\n  \"name\": \"visual-forge\",\n  \"command\": \"npx\",\n  \"args\": [\"-y\", \"@michelabboud/visual-forge-mcp\"]\n}\n```\n\n**Option B: Using local source**\n```json\n{\n  \"name\": \"visual-forge\",\n  \"command\": \"node\",\n  \"args\": [\"/path/to/visual-forge-mcp/dist/index.js\"]\n}\n```\n\n##### Gemini CLI (Google)\n\nConfiguration via CLI flags or config file. Consult Google's Gemini CLI documentation.\n\n##### opencode\n\nAdd to opencode config (typically `~/.opencode/config.json`):\n\n**Option A: Using npm package (recommended)**\n```json\n{\n  \"mcpServers\": {\n    \"visual-forge\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@michelabboud/visual-forge-mcp\"]\n    }\n  }\n}\n```\n\n**Option B: Using local source**\n```json\n{\n  \"mcpServers\": {\n    \"visual-forge\": {\n      \"command\": \"node\",\n      \"args\": [\"/path/to/visual-forge-mcp/dist/index.js\"]\n    }\n  }\n}\n```\n\n##### Codex (OpenAI)\n\nFollow OpenAI Codex documentation for MCP server integration.\n\n---\n\n#### 🎨 Specialized Platforms\n\n##### Amp (Sourcegraph)\n\nAdd to workspace settings or Amp configuration file.\n\n##### LM Studio\n\nTools → MCP Servers → Add Server:\n\n**Option A: Using npm package (recommended)**\n```json\n{\n  \"visual-forge\": {\n    \"command\": \"npx\",\n    \"args\": [\"-y\", \"@michelabboud/visual-forge-mcp\"]\n  }\n}\n```\n\n**Option B: Using local source**\n```json\n{\n  \"visual-forge\": {\n    \"command\": \"node\",\n    \"args\": [\"/path/to/visual-forge-mcp/dist/index.js\"]\n  }\n}\n```\n\n##### OpenHands (All Hands AI)\n\nEdit OpenHands config file:\n\n**Option A: Using npm package (recommended)**\n```yaml\nmcp_servers:\n  - name: visual-forge\n    command: npx\n    args:\n      - -y\n      - @michelabboud/visual-forge-mcp\n```\n\n**Option B: Using local source**\n```yaml\nmcp_servers:\n  - name: visual-forge\n    command: node\n    args:\n      - /path/to/visual-forge-mcp/dist/index.js\n```\n\n##### Factory\n\nAdd via Factory's MCP integration settings.\n\n##### Kiro (AWS)\n\nAdd via Kiro IDE settings → MCP Servers.\n\n---\n\n#### 📝 Text Editors\n\n##### Neovim\n\nInstall MCP plugin (e.g., `mcp.nvim`), then add to `init.lua`:\n\n**Option A: Using npm package (recommended)**\n```lua\nrequire('mcp').setup({\n  servers = {\n    ['visual-forge'] = {\n      command = 'npx',\n      args = { '-y', '@michelabboud/visual-forge-mcp' }\n    }\n  }\n})\n```\n\n**Option B: Using local source**\n```lua\nrequire('mcp').setup({\n  servers = {\n    ['visual-forge'] = {\n      command = 'node',\n      args = { '/path/to/visual-forge-mcp/dist/index.js' }\n    }\n  }\n})\n```\n\n---\n\n**📖 General MCP Setup Pattern:**\n\nMost MCP clients follow this pattern. Choose either npm package or local source:\n\n**Option A: Using npm package (recommended)**\n```json\n{\n  \"mcpServers\": {\n    \"visual-forge\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@michelabboud/visual-forge-mcp\"],\n      \"env\": {\n        \"GOOGLE_API_KEY\": \"your-key-here\"\n      }\n    }\n  }\n}\n```\n\n**Option B: Using local source**\n```json\n{\n  \"mcpServers\": {\n    \"visual-forge\": {\n      \"command\": \"node\",\n      \"args\": [\"/absolute/path/to/visual-forge-mcp/dist/index.js\"],\n      \"env\": {\n        \"GOOGLE_API_KEY\": \"your-key-here\"\n      }\n    }\n  }\n}\n```\n\nIf your client isn't listed, consult its MCP integration documentation\n\n---\n\n## 📖 Detailed Setup Guides\n\nFor popular AI coding assistants, we provide comprehensive setup guides:\n\n### 🎯 Cursor\n**[Complete Cursor Setup Guide →](docs/CURSOR_SETUP.md)**\n\nFeatures covered:\n- Step-by-step configuration\n- MCP settings (UI and manual)\n- Usage examples with Cursor's context system\n- Composer mode integration\n- Troubleshooting common issues\n\n### 🔄 Continue (VS Code)\n**[Complete Continue Setup Guide →](docs/CONTINUE_SETUP.md)**\n\nFeatures covered:\n- VS Code extension setup\n- config.json configuration\n- Slash commands with Visual Forge\n- Multi-file operations\n- Custom prompts and workflows\n\n**Other clients**: Follow the general MCP configuration pattern shown in the [Configuration](#-configuration) section above.\n\n---\n\n## 🔗 n8n Workflow Automation Integration\n\nVisual Forge MCP can be integrated with n8n for automated image generation workflows.\n\n### Quick Start with n8n\n\n1. **Start HTTP API Server**:\n```bash\ncd visual-forge-mcp\nnpm run dev:http  # Runs on http://localhost:3000\n```\n\n2. **Choose Integration Method**:\n   - **HTTP API**: Use n8n HTTP Request nodes (works immediately)\n   - **Custom Node**: Install `n8n-nodes-visual-forge` community node (drag-and-drop)\n   - **Example Workflows**: Import pre-built workflow JSON files\n\n### Integration Options\n\n#### Option 1: HTTP API (Immediate)\n\nUse n8n's HTTP Request nodes to call Visual Forge endpoints:\n\n```\nWebhook → HTTP: Start Session → HTTP: Process Files → HTTP: Generate Images → HTTP: Finalize Session\n```\n\n**API Endpoints**:\n- `POST /api/vf/start-session` - Create workflow session\n- `POST /api/vf/process-files` - Add placeholders and parse\n- `POST /api/vf/generate-session` - Generate all images\n- `POST /api/vf/finalize-session` - Commit and create PR\n- `GET /api/vf/sessions` - List all sessions\n\n#### Option 2: Custom n8n Node (Drag-and-Drop)\n\nInstall the Visual Forge community node:\n\n1. In n8n: **Settings** > **Community Nodes** > **Install**\n2. Enter: `n8n-nodes-visual-forge`\n3. Restart n8n\n\nThen drag **Visual Forge** nodes into your workflows with built-in UI for all operations.\n\n#### Option 3: Example Workflows (Templates)\n\nImport pre-built workflows from `n8n/n8n-workflows/`:\n\n- `01-simple-image-generation.json` - Basic webhook-triggered generation\n- `02-batch-processing-with-cdn.json` - Scheduled batch with S3/CDN upload\n- `03-webhook-triggered-generation.json` - Advanced conditional generation\n\n### Documentation\n\n- **Full Integration Guide**: [docs/N8N_INTEGRATION.md](docs/N8N_INTEGRATION.md)\n- **Quick Start**: [docs/N8N_QUICK_START.md](docs/N8N_QUICK_START.md)\n- **API Reference**: [docs/openapi.yaml](docs/openapi.yaml)\n\n### Use Cases\n\n- **Automated Documentation**: Nightly regeneration of all doc images\n- **CI/CD Integration**: Generate images on markdown file changes\n- **Webhook Triggers**: External systems trigger image generation\n- **CDN Deployment**: Generate and upload to S3/CloudFront\n- **Slack Notifications**: Alert team when images are generated\n\n---\n\n## ✅ Compatibility & Testing Status\n\n### Tested & Verified\n- ✅ **Claude Code** - Full functionality tested\n- ✅ **Claude Desktop** - Full functionality tested\n- ✅ **Zed** - Full functionality tested\n\n### Should Work (MCP Standard Compliant)\nAll clients implementing the MCP protocol should work with Visual Forge. The server uses the official `@modelcontextprotocol/sdk` and follows the MCP specification.\n\n**Reported Working**: Cursor, Windsurf, Continue, Cline, Aider, Goose\n\n**Not Yet Tested**: Amp, Copilot, Factory, Gemini CLI, Kiro, LM Studio, opencode, OpenHands, Qodo Gen, Warp, JetBrains IDEs, Neovim, Roo Code, Codex\n\nIf you test Visual Forge with any client, please report your results via [GitHub Issues](https://github.com/michelabboud/visual-forge-mcp/issues)!\n\n---\n\n## 🚀 Quick Start\n\n![Workflow Diagram - Generation Modes](generated-images/gemini/README-img-02.png)\n\n### Option 1: Configure via MCP Tools (Recommended)\n\nOnce the MCP server is added to your client, you can configure providers directly through MCP tools:\n\n```\nUser: \"Configure Gemini provider with my API key\"\nClaude: [Uses configure_provider tool]\n\nUser: \"Check which providers are configured\"\nClaude: [Uses get_provider_status tool]\n\nUser: \"Test if my Gemini connection works\"\nClaude: [Uses test_provider_connection tool]\n```\n\n**Available Configuration Tools:**\n- `configure_provider` - Set API key for a provider\n- `get_provider_status` - Check which providers have API keys set\n- `test_provider_connection` - Verify API key works\n- `remove_provider` - Remove a provider's API key\n\n### Option 2: Manual .env Configuration\n\nCreate a `.env` file in the project root:\n\n```bash\nGOOGLE_API_KEY=AIza...\nREPLICATE_API_TOKEN=r8_...\n```\n\n### Standalone CLI Usage\n\n```bash\n# Check available providers\nnpx tsx scripts/check-providers.ts\n\n# Generate with all providers (comparison)\nnpx tsx scripts/generate-all-providers.ts\n\n# Generate with specific provider\nnpx tsx scripts/generate-with-xai.ts\n\n# Generate with custom theme and versioning\nnpx tsx scripts/generate-solo-theme-test.ts\n```\n\n### MCP Tool Usage (via MCP Client)\n\nOnce configured, interact with Visual Forge through your MCP client:\n\n```\nUser: \"Generate a professional image of a DevOps engineer working on cloud infrastructure\"\n\nClaude: [Uses visual-forge MCP tools to generate the image]\n```\n\n---\n\n## 🛠️ MCP Tools Reference\n\n![MCP Tools Architecture](generated-images/gemini/README-img-03.png)\n\nVisual Forge provides the following MCP tools for use through your MCP client:\n\n### Configuration Tools\n\n#### `configure_provider`\nSet API key for an image generation provider.\n\n```json\n{\n  \"provider\": \"gemini\",\n  \"apiKey\": \"AIza...\"\n}\n```\n\n**Example**: \"Configure my Replicate API key: r8_abc123...\"\n\n#### `get_provider_status`\nCheck which providers have API keys configured.\n\n```json\n{}\n```\n\n**Example**: \"Show me which providers are configured\"\n\n**Returns**:\n```json\n{\n  \"success\": true,\n  \"providers\": [\n    {\n      \"provider\": \"gemini\",\n      \"displayName\": \"Google Gemini\",\n      \"configured\": true,\n      \"keyPreview\": \"AIza****abc123\"\n    },\n    {\n      \"provider\": \"openai\",\n      \"displayName\": \"OpenAI\",\n      \"configured\": false\n    }\n  ]\n}\n```\n\n#### `test_provider_connection`\nTest if a provider API key is valid by checking availability.\n\n```json\n{\n  \"provider\": \"gemini\"\n}\n```\n\n**Example**: \"Test my Gemini connection\"\n\n#### `remove_provider`\nRemove API key for a provider.\n\n```json\n{\n  \"provider\": \"gemini\"\n}\n```\n\n**Example**: \"Remove my OpenAI API key\"\n\n### Model Selection & Testing Tools ✨ NEW v0.9.0\n\n#### `set_default_model`\nSet the default model for a provider. This model will be used for all future generations unless overridden.\n\n```json\n{\n  \"provider\": \"zai\",\n  \"modelId\": \"glm-image\"\n}\n```\n\n**Example**: \"Set Z.ai to use the GLM-Image model\"\n\n**Returns**:\n```json\n{\n  \"success\": true,\n  \"provider\": \"zai\",\n  \"modelId\": \"glm-image\",\n  \"modelName\": \"GLM-Image\",\n  \"message\": \"Default model set to 'GLM-Image' for Z.ai GLM-Image...\"\n}\n```\n\n#### `get_model_info`\nGet detailed information about a specific model, including test results if available.\n\n```json\n{\n  \"provider\": \"gemini\",\n  \"modelId\": \"gemini-2.5-flash-image\"\n}\n```\n\n**Example**: \"What are the details for Gemini Flash Image?\"\n\n**Returns**:\n```json\n{\n  \"success\": true,\n  \"provider\": \"gemini\",\n  \"providerName\": \"Google Gemini 2.5 Flash Image\",\n  \"model\": {\n    \"id\": \"gemini-2.5-flash-image\",\n    \"name\": \"Gemini 2.5 Flash Image\",\n    \"costPerImage\": 0.0,\n    \"description\": \"Fast, free-tier image generation\",\n    \"capabilities\": {\n      \"maxResolution\": \"2048x2048\",\n      \"supportedAspectRatios\": [\"1:1\", \"16:9\", \"4:3\", \"9:16\"]\n    }\n  },\n  \"testResult\": {\n    \"testedAt\": \"2026-01-16T10:30:00.000Z\",\n    \"qualityScore\": 85.5,\n    \"passed\": true\n  },\n  \"message\": \"Model tested on 1/16/2026 with quality score 85.5/100\"\n}\n```\n\n#### `test_model`\nTest a model with either standard test (automated) or custom prompt (user-provided). Records quality score for future reference.\n\n**Standard Test (Automated Validation)**:\n```json\n{\n  \"provider\": \"zai\",\n  \"modelId\": \"glm-image\",\n  \"useStandardTest\": true,\n  \"aspectRatio\": \"16:9\"\n}\n```\n\n**Custom Prompt Test (Real Use Case)**:\n```json\n{\n  \"provider\": \"gemini\",\n  \"modelId\": \"gemini-2.5-flash-image\",\n  \"prompt\": \"AWS VPC architecture diagram showing public/private subnets, NAT gateway, and EC2 instances\",\n  \"aspectRatio\": \"16:9\"\n}\n```\n\n**Example**: \"Test the Z.ai GLM-Image model with a standard quality test\"\n\n**Returns**:\n```json\n{\n  \"success\": true,\n  \"provider\": \"zai\",\n  \"providerName\": \"Z.ai GLM-Image\",\n  \"model\": \"GLM-Image\",\n  \"testImage\": {\n    \"filepath\": \"generated-images/tests/zai-glm-image-test.png\",\n    \"generationTime\": 12000,\n    \"actualCost\": 0.015\n  },\n  \"qualityScore\": {\n    \"overall\": 87.5,\n    \"sharpness\": 89.2,\n    \"brightness\": 145,\n    \"textRendering\": 85.0,\n    \"colorAccuracy\": 90.0,\n    \"passed\": true\n  },\n  \"message\": \"Model test passed! Quality score: 87.5/100. Model is ready for production use.\"\n}\n```\n\n**Quality Metrics**:\n- **Sharpness (30%)**: Laplacian variance analysis for edge detection\n- **Brightness (20%)**: Average brightness in optimal range (30-240)\n- **Text Rendering (40%)**: Estimated OCR accuracy and text clarity\n- **Color Accuracy (10%)**: Heuristic-based color validation\n- **Overall Score**: Weighted average, pass threshold 60/100\n\n#### `compare_models`\nCompare multiple providers/models side-by-side with the same prompt. Generates quality scores and recommendation.\n\n```json\n{\n  \"prompt\": \"Technical diagram showing microservices architecture with API gateway, service mesh, and databases\",\n  \"providers\": [\n    { \"provider\": \"gemini\", \"model\": \"gemini-2.5-flash-image\" },\n    { \"provider\": \"zai\", \"model\": \"glm-image\" },\n    { \"provider\": \"huggingface\", \"model\": \"black-forest-labs/FLUX.1-dev\" }\n  ],\n  \"aspectRatio\": \"16:9\"\n}\n```\n\n**Example**: \"Compare Gemini, Z.ai, and HuggingFace FLUX models for generating a microservices architecture diagram\"\n\n**Returns**:\n```json\n{\n  \"success\": true,\n  \"prompt\": \"Technical diagram showing microservices architecture...\",\n  \"totalCost\": 0.015,\n  \"totalTime\": 35000,\n  \"results\": [\n    {\n      \"provider\": \"zai\",\n      \"model\": \"GLM-Image\",\n      \"qualityScore\": { \"overall\": 92.1, \"textRendering\": 95.8 },\n      \"cost\": 0.015,\n      \"rank\": 1\n    },\n    {\n      \"provider\": \"gemini\",\n      \"model\": \"Gemini Flash Image\",\n      \"qualityScore\": { \"overall\": 85.5 },\n      \"cost\": 0.0,\n      \"rank\": 2\n    },\n    {\n      \"provider\": \"huggingface\",\n      \"model\": \"FLUX.1-dev\",\n      \"qualityScore\": { \"overall\": 78.3 },\n      \"cost\": 0.0,\n      \"rank\": 3\n    }\n  ],\n  \"recommendation\": {\n    \"provider\": \"zai\",\n    \"model\": \"glm-image\",\n    \"reason\": \"Highest overall quality (92.1/100), especially excellent text rendering (95.8/100). Worth the $0.015 cost for technical diagrams.\",\n    \"alternatives\": [\n      {\n        \"provider\": \"gemini\",\n        \"model\": \"gemini-2.5-flash-image\",\n        \"reason\": \"Free alternative with good quality (85.5/100)\"\n      }\n    ]\n  },\n  \"message\": \"Comparison complete! zai glm-image scored highest (rank 1)...\"\n}\n```\n\n### Image Generation Tools\n\n#### `parse_markdown`\nParse markdown files to extract image specifications.\n\n```json\n{\n  \"filePaths\": [\"./docs/guide.md\"]\n}\n```\n\n#### `list_providers`\nList all available image generation providers and their capabilities.\n\n```json\n{}\n```\n\n#### `generate_image`\nGenerate a single image from specification.\n\n```json\n{\n  \"imageId\": \"chapter-01-img-01\",\n  \"provider\": \"gemini\"\n}\n```\n\n#### `list_images`\nList all parsed image specifications.\n\n```json\n{\n  \"filter\": \"diagram\"\n}\n```\n\n### Workflow Tools\n\n#### `start_workflow`\nStart image generation workflow with specified mode.\n\n```json\n{\n  \"mode\": \"interactive\",\n  \"provider\": \"gemini\",\n  \"imageIds\": [\"img-01\", \"img-02\"]\n}\n```\n\n**Modes**: `interactive`, `batch`, `bulk`\n\n#### `get_status`\nGet current workflow status and progress.\n\n```json\n{}\n```\n\n#### `pause_workflow` / `resume_workflow`\nControl workflow execution.\n\n```json\n{}\n```\n\n### Cost Tracking Tools\n\n#### `get_cost_summary`\nGet cost summary for all generated images by provider.\n\n```json\n{}\n```\n\n---\n\n## 📖 Usage Examples\n\n### Example 1: Generate Single Image with Specific Provider\n\n```typescript\n// generate-example.ts\nimport { providerFactory } from './src/providers/index.js';\nimport { ImageSpec } from './src/types/index.js';\n\nproviderFactory.initialize();\nconst provider = providerFactory.getProvider('gemini');\n\nconst spec: ImageSpec = {\n  id: 'my-image-01',\n  prompt: 'A modern cloud architecture diagram showing microservices...',\n  aspectRatio: '16:9',\n  // ... other fields\n};\n\nconst result = await provider.generate(spec);\nconsole.log(`Generated: ${result.filepath}`);\n```\n\n### Example 2: Generate with Multiple Versions\n\n```bash\n# Generate 2 versions of each image for comparison\nnpx tsx generate-solo-theme-test.ts\n```\n\n### Example 3: Cost Estimation\n\n```typescript\nconst gemini = providerFactory.getProvider('gemini');\nconst estimatedCost = gemini.estimateCost(spec);\nconsole.log(`Estimated cost: $${estimatedCost}`);\n```\n\n---\n\n## 🎨 Supported Providers\n\n![AI Provider Comparison](generated-images/gemini/README-img-04.png)\n\n| Provider | Model | Cost/Image | Speed | Quality | Status |\n|----------|-------|-----------|-------|---------|--------|\n| **Google Gemini** | 2.5 Flash Image | $0.00 | ⚡⚡⚡ Fast | Excellent | ✅ Tested |\n| **Replicate** | FLUX Schnell | $0.003 | ⚡⚡⚡ Fast | Excellent | ⭐ Recommended |\n| **Leonardo** | Phoenix | $0.02 | ⚡⚡ Medium | Excellent | ✅ Ready |\n| **Stability AI** | SDXL 1.0 | $0.04 | ⚡⚡ Medium | Excellent | ✅ Tested |\n| **OpenAI** | GPT Image 1 | $0.04-0.12 | ⚡ Medium | Best | ✅ Fixed |\n| **xAI** | Grok 2 Image | $0.07 | ⚡⚡ Fast | Good | ⚠️ Preview |\n| **HuggingFace** | Various | $0.00 | ⚡ Slow | Varies | 🔧 Beta |\n\n### Cost Comparison (151 images)\n\n| Provider | Total Cost | Savings vs OpenAI HD |\n|----------|-----------|---------------------|\n| **Replicate FLUX** | **$0.45** | 96% cheaper ⭐ |\n| **Leonardo** | $3.02 | 75% cheaper |\n| **Gemini** | $5.89 | 51% cheaper |\n| **Stability AI** | $6.04 | 50% cheaper |\n| **OpenAI Standard** | $6.04 | Baseline |\n| **xAI Grok** | $10.57 | 12% cheaper |\n| **OpenAI HD** | $12.08 | Baseline premium |\n\n---\n\n## 🏗️ Project Structure\n\n![Visual Forge MCP Architecture](generated-images/gemini/README-img-05.png)\n\n```\nvisual-forge-mcp/\n├── src/                    # Source code\n│   ├── providers/          # AI provider implementations\n│   │   ├── openai/         # OpenAI GPT Image\n│   │   ├── gemini/         # Google Gemini 2.5 Flash\n│   │   ├── stability/      # Stability AI SDXL\n│   │   ├── replicate/      # Replicate FLUX\n│   │   ├── leonardo/       # Leonardo Phoenix\n│   │   ├── huggingface/    # HuggingFace Inference\n│   │   ├── xai/            # xAI Grok 2 Image\n│   │   └── base-provider.ts\n│   ├── quality/            # Quality inspection module\n│   ├── state/              # State management\n│   ├── types/              # TypeScript definitions\n│   └── utils/              # Utilities (logger, rate limiter)\n│\n├── scripts/                # Example & test scripts\n│   ├── check-providers.ts  # Provider status checker\n│   ├── generate-with-*.ts  # Provider-specific generators\n│   ├── generate-all-providers.ts  # Multi-provider comparison\n│   └── generate-solo-theme-test.ts  # Versioning test\n│\n├── docs/                   # Documentation\n│   ├── VISUAL_MCP_SERVER.md  # Server specification\n│   ├── IMPLEMENTATION-PLAN.md  # Architecture plan\n│   ├── SESSION_SUMMARY.md  # Development notes\n│   └── example.md          # Example prompts\n│\n├── test/                   # Test files\n│   └── test-run.ts\n│\n├── dist/                   # Build output (gitignored)\n├── generated-images/       # Generated images (gitignored)\n│   ├── gemini/             # Gemini generated images\n│   ├── openai/             # OpenAI generated images\n│   ├── stability/          # Stability AI generated images\n│   └── ...                 # Other providers\n│\n├── package.json            # NPM package configuration\n├── tsconfig.json           # TypeScript configuration\n├── README.md               # This file\n├── CHANGELOG.md            # Version history\n└── .env.example            # Environment variables template\n```\n\n---\n\n## 🔧 Development\n\n### Build\n\n```bash\nnpm run build\n```\n\n### Development Mode\n\n```bash\nnpm run dev\n```\n\n### Linting\n\n```bash\nnpm run lint\n```\n\n### Testing\n\n```bash\nnpm test\nnpm run test:watch\n```\n\n---\n\n## 📊 Features in Detail\n\n### Quality Inspection\n\nAutomatically analyzes generated images for:\n- **Sharpness**: Laplacian variance algorithm\n- **Brightness**: 0-255 scale with warnings for extremes\n- **File size**: Validation (10KB - 10MB)\n- **Dimensions**: Aspect ratio verification\n- **Format**: Image encoding validation\n\n### Rate Limiting\n\nToken bucket algorithm per provider:\n- **OpenAI**: 5 images/minute\n- **Gemini**: 20 images/minute\n- **Stability AI**: 10 images/minute\n- **Replicate**: 20 images/minute\n- **xAI**: 10 images/minute\n\n### Cost Tracking\n\nReal-time tracking:\n- Per-image cost\n- Provider totals\n- Session costs\n- Estimates before generation\n\n---\n\n## 🐛 Troubleshooting\n\n### Provider Not Available\n\n```\n❌ Gemini provider not available! Check GOOGLE_API_KEY in .env\n```\n\n**Solution**: Verify API key is set in `.env` file and restart the server.\n\n### Out of Credits (Stability AI)\n\n```\n❌ insufficient_balance: Your organization does not have enough balance\n```\n\n**Solution**: Add credits to your Stability AI account at https://platform.stability.ai\n\n### Rate Limit Errors\n\n```\n❌ Rate limit exceeded for provider openai\n```\n\n**Solution**: The rate limiter will automatically retry after cooldown. Reduce concurrency in workflow config.\n\n---\n\n## 🛠️ Development & Publishing\n\n### NPM Package Management\n\nVisual Forge MCP includes a production-ready script for managing the npm package lifecycle with comprehensive safety checks and verbose logging.\n\n**Script Location**: `scripts/npm-manager.sh`\n\n#### Features\n\n- ✅ **Publish with safety checks** - 10 pre-publish validations\n- ✅ **Version management** - Bump patch/minor/major\n- ✅ **Authentication support** - NPM tokens and recovery codes\n- ✅ **Git integration** - Automatic tag creation\n- ✅ **Dry-run mode** - Test without making changes\n- ✅ **Package info & stats** - View registry information\n- ✅ **Security audits** - Check for vulnerabilities\n- ✅ **Access management** - Control package access\n- ✅ **Comprehensive logging** - All operations logged\n\n#### Quick Start\n\n```bash\n# Show help\n./scripts/npm-manager.sh --help\n\n# Show package info\n./scripts/npm-manager.sh info\n\n# Bump version\n./scripts/npm-manager.sh bump patch\n\n# Publish (with all safety checks)\n./scripts/npm-manager.sh publish --dry-run\n./scripts/npm-manager.sh publish\n```\n\n#### Complete Release Workflow\n\n```bash\n# 1. Bump version\n./scripts/npm-manager.sh bump patch\n\n# 2. Update CHANGELOG.md\nvim CHANGELOG.md\n\n# 3. Commit changes\ngit commit -am \"chore: Release v$(node -pe \"require('./package.json').version\")\"\n\n# 4. Test publish\n./scripts/npm-manager.sh publish --dry-run\n\n# 5. Publish to npm\n./scripts/npm-manager.sh publish\n\n# 6. Push to GitHub\ngit push && git push --tags\n```\n\n#### Authentication\n\n**With NPM Token** (recommended for CI/CD):\n```bash\nexport NPM_TOKEN=npm_your_token_here\n./scripts/npm-manager.sh publish\n```\n\n**With Recovery Codes**:\n```bash\nnpm login --auth-type=legacy\n./scripts/npm-manager.sh publish\n```\n\n#### Documentation\n\n- **Full Guide**: [scripts/README.md](scripts/README.md)\n- **Quick Reference**: [scripts/QUICK_START.md](scripts/QUICK_START.md)\n\n---\n\n## 🤝 Contributing\n\nContributions welcome! Please read [CONTRIBUTING.md](CONTRIBUTING.md) first.\n\n1. Fork the repository\n2. Create your feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit your changes (`git commit -m 'Add amazing feature'`)\n4. Push to the branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\n---\n\n## 📝 License\n\n**Personal Use Only** - This software is free for personal, educational, and research purposes only.\n\nCommercial use is NOT permitted without a commercial license.\n\nSee [LICENSE](LICENSE) file for complete terms and conditions.\n\nFor commercial licensing inquiries, please contact the author.\n\n---\n\n## 🙏 Acknowledgments\n\n- Built with [MCP SDK](https://github.com/modelcontextprotocol/typescript-sdk)\n- Powered by multiple AI image generation providers\n- Special thanks to the open-source community\n\n---\n\n## 📚 Resources\n\n### Documentation\n- **📖 Comprehensive Guide** ✨ NEW: Complete guide covering installation, architecture, environment variables, usage workflows, and testing - [docs/guides/comprehensive-guide.md](docs/guides/comprehensive-guide.md)\n- **Visual MCP Server Specification**: [docs/VISUAL_MCP_SERVER.md](docs/VISUAL_MCP_SERVER.md)\n- **Implementation Plan**: [docs/IMPLEMENTATION-PLAN.md](docs/IMPLEMENTATION-PLAN.md)\n- **Implementation Report**: [docs/IMPLEMENTATION_REPORT.md](docs/IMPLEMENTATION_REPORT.md)\n- **Session Summary**: [docs/SESSION_SUMMARY.md](docs/SESSION_SUMMARY.md)\n- **Example Prompts**: [docs/example.md](docs/example.md)\n- **Changelog**: [CHANGELOG.md](CHANGELOG.md)\n\n### Setup Guides\n- **Cursor Setup**: [docs/CURSOR_SETUP.md](docs/CURSOR_SETUP.md)\n- **Continue (VS Code) Setup**: [docs/CONTINUE_SETUP.md](docs/CONTINUE_SETUP.md)\n\n### n8n Integration\n- **Full Integration Guide**: [docs/N8N_INTEGRATION.md](docs/N8N_INTEGRATION.md)\n- **Quick Start**: [docs/N8N_QUICK_START.md](docs/N8N_QUICK_START.md)\n- **API Reference**: [docs/openapi.yaml](docs/openapi.yaml)\n- **Example Workflows**: [n8n/n8n-workflows/](n8n/n8n-workflows/)\n- **Custom Node Package**: [n8n/n8n-nodes-visual-forge/](n8n/n8n-nodes-visual-forge/)\n\n---\n\n## 🔗 Links\n\n- **Repository**: https://github.com/michelabboud/visual-forge-mcp\n- **Issues**: https://github.com/michelabboud/visual-forge-mcp/issues\n- **MCP Documentation**: https://modelcontextprotocol.io\n\n---\n\n**⚡ Generate professional images for your documentation in seconds!**\n\nMade with ❤️ for the developer community\n","readmeFilename":"README.md"}