{"_id":"@variel/mcp-server","_rev":"8-bbdc8d22969d760fe1299b73db98e7d6","name":"@variel/mcp-server","dist-tags":{"latest":"0.2.3"},"versions":{"0.0.1":{"name":"@variel/mcp-server","version":"0.0.1","_id":"@variel/mcp-server@0.0.1","maintainers":[{"name":"jeisenberg86","email":"jeisenberg86@gmail.com"}],"bin":{"variel-mcp":"dist/server.js"},"dist":{"shasum":"c3d2a35c0de6b4331b672282f3a5d1424ae2937f","tarball":"https://registry.npmjs.org/@variel/mcp-server/-/mcp-server-0.0.1.tgz","fileCount":3,"integrity":"sha512-nZmw8lA3wldnUqFMoHkyLlc2TD4N0GJaPLdl6j5t/XZR5OgwOLfZ0dhrqViYnnhlY6oVkeS35eUkVcsyJsUn9A==","signatures":[{"sig":"MEUCIQCOLJIsGUUw9bFpX0uXQBfEz74jmXTNjIfS68EAvRdwUgIgNEuDzSxIZPycgLzqhkDWpFrEN1CPZgDb0hL4YoorE+k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":68875},"type":"module","_from":"file:variel-mcp-server-0.0.1.tgz","scripts":{"dev":"tsx watch src/server.ts","build":"tsup","start":"node dist/server.js","typecheck":"tsc --noEmit"},"_npmUser":{"name":"jeisenberg86","email":"jeisenberg86@gmail.com"},"_resolved":"/private/var/folders/37/w0mygbg93bzd5zz93q7w25sc0000gn/T/721b0083d1c804738984ce67571dea07/variel-mcp-server-0.0.1.tgz","_integrity":"sha512-nZmw8lA3wldnUqFMoHkyLlc2TD4N0GJaPLdl6j5t/XZR5OgwOLfZ0dhrqViYnnhlY6oVkeS35eUkVcsyJsUn9A==","_npmVersion":"11.4.2","description":"The Variel MCP server — gives your coding agent live access to your brand: tokens, components, voice, and on-brand validation. It runs over stdio and resolves your brand from the Variel API using your project's API key, so there's nothing to clone and no ","directories":{},"_nodeVersion":"24.4.1","dependencies":{"pg":"^8.21.0","zod":"^3.23.0","@anthropic-ai/sdk":"^0.39.0","@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","tsup":"^8.0.0","@types/pg":"^8.20.0","typescript":"^5.4.0","@types/node":"^22.0.0","@brand-studio/gates":"0.0.1","@brand-studio/brand-core":"0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_0.0.1_1781664432446_0.013001902476984295","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@variel/mcp-server","version":"0.0.2","_id":"@variel/mcp-server@0.0.2","maintainers":[{"name":"jeisenberg86","email":"jeisenberg86@gmail.com"}],"bin":{"variel-mcp":"dist/server.js"},"dist":{"shasum":"922a6d0db5d7a40a040184f641e24cbd8014072c","tarball":"https://registry.npmjs.org/@variel/mcp-server/-/mcp-server-0.0.2.tgz","fileCount":3,"integrity":"sha512-AN4MtUDNGbBMpSY1QfVUaPd5B+3yOM8HE4ufoheoqLN8YVjGUr1vgCP06+HC+CZsmrr3tCwQcIjUclQtVsH71A==","signatures":[{"sig":"MEQCIEktYghqilH19BWp7gLx+sIsNLPBU+ke3+Pdyi6DA6TrAiAYDFHiqAN8FfuVz7TZSaD+tzJ65sdaemK2Uh6gdMfSnA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":68857},"type":"module","_from":"file:variel-mcp-server-0.0.2.tgz","scripts":{"dev":"tsx watch src/server.ts","build":"tsup","start":"node dist/server.js","typecheck":"tsc --noEmit"},"_npmUser":{"name":"jeisenberg86","email":"jeisenberg86@gmail.com"},"_resolved":"/private/var/folders/37/w0mygbg93bzd5zz93q7w25sc0000gn/T/1301e0b8181415e0693986a1ee70b285/variel-mcp-server-0.0.2.tgz","_integrity":"sha512-AN4MtUDNGbBMpSY1QfVUaPd5B+3yOM8HE4ufoheoqLN8YVjGUr1vgCP06+HC+CZsmrr3tCwQcIjUclQtVsH71A==","_npmVersion":"11.4.2","description":"The Variel MCP server — gives your coding agent live access to your brand: tokens, components, voice, and on-brand validation. It runs over stdio and resolves your brand from the Variel API using your project's API key, so there's nothing to clone and no ","directories":{},"_nodeVersion":"24.4.1","dependencies":{"pg":"^8.21.0","zod":"^3.23.0","@anthropic-ai/sdk":"^0.39.0","@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.0.0","tsup":"^8.0.0","@types/pg":"^8.20.0","typescript":"^5.4.0","@types/node":"^22.0.0","@brand-studio/gates":"0.0.1","@brand-studio/brand-core":"0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_0.0.2_1781665020070_0.7307681654670612","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@variel/mcp-server","version":"0.0.3","keywords":["mcp","mcp-server","design-tokens","brand","design-system","ai-agents","brand-voice","variel"],"_id":"@variel/mcp-server@0.0.3","maintainers":[{"name":"jeisenberg86","email":"jeisenberg86@gmail.com"}],"homepage":"https://variel.ai/connect","bugs":{"url":"https://github.com/jeisenberg/ai-brand-studio/issues"},"bin":{"variel-mcp":"dist/server.js"},"dist":{"shasum":"63dbf94fa07c7adfe087bbcfeafd9f425ca0a4a3","tarball":"https://registry.npmjs.org/@variel/mcp-server/-/mcp-server-0.0.3.tgz","fileCount":5,"integrity":"sha512-sy59dkpxAUUfLeH7+QW0NKNOWn9BQ8kzEQf39r2zHR2LwjD8XgcgGzTUoMqIYb8So0DP/lSEm6YIb+vdSQooHg==","signatures":[{"sig":"MEQCIEJe6C3MXk5Wwn3+UEOp+5/u4AY1vPwjBjEPYwW28cXTAiB+bdCNQBCXGdri12iOiGX88IHLzL2vupGWTChVPrg7VA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":120332},"type":"module","gitHead":"db95fe0bc6943278049b23d1ab6f0f9a7c2479cb","mcpName":"ai.variel/mcp-server","scripts":{"dev":"tsx watch src/server.ts","test":"vitest run","build":"tsup","start":"node dist/server.js","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1afecbf0-4867-430d-8ed5-06ebad2a2aca"}},"repository":{"url":"git+https://github.com/jeisenberg/ai-brand-studio.git","type":"git","directory":"apps/mcp-server"},"_npmVersion":"11.17.0","description":"Live brand access for coding agents — design tokens, components, brand voice, and deterministic on-brand validation, resolved from your Variel project key.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"pg":"^8.21.0","zod":"^3.23.0","@anthropic-ai/sdk":"^0.39.0","@brand-studio/imagegen":"workspace:*","@modelcontextprotocol/sdk":"^1.0.0","@brand-studio/component-gen":"workspace:*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","tsx":"^4.0.0","tsup":"^8.0.0","vitest":"^2.0.0","js-yaml":"^4.1.0","@types/pg":"^8.20.0","typescript":"^5.4.0","@types/node":"^22.0.0","@brand-studio/gates":"workspace:*","@brand-studio/brand-core":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_0.0.3_1781820475699_0.02263997384680061","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@variel/mcp-server","version":"0.1.0","keywords":["mcp","mcp-server","design-tokens","brand","design-system","ai-agents","brand-voice","variel"],"_id":"@variel/mcp-server@0.1.0","maintainers":[{"name":"jeisenberg86","email":"jeisenberg86@gmail.com"}],"homepage":"https://variel.ai/connect","bugs":{"url":"https://github.com/jeisenberg/ai-brand-studio/issues"},"bin":{"variel-mcp":"dist/server.js"},"dist":{"shasum":"8955c29104bf51dc4defebfe4a7f12daba6c4369","tarball":"https://registry.npmjs.org/@variel/mcp-server/-/mcp-server-0.1.0.tgz","fileCount":9,"integrity":"sha512-U+E57fLYz9E6/BCg0XJjJopdFJg5wk1Ruf2lWSq/gOq15+YIPfFIZYvnb0TmBFNfcBCTHlWH8RCHHpp9QiWNsg==","signatures":[{"sig":"MEQCIC+3BteqwQ36FEmGYTtHBVL2BS/lzPmaE1S0YWuWXfrAAiAtFoqEmIurOcjO6SS2F+oYl3jhQVphPpecrmm0+xiE+w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":240114},"type":"module","gitHead":"189bc92b32f6538479a08721849a31c9b406c6c6","mcpName":"ai.variel/mcp-server","scripts":{"dev":"tsx watch src/server.ts","test":"vitest run","build":"tsup","start":"node dist/server.js","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1afecbf0-4867-430d-8ed5-06ebad2a2aca"}},"repository":{"url":"git+https://github.com/jeisenberg/ai-brand-studio.git","type":"git","directory":"apps/mcp-server"},"_npmVersion":"11.18.0","description":"Generate a brand from inside your coding agent, then keep every design token, component, and copy decision on-brand — deterministic on-brand validation served live over MCP.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"pg":"^8.21.0","zod":"^3.23.0","@anthropic-ai/sdk":"^0.39.0","@brand-studio/imagegen":"workspace:*","@modelcontextprotocol/sdk":"^1.0.0","@brand-studio/component-gen":"workspace:*","@brand-studio/studio-engine":"workspace:*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","tsx":"^4.0.0","tsup":"^8.0.0","vitest":"^2.0.0","js-yaml":"^4.1.0","@types/pg":"^8.20.0","typescript":"^5.4.0","@types/node":"^22.0.0","@brand-studio/gates":"workspace:*","@brand-studio/brand-core":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_0.1.0_1782880124495_0.9073448448786716","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@variel/mcp-server","version":"0.2.0","keywords":["mcp","mcp-server","design-tokens","brand","design-system","ai-agents","brand-voice","variel"],"_id":"@variel/mcp-server@0.2.0","maintainers":[{"name":"jeisenberg86","email":"jeisenberg86@gmail.com"}],"homepage":"https://variel.ai/connect","bugs":{"url":"https://github.com/jeisenberg/ai-brand-studio/issues"},"bin":{"variel-mcp":"dist/server.js"},"dist":{"shasum":"41bf9c981995010faab31827ebd00e479321b700","tarball":"https://registry.npmjs.org/@variel/mcp-server/-/mcp-server-0.2.0.tgz","fileCount":9,"integrity":"sha512-6gOmzQ/b7tJNcj8BX/0WdeO9gtCUBApMisNlI5hUe2md8yxA43HSQmLEF4nIYFqUN0vSGpt6+Rm0FgRQCm/kTQ==","signatures":[{"sig":"MEMCIHC722XmfwV2Ve3Ldsyan+j7ZOgIXfnB8o9B9fJfQ9CNAh9xwUlAZqtkJhUfjDbUtYHR/ehdKuMQfGUMI1wr7X55","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":302076},"type":"module","gitHead":"c32c167356f1a8d40524a48aa5eb2914b5d8d26d","mcpName":"ai.variel/mcp-server","scripts":{"dev":"tsx watch src/server.ts","test":"vitest run","build":"tsup","start":"node dist/server.js","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1afecbf0-4867-430d-8ed5-06ebad2a2aca"}},"repository":{"url":"git+https://github.com/jeisenberg/ai-brand-studio.git","type":"git","directory":"apps/mcp-server"},"_npmVersion":"11.18.0","description":"Generate a brand from inside your coding agent, then keep every design token, component, and copy decision on-brand — deterministic on-brand validation served live over MCP.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"pg":"^8.21.0","zod":"^3.23.0","playwright-core":"^1.49.0","@anthropic-ai/sdk":"^0.39.0","@brand-studio/imagegen":"workspace:*","@modelcontextprotocol/sdk":"^1.0.0","@brand-studio/component-gen":"workspace:*","@brand-studio/studio-engine":"workspace:*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","tsx":"^4.0.0","tsup":"^8.0.0","vitest":"^2.0.0","js-yaml":"^4.1.0","@types/pg":"^8.20.0","typescript":"^5.4.0","@types/node":"^22.0.0","@brand-studio/gates":"workspace:*","@brand-studio/brand-core":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_0.2.0_1783539450065_0.2914683668689846","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@variel/mcp-server","version":"0.2.1","keywords":["mcp","mcp-server","design-tokens","brand","design-system","ai-agents","brand-voice","variel"],"_id":"@variel/mcp-server@0.2.1","maintainers":[{"name":"jeisenberg86","email":"jeisenberg86@gmail.com"}],"homepage":"https://variel.ai/connect","bugs":{"url":"https://github.com/jeisenberg/ai-brand-studio/issues"},"bin":{"variel-mcp":"dist/server.js"},"dist":{"shasum":"7eff29b6fc0755d8710c71159cc7123b50b23b69","tarball":"https://registry.npmjs.org/@variel/mcp-server/-/mcp-server-0.2.1.tgz","fileCount":9,"integrity":"sha512-/F8VXQfMs4T3OHz5c1o57p+VkuamAUKu3DoSQh3OTs9T+aOYPw6ygZbpUZEbFVreV93Ul4PVnbLItlRNHmLvyQ==","signatures":[{"sig":"MEUCIA8tBDjwWhgILj7uDQnCuIGIDH+iqGfDeVF/Nb4zTG/EAiEA8UWCFzS9e71kJ2kjyALDI8UDzmiui6H4ljcGRzCSBHI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":302383},"type":"module","gitHead":"bda84152b4753836cb354dee3f97c91b255eaf8b","mcpName":"ai.variel/mcp-server","scripts":{"dev":"tsx watch src/server.ts","test":"vitest run","build":"tsup","start":"node dist/server.js","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1afecbf0-4867-430d-8ed5-06ebad2a2aca"}},"repository":{"url":"git+https://github.com/jeisenberg/ai-brand-studio.git","type":"git","directory":"apps/mcp-server"},"_npmVersion":"11.18.0","description":"Generate a brand from inside your coding agent, then keep every design token, component, and copy decision on-brand — deterministic on-brand validation served live over MCP.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"pg":"^8.21.0","zod":"^3.23.0","playwright-core":"^1.49.0","@anthropic-ai/sdk":"^0.39.0","@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","tsx":"^4.0.0","tsup":"^8.0.0","vitest":"^2.0.0","js-yaml":"^4.1.0","@types/pg":"^8.20.0","typescript":"^5.4.0","@types/node":"^22.0.0","@brand-studio/gates":"workspace:*","@brand-studio/imagegen":"workspace:*","@brand-studio/brand-core":"workspace:*","@brand-studio/component-gen":"workspace:*","@brand-studio/studio-engine":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_0.2.1_1783706004155_0.9791388289230298","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@variel/mcp-server","version":"0.2.2","keywords":["mcp","mcp-server","design-tokens","brand","design-system","ai-agents","brand-voice","variel"],"_id":"@variel/mcp-server@0.2.2","maintainers":[{"name":"jeisenberg86","email":"jeisenberg86@gmail.com"}],"homepage":"https://variel.ai/connect","bugs":{"url":"https://github.com/jeisenberg/ai-brand-studio/issues"},"bin":{"variel-mcp":"dist/server.js"},"dist":{"shasum":"6f1763517b5f9d2be5b65082b4a6c3a097ab6838","tarball":"https://registry.npmjs.org/@variel/mcp-server/-/mcp-server-0.2.2.tgz","fileCount":9,"integrity":"sha512-BBI0QGxmWFRJznd7w4JOoWqeYVKTi1Wf3LstYl/KZ/7IVR97wVSllzk/tS0SBhUWKor+LggE0BEkfj6Kmno7aw==","signatures":[{"sig":"MEYCIQChXIMc+DRCBZClRuzH+pKFxPOYcUGwxo1oNaeRQdczQgIhAPbRKuIf6vsFwJ8jsd3HZc0I0uqOkCmkMdVQmCqpZuvM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":302383},"type":"module","gitHead":"d838ec4d85b98d8f6c1f1d4f13e7f05aa8c67249","mcpName":"ai.variel/mcp-server","scripts":{"dev":"tsx watch src/server.ts","test":"vitest run","build":"tsup","start":"node dist/server.js","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1afecbf0-4867-430d-8ed5-06ebad2a2aca"}},"repository":{"url":"git+https://github.com/jeisenberg/ai-brand-studio.git","type":"git","directory":"apps/mcp-server"},"_npmVersion":"11.18.0","description":"Generate a brand from inside your coding agent, then keep every design token, component, and copy decision on-brand — deterministic on-brand validation served live over MCP.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"pg":"^8.21.0","zod":"^3.23.0","playwright-core":"^1.49.0","@anthropic-ai/sdk":"^0.39.0","@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.17.1","tsx":"^4.0.0","tsup":"^8.0.0","vitest":"^2.0.0","js-yaml":"^4.1.0","@types/pg":"^8.20.0","typescript":"^5.4.0","@types/node":"^22.0.0","@brand-studio/gates":"workspace:*","@brand-studio/imagegen":"workspace:*","@brand-studio/brand-core":"workspace:*","@brand-studio/component-gen":"workspace:*","@brand-studio/studio-engine":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_0.2.2_1783711427292_0.6566275289848706","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@variel/mcp-server","version":"0.2.3","mcpName":"ai.variel/mcp-server","description":"Generate a brand from inside your coding agent, then keep every design token, component, and copy decision on-brand — deterministic on-brand validation served live over MCP.","homepage":"https://variel.ai/connect","repository":{"type":"git","url":"git+https://github.com/jeisenberg/ai-brand-studio.git","directory":"apps/mcp-server"},"keywords":["mcp","mcp-server","design-tokens","brand","design-system","ai-agents","brand-voice","variel"],"type":"module","bin":{"variel-mcp":"dist/server.js"},"publishConfig":{"access":"public"},"scripts":{"build":"tsup","dev":"tsx watch src/server.ts","start":"node dist/server.js","test":"vitest run","typecheck":"tsc --noEmit"},"dependencies":{"@anthropic-ai/sdk":"^0.39.0","@modelcontextprotocol/sdk":"^1.0.0","pg":"^8.21.0","playwright-core":"^1.49.0","zod":"^3.23.0"},"devDependencies":{"@brand-studio/brand-core":"workspace:*","@brand-studio/component-gen":"workspace:*","@brand-studio/gates":"workspace:*","@brand-studio/imagegen":"workspace:*","@brand-studio/studio-engine":"workspace:*","@types/node":"^22.0.0","@types/pg":"^8.20.0","ajv":"^8.17.1","js-yaml":"^4.1.0","tsup":"^8.0.0","tsx":"^4.0.0","typescript":"^5.4.0","vitest":"^2.0.0"},"gitHead":"2cb37adf4caf40a2c64e463e8690f87b8c828c69","_id":"@variel/mcp-server@0.2.3","bugs":{"url":"https://github.com/jeisenberg/ai-brand-studio/issues"},"_nodeVersion":"22.14.0","_npmVersion":"11.18.0","dist":{"integrity":"sha512-FMjf3WOmEDSIcoFc3cQQuCpD01nLK2uoF6Emuct6SVEW7sgjmybwP1Kp7mgmzIGCyDlJgsPubPpx7PK9mjbgqg==","shasum":"6b8c4bb481f7d4e9da1fc2cdc245027d14773614","tarball":"https://registry.npmjs.org/@variel/mcp-server/-/mcp-server-0.2.3.tgz","fileCount":9,"unpackedSize":304336,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCXoEXkI4hhFFofYhmZvVyXyN8ojveqPct+BVxnrqh+cQIga78BnSxWis2f8D52rDJ7qa8hx8ngZUC6dT0NirLfS4Y="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1afecbf0-4867-430d-8ed5-06ebad2a2aca"}},"directories":{},"maintainers":[{"name":"jeisenberg86","email":"jeisenberg86@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-server_0.2.3_1783805049716_0.1410707339782793"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-17T02:47:12.218Z","modified":"2026-07-11T21:24:10.021Z","0.0.1":"2026-06-17T02:47:12.581Z","0.0.2":"2026-06-17T02:57:00.192Z","0.0.3":"2026-06-18T22:07:55.860Z","0.1.0":"2026-07-01T04:28:44.654Z","0.2.0":"2026-07-08T19:37:30.243Z","0.2.1":"2026-07-10T17:53:24.285Z","0.2.2":"2026-07-10T19:23:47.479Z","0.2.3":"2026-07-11T21:24:09.885Z"},"bugs":{"url":"https://github.com/jeisenberg/ai-brand-studio/issues"},"homepage":"https://variel.ai/connect","keywords":["mcp","mcp-server","design-tokens","brand","design-system","ai-agents","brand-voice","variel"],"repository":{"type":"git","url":"git+https://github.com/jeisenberg/ai-brand-studio.git","directory":"apps/mcp-server"},"description":"Generate a brand from inside your coding agent, then keep every design token, component, and copy decision on-brand — deterministic on-brand validation served live over MCP.","maintainers":[{"name":"jeisenberg86","email":"jeisenberg86@gmail.com"}],"readme":"# @variel/mcp-server\n\nThe Variel MCP server — gives your coding agent live access to your brand:\ntokens, components, voice, and on-brand validation. It runs over stdio and\nresolves your brand from the Variel API using your project's API key, so there's\nnothing to clone and no database to point at.\n\nGet started at **[variel.ai/connect](https://variel.ai/connect)**.\n\n## Connect\n\nGet your `BRAND_API_KEY` (`vrl_…`) from your project's **Activation** page in\nthe Variel dashboard, then:\n\n```bash\n# Claude Code\nclaude mcp add variel -e BRAND_API_KEY=vrl_… -- npx @variel/mcp-server\n```\n\nFor Cursor / other agents, add an `mcpServers` entry:\n\n```json\n{\n  \"mcpServers\": {\n    \"variel\": {\n      \"command\": \"npx\",\n      \"args\": [\"@variel/mcp-server\"],\n      \"env\": { \"BRAND_API_KEY\": \"vrl_…\" }\n    }\n  }\n}\n```\n\n## Tools\n\n16 tools are exposed over the `ListTools` protocol surface:\n\n- `generate_brand_kickoff` — pre-brand onboarding: submit a brief (five fields: whatItIs, audience, oneBelief, antiPosition, categoryNorm) and get N hosted brand direction links to review in your browser. Non-blocking — returns immediately with a kickoff token and N reveal links at `/k/<token>/<index>`. Available on a keyless/bootstrap connection (no `BRAND_API_KEY` needed). Returns `{ kickoffToken, status:'pending', routes:[{index,revealUrl}×N], nextStep }` — no label/descriptor at kickoff-time (routes are still generating), no api_key, no images.\n- `generate_brand_resolve` — pre-brand onboarding: poll for the human's brand direction pick after calling `generate_brand_kickoff`. Returns `{ status:'generating', picked:false }` (still generating — poll again), then `{ status:'waiting', picked:false, routes:[{index,revealUrl,label,descriptor}×N] }` once routes are ready (labels/descriptors computed from the same source as the reveal page — zero drift), then `{ status:'ready', picked:true, brandApiKey, brandHandle, nextStep }` after the human picks. All pre-pick states have `isError` absent (non-error polling). Available on a keyless/bootstrap connection.\n- `get_brand_tokens` — the live token set (colors, typography, spacing, radius, shadow, motion, border) plus generated CSS custom properties.\n- `list_components` — all brand component definitions with their variant names.\n- `get_component` — full definition and code snippet for a named component in the requested framework (`react-tailwind`, `html-css`, `vue`).\n- `validate_design` — deterministic, multi-dimensional brand conformance check (token violations, WCAG contrast, voice rules). Pure function: same input always produces identical output. Score 0–100 with actionable `structuredFix` patches per violation.\n- `validate_copy` — two-tier brand-voice check for bare prose. Tier 1 is deterministic (banned words, hedges, exclamation marks). Tier 2 is model-judged (requires `ANTHROPIC_API_KEY`).\n- `grade_visual_quality` — model-judged visual brand grading across 5 dimensions (coherence, hierarchy, spacing, typeCraft, colorHandling). Renders HTML server-side and calls a vision model. Requires `ANTHROPIC_API_KEY`.\n- `generate_component` — model-tier generation: produces a bespoke, token-bound React/Tailwind component grounded in your brand's divergent concept. Self-validates and retries once on failure. Requires `ANTHROPIC_API_KEY`.\n- `generate_asset` — model-tier asset generation: produces an on-brand PNG image anchored to the brand's moodboard world (narrative, descriptors, anti-references). Self-checks with the `slopGate` vision model and attaches the verdict. Retries once on failure. Returns ephemeral base64 only (no persistence). Requires `ANTHROPIC_API_KEY` and a configured moodboard; returns a structured skip when either is absent. Moodboard-gated: only listed when the brand has a moodboard.\n- `propose_token` — deterministic escape hatch: propose a new design token when nothing in the existing brand set covers your need. Deflects automatically if a covered token exists. Does NOT mutate the live brand.\n- `get_logo` — deterministic serve of the brand's signature logo: its structured spec plus a token-bound SVG. No model call, no RNG, no clock. Same brand produces byte-identical output. The logo derives from always-present brand coordinates + tokens and degrades gracefully to an abstract glyph when no brand name is available — it is therefore listed unconditionally for every connected brand (unlike `get_signature_motif` which requires an optional motif). Colors are token-bound via `var(--color-*)` or `currentColor` — zero raw hex. Returns a JSON object with the logo spec, the SVG string, and the render mode (\"wordmark\" or \"glyph\").\n- `get_signature_motif` — deterministic serve of the brand's signature motif: its structured spec plus a token-bound SVG static figure. No model call, no RNG, no clock. Same brand + same `reducedMotion` flag produces byte-identical output. Colors are token-bound via `var(--color-*)`; animated elements carry `lp-motif-anim-*` class hooks whose keyframes and `var(--motif-*)` tokens must come from the brand's CSS for motion — the SVG alone is static. The spec is also returned so the consumer can wire animation. Motif-gated: only listed when the brand has a signature motif.\n- `tune_motif` — candidate-only, gate-defended motif tuner. Proposes a modified version of the brand's signature motif by overlaying only the fields you supply (omitted fields keep the current value). The candidate is scored through the same distinctiveness gate that guarded the original: off-mean score must remain above 50 and no gradient-slop may be introduced. A failing candidate is returned as an honest rejection naming the failing axis (\"gradient-slop\" or \"off-mean\"). Fully stateless: never mutates the live brand — `get_signature_motif` and `get_brand_tokens` are byte-identical before and after. No model call, no RNG, no clock. Palette values must be token-ref keys (e.g. \"accent\", \"ink\", \"bg\") — raw hex is rejected. Motif-gated: only listed when the brand has a signature motif.\n- `scan_genericness` — deterministic genericness scanner for any URL. Captures the live page locally (requires Chrome — see below), extracts six brand-signal axes (color variety, whitespace density, font variety, cliche imagery, CTA density, content depth), scores against the Variel Category Norm Anchor v1.2, and returns a verdict. Score direction: 0 = Distinctive, 100 = Very Generic (opposite of `validate_design`). Available on a keyless/bootstrap connection — no `BRAND_API_KEY` and no `ANTHROPIC_API_KEY` needed (fully deterministic, zero model calls). Returns `{ score, band, signals:[{id,label,weight,fired,observedFact,divergenceNote}], axisDistance, anchorVersion, scannedUrl, assessment }` plus an advisory handoff suggestion to seed `generate_brand_kickoff` from what was found. Fetch posture: `\"local\"` — loopback and private-network URLs are allowed (useful for localhost dev), cloud-metadata endpoints (169.254.x.x, link-local) and credentials in URLs are refused. No page data leaves your machine. Requires Chrome to be installed; if Chrome is not found, returns `isError:true` with a step-by-step actionable message (install Chrome, set `CHROME_EXECUTABLE_PATH`, or use the web scan at variel.ai/scan). Never returns a degraded static score on Chrome failure.\n- `share_scan_result` — opt-in agent-side mint: re-captures the page locally (same local Chrome pipeline as `scan_genericness`), then POSTs the raw `{html, elements}` to the Variel mint endpoint, which re-derives the genericness verdict server-side and returns a permanent card URL. Use this to share a scan result as a shareable report card. Opt-in is structural — `scan_genericness` stays zero-egress; egress exists only in this verb. Available on a keyless/bootstrap connection — no `BRAND_API_KEY` and no `ANTHROPIC_API_KEY` needed. Requires Chrome (same as `scan_genericness`). Returns `{ cardUrl, capturedAt }` — the permanent card URL (valid 90 days) and the ISO timestamp of the capture. Advisory only: no auto-posting.\n\n## Resources\n\n6 static resources are exposed over the `ListResources` protocol surface:\n\n- `brand://tokens` — design tokens (colors, typography, spacing, etc.) plus generated CSS variables.\n- `brand://voice` — voice and tone guidelines, personality, do/don't lists.\n- `brand://components` — all brand component definitions.\n- `brand://brief` — compact, concept-forward brand brief: positioning, anti-position, voice rules. Pull this into context before generating any UI or copy.\n- `brand://guidelines` — formatted do/don't rules and rationale.\n- `brand://moodboard` — the brand's visual world: descriptors, narrative, anti-references, image URLs + rationales. Present when the project has a moodboard configured.\n\nDynamic per-component resources: `brand://components/{name}`.\n\n## Configuration\n\n| Env | Default | Purpose |\n|-----|---------|---------|\n| `BRAND_API_KEY` | — | Your project key (`vrl_…`). Required. |\n| `VARIEL_API_URL` | `https://variel.ai` | Override for self-host / staging. |\n| `ANTHROPIC_API_KEY` | — | Required only for `grade_visual_quality`, `generate_component`, `generate_asset`, and Tier-2 `validate_copy`. |\n| `BRAND_SOURCE` | _(unset)_ | Set to `db` to read Postgres directly (`DATABASE_URL`) instead of the HTTP API — for local dev / self-host. |\n| `CHROME_EXECUTABLE_PATH` | _(auto-detect)_ | Override the Chrome binary path used by `scan_genericness` and `share_scan_result`. If unset, playwright-core auto-detects a system Chrome install. Example: `/Applications/Google Chrome.app/Contents/MacOS/Google Chrome`. |\n| `VARIEL_VIA` | _(unset)_ | Source attribution tag. Set to `\"plugin\"` by the Variel Claude Code plugin config (ticket 476) — forwards as `via:\"plugin\"` on the kickoff POST body so the web side can record the install channel. A constant string, never a user or project identifier. You should not need to set this manually; the plugin config sets it automatically. |\n\nWithout a valid key the server falls back to a neutral bootstrap brand so your\nagent still starts.\n","readmeFilename":"README.md"}