Open-core registry of animated React components, blocks, design systems, and templates. Real, editable code: install with one shadcn CLI command or let your AI agent pull it over MCP.
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport stdio · http
verified
reported
listed in the official MCP registry counts 9 tools · 0 res
· 0 prompts
permission surface via code analysis
tools
-
get_component
-
get_install_command
-
get_system
-
get_template
-
list_categories
-
list_components
-
list_systems
-
list_templates
-
search_components
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit 7862b1e · analyzer v33 · 14h ago
skills & prompt files 9
- skill aicanvas-me-aicanvas-7862b1e/.agents/skills/creative-3d-components/SKILL.md
- skill aicanvas-me-aicanvas-7862b1e/.agents/skills/design-motion-principles/SKILL.md
- agent-rules aicanvas-me-aicanvas-7862b1e/AGENTS.md
- agent-rules aicanvas-me-aicanvas-7862b1e/CLAUDE.md
- agent-rules aicanvas-me-aicanvas-7862b1e/components-workspace/CLAUDE.md
- agent-rules aicanvas-me-aicanvas-7862b1e/design-systems/CLAUDE.md
- agent-rules aicanvas-me-aicanvas-7862b1e/integration/CLAUDE.md
- agent-rules aicanvas-me-aicanvas-7862b1e/reviewer/CLAUDE.md
- agent-rules aicanvas-me-aicanvas-7862b1e/supervisor/CLAUDE.md
danger signals2
- suspicious endpoint us.i.posthog.com (telemetry) aicanvas-me-aicanvas-7862b1e/app/lib/analytics-server.ts :11
const POSTHOG_HOST = process.env.POSTHOG_HOST ?? 'https://us.i.posthog.com' - suspicious endpoint us.posthog.com (telemetry) aicanvas-me-aicanvas-7862b1e/app/lib/registry-stats.ts :23
const POSTHOG_API_HOST = process.env.POSTHOG_API_HOST ?? 'https://us.posthog.com'
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 698
filesystem 35
- fs aicanvas-me-aicanvas-7862b1e/app/_lib/andromeda-pro/andromeda-registry.ts :9
import { readFileSync } from 'fs' - fs (weak) aicanvas-me-aicanvas-7862b1e/app/_lib/andromeda-pro/matrix/coverage.test.tsx :6
import { readFileSync, existsSync } from 'node:fs' - fs aicanvas-me-aicanvas-7862b1e/app/_lib/andromeda/andromeda-registry.ts :4
import { readFileSync } from 'fs' - fs aicanvas-me-aicanvas-7862b1e/app/api/andromeda-pro/image-pack/[file]/route.ts :1
import { readFile } from 'node:fs/promises' - fs aicanvas-me-aicanvas-7862b1e/app/design-systems/andromeda-pro/[component]/page.tsx :13
import { readFileSync } from 'fs' - fs aicanvas-me-aicanvas-7862b1e/app/design-systems/andromeda-pro/brain/explore/page.tsx :1
import { readFileSync } from 'node:fs' - fs aicanvas-me-aicanvas-7862b1e/app/design-systems/andromeda/brain/explore/page.tsx :1
import { readFileSync } from 'node:fs' - fs aicanvas-me-aicanvas-7862b1e/app/designsystem/page.tsx :1
import { readFileSync } from 'node:fs' - fs aicanvas-me-aicanvas-7862b1e/app/lib/available-design-systems.ts :2
import { existsSync } from 'node:fs' - fs (weak) aicanvas-me-aicanvas-7862b1e/app/r/[file]/route.test.ts :2
import { existsSync } from 'node:fs' - fs aicanvas-me-aicanvas-7862b1e/app/r/[file]/route.ts :1
import { readFile } from 'node:fs/promises' - fs aicanvas-me-aicanvas-7862b1e/lib/registry/lookup.ts :2
import { readFileSync } from 'node:fs'
show 23 more
- fs (weak) aicanvas-me-aicanvas-7862b1e/lib/theme/scope.test.ts :1
import { readFileSync, readdirSync, statSync } from 'node:fs' - fs (weak) aicanvas-me-aicanvas-7862b1e/mcp/test/offline.mjs :25
import { readFile } from 'node:fs/promises' - fs (weak) aicanvas-me-aicanvas-7862b1e/scripts/check-deps.mjs :8
import fs from 'node:fs' - fs (weak) aicanvas-me-aicanvas-7862b1e/scripts/check-no-premium-leak.mjs :27
import { readFileSync } from 'node:fs' - fs (weak) aicanvas-me-aicanvas-7862b1e/scripts/generate-component-codes.mjs :9
import { readFileSync, writeFileSync, readdirSync, statSync } from 'fs' - fs (weak) aicanvas-me-aicanvas-7862b1e/scripts/generate-registry.mjs :11
import { readFileSync, writeFileSync, mkdirSync, readdirSync, statSync, unlinkSync, existsSync } from 'fs' - fs (weak) aicanvas-me-aicanvas-7862b1e/scripts/gsc-audit.ts :16
import fs from 'fs' - fs (weak) aicanvas-me-aicanvas-7862b1e/scripts/gsc-keywords.ts :20
import fs from 'fs' - fs (weak) aicanvas-me-aicanvas-7862b1e/scripts/gsc-submit.ts :33
import fs from 'fs' - fs (weak) aicanvas-me-aicanvas-7862b1e/scripts/inject-premium.mjs :31
import { readFileSync, writeFileSync, mkdirSync, rmSync, existsSync, readdirSync, statSync, cpSync } from 'node:fs' - fs (weak) aicanvas-me-aicanvas-7862b1e/scripts/lib/imagekit.mjs :7
import { readFile } from 'fs/promises' - fs (weak) aicanvas-me-aicanvas-7862b1e/scripts/lint-components.mjs :14
import { readFileSync, readdirSync, existsSync } from 'fs' - fs (weak) aicanvas-me-aicanvas-7862b1e/scripts/lint-prompts.mjs :27
import { readFileSync, readdirSync, existsSync, writeFileSync } from 'fs' - fs (weak) aicanvas-me-aicanvas-7862b1e/scripts/lint-registry-json.mjs :19
import { readFileSync, readdirSync } from 'fs' - fs (weak) aicanvas-me-aicanvas-7862b1e/scripts/publish-premium.mjs :26
import { readFileSync, writeFileSync } from 'node:fs' - fs (weak) aicanvas-me-aicanvas-7862b1e/scripts/readme-buttons.mjs :13
import { mkdir, writeFile, readFile } from 'node:fs/promises' - fs (weak) aicanvas-me-aicanvas-7862b1e/scripts/replace-andromeda-shot.mjs :13
import { readFileSync, writeFileSync } from 'fs' - fs (weak) aicanvas-me-aicanvas-7862b1e/scripts/screenshot-andromeda-templates.mjs :18
import { mkdir, rm } from 'fs/promises' - fs (weak) aicanvas-me-aicanvas-7862b1e/scripts/screenshot-andromeda.mjs :21
import { mkdir, rm } from 'fs/promises' - fs (weak) aicanvas-me-aicanvas-7862b1e/scripts/screenshot.mjs :10
import { mkdir, rm } from 'fs/promises' - fs (weak) aicanvas-me-aicanvas-7862b1e/scripts/sync-brevo-contacts.mjs :14
import { readFileSync } from 'node:fs' - fs (weak) aicanvas-me-aicanvas-7862b1e/scripts/upload-user-avatars.mjs :14
import { readdir } from 'fs/promises' - fs (weak) aicanvas-me-aicanvas-7862b1e/scripts/validate-registry-json.ts :1
import fs from 'fs'
shell / exec 8
- shell (weak) aicanvas-me-aicanvas-7862b1e/mcp/test/client.mjs :5
import { spawn } from 'node:child_process' - shell (weak) aicanvas-me-aicanvas-7862b1e/next.config.ts :2
import { execSync } from "node:child_process"; - shell (weak) aicanvas-me-aicanvas-7862b1e/scripts/check-deps.mjs :7
import { execSync } from 'node:child_process' - shell (weak) aicanvas-me-aicanvas-7862b1e/scripts/check-no-premium-leak.mjs :26
import { execSync } from 'node:child_process' - shell (weak) aicanvas-me-aicanvas-7862b1e/scripts/generate-component-codes.mjs :11
import { execSync } from 'child_process' - shell (weak) aicanvas-me-aicanvas-7862b1e/scripts/generate-registry.mjs :13
import { execSync } from 'child_process' - shell (weak) aicanvas-me-aicanvas-7862b1e/scripts/inject-premium.mjs :33
import { execSync } from 'node:child_process' - shell (weak) aicanvas-me-aicanvas-7862b1e/scripts/publish-premium.mjs :25
import { execSync } from 'node:child_process'
network 40
- net aicanvas-me-aicanvas-7862b1e/app/_components/ShowcaseInstall.tsx :77
const res = await fetch(`/api/me/install-check?slug=${slug}`) - net aicanvas-me-aicanvas-7862b1e/app/_components/TemplatePreviewShell.tsx :702
const res = await fetch(`/api/me/install-check?slug=${templateSlug}`) - net aicanvas-me-aicanvas-7862b1e/app/_lib/useInstallToken.ts :17
fetch('/api/me/token') - net aicanvas-me-aicanvas-7862b1e/app/account/(member)/saved/SavedList.tsx :58
await fetch('/api/saved', { - net aicanvas-me-aicanvas-7862b1e/app/account/(member)/settings/AccountBilling.tsx :48
fetch('/api/me/subscription') - net aicanvas-me-aicanvas-7862b1e/app/account/auth/callback/route.ts :67
await fetch('https://api.resend.com/emails', { - net aicanvas-me-aicanvas-7862b1e/app/api/billing/cancel-confirm/route.ts :24
await fetch('https://api.resend.com/emails', { - net aicanvas-me-aicanvas-7862b1e/app/api/billing/cancel-request/route.ts :56
const cRes = await fetch(`${paddleApiBase()}/customers?email=${encodeURIComponent(email)}`, { headers }) - net aicanvas-me-aicanvas-7862b1e/app/api/billing/portal/route.ts :24
const res = await fetch( - net aicanvas-me-aicanvas-7862b1e/app/api/checkout/completed/route.ts :41
const res = await fetch(`${paddleApiBase()}/transactions/${transactionId}`, { - net aicanvas-me-aicanvas-7862b1e/app/api/contact/route.ts :94
const res = await fetch('https://api.resend.com/emails', { - net aicanvas-me-aicanvas-7862b1e/app/api/cron/reconcile-subscriptions/route.ts :59
const res = await fetch(`${paddleApiBase()}/subscriptions/${row.paddle_subscription_id}`, {
show 28 more
- net aicanvas-me-aicanvas-7862b1e/app/api/feedback/route.ts :171
const res = await fetch('https://api.resend.com/emails', { - net aicanvas-me-aicanvas-7862b1e/app/api/me/subscription/route.ts :39
const res = await fetch(`${paddleApiBase()}/subscriptions/${row.paddle_subscription_id}`, { - net aicanvas-me-aicanvas-7862b1e/app/api/webhooks/paddle/route.ts :26
const res = await fetch(`${paddleApiBase()}/customers/${customerId}`, { - net aicanvas-me-aicanvas-7862b1e/app/components/[slug]/ComponentPageView.tsx :190
const res = await fetch(`/api/component-code?slug=${slug}`) - net aicanvas-me-aicanvas-7862b1e/app/components/auth/SessionProvider.tsx :56
fetch('/api/saved', { method: 'GET' }), - net aicanvas-me-aicanvas-7862b1e/app/components/auth/SignInFormFields.tsx :59
const r = await fetch('/api/auth/login-hint', { - net aicanvas-me-aicanvas-7862b1e/app/components/billing/usePremiumStatus.ts :20
fetch('/api/me/entitlement') - net aicanvas-me-aicanvas-7862b1e/app/contact/page.tsx :40
const res = await fetch('/api/contact', { - net aicanvas-me-aicanvas-7862b1e/app/design-systems/andromeda-pro/[component]/AndromedaComponentView.tsx :126
fetch('/api/me/token') - net aicanvas-me-aicanvas-7862b1e/app/design-systems/andromeda-pro/image-pack/ImagePackProFiles.tsx :25
const res = await fetch(`/api/andromeda-pro/image-pack/${file}`) - net aicanvas-me-aicanvas-7862b1e/app/design-systems/andromeda/[component]/AndromedaComponentView.tsx :97
const res = await fetch(`/api/component-code?slug=${registrySlug}&system=andromeda`) - net aicanvas-me-aicanvas-7862b1e/app/feedback/page.tsx :141
const res = await fetch('/api/feedback', { - net aicanvas-me-aicanvas-7862b1e/app/kuendigen/page.tsx :85
const res = await fetch('/api/billing/cancel-request', { - net aicanvas-me-aicanvas-7862b1e/app/lab/60k-particles/page.tsx :97
fetch('/lab/ai-canvas-mark.webp') - net aicanvas-me-aicanvas-7862b1e/app/lib/analytics-server.ts :38
await fetch(`${POSTHOG_HOST}/i/v0/e/`, { - net aicanvas-me-aicanvas-7862b1e/app/lib/brevo.ts :43
const res = await fetch(`${BREVO_API}/contacts`, { - net aicanvas-me-aicanvas-7862b1e/app/lib/paddle/client.ts :36
fetch('/api/checkout/completed', { - net aicanvas-me-aicanvas-7862b1e/app/lib/registry-stats.ts :48
const res = await fetch(`${POSTHOG_API_HOST}/api/projects/${POSTHOG_PROJECT_ID}/query/`, { - net aicanvas-me-aicanvas-7862b1e/app/lib/track-install.ts :6
fetch('/api/history', { - net aicanvas-me-aicanvas-7862b1e/app/lib/turnstile.ts :22
const res = await fetch('https://challenges.cloudflare.com/turnstile/v0/siteverify', { - net aicanvas-me-aicanvas-7862b1e/app/mcp/InstallCards.tsx :247
fetch('/api/me/token') - net aicanvas-me-aicanvas-7862b1e/mcp/src/index.ts :151
const res = await fetch(META_URL, { headers: registryHeaders() }) - net (weak) aicanvas-me-aicanvas-7862b1e/mcp/test/offline.mjs :24
import { createServer } from 'node:http' - net (weak) aicanvas-me-aicanvas-7862b1e/scripts/gsc-audit.ts :81
const res = await fetch(sitemapUrl) - net (weak) aicanvas-me-aicanvas-7862b1e/scripts/lib/imagekit.mjs :31
const res = await fetch(UPLOAD_URL, { - net (weak) aicanvas-me-aicanvas-7862b1e/scripts/publish-premium.mjs :112
const res = await fetch(`${SITE}/api/premium/health`, { cache: 'no-store' }) - net (weak) aicanvas-me-aicanvas-7862b1e/scripts/replace-andromeda-shot.mjs :32
const listRes = await fetch('https://api.imagekit.io/v1/files?path=' + encodeURIComponent(SRC_FOLDER) + '&limit=300', { headers: { Authorization: `Basic ${auth}` } }) - net (weak) aicanvas-me-aicanvas-7862b1e/scripts/sync-brevo-contacts.mjs :61
const res = await fetch('https://api.brevo.com/v3/contacts/import', {
secrets 29
- secrets aicanvas-me-aicanvas-7862b1e/app/account/auth/callback/route.ts :47
const apiKey = process.env.RESEND_API_KEY - secrets aicanvas-me-aicanvas-7862b1e/app/api/billing/cancel-confirm/route.ts :14
const apiKey = process.env.RESEND_API_KEY - secrets aicanvas-me-aicanvas-7862b1e/app/api/billing/cancel-request/route.ts :52
const apiKey = process.env.PADDLE_API_KEY - secrets aicanvas-me-aicanvas-7862b1e/app/api/billing/portal/route.ts :13
const apiKey = process.env.PADDLE_API_KEY - secrets (weak) aicanvas-me-aicanvas-7862b1e/app/api/checkout/completed/route.test.ts :48
process.env.PADDLE_API_KEY = 'test' - secrets aicanvas-me-aicanvas-7862b1e/app/api/checkout/completed/route.ts :32
const apiKey = process.env.PADDLE_API_KEY - secrets aicanvas-me-aicanvas-7862b1e/app/api/contact/route.ts :51
const apiKey = process.env.RESEND_API_KEY - secrets aicanvas-me-aicanvas-7862b1e/app/api/cron/reconcile-subscriptions/route.ts :25
const secret = process.env.CRON_SECRET - secrets (weak) aicanvas-me-aicanvas-7862b1e/app/api/feedback/route.test.ts :46
process.env.RESEND_API_KEY = 'test-key' - secrets aicanvas-me-aicanvas-7862b1e/app/api/feedback/route.ts :102
const apiKey = process.env.RESEND_API_KEY - secrets aicanvas-me-aicanvas-7862b1e/app/api/me/subscription/route.ts :25
const apiKey = process.env.PADDLE_API_KEY - secrets aicanvas-me-aicanvas-7862b1e/app/api/webhooks/brevo/route.ts :25
const secret = process.env.BREVO_WEBHOOK_SECRET
show 17 more
- secrets aicanvas-me-aicanvas-7862b1e/app/api/webhooks/paddle/route.ts :23
const apiKey = process.env.PADDLE_API_KEY - secrets aicanvas-me-aicanvas-7862b1e/app/lib/analytics-server.ts :10
const POSTHOG_KEY = process.env.POSTHOG_KEY - secrets aicanvas-me-aicanvas-7862b1e/app/lib/billing/cancel-token.ts :15
const s = process.env.CANCEL_LINK_SECRET || process.env.SUPABASE_SECRET_KEY - secrets aicanvas-me-aicanvas-7862b1e/app/lib/brevo.ts :18
const key = process.env.BREVO_API_KEY - secrets aicanvas-me-aicanvas-7862b1e/app/lib/registry-stats.ts :45
const key = process.env.POSTHOG_PERSONAL_API_KEY - secrets aicanvas-me-aicanvas-7862b1e/app/lib/supabase/admin.ts :12
const key = process.env.SUPABASE_SECRET_KEY - secrets aicanvas-me-aicanvas-7862b1e/app/lib/turnstile.ts :13
const secret = process.env.TURNSTILE_SECRET_KEY - secrets aicanvas-me-aicanvas-7862b1e/mcp/src/index.ts :33
const USER_TOKEN = process.env.AICANVAS_TOKEN ?? '' - secrets (weak) aicanvas-me-aicanvas-7862b1e/scripts/gsc-audit.ts :36
const CREDS = process.env.GOOGLE_APPLICATION_CREDENTIALS - secrets (weak) aicanvas-me-aicanvas-7862b1e/scripts/gsc-keywords.ts :37
const CREDS = process.env.GOOGLE_APPLICATION_CREDENTIALS - secrets (weak) aicanvas-me-aicanvas-7862b1e/scripts/gsc-submit.ts :45
const CREDS = process.env.GOOGLE_APPLICATION_CREDENTIALS - secrets (weak) aicanvas-me-aicanvas-7862b1e/scripts/replace-andromeda-shot.mjs :18
const key = process.env.IMAGEKIT_PRIVATE_KEY - secrets (weak) aicanvas-me-aicanvas-7862b1e/scripts/screenshot-andromeda-templates.mjs :43
const IMAGEKIT_PRIVATE = process.env.IMAGEKIT_PRIVATE_KEY - secrets (weak) aicanvas-me-aicanvas-7862b1e/scripts/screenshot-andromeda.mjs :49
const IMAGEKIT_PRIVATE = process.env.IMAGEKIT_PRIVATE_KEY - secrets (weak) aicanvas-me-aicanvas-7862b1e/scripts/screenshot.mjs :107
const IMAGEKIT_PRIVATE = process.env.IMAGEKIT_PRIVATE_KEY - secrets (weak) aicanvas-me-aicanvas-7862b1e/scripts/sync-brevo-contacts.mjs :22
const { NEXT_PUBLIC_SUPABASE_URL, SUPABASE_SECRET_KEY, BREVO_API_KEY, BREVO_LIST_ID } = process.env - secrets (weak) aicanvas-me-aicanvas-7862b1e/scripts/upload-user-avatars.mjs :18
if (process.env.IMAGEKIT_PRIVATE_KEY === undefined) {
tool registrations 9
- list_categories aicanvas-me-aicanvas-7862b1e/mcp/src/index.ts :286
- list_components aicanvas-me-aicanvas-7862b1e/mcp/src/index.ts :320
- search_components aicanvas-me-aicanvas-7862b1e/mcp/src/index.ts :390
- get_component aicanvas-me-aicanvas-7862b1e/mcp/src/index.ts :463
- get_install_command aicanvas-me-aicanvas-7862b1e/mcp/src/index.ts :560
- list_systems aicanvas-me-aicanvas-7862b1e/mcp/src/index.ts :631
- get_system aicanvas-me-aicanvas-7862b1e/mcp/src/index.ts :671
- list_templates aicanvas-me-aicanvas-7862b1e/mcp/src/index.ts :744
- get_template aicanvas-me-aicanvas-7862b1e/mcp/src/index.ts :803
install hooks 2
- prepublishOnly aicanvas-me-aicanvas-7862b1e/mcp/package.json :54
npm run build - prepare aicanvas-me-aicanvas-7862b1e/package.json :7
git config core.hooksPath .githooks || true
declared dependencies 45
- @carbon/icons-react@^11.78.0
- @paddle/paddle-js@^1.6.4
- @phosphor-icons/react@^2.1.10
- @radix-ui/react-slot@^1.2.4
- @react-three/drei@^10.7.7
- @react-three/fiber@^9.5.0
- @supabase/ssr@^0.10.3
- @supabase/supabase-js@^2.105.4
- @types/matter-js@^0.20.2
- @types/three@^0.183.1
- @vercel/analytics@^2.0.1
- @vercel/speed-insights@^2.0.0
show 28 more
- class-variance-authority@^0.7.1
- clsx@^2.1.1
- fflate@^0.8.3
- framer-motion@^12.38.0
- geist@^1.7.0
- lucide-react@^1.7.0
- matter-js@^0.20.0
- mediabunny@^1.45.2
- next@16.2.9
- qrcode.react@^4.2.0
- react@19.2.4
- react-colorful@^5.7.0
- react-dom@19.2.4
- recharts@^3.8.1
- server-only@^0.0.1
- shiki@^4.0.2
- tailwind-merge@^3.5.0
- three@^0.183.2
- @tailwindcss/postcss@^4
- @types/node@^20
- @types/react@^19
- @types/react-dom@^19
- babel-plugin-react-compiler@1.0.0
- eslint@^9
- eslint-config-next@16.2.9
- fast-xml-parser@^5.7.3
- googleapis@^171.4.0
- jiti@^2.6.1
5 more not shown — this panel samples each group; the count above is the real total.
obfuscation 1
- dynamic require()/import() aicanvas-me-aicanvas-7862b1e/scripts/lint-prompts.mjs :164
const mod = await import('data:text/javascript;base64,' + Buffer.from(src).toString('base64'))