1<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/chunks/0f3cb0e3fd135551.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/chunks/e589eb1c8c88739f.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/5a277da6910bd95f.js"/>
1<script src="/_next/static/chunks/82abf2d65f5428ae.js" async=""></script>
1<script src="/_next/static/chunks/aee6c7720838f8a2.js" async=""></script>
1<script src="/_next/static/chunks/30fbcf50b504a889.js" async=""></script>
1<script src="/_next/static/chunks/turbopack-1328fec1fa3f7117.js" async=""></script>
1<script src="/_next/static/chunks/ff1a16fafef87110.js" async=""></script>
1<script src="/_next/static/chunks/a2dfb6fc5208ab9b.js" async=""></script>
1<script src="/_next/static/chunks/843abbd6724a173c.js" async=""></script>
1<script src="/_next/static/chunks/5048d5870c970c2a.js" async=""></script>
1<script src="/_next/static/chunks/43019774194bd974.js" async=""></script>
1<script src="/_next/static/chunks/e029c1c13af548f1.js" async=""></script>
1<script src="/_next/static/chunks/bf722bdf67d56b19.js" async=""></script>
1<script src="/_next/static/chunks/5acbcef3d48dd581.js" async=""></script>
1<script src="/_next/static/chunks/b3aede28ac98903b.js" async=""></script>
vendor: 66 bytes, line 1
1<script async="" src="https://www.googletagmanager.com/gtag/js?id=
1G-8R0LQ120QY
vendor: 11 bytes, line 1
1"></script>
1<meta name="next-size-adjust" content=""/><title>Synapse: Enterprise AI Platform</title><meta name="description" content="Enterprise-grade AI platform designed to unify data, automate intelligence, and connect your business."/><link rel="icon" href="/favicon.ico?favicon.78f02ac7.ico" sizes="256x256" type="image/x-icon"/>
1<script>window.__FIREBASE_CONFIG__={"apiKey":"AIzaSyAs24Pez3u-SLNcjpPskhTnlCliFcBiCHg","authDomain":"synapse-481005.firebaseapp.com","projectId":"synapse-481005","appId":"1:747962208988:web:5253592cc9544047175a19"};window.__API_URL__="";</script>
1<script> 2 try { 3 const t = localStorage.getItem('synapse-theme'); 4 if (t) document.documentElement.setAttribute('data-theme', t); 5 } catch(e) {} 6 </script>
6<script> 7
vendor: 169 bytes, lines 7-10
7window.dataLayer = window.dataLayer || []; 8 function gtag(){dataLayer.push(arguments);} 9 gtag('js', new Date()); 10 gtag('config', '
10G-8R0LQ120QY
vendor: 16 bytes, lines 10-11
10'); 11
11</script>
11<script src="/_next/static/chunks/a6dad97d9634a72d.js" noModule=""></script>
11</head><body class="space_grotesk_25f324d0-module___WK4EG__variable inter_dfa45f92-module__ig9XPW__variable bai_jamjuree_5dad350c-module__aqmmjq__variable antialiased"><div hidden=""><!--$--><!--/$--></div><main class="min-h-screen bg-[var(--background)]" style="overflow-x:clip"><nav class="fixed top-0 left-0 w-full z-50 transition-all duration-300 bg-transparent" style="opacity:0;transform:translateY(-20px)"><div class="relative mx-auto max-w-[1600px] grid grid-cols-[auto_1fr_auto] items-center h-14 sm:h-16 lg:h-20 px-4 sm:px-6 md:px-8 lg:px-10 xl:px-16 2xl:px-[140px] gap-2 min-w-0"><a class="relative z-10 flex items-center shrink-0 min-w-0" href="/"><div class="flex items-center gap-2.5 "><img alt="Synapse" width="225" height="48" decoding="async" data-nimg="1" class="h-10 w-auto" style="color:transparent" src="/images/synapse-logo-light.svg"/></div></a><div class="hidden lg:flex items-center justify-center min-w-0 overflow-hidden"><div class="flex items-center gap-5 xl:gap-7 2xl:gap-10"><a class="flex items-center gap-1.5 sm:gap-2 font-[family-name:var(--font-inter)] font-semibold text-sm xl:text-base 2xl:text-lg text-[var(--text-primary)] opacity-70 hover:opacity-100 transition-opacity duration-200 whitespace-nowrap" href="/"><svg width="6" height="6" viewBox="0 0 6 6" fill="currentColor" aria-hidden="true"><polygon points="3,0 6,3 3,6 0,3"></polygon></svg>Home</a><div class="relative"><button class="flex items-center gap-1.5 sm:gap-2 font-[family-name:var(--font-inter)] font-semibold text-sm xl:text-base 2xl:text-lg text-[var(--text-primary)] opacity-70 hover:opacity-100 transition-opacity duration-200 whitespace-nowrap"><svg width="6" height="6" viewBox="0 0 6 6" fill="currentColor" aria-hidden="true"><polygon points="3,0 6,3 3,6 0,3"></polygon></svg>Products<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down w-3 h-3 transition-transform duration-200" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button></div><a class="flex items-center gap-1.5 sm:gap-2 font-[family-name:var(--font-inter)] font-semibold text-sm xl:text-base 2xl:text-lg text-[var(--text-primary)] opacity-70 hover:opacity-100 transition-opacity duration-200 whitespace-nowrap" href="/pricing"><svg width="6" height="6" viewBox="0 0 6 6" fill="currentColor" aria-hidden="true"><polygon points="3,0 6,3 3,6 0,3"></polygon></svg>Pricing</a><a class="flex items-center gap-1.5 sm:gap-2 font-[family-name:var(--font-inter)] font-semibold text-sm xl:text-base 2xl:text-lg text-[var(--text-primary)] opacity-70 hover:opacity-100 transition-opacity duration-200 whitespace-nowrap" href="/usecases"><svg width="6" height="6" viewBox="0 0 6 6" fill="currentColor" aria-hidden="true"><polygon points="3,0 6,3 3,6 0,3"></polygon></svg>Usecases</a><a class="flex items-center gap-1.5 sm:gap-2 font-[family-name:var(--font-inter)] font-semibold text-sm xl:text-base 2xl:text-lg text-[var(--text-primary)] opacity-70 hover:opacity-100 transition-opacity duration-200 whitespace-nowrap" href="/docs"><svg width="6" height="6" viewBox="0 0 6 6" fill="currentColor" aria-hidden="true"><polygon points="3,0 6,3 3,6 0,3"></polygon></svg>Docs</a></div></div><div class="relative z-10 hidden lg:flex items-center gap-2 xl:gap-3 2xl:gap-4 justify-end min-w-0 overflow-hidden"><a href="https://github.com/2ndbrainlabs-ai/synapse-cli-ts" target="_blank" rel="noopener noreferrer" aria-label="View synapse-cli on GitHub" class="relative w-10 h-10 rounded-full flex items-center justify-center bg-[var(--card-bg)] border border-[var(--btn-outline-border)] hover:bg-[var(--card-bg-alt)] transition-colors duration-300"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-github w-5 h-5 text-[var(--text-dim)]" aria-hidden="true"><path d="M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4"></path><path d="M9 18c-4.51 2-5-2-7-2"></path></svg></a><button aria-pressed="true" aria-label="Toggle theme" class="relative w-10 h-10 rounded-full flex items-center justify-center bg-[var(--card-bg)] border border-[var(--btn-outline-border)] hover:bg-[var(--card-bg-alt)] transition-colors duration-300"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sun w-5 h-5 text-[var(--text-dim)]" aria-hidden="true"><circle cx="12" cy="12" r="4"></circle><path d="M12 2v2"></path><path d="M12 20v2"></path><path d="m4.93 4.93 1.41 1.41"></path><path d="m17.66 17.66 1.41 1.41"></path><path d="M2 12h2"></path><path d="M20 12h2"></path><path d="m6.34 17.66-1.41 1.41"></path><path d="m19.07 4.93-1.41 1.41"></path></svg><span class="sr-only">Toggle theme</span></button><div class="flex items-center gap-2"><button class="inline-flex items-center justify-center rounded-full border-2 border-[var(--primary)] bg-transparent px-4 xl:px-5 py-1.5 xl:py-2 font-[family-name:var
11(--font-inter)] font-medium text-sm xl:text-base text-[var(--text-primary)] transition-all duration-300 ease-out hover:-translate-y-0.5 hover:bg-[var(--primary)] hover:text-white hover:shadow-lg hover:shadow-[var(--primary)]/35 active:translate-y-0 active:scale-[0.98] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--primary)] focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--background)] whitespace-nowrap">Sign up</button><button class="inline-flex items-center justify-center rounded-full bg-transparent px-4 xl:px-5 py-1.5 xl:py-2 font-[family-name:var(--font-inter)] font-medium text-sm xl:text-base text-[var(--text-secondary)] hover:text-[var(--text-primary)] transition-colors whitespace-nowrap">Login</button></div></div><div class="flex lg:hidden items-center gap-3"><a href="https://github.com/2ndbrainlabs-ai/synapse-cli-ts" target="_blank" rel="noopener noreferrer" aria-label="View synapse-cli on GitHub" class="relative w-10 h-10 rounded-full flex items-center justify-center bg-[var(--card-bg)] border border-[var(--btn-outline-border)] hover:bg-[var(--card-bg-alt)] transition-colors duration-300"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-github w-5 h-5 text-[var(--text-dim)]" aria-hidden="true"><path d="M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4"></path><path d="M9 18c-4.51 2-5-2-7-2"></path></svg></a><button aria-pressed="true" aria-label="Toggle theme" class="relative w-10 h-10 rounded-full flex items-center justify-center bg-[var(--card-bg)] border border-[var(--btn-outline-border)] hover:bg-[var(--card-bg-alt)] transition-colors duration-300"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sun w-5 h-5 text-[var(--text-dim)]" aria-hidden="true"><circle cx="12" cy="12" r="4"></circle><path d="M12 2v2"></path><path d="M12 20v2"></path><path d="m4.93 4.93 1.41 1.41"></path><path d="m17.66 17.66 1.41 1.41"></path><path d="M2 12h2"></path><path d="M20 12h2"></path><path d="m6.34 17.66-1.41 1.41"></path><path d="m19.07 4.93-1.41 1.41"></path></svg><span class="sr-only">Toggle theme</span></button><button aria-label="Open menu" class="w-10 h-10 flex items-center justify-center rounded-lg bg-[var(--card-bg)] border border-[var(--border-color)]"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-menu w-5 h-5 text-[var(--text-primary)]" aria-hidden="true"><path d="M4 5h16"></path><path d="M4 12h16"></path><path d="M4 19h16"></path></svg></button></div></div></nav><div class="relative z-20 w-full border-b border-[var(--border-color)] mt-14 sm:mt-16 lg:mt-20" style="background:linear-gradient(90deg, transparent, rgba(47,146,243,0.05) 35%, rgba(86,174,255,0.07) 65%, transparent);opacity:0;transform:translateY(-8px)"><div class="max-w-[1600px] mx-auto px-4 sm:px-6 py-2.5 flex flex-wrap items-center justify-center gap-3 sm:gap-5"><div class="flex items-center gap-1.5"><div class="w-1.5 h-1.5 rounded-full bg-[var(--primary-blue)]" style="box-shadow:0 0 6px rgba(47,146,243,0.8)"></div><span class="text-[11px] font-semibold uppercase tracking-widest text-[var(--text-muted)] font-[family-name:var(--font-inter)]">Language Support</span></div><div class="hidden sm:block w-px h-5 bg-[var(--border-color)]"></div><div class="flex items-center gap-1.5 px-3 py-1 rounded-full border" style="background:rgba(47, 146, 243, 0.1);border-color:rgba(86, 174, 255, 0.38)"><span class="text-sm leading-none">ð</span><span class="text-xs font-semibold text-[var(--primary-blue-bright)] font-[family-name:var
11(--font-inter)]">Python</span><div class="w-px h-3 mx-0.5 bg-[var(--primary-blue)]/30"></div><svg class="w-3 h-3 shrink-0 text-[var(--primary-blue-bright)]" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" clip-rule="evenodd"></path></svg><span class="text-[10px] font-medium text-[var(--primary-blue-bright)] font-[family-name:var(--font-inter)] opacity-90">Supported</span></div><div class="flex items-center gap-2 flex-nowrap"><span class="text-[var(--text-muted)] text-sm select-none leading-none">·</span><span class="text-[11px] font-medium text-[var(--text-muted)] font-[family-name:var(--font-inter)] whitespace-nowrap">Coming soon:</span><div class="relative overflow-hidden flex items-center gap-1.5 px-3 py-1 rounded-full border shrink-0" style="background:rgba(47,146,243,0.06);border-color:rgba(86,174,255,0.28)"><div class="absolute inset-0 -skew-x-12 pointer-events-none" style="background:linear-gradient(90deg, transparent 0%, rgba(255,220,100,0.32) 50%, transparent 100%)"></div><span class="text-sm leading-none relative z-10">â</span><span class="text-xs font-semibold text-[var(--text-secondary)] font-[family-name:var(--font-inter)] relative z-10">Java</span><span class="text-[10px] font-bold text-[var(--primary-blue)] relative z-10 leading-none">â¦</span></div><div class="relative overflow-hidden flex items-center gap-1.5 px-3 py-1 rounded-full border shrink-0" style="background:rgba(47,146,243,0.06);border-color:rgba(86,174,255,0.28)"><div class="absolute inset-0 -skew-x-12 pointer-events-none" style="background:linear-gradient(90deg, transparent 0%, rgba(255,220,100,0.32) 50%, transparent 100%)"></div><span class="text-sm leading-none relative z-10">ð·</span><span class="text-xs font-semibold text-[var(--text-secondary)] font-[family-name:var(--font-inter)] relative z-10">.NET</span><span class="text-[10px] font-bold text-[var(--primary-blue)] relative z-10 leading-none">â¦</span></div></div></div></div><div class="fixed inset-0 pointer-events-none overflow-hidden z-0"><div class="absolute -top-40 -left-40 rounded-full opacity-[0.12]" style="width:min(600px, 50vw);height:min(600px, 50vw);background:radial-gradient(circle, #2F92F3 0%, transparent 70%);filter:blur(80px);animation:float 8s ease-in-out infinite"></div><div class="absolute top-1/3 -right-32 rounded-full opacity-[0.10]" style="width:min(500px, 45vw);height:min(500px, 45vw);background:radial-gradient(circle, #00509E 0%, transparent 70%);filter:blur(100px);animation:float 10s ease-in-out infinite 2s"></div><div class="absolute -bottom-40 left-1/3 rounded-full opacity-[0.08]" style="width:min(700px, 55vw);height:min(700px, 55vw);background:radial-gradient(circle, #56AEFF 0%, transparent 70%);filter:blur(120px);animation:float 12s ease-in-out infinite 4s"></div><div class="absolute top-2/3 left-1/4 rounded-full opacity-[0.06]" style="width:min(400px, 40vw);height:min(400px, 40vw);background:radial-gradient(circle, #2F92F3 0%, transparent 70%);filter:blur(90px);animation:float 9s ease-in-out infinite 1s"></div></div><section class="relative z-10 pt-16 sm:pt-20 md:pt-24 pb-16 px-4 sm:px-6 md:px-10 lg:px-[140px]"><div class="max-w-[1600px] mx-auto text-center"><div style="opacity:0;transform:translateY(30px)"><div class="inline-flex items-center gap-2 mb-6"><span class="inline-flex items-center gap-1 px-2.5 py-0.5 rounded-full text-xs font-medium border bg-[var(--primary-blue)]/10 text-[var(--primary-blue)] border-[var(--primary-blue)]/20">v0.1.4</span><span class="inline-flex items-center gap-1 px-2.5 py-0.5 rounded-full text-xs font-medium border bg-[var(--primary-blue)]/10 text-[var(--primary-blue)] border-[var(--primary-blue)]/20">Node.js 18+</span></div><h1 class="font-[family-name:var(--font-space-grotesk)] font-bold text-3xl sm:text-4xl md:text-5xl lg:text-6xl xl:text-7xl mb-6 leading-[1.1]"><span class="text-[var(--text-primary)]">Documentation</span></h1><p class="font-[family-name:var(--font-inter)] text-base sm:text-lg md:text-xl text-[var(--text-secondary)] max-w-2xl mx-auto mb-8 leading-relaxed">Automatically analyze any codebase and generate production-ready<!-- --> <span class="text-[var(--primary-blue-bright)] font-medium">MCP servers</span>, bridging your existing code with AI tools like Claude Desktop, Windsurf, Cursor and more.</p><div class="flex justify-center mb-8"><div class="relative inline-flex"><div class="absolute inset-0 rounded-full bg-white"></div><a href="https://github.com/2ndbrainlabs-ai/synapse-cli-ts" target="_blank" rel="noopener noreferrer" class="relative inline-flex items-center gap-2 px-5 py-2 rounded-full bg-[#1a1a1a] border border-white/20 font-[family-name:var
11(--font-inter)] font-medium text-sm text-white hover:border-white/40 hover:bg-[#242424] transition-all duration-300 overflow-hidden z-10"><div class="absolute inset-0 bg-gradient-to-r from-transparent via-white/15 to-transparent -skew-x-12"></div><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-github w-4 h-4 relative z-10" aria-hidden="true"><path d="M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4"></path><path d="M9 18c-4.51 2-5-2-7-2"></path></svg><span class="relative z-10">GitHub</span></a></div></div><div class="max-w-xl mx-auto mb-10"><div class="relative flex items-center gap-3 backdrop-blur-sm bg-[var(--card-bg)]/60 border border-[var(--border-color)] focus-within:border-[var(--primary-blue)] focus-within:ring-2 focus-within:ring-[var(--primary-blue)]/20 rounded-xl px-4 py-3 transition-all duration-200"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-search w-5 h-5 text-[var(--text-muted)] shrink-0" aria-hidden="true"><path d="m21 21-4.34-4.34"></path><circle cx="11" cy="11" r="8"></circle></svg><input type="text" placeholder="Search documentation..." class="flex-1 bg-transparent outline-none font-[family-name:var(--font-inter)] text-sm text-[var(--text-primary)] placeholder:text-[var(--text-muted)]" value=""/><kbd class="hidden sm:flex items-center gap-1 px-2 py-1 rounded-md bg-[var(--card-bg-alt)] border border-[var(--border-color)] text-xs text-[var(--text-muted)] font-mono shrink-0">âK</kbd></div></div><div class="flex flex-wrap items-center justify-center gap-2"><button class="inline-flex items-center gap-1.5 px-4 py-1.5 rounded-full backdrop-blur-sm bg-[var(--card-bg)]/60 border border-[var(--border-color)] hover:border-[var(--primary-blue)]/50 hover:bg-[var(--primary-blue)]/5 text-sm font-[family-name:var(--font-inter)] text-[var(--text-secondary)] hover:text-[var(--primary-blue)] transition-all duration-200"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-zap w-4 h-4" aria-hidden="true"><path d="M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z"></path></svg>Introduction<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right w-3 h-3" aria-hidden="true"><path d="m9 18 6-6-6-6"></path></svg></button><button class="inline-flex items-center gap-1.5 px-4 py-1.5 rounded-full backdrop-blur-sm bg-[var(--card-bg)]/60 border border-[var(--border-color)] hover:border-[var(--primary-blue)]/50 hover:bg-[var(--primary-blue)]/5 text-sm font-[family-name:var(--font-inter)] text-[var(--text-secondary)] hover:text-[var(--primary-blue)] transition-all duration-200"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-package w-4 h-4" aria-hidden="true"><path d="M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z"></path><path d="M12 22V12"></path><polyline points="3.29 7 12 12 20.71 7"></polyline><path d="m7.5 4.27 9 5.15"></path></svg>Installation<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right w-3 h-3" aria-hidden="true"><path d="m9 18 6-6-6-6"></path></svg></button><button class="inline-flex items-center gap-1.5 px-4 py-1.5 rounded-full backdrop-blur-sm bg-[var(--card-bg)]/60 border border-[var(--border-color)] hover:border-[var(--primary-blue)]/50 hover:bg-[var(--primary-blue)]/5 text-sm font-[family-name:var
11(--font-inter)] text-[var(--text-secondary)] hover:text-[var(--primary-blue)] transition-all duration-200"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-circle-play w-4 h-4" aria-hidden="true"><path d="M9 9.003a1 1 0 0 1 1.517-.859l4.997 2.997a1 1 0 0 1 0 1.718l-4.997 2.997A1 1 0 0 1 9 14.996z"></path><circle cx="12" cy="12" r="10"></circle></svg>Quick Start<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right w-3 h-3" aria-hidden="true"><path d="m9 18 6-6-6-6"></path></svg></button><button class="inline-flex items-center gap-1.5 px-4 py-1.5 rounded-full backdrop-blur-sm bg-[var(--card-bg)]/60 border border-[var(--border-color)] hover:border-[var(--primary-blue)]/50 hover:bg-[var(--primary-blue)]/5 text-sm font-[family-name:var(--font-inter)] text-[var(--text-secondary)] hover:text-[var(--primary-blue)] transition-all duration-200"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-terminal w-4 h-4" aria-hidden="true"><path d="M12 19h8"></path><path d="m4 17 6-6-6-6"></path></svg>Commands<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right w-3 h-3" aria-hidden="true"><path d="m9 18 6-6-6-6"></path></svg></button><button class="inline-flex items-center gap-1.5 px-4 py-1.5 rounded-full backdrop-blur-sm bg-[var(--card-bg)]/60 border border-[var(--border-color)] hover:border-[var(--primary-blue)]/50 hover:bg-[var(--primary-blue)]/5 text-sm font-[family-name:var(--font-inter)] text-[var(--text-secondary)] hover:text-[var(--primary-blue)] transition-all duration-200"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings w-4 h-4" aria-hidden="true"><path d="M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915"></path><circle cx="12" cy="12" r="3"></circle></svg>Configuration<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right w-3 h-3" aria-hidden="true"><path d="m9 18 6-6-6-6"></path></svg></button><button class="inline-flex items-center gap-1.5 px-4 py-1.5 rounded-full backdrop-blur-sm bg-[var(--card-bg)]/60 border border-[var(--border-color)] hover:border-[var(--primary-blue)]/50 hover:bg-[var(--primary-blue)]/5 text-sm font-[family-name:var(--font-inter)] text-[var(--text-secondary)] hover:text-[var(--primary-blue)] transition-all duration-200"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-cpu w-4 h-4" aria-hidden="true"><path d="M12 20v2"></path><path d="M12 2v2"></path><path d="M17 20v2"></path><path d="M17 2v2"></path><path d="M2 12h2"></path><path d="M2 17h2"></path><path d="M2 7h2"></path><path d="M20 12h2"></path><path d="M20 17h2"></path><path d="M20 7h2"></path><path d="M7 20v2"></path><path d="M7 2v2"></path><rect x="4" y="4" width="16" height="16" rx="2"></rect><rect x="8" y="8" width="8" height="8" rx="1"></rect></svg>LLM Providers<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right w-3 h-3" aria-hidden="true"><path d="m9 18 6-6-6-6"></path></svg></button><button class="inline-flex items-center gap-1.5 px-4 py-1.5 rounded-full backdrop-blur-sm bg-[var(--card-bg)]/60 border border-[var(--border-color)] hover:border-[var(--primary-blue)]/50 hover:bg-[var(--primary-blue)]/5 text-sm font-[family-name:var
11(--font-inter)] text-[var(--text-secondary)] hover:text-[var(--primary-blue)] transition-all duration-200"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-lock w-4 h-4" aria-hidden="true"><rect width="18" height="11" x="3" y="11" rx="2" ry="2"></rect><path d="M7 11V7a5 5 0 0 1 10 0v4"></path></svg>Secrets & Variables<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right w-3 h-3" aria-hidden="true"><path d="m9 18 6-6-6-6"></path></svg></button><button class="inline-flex items-center gap-1.5 px-4 py-1.5 rounded-full backdrop-blur-sm bg-[var(--card-bg)]/60 border border-[var(--border-color)] hover:border-[var(--primary-blue)]/50 hover:bg-[var(--primary-blue)]/5 text-sm font-[family-name:var(--font-inter)] text-[var(--text-secondary)] hover:text-[var(--primary-blue)] transition-all duration-200"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-plug w-4 h-4" aria-hidden="true"><path d="M12 22v-5"></path><path d="M15 8V2"></path><path d="M17 8a1 1 0 0 1 1 1v4a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1z"></path><path d="M9 8V2"></path></svg>Connect to AI Tools<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right w-3 h-3" aria-hidden="true"><path d="m9 18 6-6-6-6"></path></svg></button></div></div></div></section><div class="lg:hidden sticky top-14 sm:top-16 z-40 px-4 sm:px-6 mb-4"><div class="backdrop-blur-md bg-[var(--card-bg)]/90 border border-[var(--border-color)] rounded-xl overflow-hidden"><button class="w-full flex items-center justify-between px-4 py-3 text-sm"><span class="flex items-center gap-2 text-[var(--text-muted)] font-[family-name:var(--font-inter)]"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right w-4 h-4 transition-transform duration-200" aria-hidden="true"><path d="m9 18 6-6-6-6"></path></svg>On this page</span><span class="text-[var(--primary-blue)] font-medium font-[family-name:var(--font-inter)] truncate max-w-[60%] text-right">Introduction</span></button></div></div><div class="relative z-10 max-w-[1600px] mx-auto px-4 sm:px-6 md:px-10 lg:px-[140px] pb-32"><div class="flex gap-10 lg:gap-16"><aside class="hidden lg:block w-56 xl:w-64 shrink-0"><div class="sticky top-28"><div class="backdrop-blur-md bg-[var(--card-bg)]/60 border border-[var(--border-color)] rounded-2xl p-4 max-h-[calc(100vh-8rem)] overflow-y-auto"><p class="text-xs font-semibold font-[family-name:var(--font-inter)] text-[var(--text-muted)] uppercase tracking-widest mb-4 px-2">On this page</p><nav class="space-y-0.5"><div><button class="w-full flex items-center gap-2.5 px-3 py-2 rounded-lg text-sm font-[family-name:var(--font-inter)] font-medium transition-all duration-150 text-left bg-[var(--primary-blue)]/10 text-[var(--primary-blue)] border-l-2 border-[var(--primary-blue)] rounded-l-none pl-[10px]"><span class="text-[var(--primary-blue)]"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-zap w-4 h-4" aria-hidden="true"><path d="M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z"></path></svg></span>Introduction</button></div><div><button class="w-full flex items-center gap-2.5 px-3 py-2 rounded-lg text-sm font-[family-name:var
11(--font-inter)] font-medium transition-all duration-150 text-left text-[var(--text-secondary)] hover:bg-[var(--card-bg-alt)] hover:text-[var(--text-primary)]"><span class="text-[var(--text-muted)]"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-package w-4 h-4" aria-hidden="true"><path d="M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z"></path><path d="M12 22V12"></path><polyline points="3.29 7 12 12 20.71 7"></polyline><path d="m7.5 4.27 9 5.15"></path></svg></span>Installation</button></div><div><button class="w-full flex items-center gap-2.5 px-3 py-2 rounded-lg text-sm font-[family-name:var(--font-inter)] font-medium transition-all duration-150 text-left text-[var(--text-secondary)] hover:bg-[var(--card-bg-alt)] hover:text-[var(--text-primary)]"><span class="text-[var(--text-muted)]"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-circle-play w-4 h-4" aria-hidden="true"><path d="M9 9.003a1 1 0 0 1 1.517-.859l4.997 2.997a1 1 0 0 1 0 1.718l-4.997 2.997A1 1 0 0 1 9 14.996z"></path><circle cx="12" cy="12" r="10"></circle></svg></span>Quick Start</button></div><div><button class="w-full flex items-center gap-2.5 px-3 py-2 rounded-lg text-sm font-[family-name:var(--font-inter)] font-medium transition-all duration-150 text-left text-[var(--text-secondary)] hover:bg-[var(--card-bg-alt)] hover:text-[var(--text-primary)]"><span class="text-[var(--text-muted)]"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-terminal w-4 h-4" aria-hidden="true"><path d="M12 19h8"></path><path d="m4 17 6-6-6-6"></path></svg></span>Commands</button></div><div><button class="w-full flex items-center gap-2.5 px-3 py-2 rounded-lg text-sm font-[family-name:var(--font-inter)] font-medium transition-all duration-150 text-left text-[var(--text-secondary)] hover:bg-[var(--card-bg-alt)] hover:text-[var(--text-primary)]"><span class="text-[var(--text-muted)]"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings w-4 h-4" aria-hidden="true"><path d="M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915"></path><circle cx="12" cy="12" r="3"></circle></svg></span>Configuration</button></div><div><button class="w-full flex items-center gap-2.5 px-3 py-2 rounded-lg text-sm font-[family-name:var(--font-inter)] font-medium transition-all duration-150 text-left text-[var(--text-secondary)] hover:bg-[var(--card-bg-alt)] hover:text-[var(--text-primary)]"><span class="text-[var(--text-muted)]"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-cpu w-4 h-4" aria-hidden="true"><path d="M12 20v2"></path><path d="M12 2v2"></path><path d="M17 20v2"></path><path d="M17 2v2"></path><path d="M2 12h2"></path><path d="M2 17h2"></path><path d="M2 7h2"></path><path d="M20 12h2"></path><path d="M20 17h2"></path><path d="M20 7h2"></path><path d="M7 20v2"></path><path d="M7 2v2"></path><rect x="4" y="4" width="16" height="16" rx="2"></rect><rect x="8" y="8" width="8" height="8" rx="1"></rect></svg></span>LLM Providers</button></div><div><button class="w-full flex items-center gap-2.5 px-3 py-2 rounded-lg text-sm font-[family-name:var
11(--font-inter)] font-medium transition-all duration-150 text-left text-[var(--text-secondary)] hover:bg-[var(--card-bg-alt)] hover:text-[var(--text-primary)]"><span class="text-[var(--text-muted)]"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-lock w-4 h-4" aria-hidden="true"><rect width="18" height="11" x="3" y="11" rx="2" ry="2"></rect><path d="M7 11V7a5 5 0 0 1 10 0v4"></path></svg></span>Secrets & Variables</button></div><div><button class="w-full flex items-center gap-2.5 px-3 py-2 rounded-lg text-sm font-[family-name:var(--font-inter)] font-medium transition-all duration-150 text-left text-[var(--text-secondary)] hover:bg-[var(--card-bg-alt)] hover:text-[var(--text-primary)]"><span class="text-[var(--text-muted)]"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-plug w-4 h-4" aria-hidden="true"><path d="M12 22v-5"></path><path d="M15 8V2"></path><path d="M17 8a1 1 0 0 1 1 1v4a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1z"></path><path d="M9 8V2"></path></svg></span>Connect to AI Tools</button></div></nav></div></div></aside><div class="flex-1 min-w-0 space-y-8 sm:space-y-10 lg:space-y-12"><div class="backdrop-blur-md bg-[var(--card-bg)]/70 border border-[var(--border-color)] rounded-2xl p-6 lg:p-8 " style="opacity:0;transform:translateY(24px)"><div id="introduction" class="scroll-mt-28"><div class="flex items-center gap-3 mb-6"><div class="w-10 h-10 rounded-xl bg-[var(--primary-blue)]/10 border border-[var(--primary-blue)]/20 flex items-center justify-center"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-zap w-5 h-5 text-[var(--primary-blue)]" aria-hidden="true"><path d="M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z"></path></svg></div><h2 class="font-[family-name:var(--font-space-grotesk)] font-bold text-xl sm:text-2xl lg:text-3xl bg-gradient-to-r from-[var(--primary-blue)] to-[var(--primary-blue-bright)] bg-clip-text text-transparent">Introduction</h2></div><p class="font-[family-name:var(--font-inter)] text-[var(--text-secondary)] text-base leading-relaxed mb-8"><strong class="text-[var(--text-primary)]">Synapse</strong> is the context infrastructure that governs how AI accesses enterprise systems and knowledge, so every user interaction is informed by the full context of the business.</p><div class="grid sm:grid-cols-3 gap-4 mb-8"><div class="p-4 rounded-xl bg-[var(--card-bg-alt)] border border-[var(--border-color)] hover:border-[var(--primary-blue)]/30 transition-colors"><span class="text-2xl mb-2 block">ð</span><p class="font-[family-name:var(--font-space-grotesk)] font-semibold text-sm text-[var(--text-primary)] mb-1">Instant MCP Servers</p><p class="font-[family-name:var(--font-inter)] text-xs text-[var(--text-muted)] leading-relaxed">Point Synapse at any codebase and get a production-ready MCP server with a single command, no manual configuration.</p></div><div class="p-4 rounded-xl bg-[var(--card-bg-alt)] border border-[var(--border-color)] hover:border-[var(--primary-blue)]/30 transition-colors"><span class="text-2xl mb-2 block">ð¤</span><p class="font-[family-name:var(--font-space-grotesk)] font-semibold text-sm text-[var(--text-primary)] mb-1">Works With Your AI Tools</p><p class="font-[family-name:var(--font-inter)] text-xs text-[var(--text-muted)] leading-relaxed">Native compatibility with Claude, Cursor, Windsurf, and any MCP-compliant AI assistant.</p></div><div class="p-4 rounded-xl bg-[var(--card-bg-alt)] border border-[var(--border-color)] hover:border-[var(--primary-blue)]/30 transition-colors"><span class="text-2xl mb-2 block">ð</span>
11<p class="font-[family-name:var(--font-space-grotesk)] font-semibold text-sm text-[var(--text-primary)] mb-1">Secure by Default</p><p class="font-[family-name:var(--font-inter)] text-xs text-[var(--text-muted)] leading-relaxed">API keys are encrypted and scoped per project. Secrets stay local, never sent to the AI.</p></div></div><div class="rounded-xl border border-[var(--border-color)] bg-[var(--card-bg-alt)] p-4"><p class="font-[family-name:var(--font-inter)] text-xs text-[var(--text-muted)] uppercase tracking-wider mb-3">Development Status</p><div class="flex flex-wrap gap-3"><span class="inline-flex items-center gap-1 px-2.5 py-0.5 rounded-full text-xs font-medium border bg-[var(--primary-blue)]/10 text-[var(--primary-blue)] border-[var(--primary-blue)]/20">â
Phase 1: Init & Config</span><span class="inline-flex items-center gap-1 px-2.5 py-0.5 rounded-full text-xs font-medium border bg-[var(--primary-blue)]/10 text-[var(--primary-blue)] border-[var(--primary-blue)]/20">â
Phase 2: Analysis & Detection</span><span class="inline-flex items-center gap-1 px-2.5 py-0.5 rounded-full text-xs font-medium border bg-[var(--primary-blue)]/10 text-[var(--primary-blue)] border-[var(--primary-blue)]/20">â
Phase 3: MCP Generation</span></div></div></div></div><div class="backdrop-blur-md bg-[var(--card-bg)]/70 border border-[var(--border-color)] rounded-2xl p-6 lg:p-8 " style="opacity:0;transform:translateY(24px)"><div id="installation" class="scroll-mt-28"><div class="flex items-center gap-3 mb-6"><div class="w-10 h-10 rounded-xl bg-[var(--primary-blue)]/10 border border-[var(--primary-blue)]/20 flex items-center justify-center"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-package w-5 h-5 text-[var(--primary-blue)]" aria-hidden="true"><path d="M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z"></path><path d="M12 22V12"></path><polyline points="3.29 7 12 12 20.71 7"></polyline><path d="m7.5 4.27 9 5.15"></path></svg></div><h2 class="font-[family-name:var(--font-space-grotesk)] font-bold text-xl sm:text-2xl lg:text-3xl bg-gradient-to-r from-[var(--primary-blue)] to-[var(--primary-blue-bright)] bg-clip-text text-transparent">Installation</h2></div><p class="font-[family-name:var(--font-inter)] text-[var(--text-secondary)] mb-2"><strong class="text-[var(--text-primary)]">Requirements:</strong> Node.js 18 or higher</p><p class="font-[family-name:var(--font-inter)] text-[var(--text-secondary)] mb-6">Install Synapse CLI globally from npm (recommended) or run it on demand via npx.</p><div class="space-y-4"><div><p class="font-[family-name:var(--font-inter)] text-sm font-semibold text-[var(--text-primary)] mb-2 flex items-center gap-2"><span class="inline-flex items-center gap-1 px-2.5 py-0.5 rounded-full text-xs font-medium border bg-[var(--primary-blue)]/10 text-[var(--primary-blue)] border-[var(--primary-blue)]/20">Recommended</span>Install globally via npm</p><div class="relative group rounded-xl overflow-hidden border border-[var(--border-color)] bg-[#0D0D0D]"><div class="flex items-center justify-between px-4 py-2 bg-[#161616] border-b border-[#2a2a2a]"><div class="flex gap-1.5"><span class="w-3 h-3 rounded-full bg-[#FF5F57]"></span><span class="w-3 h-3 rounded-full bg-[#FFBD2E]"></span><span class="w-3 h-3 rounded-full bg-[#28C840]"></span></div><span class="text-[10px] text-[#666] font-mono uppercase tracking-wider">bash</span><button class="flex items-center gap-1 text-xs text-[#888] hover:text-white transition-colors"><span class="flex items-center gap-1" style="opacity:0;transform:scale(0.8)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy w-3.5 h-3.5" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg>Copy</span></button></div><pre class="p-4 text-sm font-mono leading-relaxed overflow-x-auto"><span class="block"><span class="text-[#D4D4D4]">npm install -g @2ndbrainlabs-ai/synapse-cli</span></span></pre></div><p class="mt-2 text-xs text-[var(--text-muted)] font-[family-name:var
11(--font-inter)]">Requires Node.js 18+. After installation, run<!-- --> <code class="text-[var(--primary-blue)]">synapse init</code> inside your project directory.</p></div><div><p class="font-[family-name:var(--font-inter)] text-sm font-semibold text-[var(--text-primary)] mb-2">Run once via npx</p><div class="relative group rounded-xl overflow-hidden border border-[var(--border-color)] bg-[#0D0D0D]"><div class="flex items-center justify-between px-4 py-2 bg-[#161616] border-b border-[#2a2a2a]"><div class="flex gap-1.5"><span class="w-3 h-3 rounded-full bg-[#FF5F57]"></span><span class="w-3 h-3 rounded-full bg-[#FFBD2E]"></span><span class="w-3 h-3 rounded-full bg-[#28C840]"></span></div><span class="text-[10px] text-[#666] font-mono uppercase tracking-wider">bash</span><button class="flex items-center gap-1 text-xs text-[#888] hover:text-white transition-colors"><span class="flex items-center gap-1" style="opacity:0;transform:scale(0.8)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy w-3.5 h-3.5" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg>Copy</span></button></div><pre class="p-4 text-sm font-mono leading-relaxed overflow-x-auto"><span class="block"><span class="text-[#D4D4D4]">npx @2ndbrainlabs-ai/synapse-cli init</span></span></pre></div><p class="mt-2 text-xs text-[var(--text-muted)] font-[family-name:var(--font-inter)]">No install step â npx fetches and runs the CLI on demand. Good for trying it out; each subsequent command needs the<!-- --> <code class="text-[var(--primary-blue)]">npx @2ndbrainlabs-ai/synapse-cli</code> prefix unless you install it globally.</p></div><div><p class="font-[family-name:var(--font-inter)] text-sm font-semibold text-[var(--text-primary)] mb-2">Verify installation</p><div class="relative group rounded-xl overflow-hidden border border-[var(--border-color)] bg-[#0D0D0D]"><div class="flex items-center justify-between px-4 py-2 bg-[#161616] border-b border-[#2a2a2a]"><div class="flex gap-1.5"><span class="w-3 h-3 rounded-full bg-[#FF5F57]"></span><span class="w-3 h-3 rounded-full bg-[#FFBD2E]"></span><span class="w-3 h-3 rounded-full bg-[#28C840]"></span></div><span class="text-[10px] text-[#666] font-mono uppercase tracking-wider">bash</span><button class="flex items-center gap-1 text-xs text-[#888] hover:text-white transition-colors"><span class="flex items-center gap-1" style="opacity:0;transform:scale(0.8)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy w-3.5 h-3.5" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg>Copy</span></button></div><pre class="p-4 text-sm font-mono leading-relaxed overflow-x-auto"><span class="block"><span class="text-[#D4D4D4]">synapse --version</span></span><span class="block"><span class="text-[#6A9955]"># or, without a global install:</span></span><span class="block"><span class="text-[#D4D4D4]">npx @2ndbrainlabs-ai/synapse-cli --version</span></span></pre></div></div></div></div></div><div class="backdrop-blur-md bg-[var(--card-bg)]/70 border border-[var(--border-color)] rounded-2xl p-6 lg:p-8 " style="opacity:0;transform:translateY(24px)"><div id="quick-start" class="scroll-mt-28"><div class="flex items-center gap-3 mb-2"><div class="w-10 h-10 rounded-xl bg-[var(--primary-blue)]/10 border border-[var(--primary-blue)]/20 flex items-center justify-center"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-circle-play w-5 h-5 text-[var(--primary-blue)]" aria-hidden="true"><path d="M9 9.003a1 1 0 0 1 1.517-.859l4.997 2.997a1 1 0 0 1 0 1.718l-4.997 2.997A1 1 0 0 1 9 14.996z"></path><circle cx="12" cy="12" r="10"></circle></svg></div>
11<h2 class="font-[family-name:var(--font-space-grotesk)] font-bold text-xl sm:text-2xl lg:text-3xl bg-gradient-to-r from-[var(--primary-blue)] to-[var(--primary-blue-bright)] bg-clip-text text-transparent">Quick Start</h2></div><p class="font-[family-name:var(--font-inter)] text-[var(--text-muted)] text-sm mb-8">From zero to a working MCP server in five steps, with an optional first step to set up a clean Python environment for the generated server.</p><div><div id="qs-uv" class="flex gap-3 sm:gap-5"><div class="flex flex-col items-center"><div class="w-10 h-10 rounded-full flex items-center justify-center text-white font-bold text-sm shrink-0 shadow-lg bg-gradient-to-br from-[var(--primary-blue)] to-[var(--primary)] shadow-[var(--primary-blue)]/20">1</div><div class="w-px flex-1 bg-gradient-to-b from-[var(--primary-blue)]/30 to-transparent mt-2"></div></div><div class="flex-1 min-w-0 pb-8"><div class="flex items-center gap-2 mb-1"><h4 class="font-[family-name:var(--font-space-grotesk)] font-semibold text-base text-[var(--text-primary)]">Set Up a Python Environment for the Generated Server</h4><span class="text-[10px] font-semibold font-[family-name:var(--font-inter)] uppercase tracking-wider px-1.5 py-0.5 rounded-md bg-[var(--primary-blue)]/10 text-[var(--primary-blue)] border border-[var(--primary-blue)]/20">Optional</span></div><p class="text-sm text-[var(--text-muted)] font-[family-name:var(--font-inter)] mb-4">Synapse CLI itself runs on Node.js, but the MCP server it generates is Python-based. Using uv and a virtual environment keeps that server's dependencies isolated from the rest of your machine.</p><p class="mb-1.5 text-sm font-semibold font-[family-name:var(--font-inter)] text-[var(--text-secondary)]">Install uv â macOS / Linux</p><div class="relative group rounded-xl overflow-hidden border border-[var(--border-color)] bg-[#0D0D0D]"><div class="flex items-center justify-between px-4 py-2 bg-[#161616] border-b border-[#2a2a2a]"><div class="flex gap-1.5"><span class="w-3 h-3 rounded-full bg-[#FF5F57]"></span><span class="w-3 h-3 rounded-full bg-[#FFBD2E]"></span><span class="w-3 h-3 rounded-full bg-[#28C840]"></span></div><span class="text-[10px] text-[#666] font-mono uppercase tracking-wider">bash</span><button class="flex items-center gap-1 text-xs text-[#888] hover:text-white transition-colors"><span class="flex items-center gap-1" style="opacity:0;transform:scale(0.8)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy w-3.5 h-3.5" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg>Copy</span></button></div><pre class="p-4 text-sm font-mono leading-relaxed overflow-x-auto"><span class="block"><span class="text-[#D4D4D4]">curl -LsSf https://astral.sh/uv/install.sh | sh</span></span></pre></div><p class="mt-4 mb-1.5 text-sm font-semibold font-[family-name:var(--font-inter)] text-[var(--text-secondary)]">Install uv â Windows (PowerShell)</p><div class="relative group rounded-xl overflow-hidden border border-[var(--border-color)] bg-[#0D0D0D]"><div class="flex items-center justify-between px-4 py-2 bg-[#161616] border-b border-[#2a2a2a]"><div class="flex gap-1.5"><span class="w-3 h-3 rounded-full bg-[#FF5F57]"></span><span class="w-3 h-3 rounded-full bg-[#FFBD2E]"></span><span class="w-3 h-3 rounded-full bg-[#28C840]"></span></div><span class="text-[10px] text-[#666] font-mono uppercase tracking-wider">bash</span><button class="flex items-center gap-1 text-xs text-[#888] hover:text-white transition-colors"><span class="flex items-center gap-1" style="opacity:0;transform:scale(0.8)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy w-3.5 h-3.5" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg>Copy</span></button></div><pre class="p-4 text-sm font-mono leading-relaxed overflow-x-auto"><span class="block"><span class="text-[#D4D4D4]">powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"</span></span></pre></div><p class="mt-4 mb-1.5 text-sm font-semibold font-[family-name:var
11(--font-inter)] text-[var(--text-secondary)]">Create a virtual environment in your project directory</p><div class="relative group rounded-xl overflow-hidden border border-[var(--border-color)] bg-[#0D0D0D]"><div class="flex items-center justify-between px-4 py-2 bg-[#161616] border-b border-[#2a2a2a]"><div class="flex gap-1.5"><span class="w-3 h-3 rounded-full bg-[#FF5F57]"></span><span class="w-3 h-3 rounded-full bg-[#FFBD2E]"></span><span class="w-3 h-3 rounded-full bg-[#28C840]"></span></div><span class="text-[10px] text-[#666] font-mono uppercase tracking-wider">bash</span><button class="flex items-center gap-1 text-xs text-[#888] hover:text-white transition-colors"><span class="flex items-center gap-1" style="opacity:0;transform:scale(0.8)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy w-3.5 h-3.5" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg>Copy</span></button></div><pre class="p-4 text-sm font-mono leading-relaxed overflow-x-auto"><span class="block"><span class="text-[#D4D4D4]">uv venv</span></span></pre></div><p class="mt-4 mb-1.5 text-sm font-semibold font-[family-name:var(--font-inter)] text-[var(--text-secondary)]">Activate it</p><div class="relative group rounded-xl overflow-hidden border border-[var(--border-color)] bg-[#0D0D0D]"><div class="flex items-center justify-between px-4 py-2 bg-[#161616] border-b border-[#2a2a2a]"><div class="flex gap-1.5"><span class="w-3 h-3 rounded-full bg-[#FF5F57]"></span><span class="w-3 h-3 rounded-full bg-[#FFBD2E]"></span><span class="w-3 h-3 rounded-full bg-[#28C840]"></span></div><span class="text-[10px] text-[#666] font-mono uppercase tracking-wider">bash</span><button class="flex items-center gap-1 text-xs text-[#888] hover:text-white transition-colors"><span class="flex items-center gap-1" style="opacity:0;transform:scale(0.8)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy w-3.5 h-3.5" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg>Copy</span></button></div><pre class="p-4 text-sm font-mono leading-relaxed overflow-x-auto"><span class="block"><span class="text-[#D4D4D4]">source .venv/bin/activate # macOS / Linux</span></span><span class="block"><span class="text-[#D4D4D4]">.venv\Scripts\activate # Windows</span></span></pre></div><p class="mt-4 mb-1.5 text-sm font-semibold font-[family-name:var(--font-inter)] text-[var(--text-secondary)]">Your Python executable path (use this in MCP config later)</p><div class="relative group rounded-xl overflow-hidden border border-[var(--border-color)] bg-[#0D0D0D]"><div class="flex items-center justify-between px-4 py-2 bg-[#161616] border-b border-[#2a2a2a]"><div class="flex gap-1.5"><span class="w-3 h-3 rounded-full bg-[#FF5F57]"></span><span class="w-3 h-3 rounded-full bg-[#FFBD2E]"></span><span class="w-3 h-3 rounded-full bg-[#28C840]"></span></div><span class="text-[10px] text-[#666] font-mono uppercase tracking-wider">bash</span><button class="flex items-center gap-1 text-xs text-[#888] hover:text-white transition-colors"><span class="flex items-center gap-1" style="opacity:0;transform:scale(0.8)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy w-3.5 h-3.5" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg>Copy</span></button></div><pre class="p-4 text-sm font-mono leading-relaxed overflow-x-auto"><span class="block"><span class="text-[#D4D4D4]">.venv/bin/python3</span></span></pre></div><p class="mt-3 text-xs text-[var(--text-muted)] font-[family-name:var
11(--font-inter)]">Once activated, install the generated server's dependencies (e.g.<!-- --> <code class="text-[var(--primary-blue)]">pip install mcp</code>) and run it inside this isolated environment.</p></div></div><div id="qs-install" class="flex gap-3 sm:gap-5"><div class="flex flex-col items-center"><div class="w-10 h-10 rounded-full flex items-center justify-center text-white font-bold text-sm shrink-0 shadow-lg bg-gradient-to-br from-[var(--primary-blue)] to-[var(--primary)] shadow-[var(--primary-blue)]/20">2</div><div class="w-px flex-1 bg-gradient-to-b from-[var(--primary-blue)]/30 to-transparent mt-2"></div></div><div class="flex-1 min-w-0 pb-8"><div class="flex items-center gap-2 mb-1"><h4 class="font-[family-name:var(--font-space-grotesk)] font-semibold text-base text-[var(--text-primary)]">Install Synapse CLI</h4></div><p class="text-sm text-[var(--text-muted)] font-[family-name:var(--font-inter)] mb-4">Install globally from npm.</p><div class="relative group rounded-xl overflow-hidden border border-[var(--border-color)] bg-[#0D0D0D]"><div class="flex items-center justify-between px-4 py-2 bg-[#161616] border-b border-[#2a2a2a]"><div class="flex gap-1.5"><span class="w-3 h-3 rounded-full bg-[#FF5F57]"></span><span class="w-3 h-3 rounded-full bg-[#FFBD2E]"></span><span class="w-3 h-3 rounded-full bg-[#28C840]"></span></div><span class="text-[10px] text-[#666] font-mono uppercase tracking-wider">bash</span><button class="flex items-center gap-1 text-xs text-[#888] hover:text-white transition-colors"><span class="flex items-center gap-1" style="opacity:0;transform:scale(0.8)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy w-3.5 h-3.5" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg>Copy</span></button></div><pre class="p-4 text-sm font-mono leading-relaxed overflow-x-auto"><span class="block"><span class="text-[#D4D4D4]">npm install -g @2ndbrainlabs-ai/synapse-cli</span></span></pre></div><p class="mt-3 text-xs text-[var(--text-muted)] font-[family-name:var(--font-inter)]">Prefer not to install anything? Run<!-- --> <code class="text-[var(--primary-blue)]">npx @2ndbrainlabs-ai/synapse-cli init</code> <!-- -->instead â no global install, just a slower cold start each time.</p></div></div><div id="qs-auth" class="flex gap-3 sm:gap-5"><div class="flex flex-col items-center"><div class="w-10 h-10 rounded-full flex items-center justify-center text-white font-bold text-sm shrink-0 shadow-lg bg-gradient-to-br from-[var(--primary-blue)] to-[var(--primary)] shadow-[var(--primary-blue)]/20">3</div><div class="w-px flex-1 bg-gradient-to-b from-[var(--primary-blue)]/30 to-transparent mt-2"></div></div><div class="flex-1 min-w-0 pb-8"><div class="flex items-center gap-2 mb-1"><h4 class="font-[family-name:var(--font-space-grotesk)] font-semibold text-base text-[var(--text-primary)]">Set Up Global Authorization</h4></div><p class="text-sm text-[var(--text-muted)] font-[family-name:var(--font-inter)] mb-4">Store your API key globally so every project on this machine automatically picks it up. No need to re-enter it per project.</p><div class="mb-4 p-4 rounded-xl bg-[var(--primary-blue)]/5 border border-[var(--primary-blue)]/20"><p class="font-[family-name:var(--font-inter)] text-sm font-semibold text-[var(--primary-blue)] mb-2">How to get your Synapse API Key</p><ol class="space-y-1 list-decimal list-inside text-xs font-[family-name:var(--font-inter)] text-[var(--text-secondary)]"><li>Go to the <strong class="text-[var(--text-primary)]">Console</strong> page (top-right of the navbar after logging in)</li><li>Click <strong class="text-[var(--text-primary)]">API Keys</strong> in the left sidebar</li><li>Click <strong class="text-[var(--text-primary)]">Create API Key</strong>, give it a name, and confirm</li><li>Copy the key immediately â it is shown only once and cannot be retrieved later</li><li>Use that key as <code class="text-[var(--primary-blue)]"><YOUR_API_KEY></code> in the commands below</li></ol></div>
11<p class="mb-1.5 text-sm font-semibold font-[family-name:var(--font-inter)] text-[var(--text-secondary)]">Option A â Store via CLI <span class="text-xs font-normal text-[var(--text-muted)]">(recommended)</span></p><div class="relative group rounded-xl overflow-hidden border border-[var(--border-color)] bg-[#0D0D0D]"><div class="flex items-center justify-between px-4 py-2 bg-[#161616] border-b border-[#2a2a2a]"><div class="flex gap-1.5"><span class="w-3 h-3 rounded-full bg-[#FF5F57]"></span><span class="w-3 h-3 rounded-full bg-[#FFBD2E]"></span><span class="w-3 h-3 rounded-full bg-[#28C840]"></span></div><span class="text-[10px] text-[#666] font-mono uppercase tracking-wider">bash</span><button class="flex items-center gap-1 text-xs text-[#888] hover:text-white transition-colors"><span class="flex items-center gap-1" style="opacity:0;transform:scale(0.8)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy w-3.5 h-3.5" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg>Copy</span></button></div><pre class="p-4 text-sm font-mono leading-relaxed overflow-x-auto"><span class="block"><span class="text-[#D4D4D4]">synapse config --global --key <YOUR_API_KEY></span></span></pre></div><p class="mt-4 mb-1.5 text-sm font-semibold font-[family-name:var(--font-inter)] text-[var(--text-secondary)]">Option B â Environment variable <span class="text-xs font-normal text-[var(--text-muted)]">(takes highest precedence)</span></p><div class="relative group rounded-xl overflow-hidden border border-[var(--border-color)] bg-[#0D0D0D]"><div class="flex items-center justify-between px-4 py-2 bg-[#161616] border-b border-[#2a2a2a]"><div class="flex gap-1.5"><span class="w-3 h-3 rounded-full bg-[#FF5F57]"></span><span class="w-3 h-3 rounded-full bg-[#FFBD2E]"></span><span class="w-3 h-3 rounded-full bg-[#28C840]"></span></div><span class="text-[10px] text-[#666] font-mono uppercase tracking-wider">bash</span><button class="flex items-center gap-1 text-xs text-[#888] hover:text-white transition-colors"><span class="flex items-center gap-1" style="opacity:0;transform:scale(0.8)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy w-3.5 h-3.5" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg>Copy</span></button></div><pre class="p-4 text-sm font-mono leading-relaxed overflow-x-auto"><span class="block"><span class="text-[#D4D4D4]">export SYNAPSE_API_KEY=<YOUR_API_KEY></span></span></pre></div><p class="mt-4 mb-1.5 text-sm font-semibold font-[family-name:var(--font-inter)] text-[var(--text-secondary)]">Verify it was saved</p><div class="relative group rounded-xl overflow-hidden border border-[var(--border-color)] bg-[#0D0D0D]"><div class="flex items-center justify-between px-4 py-2 bg-[#161616] border-b border-[#2a2a2a]"><div class="flex gap-1.5"><span class="w-3 h-3 rounded-full bg-[#FF5F57]"></span><span class="w-3 h-3 rounded-full bg-[#FFBD2E]"></span><span class="w-3 h-3 rounded-full bg-[#28C840]"></span></div><span class="text-[10px] text-[#666] font-mono uppercase tracking-wider">bash</span><button class="flex items-center gap-1 text-xs text-[#888] hover:text-white transition-colors"><span class="flex items-center gap-1" style="opacity:0;transform:scale(0.8)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy w-3.5 h-3.5" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg>Copy</span></button></div><pre class="p-4 text-sm font-mono leading-relaxed overflow-x-auto"><span class="block"><span class="text-[#D4D4D4]">synapse config</span></span></pre></div><div class="mt-4 p-4 rounded-xl bg-[var(--primary-blue)]/5 border border-[var(--primary-blue)]/20">
11<p class="font-[family-name:var(--font-inter)] text-sm font-semibold text-[var(--primary-blue)] mb-2 flex items-center gap-2"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-shield w-4 h-4" aria-hidden="true"><path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"></path></svg>API Key Precedence Order</p><ol class="space-y-1"><li class="flex flex-wrap items-baseline gap-x-2 gap-y-0.5 text-xs font-[family-name:var(--font-inter)]"><span class="w-8 text-[var(--primary-blue)] font-bold shrink-0">1st</span><code class="text-[var(--text-secondary)] min-w-0 break-all flex-1">SYNAPSE_API_KEY environment variable</code><span class="text-[var(--text-muted)] break-normal">(<!-- -->highest priority<!-- -->)</span></li><li class="flex flex-wrap items-baseline gap-x-2 gap-y-0.5 text-xs font-[family-name:var(--font-inter)]"><span class="w-8 text-[var(--primary-blue)] font-bold shrink-0">2nd</span><code class="text-[var(--text-secondary)] min-w-0 break-all flex-1">Project key: .synapse/config.json</code><span class="text-[var(--text-muted)] break-normal">(<!-- -->project-scoped<!-- -->)</span></li><li class="flex flex-wrap items-baseline gap-x-2 gap-y-0.5 text-xs font-[family-name:var(--font-inter)]"><span class="w-8 text-[var(--primary-blue)] font-bold shrink-0">3rd</span><code class="text-[var(--text-secondary)] min-w-0 break-all flex-1">Global key: ~/.synapse/config.json</code><span class="text-[var(--text-muted)] break-normal">(<!-- -->machine-wide fallback<!-- -->)</span></li></ol><p class="mt-3 text-xs text-[var(--text-muted)] font-[family-name:var(--font-inter)]">API keys are encrypted at rest using Fernet symmetric encryption with a machine-derived key.</p></div></div></div><div id="qs-init" class="flex gap-3 sm:gap-5"><div class="flex flex-col items-center"><div class="w-10 h-10 rounded-full flex items-center justify-center text-white font-bold text-sm shrink-0 shadow-lg bg-gradient-to-br from-[var(--primary-blue)] to-[var(--primary)] shadow-[var(--primary-blue)]/20">4</div><div class="w-px flex-1 bg-gradient-to-b from-[var(--primary-blue)]/30 to-transparent mt-2"></div></div><div class="flex-1 min-w-0 pb-8"><div class="flex items-center gap-2 mb-1"><h4 class="font-[family-name:var(--font-space-grotesk)] font-semibold text-base text-[var(--text-primary)]">Initialize Synapse in Your Project</h4></div><p class="text-sm text-[var(--text-muted)] font-[family-name:var(--font-inter)] mb-4">Run this inside your project directory. Synapse creates a .synapse/ configuration folder and securely stores your API key.</p><div class="relative group rounded-xl overflow-hidden border border-[var(--border-color)] bg-[#0D0D0D]"><div class="flex items-center justify-between px-4 py-2 bg-[#161616] border-b border-[#2a2a2a]"><div class="flex gap-1.5"><span class="w-3 h-3 rounded-full bg-[#FF5F57]"></span><span class="w-3 h-3 rounded-full bg-[#FFBD2E]"></span><span class="w-3 h-3 rounded-full bg-[#28C840]"></span></div><span class="text-[10px] text-[#666] font-mono uppercase tracking-wider">bash</span><button class="flex items-center gap-1 text-xs text-[#888] hover:text-white transition-colors"><span class="flex items-center gap-1" style="opacity:0;transform:scale(0.8)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy w-3.5 h-3.5" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg>Copy</span></button></div><pre class="p-4 text-sm font-mono leading-relaxed overflow-x-auto"><span class="block"><span class="text-[#D4D4D4]">cd /path/to/your/project</span></span><span class="block"><span class="text-[#D4D4D4]">synapse init</span></span></pre></div><p class="mt-3 text-xs text-[var(--text-muted)] font-[family-name:var
11(--font-inter)]">This creates<!-- --> <code class="text-[var(--primary-blue)]">.synapse/config.json</code> in your project root. Use <code class="text-[var(--primary-blue)]">--force</code> to reinitialize an existing project.</p></div></div><div id="qs-analyze" class="flex gap-3 sm:gap-5"><div class="flex flex-col items-center"><div class="w-10 h-10 rounded-full flex items-center justify-center text-white font-bold text-sm shrink-0 shadow-lg bg-gradient-to-br from-[var(--primary-blue)] to-[var(--primary)] shadow-[var(--primary-blue)]/20">5</div><div class="w-px flex-1 bg-gradient-to-b from-[var(--primary-blue)]/30 to-transparent mt-2"></div></div><div class="flex-1 min-w-0 pb-8"><div class="flex items-center gap-2 mb-1"><h4 class="font-[family-name:var(--font-space-grotesk)] font-semibold text-base text-[var(--text-primary)]">Analyze Your Codebase</h4></div><p class="text-sm text-[var(--text-muted)] font-[family-name:var(--font-inter)] mb-4">Synapse parses your project with AST (Abstract Syntax Tree) analysis and semantic indexing, generating a schema and indexing your code for AI retrieval.</p><div class="relative group rounded-xl overflow-hidden border border-[var(--border-color)] bg-[#0D0D0D]"><div class="flex items-center justify-between px-4 py-2 bg-[#161616] border-b border-[#2a2a2a]"><div class="flex gap-1.5"><span class="w-3 h-3 rounded-full bg-[#FF5F57]"></span><span class="w-3 h-3 rounded-full bg-[#FFBD2E]"></span><span class="w-3 h-3 rounded-full bg-[#28C840]"></span></div><span class="text-[10px] text-[#666] font-mono uppercase tracking-wider">bash</span><button class="flex items-center gap-1 text-xs text-[#888] hover:text-white transition-colors"><span class="flex items-center gap-1" style="opacity:0;transform:scale(0.8)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy w-3.5 h-3.5" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg>Copy</span></button></div><pre class="p-4 text-sm font-mono leading-relaxed overflow-x-auto"><span class="block"><span class="text-[#D4D4D4]">synapse analyze</span></span></pre></div><p class="mt-3 mb-2 text-xs text-[var(--text-secondary)] font-[family-name:var(--font-inter)]">With verbose output</p><div class="relative group rounded-xl overflow-hidden border border-[var(--border-color)] bg-[#0D0D0D]"><div class="flex items-center justify-between px-4 py-2 bg-[#161616] border-b border-[#2a2a2a]"><div class="flex gap-1.5"><span class="w-3 h-3 rounded-full bg-[#FF5F57]"></span><span class="w-3 h-3 rounded-full bg-[#FFBD2E]"></span><span class="w-3 h-3 rounded-full bg-[#28C840]"></span></div><span class="text-[10px] text-[#666] font-mono uppercase tracking-wider">bash</span><button class="flex items-center gap-1 text-xs text-[#888] hover:text-white transition-colors"><span class="flex items-center gap-1" style="opacity:0;transform:scale(0.8)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy w-3.5 h-3.5" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg>Copy</span></button></div><pre class="p-4 text-sm font-mono leading-relaxed overflow-x-auto"><span class="block"><span class="text-[#D4D4D4]">synapse analyze --verbose</span></span></pre></div><p class="mt-3 mb-2 text-xs text-[var(--text-secondary)] font-[family-name:var(--font-inter)]">Save analysis to a custom directory</p><div class="relative group rounded-xl overflow-hidden border border-[var(--border-color)] bg-[#0D0D0D]"><div class="flex items-center justify-between px-4 py-2 bg-[#161616] border-b border-[#2a2a2a]"><div class="flex gap-1.5"><span class="w-3 h-3 rounded-full bg-[#FF5F57]"></span><span class="w-3 h-3 rounded-full bg-[#FFBD2E]"></span><span class="w-3 h-3 rounded-full bg-[#28C840]"></span></div><span class="text-[10px] text-[#666] font-mono uppercase tracking-wider">bash</span><button class="flex items-center gap-1 text-xs text-[#888] hover:text-white transition-colors"><span class="flex items-center gap-1" style="opacity:0;transform:scale(0.8)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy w-3.5 h-3.5" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg>Copy</span></button></div><pre class="p-4 text-sm font-mono leading-relaxed overflow-x-auto"><span class="block"><span class="text-[#D4D4D4]">synapse analyze --output ./my-analysis</span></span></pre></div><p class="mt-3 text-xs text-[var(--text-muted)] font-[family-name:var
11(--font-inter)]">Produces<!-- --> <code class="text-[var(--primary-blue)]">.synapse/project_schema.txt</code> and<!-- --> <code class="text-[var(--primary-blue)]">.synapse/statistics.json</code>.</p></div></div><div id="qs-build" class="flex gap-3 sm:gap-5"><div class="flex flex-col items-center"><div class="w-10 h-10 rounded-full flex items-center justify-center text-white font-bold text-sm shrink-0 shadow-lg bg-gradient-to-br from-[var(--primary-blue)] to-[var(--primary)] shadow-[var(--primary-blue)]/20">6</div><div class="w-px flex-1 bg-gradient-to-b from-[var(--primary-blue)]/30 to-transparent mt-2"></div></div><div class="flex-1 min-w-0 pb-8"><div class="flex items-center gap-2 mb-1"><h4 class="font-[family-name:var(--font-space-grotesk)] font-semibold text-base text-[var(--text-primary)]">Build Your MCP Server</h4></div><p class="text-sm text-[var(--text-muted)] font-[family-name:var(--font-inter)] mb-4">Describe what you want to expose. Synapse's AI-powered generation pipeline will build a production-ready MCP server.</p><p class="mb-2 text-xs text-[var(--text-secondary)] font-[family-name:var(--font-inter)]">Interactive mode: select endpoints</p><div class="relative group rounded-xl overflow-hidden border border-[var(--border-color)] bg-[#0D0D0D]"><div class="flex items-center justify-between px-4 py-2 bg-[#161616] border-b border-[#2a2a2a]"><div class="flex gap-1.5"><span class="w-3 h-3 rounded-full bg-[#FF5F57]"></span><span class="w-3 h-3 rounded-full bg-[#FFBD2E]"></span><span class="w-3 h-3 rounded-full bg-[#28C840]"></span></div><span class="text-[10px] text-[#666] font-mono uppercase tracking-wider">bash</span><button class="flex items-center gap-1 text-xs text-[#888] hover:text-white transition-colors"><span class="flex items-center gap-1" style="opacity:0;transform:scale(0.8)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy w-3.5 h-3.5" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg>Copy</span></button></div><pre class="p-4 text-sm font-mono leading-relaxed overflow-x-auto"><span class="block"><span class="text-[#D4D4D4]">synapse build</span></span></pre></div><p class="mt-3 mb-2 text-xs text-[var(--text-secondary)] font-[family-name:var(--font-inter)]">Or with a query</p><div class="relative group rounded-xl overflow-hidden border border-[var(--border-color)] bg-[#0D0D0D]"><div class="flex items-center justify-between px-4 py-2 bg-[#161616] border-b border-[#2a2a2a]"><div class="flex gap-1.5"><span class="w-3 h-3 rounded-full bg-[#FF5F57]"></span><span class="w-3 h-3 rounded-full bg-[#FFBD2E]"></span><span class="w-3 h-3 rounded-full bg-[#28C840]"></span></div><span class="text-[10px] text-[#666] font-mono uppercase tracking-wider">bash</span><button class="flex items-center gap-1 text-xs text-[#888] hover:text-white transition-colors"><span class="flex items-center gap-1" style="opacity:0;transform:scale(0.8)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy w-3.5 h-3.5" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg>Copy</span></button></div><pre class="p-4 text-sm font-mono leading-relaxed overflow-x-auto"><span class="block"><span class="text-[#D4D4D4]">synapse build --query "expose the database query functions as MCP tools"</span></span></pre></div><p class="mt-3 mb-2 text-xs text-[var(--text-secondary)] font-[family-name:var(--font-inter)]">Specify a custom output filename</p><div class="relative group rounded-xl overflow-hidden border border-[var(--border-color)] bg-[#0D0D0D]"><div class="flex items-center justify-between px-4 py-2 bg-[#161616] border-b border-[#2a2a2a]"><div class="flex gap-1.5"><span class="w-3 h-3 rounded-full bg-[#FF5F57]"></span><span class="w-3 h-3 rounded-full bg-[#FFBD2E]"></span><span class="w-3 h-3 rounded-full bg-[#28C840]"></span></div><span class="text-[10px] text-[#666] font-mono uppercase tracking-wider">bash</span><button class="flex items-center gap-1 text-xs text-[#888] hover:text-white transition-colors"><span class="flex items-center gap-1" style="opacity:0;transform:scale(0.8)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy w-3.5 h-3.5" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg>Copy</span></button></div><pre class="p-4 text-sm font-mono leading-relaxed overflow-x-auto"><span class="block"><span class="text-[#D4D4D4]">synapse build --query "wrap the authentication endpoints" --output auth_mcp_server.py</span></span></pre></div><p class="mt-3 mb-2 text-xs text-[var(--text-secondary)] font-[family-name:var
11(--font-inter)]">Skip validation step</p><div class="relative group rounded-xl overflow-hidden border border-[var(--border-color)] bg-[#0D0D0D]"><div class="flex items-center justify-between px-4 py-2 bg-[#161616] border-b border-[#2a2a2a]"><div class="flex gap-1.5"><span class="w-3 h-3 rounded-full bg-[#FF5F57]"></span><span class="w-3 h-3 rounded-full bg-[#FFBD2E]"></span><span class="w-3 h-3 rounded-full bg-[#28C840]"></span></div><span class="text-[10px] text-[#666] font-mono uppercase tracking-wider">bash</span><button class="flex items-center gap-1 text-xs text-[#888] hover:text-white transition-colors"><span class="flex items-center gap-1" style="opacity:0;transform:scale(0.8)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy w-3.5 h-3.5" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg>Copy</span></button></div><pre class="p-4 text-sm font-mono leading-relaxed overflow-x-auto"><span class="block"><span class="text-[#D4D4D4]">synapse build --query "expose all REST API handlers" --no-validate</span></span></pre></div><p class="mt-3 text-xs text-[var(--text-muted)] font-[family-name:var(--font-inter)]">Output defaults to<!-- --> <code class="text-[var(--primary-blue)]">mcp_server.py</code> in your project root.</p></div></div></div></div></div><div class="backdrop-blur-md bg-[var(--card-bg)]/70 border border-[var(--border-color)] rounded-2xl p-6 lg:p-8 " style="opacity:0;transform:translateY(24px)"><div id="commands" class="scroll-mt-28"><div class="flex items-center gap-3 mb-6"><div class="w-10 h-10 rounded-xl bg-[var(--primary-blue)]/10 border border-[var(--primary-blue)]/20 flex items-center justify-center"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-terminal w-5 h-5 text-[var(--primary-blue)]" aria-hidden="true"><path d="M12 19h8"></path><path d="m4 17 6-6-6-6"></path></svg></div><h2 class="font-[family-name:var(--font-space-grotesk)] font-bold text-xl sm:text-2xl lg:text-3xl bg-gradient-to-r from-[var(--primary-blue)] to-[var(--primary-blue-bright)] bg-clip-text text-transparent">Commands</h2></div><p class="font-[family-name:var(--font-inter)] text-[var(--text-secondary)] mb-8">Synapse provides five core commands. Run<!-- --> <code class="text-[var(--primary-blue)] bg-[var(--primary-blue)]/10 px-1.5 py-0.5 rounded-md text-sm">synapse --help</code> <!-- -->or<!-- --> <code class="text-[var(--primary-blue)] bg-[var(--primary-blue)]/10 px-1.5 py-0.5 rounded-md text-sm">synapse <command> --help</code> <!-- -->for details.</p><div class="space-y-8"><div id="cmd-init" class="scroll-mt-28"><div class="flex items-center gap-3 mb-4"><code class="font-mono font-bold text-lg text-[var(--text-primary)]">synapse init</code><span class="inline-flex items-center gap-1 px-2.5 py-0.5 rounded-full text-xs font-medium border bg-[var(--primary-blue)]/10 text-[var(--primary-blue)] border-[var(--primary-blue)]/20">Phase 1</span></div><p class="font-[family-name:var(--font-inter)] text-[var(--text-secondary)] text-sm mb-4">Initialize Synapse in the current directory. Creates a<!-- --> <code class="text-[var(--primary-blue)]">.synapse/</code> folder and securely stores your API key.</p><div class="mb-4"><p class="text-xs font-semibold text-[var(--text-muted)] uppercase tracking-wider mb-2 font-[family-name:var(--font-inter)]">Options</p><div class="rounded-xl border border-[var(--border-color)] bg-[var(--card-bg-alt)] divide-y divide-[var(--border-color)]"><div class="flex flex-col sm:flex-row sm:items-start gap-2 py-3 border-b border-[var(--border-color)] last:border-0"><code class="shrink-0 font-mono text-xs bg-[var(--primary-blue)]/10 text-[var(--primary-blue)] px-2 py-1 rounded-md">--force</code><span class="text-sm text-[var(--text-secondary)] font-[family-name:var
11(--font-inter)]">Reinitialize even if the project is already initialized. Overwrites existing configuration.</span></div></div></div><div class="relative group rounded-xl overflow-hidden border border-[var(--border-color)] bg-[#0D0D0D]"><div class="flex items-center justify-between px-4 py-2 bg-[#161616] border-b border-[#2a2a2a]"><div class="flex gap-1.5"><span class="w-3 h-3 rounded-full bg-[#FF5F57]"></span><span class="w-3 h-3 rounded-full bg-[#FFBD2E]"></span><span class="w-3 h-3 rounded-full bg-[#28C840]"></span></div><span class="text-[10px] text-[#666] font-mono uppercase tracking-wider">bash</span><button class="flex items-center gap-1 text-xs text-[#888] hover:text-white transition-colors"><span class="flex items-center gap-1" style="opacity:0;transform:scale(0.8)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy w-3.5 h-3.5" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg>Copy</span></button></div><pre class="p-4 text-sm font-mono leading-relaxed overflow-x-auto"><span class="block"><span class="text-[#D4D4D4]">synapse init</span></span></pre></div><p class="mt-3 mb-2 text-xs text-[var(--text-secondary)] font-[family-name:var(--font-inter)]">Force reinitialize</p><div class="relative group rounded-xl overflow-hidden border border-[var(--border-color)] bg-[#0D0D0D]"><div class="flex items-center justify-between px-4 py-2 bg-[#161616] border-b border-[#2a2a2a]"><div class="flex gap-1.5"><span class="w-3 h-3 rounded-full bg-[#FF5F57]"></span><span class="w-3 h-3 rounded-full bg-[#FFBD2E]"></span><span class="w-3 h-3 rounded-full bg-[#28C840]"></span></div><span class="text-[10px] text-[#666] font-mono uppercase tracking-wider">bash</span><button class="flex items-center gap-1 text-xs text-[#888] hover:text-white transition-colors"><span class="flex items-center gap-1" style="opacity:0;transform:scale(0.8)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy w-3.5 h-3.5" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg>Copy</span></button></div><pre class="p-4 text-sm font-mono leading-relaxed overflow-x-auto"><span class="block"><span class="text-[#D4D4D4]">synapse init --force</span></span></pre></div></div><div class="h-px bg-[var(--border-color)]"></div><div id="cmd-analyze" class="scroll-mt-28"><div class="flex items-center gap-3 mb-4"><code class="font-mono font-bold text-lg text-[var(--text-primary)]">synapse analyze</code><span class="inline-flex items-center gap-1 px-2.5 py-0.5 rounded-full text-xs font-medium border bg-[var(--primary-blue)]/10 text-[var(--primary-blue)] border-[var(--primary-blue)]/20">Phase 2</span></div><p class="font-[family-name:var(--font-inter)] text-[var(--text-secondary)] text-sm mb-4">Scan and analyze the project codebase. Performs AST parsing, semantic code indexing with Qdrant vector search, and endpoint detection. Generates a project schema and statistics file used by<!-- --> <code class="text-[var(--primary-blue)]">synapse build</code>.</p><div class="mb-4"><p class="text-xs font-semibold text-[var(--text-muted)] uppercase tracking-wider mb-2 font-[family-name:var(--font-inter)]">Options</p><div class="rounded-xl border border-[var(--border-color)] bg-[var(--card-bg-alt)] divide-y divide-[var(--border-color)]"><div class="flex flex-col sm:flex-row sm:items-start gap-2 py-3 border-b border-[var(--border-color)] last:border-0"><code class="shrink-0 font-mono text-xs bg-[var(--primary-blue)]/10 text-[var(--primary-blue)] px-2 py-1 rounded-md">--output <dir></code><span class="text-sm text-[var(--text-secondary)] font-[family-name:var(--font-inter)]">Directory to write analysis output files. Defaults to .synapse/ in the project root.</span></div><div class="flex flex-col sm:flex-row sm:items-start gap-2 py-3 border-b border-[var(--border-color)] last:border-0"><code class="shrink-0 font-mono text-xs bg-[var(--primary-blue)]/10 text-[var(--primary-blue)] px-2 py-1 rounded-md">--verbose</code><span class="text-sm text-[var(--text-secondary)] font-[family-name:var
11(--font-inter)]">Print detailed analysis progress including file-by-file parsing and indexing stats.</span></div></div></div><div class="relative group rounded-xl overflow-hidden border border-[var(--border-color)] bg-[#0D0D0D]"><div class="flex items-center justify-between px-4 py-2 bg-[#161616] border-b border-[#2a2a2a]"><div class="flex gap-1.5"><span class="w-3 h-3 rounded-full bg-[#FF5F57]"></span><span class="w-3 h-3 rounded-full bg-[#FFBD2E]"></span><span class="w-3 h-3 rounded-full bg-[#28C840]"></span></div><span class="text-[10px] text-[#666] font-mono uppercase tracking-wider">bash</span><button class="flex items-center gap-1 text-xs text-[#888] hover:text-white transition-colors"><span class="flex items-center gap-1" style="opacity:0;transform:scale(0.8)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy w-3.5 h-3.5" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg>Copy</span></button></div><pre class="p-4 text-sm font-mono leading-relaxed overflow-x-auto"><span class="block"><span class="text-[#D4D4D4]">synapse analyze</span></span></pre></div><p class="mt-3 mb-2 text-xs text-[var(--text-secondary)] font-[family-name:var(--font-inter)]">Verbose mode with custom output</p><div class="relative group rounded-xl overflow-hidden border border-[var(--border-color)] bg-[#0D0D0D]"><div class="flex items-center justify-between px-4 py-2 bg-[#161616] border-b border-[#2a2a2a]"><div class="flex gap-1.5"><span class="w-3 h-3 rounded-full bg-[#FF5F57]"></span><span class="w-3 h-3 rounded-full bg-[#FFBD2E]"></span><span class="w-3 h-3 rounded-full bg-[#28C840]"></span></div><span class="text-[10px] text-[#666] font-mono uppercase tracking-wider">bash</span><button class="flex items-center gap-1 text-xs text-[#888] hover:text-white transition-colors"><span class="flex items-center gap-1" style="opacity:0;transform:scale(0.8)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy w-3.5 h-3.5" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg>Copy</span></button></div><pre class="p-4 text-sm font-mono leading-relaxed overflow-x-auto"><span class="block"><span class="text-[#D4D4D4]">synapse analyze --verbose --output ./analysis</span></span></pre></div></div><div class="h-px bg-[var(--border-color)]"></div><div id="cmd-build" class="scroll-mt-28"><div class="flex items-center gap-3 mb-4"><code class="font-mono font-bold text-lg text-[var(--text-primary)]">synapse build</code><span class="inline-flex items-center gap-1 px-2.5 py-0.5 rounded-full text-xs font-medium border bg-[var(--primary-blue)]/10 text-[var(--primary-blue)] border-[var(--primary-blue)]/20">Phase 3</span></div><p class="font-[family-name:var(--font-inter)] text-[var(--text-secondary)] text-sm mb-4">Generate a production-ready MCP server based on your natural language query. Connects to the Synapse gRPC backend where the AI generation pipeline runs, then streams the generated code back.</p><div class="mb-4"><p class="text-xs font-semibold text-[var(--text-muted)] uppercase tracking-wider mb-2 font-[family-name:var(--font-inter)]">Options</p><div class="rounded-xl border border-[var(--border-color)] bg-[var(--card-bg-alt)] divide-y divide-[var(--border-color)]"><div class="flex flex-col sm:flex-row sm:items-start gap-2 py-3 border-b border-[var(--border-color)] last:border-0"><code class="shrink-0 font-mono text-xs bg-[var(--primary-blue)]/10 text-[var(--primary-blue)] px-2 py-1 rounded-md">--query <query></code><span class="text-sm text-[var(--text-secondary)] font-[family-name:var(--font-inter)]">Natural language description of what to expose as MCP tools (e.g. 'expose the database query functions').</span></div><div class="flex flex-col sm:flex-row sm:items-start gap-2 py-3 border-b border-[var(--border-color)] last:border-0"><code class="shrink-0 font-mono text-xs bg-[var(--primary-blue)]/10 text-[var(--primary-blue)] px-2 py-1 rounded-md">--output <file></code><span class="text-sm text-[var(--text-secondary)] font-[family-name:var
11(--font-inter)]">Output filename for the generated MCP server. Defaults to mcp_server.py.</span></div><div class="flex flex-col sm:flex-row sm:items-start gap-2 py-3 border-b border-[var(--border-color)] last:border-0"><code class="shrink-0 font-mono text-xs bg-[var(--primary-blue)]/10 text-[var(--primary-blue)] px-2 py-1 rounded-md">--no-validate</code><span class="text-sm text-[var(--text-secondary)] font-[family-name:var(--font-inter)]">Skip the generated code validation step.</span></div><div class="flex flex-col sm:flex-row sm:items-start gap-2 py-3 border-b border-[var(--border-color)] last:border-0"><code class="shrink-0 font-mono text-xs bg-[var(--primary-blue)]/10 text-[var(--primary-blue)] px-2 py-1 rounded-md">--no-docs</code><span class="text-sm text-[var(--text-secondary)] font-[family-name:var(--font-inter)]">Skip auto-generating documentation for the MCP server.</span></div><div class="flex flex-col sm:flex-row sm:items-start gap-2 py-3 border-b border-[var(--border-color)] last:border-0"><code class="shrink-0 font-mono text-xs bg-[var(--primary-blue)]/10 text-[var(--primary-blue)] px-2 py-1 rounded-md">--generate</code><span class="text-sm text-[var(--text-secondary)] font-[family-name:var(--font-inter)]">Force regeneration even if an mcp_server.py already exists.</span></div></div></div><p class="mb-2 text-xs text-[var(--text-secondary)] font-[family-name:var(--font-inter)]">Interactive mode: select endpoints and describe your needs</p><div class="relative group rounded-xl overflow-hidden border border-[var(--border-color)] bg-[#0D0D0D]"><div class="flex items-center justify-between px-4 py-2 bg-[#161616] border-b border-[#2a2a2a]"><div class="flex gap-1.5"><span class="w-3 h-3 rounded-full bg-[#FF5F57]"></span><span class="w-3 h-3 rounded-full bg-[#FFBD2E]"></span><span class="w-3 h-3 rounded-full bg-[#28C840]"></span></div><span class="text-[10px] text-[#666] font-mono uppercase tracking-wider">bash</span><button class="flex items-center gap-1 text-xs text-[#888] hover:text-white transition-colors"><span class="flex items-center gap-1" style="opacity:0;transform:scale(0.8)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy w-3.5 h-3.5" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg>Copy</span></button></div><pre class="p-4 text-sm font-mono leading-relaxed overflow-x-auto"><span class="block"><span class="text-[#D4D4D4]">synapse build</span></span></pre></div><p class="mt-3 mb-2 text-xs text-[var(--text-secondary)] font-[family-name:var(--font-inter)]">With inline query</p><div class="relative group rounded-xl overflow-hidden border border-[var(--border-color)] bg-[#0D0D0D]"><div class="flex items-center justify-between px-4 py-2 bg-[#161616] border-b border-[#2a2a2a]"><div class="flex gap-1.5"><span class="w-3 h-3 rounded-full bg-[#FF5F57]"></span><span class="w-3 h-3 rounded-full bg-[#FFBD2E]"></span><span class="w-3 h-3 rounded-full bg-[#28C840]"></span></div><span class="text-[10px] text-[#666] font-mono uppercase tracking-wider">bash</span><button class="flex items-center gap-1 text-xs text-[#888] hover:text-white transition-colors"><span class="flex items-center gap-1" style="opacity:0;transform:scale(0.8)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy w-3.5 h-3.5" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg>Copy</span></button></div><pre class="p-4 text-sm font-mono leading-relaxed overflow-x-auto"><span class="block"><span class="text-[#D4D4D4]">synapse build --query "expose all database access functions"</span></span></pre></div><p class="mt-3 mb-2 text-xs text-[var(--text-secondary)] font-[family-name:var
11(--font-inter)]">Custom output file, skip validation</p><div class="relative group rounded-xl overflow-hidden border border-[var(--border-color)] bg-[#0D0D0D]"><div class="flex items-center justify-between px-4 py-2 bg-[#161616] border-b border-[#2a2a2a]"><div class="flex gap-1.5"><span class="w-3 h-3 rounded-full bg-[#FF5F57]"></span><span class="w-3 h-3 rounded-full bg-[#FFBD2E]"></span><span class="w-3 h-3 rounded-full bg-[#28C840]"></span></div><span class="text-[10px] text-[#666] font-mono uppercase tracking-wider">bash</span><button class="flex items-center gap-1 text-xs text-[#888] hover:text-white transition-colors"><span class="flex items-center gap-1" style="opacity:0;transform:scale(0.8)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy w-3.5 h-3.5" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg>Copy</span></button></div><pre class="p-4 text-sm font-mono leading-relaxed overflow-x-auto"><span class="block"><span class="text-[#D4D4D4]">synapse build --query "wrap the auth module" --output auth_server.py --no-validate</span></span></pre></div></div><div class="h-px bg-[var(--border-color)]"></div><div id="cmd-config" class="scroll-mt-28"><div class="flex items-center gap-3 mb-4"><code class="font-mono font-bold text-lg text-[var(--text-primary)]">synapse config</code><span class="inline-flex items-center gap-1 px-2.5 py-0.5 rounded-full text-xs font-medium border bg-[var(--primary-blue)]/10 text-[var(--primary-blue)] border-[var(--primary-blue)]/20">Phase 1</span></div><p class="font-[family-name:var(--font-inter)] text-[var(--text-secondary)] text-sm mb-4">View or update Synapse configuration. Displays the current API key (first 5 characters + asterisks), active model, and config file location. Supports both project-level and global (machine-wide) keys.</p><div class="mb-4"><p class="text-xs font-semibold text-[var(--text-muted)] uppercase tracking-wider mb-2 font-[family-name:var(--font-inter)]">Options</p><div class="rounded-xl border border-[var(--border-color)] bg-[var(--card-bg-alt)] divide-y divide-[var(--border-color)]"><div class="flex flex-col sm:flex-row sm:items-start gap-2 py-3 border-b border-[var(--border-color)] last:border-0"><code class="shrink-0 font-mono text-xs bg-[var(--primary-blue)]/10 text-[var(--primary-blue)] px-2 py-1 rounded-md">--update</code><span class="text-sm text-[var(--text-secondary)] font-[family-name:var(--font-inter)]">Enter interactive update mode to change configuration values.</span></div><div class="flex flex-col sm:flex-row sm:items-start gap-2 py-3 border-b border-[var(--border-color)] last:border-0"><code class="shrink-0 font-mono text-xs bg-[var(--primary-blue)]/10 text-[var(--primary-blue)] px-2 py-1 rounded-md">--key <API_KEY></code><span class="text-sm text-[var(--text-secondary)] font-[family-name:var(--font-inter)]">Directly set an API key without entering interactive mode.</span></div><div class="flex flex-col sm:flex-row sm:items-start gap-2 py-3 border-b border-[var(--border-color)] last:border-0"><code class="shrink-0 font-mono text-xs bg-[var(--primary-blue)]/10 text-[var(--primary-blue)] px-2 py-1 rounded-md">--global</code><span class="text-sm text-[var(--text-secondary)] font-[family-name:var(--font-inter)]">Apply the key change to the global ~/.synapse/config.json instead of the project config.</span></div></div></div><p class="mb-2 text-xs text-[var(--text-secondary)] font-[family-name:var(--font-inter)]">View current config</p><div class="relative group rounded-xl overflow-hidden border border-[var(--border-color)] bg-[#0D0D0D]"><div class="flex items-center justify-between px-4 py-2 bg-[#161616] border-b border-[#2a2a2a]"><div class="flex gap-1.5"><span class="w-3 h-3 rounded-full bg-[#FF5F57]"></span><span class="w-3 h-3 rounded-full bg-[#FFBD2E]"></span><span class="w-3 h-3 rounded-full bg-[#28C840]"></span></div><span class="text-[10px] text-[#666] font-mono uppercase tracking-wider">bash</span><button class="flex items-center gap-1 text-xs text-[#888] hover:text-white transition-colors"><span class="flex items-center gap-1" style="opacity:0;transform:scale(0.8)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy w-3.5 h-3.5" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg>Copy</span></button></div><pre class="p-4 text-sm font-mono leading-relaxed overflow-x-auto"><span class="block"><span class="text-[#D4D4D4]">synapse config</span></span></pre></div><p class="mt-3 mb-2 text-xs text-[var(--text-secondary)] font-[family-name:var
11(--font-inter)]">Set a project-level API key</p><div class="relative group rounded-xl overflow-hidden border border-[var(--border-color)] bg-[#0D0D0D]"><div class="flex items-center justify-between px-4 py-2 bg-[#161616] border-b border-[#2a2a2a]"><div class="flex gap-1.5"><span class="w-3 h-3 rounded-full bg-[#FF5F57]"></span><span class="w-3 h-3 rounded-full bg-[#FFBD2E]"></span><span class="w-3 h-3 rounded-full bg-[#28C840]"></span></div><span class="text-[10px] text-[#666] font-mono uppercase tracking-wider">bash</span><button class="flex items-center gap-1 text-xs text-[#888] hover:text-white transition-colors"><span class="flex items-center gap-1" style="opacity:0;transform:scale(0.8)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy w-3.5 h-3.5" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg>Copy</span></button></div><pre class="p-4 text-sm font-mono leading-relaxed overflow-x-auto"><span class="block"><span class="text-[#D4D4D4]">synapse config --key sk-ant-xxxxxxxxxxxx</span></span></pre></div><p class="mt-3 mb-2 text-xs text-[var(--text-secondary)] font-[family-name:var(--font-inter)]">Set a global API key (all projects)</p><div class="relative group rounded-xl overflow-hidden border border-[var(--border-color)] bg-[#0D0D0D]"><div class="flex items-center justify-between px-4 py-2 bg-[#161616] border-b border-[#2a2a2a]"><div class="flex gap-1.5"><span class="w-3 h-3 rounded-full bg-[#FF5F57]"></span><span class="w-3 h-3 rounded-full bg-[#FFBD2E]"></span><span class="w-3 h-3 rounded-full bg-[#28C840]"></span></div><span class="text-[10px] text-[#666] font-mono uppercase tracking-wider">bash</span><button class="flex items-center gap-1 text-xs text-[#888] hover:text-white transition-colors"><span class="flex items-center gap-1" style="opacity:0;transform:scale(0.8)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy w-3.5 h-3.5" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg>Copy</span></button></div><pre class="p-4 text-sm font-mono leading-relaxed overflow-x-auto"><span class="block"><span class="text-[#D4D4D4]">synapse config --global --key sk-ant-xxxxxxxxxxxx</span></span></pre></div><p class="mt-3 mb-2 text-xs text-[var(--text-secondary)] font-[family-name:var(--font-inter)]">Interactive update</p><div class="relative group rounded-xl overflow-hidden border border-[var(--border-color)] bg-[#0D0D0D]"><div class="flex items-center justify-between px-4 py-2 bg-[#161616] border-b border-[#2a2a2a]"><div class="flex gap-1.5"><span class="w-3 h-3 rounded-full bg-[#FF5F57]"></span><span class="w-3 h-3 rounded-full bg-[#FFBD2E]"></span><span class="w-3 h-3 rounded-full bg-[#28C840]"></span></div><span class="text-[10px] text-[#666] font-mono uppercase tracking-wider">bash</span><button class="flex items-center gap-1 text-xs text-[#888] hover:text-white transition-colors"><span class="flex items-center gap-1" style="opacity:0;transform:scale(0.8)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy w-3.5 h-3.5" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg>Copy</span></button></div><pre class="p-4 text-sm font-mono leading-relaxed overflow-x-auto"><span class="block"><span class="text-[#D4D4D4]">synapse config --update</span></span></pre></div></div><div class="h-px bg-[var(--border-color)]"></div><div id="cmd-status" class="scroll-mt-28"><div class="flex items-center gap-3 mb-4"><code class="font-mono font-bold text-lg text-[var(--text-primary)]">synapse status</code><span class="inline-flex items-center gap-1 px-2.5 py-0.5 rounded-full text-xs font-medium border bg-[var(--primary-blue)]/10 text-[var(--primary-blue)] border-[var(--primary-blue)]/20">Phase 1</span></div>
11<p class="font-[family-name:var(--font-inter)] text-[var(--text-secondary)] text-sm mb-4">Display the current project status: initialization state, configuration health, and analysis readiness. Useful as a quick sanity check before running<!-- --> <code class="text-[var(--primary-blue)]">synapse build</code>.</p><div class="relative group rounded-xl overflow-hidden border border-[var(--border-color)] bg-[#0D0D0D]"><div class="flex items-center justify-between px-4 py-2 bg-[#161616] border-b border-[#2a2a2a]"><div class="flex gap-1.5"><span class="w-3 h-3 rounded-full bg-[#FF5F57]"></span><span class="w-3 h-3 rounded-full bg-[#FFBD2E]"></span><span class="w-3 h-3 rounded-full bg-[#28C840]"></span></div><span class="text-[10px] text-[#666] font-mono uppercase tracking-wider">bash</span><button class="flex items-center gap-1 text-xs text-[#888] hover:text-white transition-colors"><span class="flex items-center gap-1" style="opacity:0;transform:scale(0.8)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy w-3.5 h-3.5" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg>Copy</span></button></div><pre class="p-4 text-sm font-mono leading-relaxed overflow-x-auto"><span class="block"><span class="text-[#D4D4D4]">synapse status</span></span></pre></div></div></div></div></div><div class="backdrop-blur-md bg-[var(--card-bg)]/70 border border-[var(--border-color)] rounded-2xl p-6 lg:p-8 " style="opacity:0;transform:translateY(24px)"><div id="configuration" class="scroll-mt-28"><div class="flex items-center gap-3 mb-6"><div class="w-10 h-10 rounded-xl bg-[var(--primary-blue)]/10 border border-[var(--primary-blue)]/20 flex items-center justify-center"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings w-5 h-5 text-[var(--primary-blue)]" aria-hidden="true"><path d="M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915"></path><circle cx="12" cy="12" r="3"></circle></svg></div><h2 class="font-[family-name:var(--font-space-grotesk)] font-bold text-xl sm:text-2xl lg:text-3xl bg-gradient-to-r from-[var(--primary-blue)] to-[var(--primary-blue-bright)] bg-clip-text text-transparent">Configuration</h2></div><div class="mb-8"><h3 class="font-[family-name:var(--font-space-grotesk)] font-semibold text-lg text-[var(--text-primary)] mb-4">Configuration Files</h3><div class="grid sm:grid-cols-2 gap-4"><div class="p-4 rounded-xl bg-[var(--card-bg-alt)] border border-[var(--border-color)]"><div class="flex items-center gap-2 mb-2"><span class="text-lg">ð</span><p class="font-[family-name:var(--font-space-grotesk)] font-semibold text-sm text-[var(--text-primary)]">Global Config</p></div><code class="text-xs text-[var(--primary-blue)] font-mono">~/.synapse/config.json</code><p class="mt-2 text-xs text-[var(--text-muted)] font-[family-name:var(--font-inter)]">Machine-wide settings. API key here is the fallback for all projects on this machine.</p></div><div class="p-4 rounded-xl bg-[var(--card-bg-alt)] border border-[var(--border-color)]"><div class="flex items-center gap-2 mb-2"><span class="text-lg">ð</span><p class="font-[family-name:var(--font-space-grotesk)] font-semibold text-sm text-[var(--text-primary)]">Project Config</p></div><code class="text-xs text-[var(--primary-blue)] font-mono">.synapse/config.json</code><p class="mt-2 text-xs text-[var(--text-muted)] font-[family-name:var(--font-inter)]">Project-scoped settings. Overrides global config for this specific project.</p></div></div></div><div class="mb-8">
11<h3 class="font-[family-name:var(--font-space-grotesk)] font-semibold text-lg text-[var(--text-primary)] mb-4">API Key Precedence</h3><div class="space-y-2"><div class="flex items-start gap-3 p-3 sm:p-4 rounded-xl bg-[var(--card-bg-alt)] border border-[var(--border-color)]"><div class="w-8 h-8 rounded-full bg-[var(--primary-blue)]/10 border border-[var(--primary-blue)]/20 flex items-center justify-center text-sm font-bold text-[var(--primary-blue)] shrink-0">1</div><div class="flex-1 min-w-0"><div class="flex flex-wrap items-center gap-2 mb-1"><code class="text-sm font-mono text-[var(--text-primary)] break-all min-w-0">SYNAPSE_API_KEY</code><span class="inline-flex items-center gap-1 px-2.5 py-0.5 rounded-full text-xs font-medium border bg-[var(--primary-blue)]/10 text-[var(--primary-blue)] border-[var(--primary-blue)]/20">Environment Variable</span></div><p class="text-xs text-[var(--text-muted)] font-[family-name:var(--font-inter)] break-words">Set this to override all config files. Ideal for CI/CD pipelines.</p></div></div><div class="flex items-start gap-3 p-3 sm:p-4 rounded-xl bg-[var(--card-bg-alt)] border border-[var(--border-color)]"><div class="w-8 h-8 rounded-full bg-[var(--primary-blue)]/10 border border-[var(--primary-blue)]/20 flex items-center justify-center text-sm font-bold text-[var(--primary-blue)] shrink-0">2</div><div class="flex-1 min-w-0"><div class="flex flex-wrap items-center gap-2 mb-1"><code class="text-sm font-mono text-[var(--text-primary)] break-all min-w-0">.synapse/config.json</code><span class="inline-flex items-center gap-1 px-2.5 py-0.5 rounded-full text-xs font-medium border bg-[var(--card-bg-alt)] text-[var(--text-muted)] border-[var(--border-color)]">Project Key</span></div><p class="text-xs text-[var(--text-muted)] font-[family-name:var(--font-inter)] break-words">Scoped to the current project. Set via synapse config --key.</p></div></div><div class="flex items-start gap-3 p-3 sm:p-4 rounded-xl bg-[var(--card-bg-alt)] border border-[var(--border-color)]"><div class="w-8 h-8 rounded-full bg-[var(--primary-blue)]/10 border border-[var(--primary-blue)]/20 flex items-center justify-center text-sm font-bold text-[var(--primary-blue)] shrink-0">3</div><div class="flex-1 min-w-0"><div class="flex flex-wrap items-center gap-2 mb-1"><code class="text-sm font-mono text-[var(--text-primary)] break-all min-w-0">~/.synapse/config.json</code><span class="inline-flex items-center gap-1 px-2.5 py-0.5 rounded-full text-xs font-medium border bg-[var(--card-bg-alt)] text-[var(--text-muted)] border-[var(--border-color)]">Global Key</span></div><p class="text-xs text-[var(--text-muted)] font-[family-name:var(--font-inter)] break-words">Fallback for all projects. Set via synapse config --global --key.</p></div></div></div></div><div class="mb-8"><h3 class="font-[family-name:var(--font-space-grotesk)] font-semibold text-lg text-[var(--text-primary)] mb-2 flex items-center gap-2"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-key w-5 h-5 text-[var(--primary-blue)]" aria-hidden="true"><path d="m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4"></path><path d="m21 2-9.6 9.6"></path><circle cx="7.5" cy="15.5" r="5.5"></circle></svg>Generating Your API Key</h3><p class="font-[family-name:var(--font-inter)] text-sm text-[var(--text-secondary)] mb-6">API keys are created from the Synapse web console. Follow these steps:</p><div class="space-y-0"><div class="flex gap-5"><div class="flex flex-col items-center"><div class="w-8 h-8 rounded-full bg-[var(--primary-blue)]/10 border border-[var(--primary-blue)]/30 flex items-center justify-center text-xs font-bold text-[var(--primary-blue)] shrink-0">1</div><div class="w-px flex-1 bg-gradient-to-b from-[var(--primary-blue)]/20 to-transparent mt-1"></div></div><div class="flex-1 pb-6"><p class="font-[family-name:var(--font-space-grotesk)] font-semibold text-sm text-[var(--text-primary)] mb-1">Sign in to the Synapse Console</p><p class="text-xs text-[var(--text-muted)] font-[family-name:var
11(--font-inter)] leading-relaxed">Go to<!-- --> <a href="https://synapse.2ndbrainlabs.ai" target="_blank" rel="noopener noreferrer" class="text-[var(--primary-blue)] hover:underline">synapse.2ndbrainlabs.ai</a> <!-- -->and sign in to your account.</p></div></div><div class="flex gap-5"><div class="flex flex-col items-center"><div class="w-8 h-8 rounded-full bg-[var(--primary-blue)]/10 border border-[var(--primary-blue)]/30 flex items-center justify-center text-xs font-bold text-[var(--primary-blue)] shrink-0">2</div><div class="w-px flex-1 bg-gradient-to-b from-[var(--primary-blue)]/20 to-transparent mt-1"></div></div><div class="flex-1 pb-6"><p class="font-[family-name:var(--font-space-grotesk)] font-semibold text-sm text-[var(--text-primary)] mb-1">Open "API Keys" from the sidebar</p><p class="text-xs text-[var(--text-muted)] font-[family-name:var(--font-inter)] leading-relaxed">In the left sidebar of the console, click API Keys.</p></div></div><div class="flex gap-5"><div class="flex flex-col items-center"><div class="w-8 h-8 rounded-full bg-[var(--primary-blue)]/10 border border-[var(--primary-blue)]/30 flex items-center justify-center text-xs font-bold text-[var(--primary-blue)] shrink-0">3</div><div class="w-px flex-1 bg-gradient-to-b from-[var(--primary-blue)]/20 to-transparent mt-1"></div></div><div class="flex-1 pb-6"><p class="font-[family-name:var(--font-space-grotesk)] font-semibold text-sm text-[var(--text-primary)] mb-1">Click "Create API Key"</p><p class="text-xs text-[var(--text-muted)] font-[family-name:var(--font-inter)] leading-relaxed">Give your key a descriptive name (e.g. "my-laptop") so you can identify it later.</p></div></div><div class="flex gap-5"><div class="flex flex-col items-center"><div class="w-8 h-8 rounded-full bg-[var(--primary-blue)]/10 border border-[var(--primary-blue)]/30 flex items-center justify-center text-xs font-bold text-[var(--primary-blue)] shrink-0">4</div><div class="w-px flex-1 bg-gradient-to-b from-[var(--primary-blue)]/20 to-transparent mt-1"></div></div><div class="flex-1 pb-6"><p class="font-[family-name:var(--font-space-grotesk)] font-semibold text-sm text-[var(--text-primary)] mb-1">Copy your key immediately</p><p class="text-xs text-[var(--text-muted)] font-[family-name:var(--font-inter)] leading-relaxed">The full key is displayed only once. Copy it now, you won't be able to see it again.</p></div></div><div class="flex gap-5"><div class="flex flex-col items-center"><div class="w-8 h-8 rounded-full bg-[var(--primary-blue)]/10 border border-[var(--primary-blue)]/30 flex items-center justify-center text-xs font-bold text-[var(--primary-blue)] shrink-0">5</div></div><div class="flex-1 pb-0"><p class="font-[family-name:var(--font-space-grotesk)] font-semibold text-sm text-[var(--text-primary)] mb-1">Apply it globally with Synapse CLI</p><p class="text-xs text-[var(--text-muted)] font-[family-name:var(--font-inter)] leading-relaxed">Run the command below to store it machine-wide:</p><div class="mt-3"><div class="relative group rounded-xl overflow-hidden border border-[var(--border-color)] bg-[#0D0D0D]"><div class="flex items-center justify-between px-4 py-2 bg-[#161616] border-b border-[#2a2a2a]"><div class="flex gap-1.5"><span class="w-3 h-3 rounded-full bg-[#FF5F57]"></span><span class="w-3 h-3 rounded-full bg-[#FFBD2E]"></span><span class="w-3 h-3 rounded-full bg-[#28C840]"></span></div><span class="text-[10px] text-[#666] font-mono uppercase tracking-wider">bash</span><button class="flex items-center gap-1 text-xs text-[#888] hover:text-white transition-colors"><span class="flex items-center gap-1" style="opacity:0;transform:scale(0.8)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy w-3.5 h-3.5" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg>Copy</span></button></div><pre class="p-4 text-sm font-mono leading-relaxed overflow-x-auto"><span class="block"><span class="text-[#D4D4D4]">synapse config --global --key <YOUR_API_KEY></span></span></pre></div></div></div></div></div><div class="mt-4 p-4 rounded-xl bg-[var(--primary-blue)]/5 border border-[var(--primary-blue)]/20">
11<p class="font-[family-name:var(--font-inter)] text-sm font-semibold text-[var(--primary-blue)] mb-1 flex items-center gap-2"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-shield w-4 h-4" aria-hidden="true"><path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"></path></svg>Security</p><p class="text-xs text-[var(--text-muted)] font-[family-name:var(--font-inter)] leading-relaxed">Your key is encrypted at rest using<!-- --> <strong class="text-[var(--text-secondary)]">Fernet symmetric encryption</strong>, never shared or logged. Config files are automatically excluded from version control via<!-- --> <code class="text-[var(--primary-blue)]">.gitignore</code>. Keys are never displayed in full; only the first 5 characters are shown followed by asterisks.</p></div></div></div></div><div class="backdrop-blur-md bg-[var(--card-bg)]/70 border border-[var(--border-color)] rounded-2xl p-6 lg:p-8 " style="opacity:0;transform:translateY(24px)"><div id="providers" class="scroll-mt-28"><div class="flex items-center gap-3 mb-6"><div class="w-10 h-10 rounded-xl bg-[var(--primary-blue)]/10 border border-[var(--primary-blue)]/20 flex items-center justify-center"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-cpu w-5 h-5 text-[var(--primary-blue)]" aria-hidden="true"><path d="M12 20v2"></path><path d="M12 2v2"></path><path d="M17 20v2"></path><path d="M17 2v2"></path><path d="M2 12h2"></path><path d="M2 17h2"></path><path d="M2 7h2"></path><path d="M20 12h2"></path><path d="M20 17h2"></path><path d="M20 7h2"></path><path d="M7 20v2"></path><path d="M7 2v2"></path><rect x="4" y="4" width="16" height="16" rx="2"></rect><rect x="8" y="8" width="8" height="8" rx="1"></rect></svg></div><h2 class="font-[family-name:var(--font-space-grotesk)] font-bold text-xl sm:text-2xl lg:text-3xl bg-gradient-to-r from-[var(--primary-blue)] to-[var(--primary-blue-bright)] bg-clip-text text-transparent">LLM Providers</h2></div><div id="prov-overview" class="scroll-mt-28 mb-8"><h3 class="font-[family-name:var(--font-space-grotesk)] font-semibold text-lg text-[var(--text-primary)] mb-2">Overview</h3><p class="text-sm text-[var(--text-secondary)] font-[family-name:var(--font-inter)] leading-relaxed">Building with <code class="text-[var(--primary-blue)]">--local</code> runs codegen in-process using your own LLM key, instead of the hosted Synapse service. There's no quota, no code upload, and no signup required. <strong class="text-[var(--text-primary)]">Anthropic</strong> <!-- -->is the default provider, but you can switch to any supported provider or a custom OpenAI-compatible endpoint.</p></div><div id="prov-choosing" class="scroll-mt-28 mb-8"><h3 class="font-[family-name:var(--font-space-grotesk)] font-semibold text-lg text-[var(--text-primary)] mb-4">Choosing a Provider</h3><p class="text-sm text-[var(--text-secondary)] font-[family-name:var(--font-inter)] leading-relaxed mb-4">The <code class="text-[var(--primary-blue)]">synapse model</code> command family lets you inspect and switch providers:</p><div class="rounded-xl bg-[var(--card-bg-alt)] border border-[var(--border-color)] px-4 sm:px-6 mb-4"><div class="flex flex-col sm:flex-row sm:items-start gap-2 py-3 border-b border-[var(--border-color)] last:border-0"><code class="shrink-0 font-mono text-xs bg-[var(--primary-blue)]/10 text-[var(--primary-blue)] px-2 py-1 rounded-md">synapse model</code><span class="text-sm text-[var(--text-secondary)] font-[family-name:var(--font-inter)]">Show the provider and model currently used for local builds.</span></div><div class="flex flex-col sm:flex-row sm:items-start gap-2 py-3 border-b border-[var(--border-color)] last:border-0"><code class="shrink-0 font-mono text-xs bg-[var(--primary-blue)]/10 text-[var(--primary-blue)] px-2 py-1 rounded-md">synapse model list</code><span class="text-sm text-[var(--text-secondary)] font-[family-name:var
11(--font-inter)]">List every supported provider, its default model, and whether a key is configured.</span></div><div class="flex flex-col sm:flex-row sm:items-start gap-2 py-3 border-b border-[var(--border-color)] last:border-0"><code class="shrink-0 font-mono text-xs bg-[var(--primary-blue)]/10 text-[var(--primary-blue)] px-2 py-1 rounded-md">synapse model set <provider></code><span class="text-sm text-[var(--text-secondary)] font-[family-name:var(--font-inter)]">Switch the active provider for local builds.</span></div><div class="flex flex-col sm:flex-row sm:items-start gap-2 py-3 border-b border-[var(--border-color)] last:border-0"><code class="shrink-0 font-mono text-xs bg-[var(--primary-blue)]/10 text-[var(--primary-blue)] px-2 py-1 rounded-md">synapse model reset</code><span class="text-sm text-[var(--text-secondary)] font-[family-name:var(--font-inter)]">Revert to the default provider, Anthropic.</span></div></div><p class="text-sm text-[var(--text-secondary)] font-[family-name:var(--font-inter)] leading-relaxed mb-4">You can pin a specific model to every stage at once, or pin different models per stage:</p><div class="mb-6"><div class="relative group rounded-xl overflow-hidden border border-[var(--border-color)] bg-[#0D0D0D]"><div class="flex items-center justify-between px-4 py-2 bg-[#161616] border-b border-[#2a2a2a]"><div class="flex gap-1.5"><span class="w-3 h-3 rounded-full bg-[#FF5F57]"></span><span class="w-3 h-3 rounded-full bg-[#FFBD2E]"></span><span class="w-3 h-3 rounded-full bg-[#28C840]"></span></div><span class="text-[10px] text-[#666] font-mono uppercase tracking-wider">bash</span><button class="flex items-center gap-1 text-xs text-[#888] hover:text-white transition-colors"><span class="flex items-center gap-1" style="opacity:0;transform:scale(0.8)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy w-3.5 h-3.5" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg>Copy</span></button></div><pre class="p-4 text-sm font-mono leading-relaxed overflow-x-auto"><span class="block"><span class="text-[#6A9955]"># Pin one model for every stage</span></span><span class="block"><span class="text-[#D4D4D4]">synapse model set openai --model gpt-5</span></span><span class="block"><span class="text-[#D4D4D4]"></span></span><span class="block"><span class="text-[#6A9955]"># Pin different models per stage</span></span><span class="block"><span class="text-[#D4D4D4]">synapse model set groq --generate "openai/gpt-oss-120b" --triage "llama-3.1-8b-instant"</span></span></pre></div></div><div class="grid sm:grid-cols-2 gap-3"><div class="p-3 rounded-xl bg-[var(--card-bg-alt)] border border-[var(--border-color)] flex items-start gap-2"><code class="text-xs font-mono text-[var(--primary-blue)] shrink-0">anthropic</code><span class="text-xs text-[var(--text-muted)] font-[family-name:var(--font-inter)]">Native Messages API. Default provider.</span></div><div class="p-3 rounded-xl bg-[var(--card-bg-alt)] border border-[var(--border-color)] flex items-start gap-2"><code class="text-xs font-mono text-[var(--primary-blue)] shrink-0">openai</code><span class="text-xs text-[var(--text-muted)] font-[family-name:var(--font-inter)]">OpenAI chat completions.</span></div><div class="p-3 rounded-xl bg-[var(--card-bg-alt)] border border-[var(--border-color)] flex items-start gap-2"><code class="text-xs font-mono text-[var(--primary-blue)] shrink-0">groq</code><span class="text-xs text-[var(--text-muted)] font-[family-name:var(--font-inter)]">Groq-hosted open models.</span></div><div class="p-3 rounded-xl bg-[var(--card-bg-alt)] border border-[var(--border-color)] flex items-start gap-2"><code class="text-xs font-mono text-[var(--primary-blue)] shrink-0">grok</code><span class="text-xs text-[var(--text-muted)] font-[family-name:var(--font-inter)]">xAI's Grok models.</span></div><div class="p-3 rounded-xl bg-[var(--card-bg-alt)] border border-[var(--border-color)] flex items-start gap-2"><code class="text-xs font-mono text-[var(--primary-blue)] shrink-0">openrouter</code><span class="text-xs text-[var(--text-muted)] font-[family-name:var
11(--font-inter)]">Routes to any model available on OpenRouter.</span></div><div class="p-3 rounded-xl bg-[var(--card-bg-alt)] border border-[var(--border-color)] flex items-start gap-2"><code class="text-xs font-mono text-[var(--primary-blue)] shrink-0">ollama</code><span class="text-xs text-[var(--text-muted)] font-[family-name:var(--font-inter)]">Local models served by Ollama.</span></div><div class="p-3 rounded-xl bg-[var(--card-bg-alt)] border border-[var(--border-color)] flex items-start gap-2"><code class="text-xs font-mono text-[var(--primary-blue)] shrink-0">custom</code><span class="text-xs text-[var(--text-muted)] font-[family-name:var(--font-inter)]">Any OpenAI-compatible chat completions endpoint.</span></div></div></div><div id="prov-keys" class="scroll-mt-28 mb-8"><h3 class="font-[family-name:var(--font-space-grotesk)] font-semibold text-lg text-[var(--text-primary)] mb-4 flex items-center gap-2"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-key w-5 h-5 text-[var(--primary-blue)]" aria-hidden="true"><path d="m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4"></path><path d="m21 2-9.6 9.6"></path><circle cx="7.5" cy="15.5" r="5.5"></circle></svg>Providing Your API Key</h3><p class="text-sm text-[var(--text-secondary)] font-[family-name:var(--font-inter)] leading-relaxed mb-4">There are three ways to provide a key for local builds, checked in this order:</p><div class="space-y-2 mb-6"><div class="flex items-start gap-3 p-3 sm:p-4 rounded-xl bg-[var(--card-bg-alt)] border border-[var(--border-color)]"><div class="w-8 h-8 rounded-full bg-[var(--primary-blue)]/10 border border-[var(--primary-blue)]/20 flex items-center justify-center text-sm font-bold text-[var(--primary-blue)] shrink-0">1</div><div class="flex-1 min-w-0"><div class="flex flex-wrap items-center gap-2 mb-1"><code class="text-sm font-mono text-[var(--text-primary)] break-all min-w-0">Environment variable</code><span class="inline-flex items-center gap-1 px-2.5 py-0.5 rounded-full text-xs font-medium border bg-[var(--primary-blue)]/10 text-[var(--primary-blue)] border-[var(--primary-blue)]/20">Per-provider</span></div><p class="text-xs text-[var(--text-muted)] font-[family-name:var(--font-inter)] break-words">ANTHROPIC_API_KEY, OPENAI_API_KEY, GROQ_API_KEY, XAI_API_KEY / GROK_API_KEY, OPENROUTER_API_KEY, OLLAMA_API_KEY (optional), or the universal fallback SYNAPSE_LLM_API_KEY.</p></div></div><div class="flex items-start gap-3 p-3 sm:p-4 rounded-xl bg-[var(--card-bg-alt)] border border-[var(--border-color)]"><div class="w-8 h-8 rounded-full bg-[var(--primary-blue)]/10 border border-[var(--primary-blue)]/20 flex items-center justify-center text-sm font-bold text-[var(--primary-blue)] shrink-0">2</div><div class="flex-1 min-w-0"><div class="flex flex-wrap items-center gap-2 mb-1"><code class="text-sm font-mono text-[var(--text-primary)] break-all min-w-0">--llm-api-key</code><span class="inline-flex items-center gap-1 px-2.5 py-0.5 rounded-full text-xs font-medium border bg-[var(--card-bg-alt)] text-[var(--text-muted)] border-[var(--border-color)]">One-off Flag</span></div><p class="text-xs text-[var(--text-muted)] font-[family-name:var(--font-inter)] break-words">Pass a key for a single invocation, paired with --provider, without changing stored config.</p></div></div><div class="flex items-start gap-3 p-3 sm:p-4 rounded-xl bg-[var(--card-bg-alt)] border border-[var(--border-color)]"><div class="w-8 h-8 rounded-full bg-[var(--primary-blue)]/10 border border-[var(--primary-blue)]/20 flex items-center justify-center text-sm font-bold text-[var(--primary-blue)] shrink-0">3</div><div class="flex-1 min-w-0"><div class="flex flex-wrap items-center gap-2 mb-1"><code class="text-sm font-mono text-[var(--text-primary)] break-all min-w-0">synapse model set <provider> --save-key <key></code><span class="inline-flex items-center gap-1 px-2.5 py-0.5 rounded-full text-xs font-medium border bg-[var(--card-bg-alt)] text-[var(--text-muted)] border-[var(--border-color)]">Stored & Encrypted</span></div><p class="text-xs text-[var(--text-muted)] font-[family-name:var
11(--font-inter)] break-words">Saved machine-bound and encrypted at rest; never stored in plaintext.</p></div></div></div></div><div id="prov-quickstart" class="scroll-mt-28 mb-8"><h3 class="font-[family-name:var(--font-space-grotesk)] font-semibold text-lg text-[var(--text-primary)] mb-4">Copy-Paste Quickstarts</h3><div class="space-y-4"><div><p class="text-xs font-semibold text-[var(--text-muted)] font-[family-name:var(--font-inter)] uppercase tracking-wider mb-2">Anthropic (default)</p><div class="relative group rounded-xl overflow-hidden border border-[var(--border-color)] bg-[#0D0D0D]"><div class="flex items-center justify-between px-4 py-2 bg-[#161616] border-b border-[#2a2a2a]"><div class="flex gap-1.5"><span class="w-3 h-3 rounded-full bg-[#FF5F57]"></span><span class="w-3 h-3 rounded-full bg-[#FFBD2E]"></span><span class="w-3 h-3 rounded-full bg-[#28C840]"></span></div><span class="text-[10px] text-[#666] font-mono uppercase tracking-wider">bash</span><button class="flex items-center gap-1 text-xs text-[#888] hover:text-white transition-colors"><span class="flex items-center gap-1" style="opacity:0;transform:scale(0.8)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy w-3.5 h-3.5" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg>Copy</span></button></div><pre class="p-4 text-sm font-mono leading-relaxed overflow-x-auto"><span class="block"><span class="text-[#D4D4D4]">export ANTHROPIC_API_KEY=sk-ant-...</span></span><span class="block"><span class="text-[#D4D4D4]">synapse build --local</span></span></pre></div></div><div><p class="text-xs font-semibold text-[var(--text-muted)] font-[family-name:var(--font-inter)] uppercase tracking-wider mb-2">Groq</p><div class="relative group rounded-xl overflow-hidden border border-[var(--border-color)] bg-[#0D0D0D]"><div class="flex items-center justify-between px-4 py-2 bg-[#161616] border-b border-[#2a2a2a]"><div class="flex gap-1.5"><span class="w-3 h-3 rounded-full bg-[#FF5F57]"></span><span class="w-3 h-3 rounded-full bg-[#FFBD2E]"></span><span class="w-3 h-3 rounded-full bg-[#28C840]"></span></div><span class="text-[10px] text-[#666] font-mono uppercase tracking-wider">bash</span><button class="flex items-center gap-1 text-xs text-[#888] hover:text-white transition-colors"><span class="flex items-center gap-1" style="opacity:0;transform:scale(0.8)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy w-3.5 h-3.5" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg>Copy</span></button></div><pre class="p-4 text-sm font-mono leading-relaxed overflow-x-auto"><span class="block"><span class="text-[#D4D4D4]">export GROQ_API_KEY=gsk_...</span></span><span class="block"><span class="text-[#D4D4D4]">synapse model set groq</span></span><span class="block"><span class="text-[#D4D4D4]">synapse build --local --custom</span></span></pre></div></div><div><p class="text-xs font-semibold text-[var(--text-muted)] font-[family-name:var(--font-inter)] uppercase tracking-wider mb-2">OpenAI</p><div class="relative group rounded-xl overflow-hidden border border-[var(--border-color)] bg-[#0D0D0D]"><div class="flex items-center justify-between px-4 py-2 bg-[#161616] border-b border-[#2a2a2a]"><div class="flex gap-1.5"><span class="w-3 h-3 rounded-full bg-[#FF5F57]"></span><span class="w-3 h-3 rounded-full bg-[#FFBD2E]"></span><span class="w-3 h-3 rounded-full bg-[#28C840]"></span></div><span class="text-[10px] text-[#666] font-mono uppercase tracking-wider">bash</span><button class="flex items-center gap-1 text-xs text-[#888] hover:text-white transition-colors"><span class="flex items-center gap-1" style="opacity:0;transform:scale(0.8)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy w-3.5 h-3.5" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg>Copy</span></button></div><pre class="p-4 text-sm font-mono leading-relaxed overflow-x-auto"><span class="block"><span class="text-[#D4D4D4]">export OPENAI_API_KEY=sk-...</span></span><span class="block"><span class="text-[#D4D4D4]">synapse model set openai</span></span><span class="block"><span class="text-[#D4D4D4]">synapse build --local --custom</span></span></pre></div></div><div><p class="text-xs font-semibold text-[var(--text-muted)] font-[family-name:var
11(--font-inter)] uppercase tracking-wider mb-2">xAI (Grok)</p><div class="relative group rounded-xl overflow-hidden border border-[var(--border-color)] bg-[#0D0D0D]"><div class="flex items-center justify-between px-4 py-2 bg-[#161616] border-b border-[#2a2a2a]"><div class="flex gap-1.5"><span class="w-3 h-3 rounded-full bg-[#FF5F57]"></span><span class="w-3 h-3 rounded-full bg-[#FFBD2E]"></span><span class="w-3 h-3 rounded-full bg-[#28C840]"></span></div><span class="text-[10px] text-[#666] font-mono uppercase tracking-wider">bash</span><button class="flex items-center gap-1 text-xs text-[#888] hover:text-white transition-colors"><span class="flex items-center gap-1" style="opacity:0;transform:scale(0.8)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy w-3.5 h-3.5" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg>Copy</span></button></div><pre class="p-4 text-sm font-mono leading-relaxed overflow-x-auto"><span class="block"><span class="text-[#D4D4D4]">export XAI_API_KEY=xai-...</span></span><span class="block"><span class="text-[#D4D4D4]">synapse model set grok</span></span><span class="block"><span class="text-[#D4D4D4]">synapse build --local --custom</span></span></pre></div></div><div><p class="text-xs font-semibold text-[var(--text-muted)] font-[family-name:var(--font-inter)] uppercase tracking-wider mb-2">OpenRouter</p><div class="relative group rounded-xl overflow-hidden border border-[var(--border-color)] bg-[#0D0D0D]"><div class="flex items-center justify-between px-4 py-2 bg-[#161616] border-b border-[#2a2a2a]"><div class="flex gap-1.5"><span class="w-3 h-3 rounded-full bg-[#FF5F57]"></span><span class="w-3 h-3 rounded-full bg-[#FFBD2E]"></span><span class="w-3 h-3 rounded-full bg-[#28C840]"></span></div><span class="text-[10px] text-[#666] font-mono uppercase tracking-wider">bash</span><button class="flex items-center gap-1 text-xs text-[#888] hover:text-white transition-colors"><span class="flex items-center gap-1" style="opacity:0;transform:scale(0.8)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy w-3.5 h-3.5" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg>Copy</span></button></div><pre class="p-4 text-sm font-mono leading-relaxed overflow-x-auto"><span class="block"><span class="text-[#D4D4D4]">export OPENROUTER_API_KEY=sk-or-...</span></span><span class="block"><span class="text-[#D4D4D4]">synapse model set openrouter</span></span><span class="block"><span class="text-[#D4D4D4]">synapse build --local --custom</span></span></pre></div></div><div><p class="text-xs font-semibold text-[var(--text-muted)] font-[family-name:var(--font-inter)] uppercase tracking-wider mb-2">Ollama (local)</p><div class="relative group rounded-xl overflow-hidden border border-[var(--border-color)] bg-[#0D0D0D]"><div class="flex items-center justify-between px-4 py-2 bg-[#161616] border-b border-[#2a2a2a]"><div class="flex gap-1.5"><span class="w-3 h-3 rounded-full bg-[#FF5F57]"></span><span class="w-3 h-3 rounded-full bg-[#FFBD2E]"></span><span class="w-3 h-3 rounded-full bg-[#28C840]"></span></div><span class="text-[10px] text-[#666] font-mono uppercase tracking-wider">bash</span><button class="flex items-center gap-1 text-xs text-[#888] hover:text-white transition-colors"><span class="flex items-center gap-1" style="opacity:0;transform:scale(0.8)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy w-3.5 h-3.5" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg>Copy</span></button></div><pre class="p-4 text-sm font-mono leading-relaxed overflow-x-auto"><span class="block"><span class="text-[#D4D4D4]">synapse model set ollama</span></span><span class="block"><span class="text-[#D4D4D4]">synapse build --local --custom</span></span></pre></div></div></div></div><div id="prov-limits" class="scroll-mt-28">
11<h3 class="font-[family-name:var(--font-space-grotesk)] font-semibold text-lg text-[var(--text-primary)] mb-2 flex items-center gap-2"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-shield w-5 h-5 text-[var(--primary-blue)]" aria-hidden="true"><path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"></path></svg>Local-Mode Limits</h3><div class="space-y-2"><div class="p-3 rounded-xl bg-[var(--card-bg-alt)] border border-[var(--border-color)]"><p class="text-xs text-[var(--text-muted)] font-[family-name:var(--font-inter)]"><strong class="text-[var(--text-secondary)]">--auto requires the hosted service</strong> â use <code class="text-[var(--primary-blue)]">--custom</code> (the default in local mode) instead.</p></div><div class="p-3 rounded-xl bg-[var(--card-bg-alt)] border border-[var(--border-color)]"><p class="text-xs text-[var(--text-muted)] font-[family-name:var(--font-inter)]"><strong class="text-[var(--text-secondary)]">Anonymous telemetry</strong> (event names and counts only â no code or prompts) is still sent to help us see adoption. Opt out with<!-- --> <code class="text-[var(--primary-blue)]">SYNAPSE_TELEMETRY=0</code>.</p></div></div></div></div></div><div class="backdrop-blur-md bg-[var(--card-bg)]/70 border border-[var(--border-color)] rounded-2xl p-6 lg:p-8 " style="opacity:0;transform:translateY(24px)"><div id="secrets" class="scroll-mt-28"><div class="flex items-center gap-3 mb-6"><div class="w-10 h-10 rounded-xl bg-[var(--primary-blue)]/10 border border-[var(--primary-blue)]/20 flex items-center justify-center"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-lock w-5 h-5 text-[var(--primary-blue)]" aria-hidden="true"><rect width="18" height="11" x="3" y="11" rx="2" ry="2"></rect><path d="M7 11V7a5 5 0 0 1 10 0v4"></path></svg></div><h2 class="font-[family-name:var(--font-space-grotesk)] font-bold text-xl sm:text-2xl lg:text-3xl bg-gradient-to-r from-[var(--primary-blue)] to-[var(--primary-blue-bright)] bg-clip-text text-transparent">Secrets & Variables</h2></div><p class="text-[var(--text-secondary)] font-[family-name:var(--font-inter)] text-sm leading-relaxed mb-8">When building no-code MCP servers through the Synapse Console, you often need to include API keys, auth tokens, or other credentials in your endpoint headers or payload. Synapse supports two special syntaxes so that <strong class="text-[var(--text-primary)]">no credentials are ever stored in the Synapse database</strong>; everything sensitive stays on your machine.</p><div class="grid grid-cols-1 md:grid-cols-2 gap-4 mb-8"><div class="rounded-xl border border-[var(--primary-blue)]/20 bg-[var(--primary-blue)]/5 p-5"><div class="flex items-center gap-2 mb-3"><code class="font-mono text-sm font-bold text-[var(--primary-blue)] bg-[var(--primary-blue)]/10 px-2 py-0.5 rounded">${VAR_NAME}</code><span class="text-xs font-semibold text-[var(--text-muted)] uppercase tracking-wider">Env Secret</span></div><p class="text-sm text-[var(--text-secondary)] font-[family-name:var(--font-inter)] leading-relaxed">Resolved silently from your local environment at runtime. Never exposed to the AI model. Use this for API keys, auth tokens, tenant IDs, and anything you don't want leaving your machine.</p><div class="mt-3 text-xs text-[var(--text-muted)] font-[family-name:var(--font-inter)] space-y-1"><div>â Works in header values</div><div>â Works in payload field values</div><div>â Works in URLs</div></div></div><div class="rounded-xl border border-[var(--accent-orange)]/20 bg-[var(--accent-orange)]/5 p-5"><div class="flex items-center gap-2 mb-3"><code class="font-mono text-sm font-bold text-[var(--accent-orange)] bg-[var(--accent-orange)]/10 px-2 py-0.5 rounded">{param}</code><span class="text-xs font-semibold text-[var(--text-muted)] uppercase tracking-wider">Dynamic URL Param</span></div><p class="text-sm text-[var(--text-secondary)] font-[family-name:var
11(--font-inter)] leading-relaxed">Becomes a required input parameter in the MCP tool schema. The AI model provides this value on every call. Use this for resource IDs, slugs, or any path segment that changes per request.</p><div class="mt-3 text-xs text-[var(--text-muted)] font-[family-name:var(--font-inter)] space-y-1"><div>â Works in URLs only</div><div>â URL-encoded automatically</div><div>â Shown as AI tool parameter</div></div></div></div><div id="sec-env" class="scroll-mt-28 mb-8"><h3 class="font-[family-name:var(--font-space-grotesk)] font-semibold text-lg text-[var(--text-primary)] mb-3">Env Secrets: <code class="font-mono text-[var(--primary-blue)]">${VAR_NAME}</code></h3><p class="text-sm text-[var(--text-secondary)] font-[family-name:var(--font-inter)] mb-4 leading-relaxed">When adding an endpoint, use <code class="font-mono text-xs bg-[var(--card-bg-alt)] px-1.5 py-0.5 rounded text-[var(--primary-blue)]">${VAR_NAME}</code> anywhere you would normally paste a secret. When generating the MCP config, Synapse automatically detects these placeholders and adds them as empty entries in the <code class="font-mono text-xs bg-[var(--card-bg-alt)] px-1.5 py-0.5 rounded">env</code> block; you fill them in locally.</p><div class="relative group rounded-xl overflow-hidden border border-[var(--border-color)] bg-[#0D0D0D]"><div class="flex items-center justify-between px-4 py-2 bg-[#161616] border-b border-[#2a2a2a]"><div class="flex gap-1.5"><span class="w-3 h-3 rounded-full bg-[#FF5F57]"></span><span class="w-3 h-3 rounded-full bg-[#FFBD2E]"></span><span class="w-3 h-3 rounded-full bg-[#28C840]"></span></div><span class="text-[10px] text-[#666] font-mono uppercase tracking-wider">Header Example</span><button class="flex items-center gap-1 text-xs text-[#888] hover:text-white transition-colors"><span class="flex items-center gap-1" style="opacity:0;transform:scale(0.8)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy w-3.5 h-3.5" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg>Copy</span></button></div><pre class="p-4 text-sm font-mono leading-relaxed overflow-x-auto"><span class="block"><span class="text-[#D4D4D4]">Key: Authorization</span></span><span class="block"><span class="text-[#D4D4D4]">Value: Bearer ${AUTH_TOKEN}</span></span><span class="block"><span class="text-[#D4D4D4]"></span></span><span class="block"><span class="text-[#6A9955]"># AUTH_TOKEN will appear in your generated config as:</span></span><span class="block"><span class="text-[#6A9955]"># "AUTH_TOKEN": ""</span></span><span class="block"><span class="text-[#6A9955]"># fill it in with your actual token locally</span></span></pre></div><div class="mt-4"><div class="relative group rounded-xl overflow-hidden border border-[var(--border-color)] bg-[#0D0D0D]"><div class="flex items-center justify-between px-4 py-2 bg-[#161616] border-b border-[#2a2a2a]"><div class="flex gap-1.5"><span class="w-3 h-3 rounded-full bg-[#FF5F57]"></span><span class="w-3 h-3 rounded-full bg-[#FFBD2E]"></span><span class="w-3 h-3 rounded-full bg-[#28C840]"></span></div><span class="text-[10px] text-[#666] font-mono uppercase tracking-wider">Payload Example</span><button class="flex items-center gap-1 text-xs text-[#888] hover:text-white transition-colors"><span class="flex items-center gap-1" style="opacity:0;transform:scale(0.8)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy w-3.5 h-3.5" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg>Copy</span></button></div><pre class="p-4 text-sm font-mono leading-relaxed overflow-x-auto"><span class="block"><span class="text-[#D4D4D4]">{</span></span><span class="block"><span class="text-[#D4D4D4]"> "message": "user provides this",</span></span><span class="block"><span class="text-[#D4D4D4]"> "api_key": "${MY_API_KEY}"</span></span><span class="block"><span class="text-[#D4D4D4]">}</span></span><span class="block"><span class="text-[#D4D4D4]"></span></span><span class="block"><span class="text-[#6A9955]"># api_key is resolved from env; the AI never sees it</span></span><span class="block"><span class="text-[#6A9955]"># message becomes a normal tool parameter</span></span></pre></div></div></div><div id="sec-dynamic" class="scroll-mt-28 mb-8">
11<h3 class="font-[family-name:var(--font-space-grotesk)] font-semibold text-lg text-[var(--text-primary)] mb-3">Dynamic URL Params: <code class="font-mono text-[var(--accent-orange)]">{param}</code></h3><p class="text-sm text-[var(--text-secondary)] font-[family-name:var(--font-inter)] mb-4 leading-relaxed">Use single-brace syntax in the URL to create AI-configurable path parameters. Each <code class="font-mono text-xs bg-[var(--card-bg-alt)] px-1.5 py-0.5 rounded text-[var(--accent-orange)]">{param}</code> becomes a required <code class="font-mono text-xs bg-[var(--card-bg-alt)] px-1.5 py-0.5 rounded">string</code> input in the MCP tool schema. The value is URL-encoded before substitution.</p><div class="relative group rounded-xl overflow-hidden border border-[var(--border-color)] bg-[#0D0D0D]"><div class="flex items-center justify-between px-4 py-2 bg-[#161616] border-b border-[#2a2a2a]"><div class="flex gap-1.5"><span class="w-3 h-3 rounded-full bg-[#FF5F57]"></span><span class="w-3 h-3 rounded-full bg-[#FFBD2E]"></span><span class="w-3 h-3 rounded-full bg-[#28C840]"></span></div><span class="text-[10px] text-[#666] font-mono uppercase tracking-wider">URL Example</span><button class="flex items-center gap-1 text-xs text-[#888] hover:text-white transition-colors"><span class="flex items-center gap-1" style="opacity:0;transform:scale(0.8)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy w-3.5 h-3.5" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg>Copy</span></button></div><pre class="p-4 text-sm font-mono leading-relaxed overflow-x-auto"><span class="block"><span class="text-[#D4D4D4]">https://api.example.com/users/{user_id}/posts/{post_id}</span></span><span class="block"><span class="text-[#D4D4D4]"></span></span><span class="block"><span class="text-[#6A9955]"># The AI model is asked to provide:</span></span><span class="block"><span class="text-[#6A9955]"># user_id (string): URL path parameter</span></span><span class="block"><span class="text-[#6A9955]"># post_id (string): URL path parameter</span></span></pre></div></div><div id="sec-example" class="scroll-mt-28"><h3 class="font-[family-name:var(--font-space-grotesk)] font-semibold text-lg text-[var(--text-primary)] mb-3">Full Example</h3><p class="text-sm text-[var(--text-secondary)] font-[family-name:var(--font-inter)] mb-4 leading-relaxed">A single endpoint combining all three: static env secret in the domain, auth token in headers, and AI-provided path param in the URL:</p><div class="relative group rounded-xl overflow-hidden border border-[var(--border-color)] bg-[#0D0D0D]"><div class="flex items-center justify-between px-4 py-2 bg-[#161616] border-b border-[#2a2a2a]"><div class="flex gap-1.5"><span class="w-3 h-3 rounded-full bg-[#FF5F57]"></span><span class="w-3 h-3 rounded-full bg-[#FFBD2E]"></span><span class="w-3 h-3 rounded-full bg-[#28C840]"></span></div><span class="text-[10px] text-[#666] font-mono uppercase tracking-wider">Endpoint Config</span><button class="flex items-center gap-1 text-xs text-[#888] hover:text-white transition-colors"><span class="flex items-center gap-1" style="opacity:0;transform:scale(0.8)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy w-3.5 h-3.5" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg>Copy</span></button></div><pre class="p-4 text-sm font-mono leading-relaxed overflow-x-auto"><span class="block"><span class="text-[#D4D4D4]">URL: https://${API_DOMAIN}/v1/documents/{document_id}</span></span><span class="block"><span class="text-[#D4D4D4]">Method: GET</span></span><span class="block"><span class="text-[#D4D4D4]">Headers: Authorization: Bearer ${AUTH_TOKEN}</span></span></pre></div><div class="mt-4"><div class="relative group rounded-xl overflow-hidden border border-[var(--border-color)] bg-[#0D0D0D]"><div class="flex items-center justify-between px-4 py-2 bg-[#161616] border-b border-[#2a2a2a]"><div class="flex gap-1.5"><span class="w-3 h-3 rounded-full bg-[#FF5F57]"></span><span class="w-3 h-3 rounded-full bg-[#FFBD2E]"></span><span class="w-3 h-3 rounded-full bg-[#28C840]"></span></div><span class="text-[10px] text-[#666] font-mono uppercase tracking-wider">Generated claude_desktop_config.json</span><button class="flex items-center gap-1 text-xs text-[#888] hover:text-white transition-colors"><span class="flex items-center gap-1" style="opacity:0;transform:scale(0.8)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy w-3.5 h-3.5" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg>Copy</span></button></div><pre class="p-4 text-sm font-mono leading-relaxed overflow-x-auto"><span class="block"><span class="text-[#D4D4D4]">{</span></span><span class="block"><span class="text-[#D4D4D4]"> "mcpServers": {</span></span><span class="block"><span class="text-[#D4D4D4]"> "my-server": {</span></span><span class="block"><span class="text-[#D4D4D4]"> "command": "
11npx",</span></span><span class="block"><span class="text-[#D4D4D4]"> "args": ["-y", "@2ndbrainlabs-ai/synapse-mcp"],</span></span><span class="block"><span class="text-[#D4D4D4]"> "env": {</span></span><span class="block"><span class="text-[#D4D4D4]"> "SYNAPSE_API_KEY": "YOUR_SYNAPSE_API_KEY",</span></span><span class="block"><span class="text-[#D4D4D4]"> "SYNAPSE_SERVER_ID": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",</span></span><span class="block"><span class="text-[#D4D4D4]"> "SYNAPSE_API_URL": "https://api.synapse.2ndbrainlabs.ai",</span></span><span class="block"><span class="text-[#D4D4D4]"> "API_DOMAIN": "",</span></span><span class="block"><span class="text-[#D4D4D4]"> "AUTH_TOKEN": ""</span></span><span class="block"><span class="text-[#D4D4D4]"> }</span></span><span class="block"><span class="text-[#D4D4D4]"> }</span></span><span class="block"><span class="text-[#D4D4D4]"> }</span></span><span class="block"><span class="text-[#D4D4D4]">}</span></span></pre></div></div><div class="mt-4 p-4 rounded-xl bg-[var(--accent-green)]/5 border border-[var(--accent-green)]/20"><p class="font-[family-name:var(--font-inter)] text-sm font-semibold text-[var(--accent-green-text)] mb-1 flex items-center gap-2"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-shield w-4 h-4" aria-hidden="true"><path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"></path></svg>Zero credentials stored</p><p class="text-xs text-[var(--text-muted)] font-[family-name:var(--font-inter)] leading-relaxed"><code class="text-[var(--primary-blue)]">document_id</code> is an AI parameter, not in this config at all.<!-- --> <code class="text-[var(--primary-blue)]">API_DOMAIN</code> and <code class="text-[var(--primary-blue)]">AUTH_TOKEN</code> are empty placeholders you fill in locally. Neither the Synapse database nor the npm package ever sees your actual secrets.</p></div></div></div></div><div class="backdrop-blur-md bg-[var(--card-bg)]/70 border border-[var(--border-color)] rounded-2xl p-6 lg:p-8 " style="opacity:0;transform:translateY(24px)"><div id="integrations" class="scroll-mt-28"><div class="flex items-center gap-3 mb-6"><div class="w-10 h-10 rounded-xl bg-[var(--primary-blue)]/10 border border-[var(--primary-blue)]/20 flex items-center justify-center"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-plug w-5 h-5 text-[var(--primary-blue)]" aria-hidden="true"><path d="M12 22v-5"></path><path d="M15 8V2"></path><path d="M17 8a1 1 0 0 1 1 1v4a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1z"></path><path d="M9 8V2"></path></svg></div><h2 class="font-[family-name:var(--font-space-grotesk)] font-bold text-xl sm:text-2xl lg:text-3xl bg-gradient-to-r from-[var(--primary-blue)] to-[var(--primary-blue-bright)] bg-clip-text text-transparent">Connect to AI Tools</h2></div><p class="font-[family-name:var(--font-inter)] text-[var(--text-secondary)] mb-2">After running<!-- --> <code class="text-[var(--primary-blue)] bg-[var(--primary-blue)]/10 px-1.5 py-0.5 rounded-md text-sm">synapse build</code>, you'll have a<!-- --> <code class="text-[var(--primary-blue)] bg-[var(--primary-blue)]/10 px-1.5 py-0.5 rounded-md text-sm">mcp_server.py</code> <!-- -->file in your project root. Register it in your AI tool's MCP config so the tool can talk to your codebase.</p><p class="font-[family-name:var(--font-inter)] text-sm text-[var(--text-muted)] mb-8">Replace<!-- --> <code class="text-[var(--primary-blue)]">/absolute/path/to/mcp_server.py</code> with the real path on your machine and<!-- --> <code class="text-[var(--primary-blue)]">my-project</code> with any name you like.</p><div class="space-y-8"><div id="int-claude" class="scroll-mt-28"><div class="flex items-center gap-3 mb-4"><img src="/host_icons/claude-color (1).svg" alt="Claude Desktop" class="w-7 h-7 object-contain"/>
11<h3 class="font-[family-name:var(--font-space-grotesk)] font-semibold text-lg text-[var(--text-primary)]">Claude Desktop</h3></div><div class="mb-3 flex flex-wrap gap-3"><div class="flex flex-col sm:flex-row items-start sm:items-center gap-2 px-3 py-1.5 rounded-lg bg-[var(--card-bg-alt)] border border-[var(--border-color)]"><span class="text-xs font-semibold text-[var(--text-muted)] uppercase tracking-wider font-[family-name:var(--font-inter)] shrink-0">macOS</span><code class="text-xs text-[var(--text-secondary)] font-mono break-all">~/Library/Application Support/Claude/claude_desktop_config.json</code></div><div class="flex flex-col sm:flex-row items-start sm:items-center gap-2 px-3 py-1.5 rounded-lg bg-[var(--card-bg-alt)] border border-[var(--border-color)]"><span class="text-xs font-semibold text-[var(--text-muted)] uppercase tracking-wider font-[family-name:var(--font-inter)] shrink-0">Windows</span><code class="text-xs text-[var(--text-secondary)] font-mono break-all">%APPDATA%\Claude\claude_desktop_config.json</code></div></div><ol class="mt-4 mb-3 space-y-2 list-decimal list-inside text-sm font-[family-name:var(--font-inter)] text-[var(--text-secondary)]"><li>Open (or create) the config file at the path shown for your OS above</li><li>Add the <code class="text-[var(--primary-blue)]">mcpServers</code> block below â if the file already has content, merge the new entry inside the existing <code class="text-[var(--primary-blue)]">mcpServers</code> object</li><li>Replace <code class="text-[var(--primary-blue)]">/absolute/path/to/mcp_server.py</code> with the real path â run <code class="text-[var(--primary-blue)]">pwd</code> in your project directory and append <code class="text-[var(--primary-blue)]">/mcp_server.py</code></li><li>If you set up a virtual env in Step 1, replace <code class="text-[var(--primary-blue)]">"python"</code> with your venv path, e.g. <code class="text-[var(--primary-blue)]">.venv/bin/python3</code></li><li>Save the file, then <strong class="text-[var(--text-primary)]">fully quit Claude Desktop</strong> (Cmd+Q on macOS, or right-click the taskbar icon â Quit on Windows) and reopen it</li></ol><div class="relative group rounded-xl overflow-hidden border border-[var(--border-color)] bg-[#0D0D0D]"><div class="flex items-center justify-between px-4 py-2 bg-[#161616] border-b border-[#2a2a2a]"><div class="flex gap-1.5"><span class="w-3 h-3 rounded-full bg-[#FF5F57]"></span><span class="w-3 h-3 rounded-full bg-[#FFBD2E]"></span><span class="w-3 h-3 rounded-full bg-[#28C840]"></span></div><span class="text-[10px] text-[#666] font-mono uppercase tracking-wider">json</span><button class="flex items-center gap-1 text-xs text-[#888] hover:text-white transition-colors"><span class="flex items-center gap-1" style="opacity:0;transform:scale(0.8)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy w-3.5 h-3.5" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg>Copy</span></button></div><pre class="p-4 text-sm font-mono leading-relaxed overflow-x-auto"><span class="block"><span class="text-[#D4D4D4]">{</span></span><span class="block"><span class="text-[#D4D4D4]"> "mcpServers": {</span></span><span class="block"><span class="text-[#D4D4D4]"> "my-project": {</span></span><span class="block"><span class="text-[#D4D4D4]"> "command": "python",</span></span><span class="block"><span class="text-[#D4D4D4]"> "args": ["/absolute/path/to/mcp_server.py"]</span></span><span class="block"><span class="text-[#D4D4D4]"> }</span></span><span class="block"><span class="text-[#D4D4D4]"> }</span></span><span class="block"><span class="text-[#D4D4D4]">}</span></span></pre></div><p class="mt-2 text-xs text-[var(--text-muted)] font-[family-name:var(--font-inter)]">After reopening, Claude Desktop will connect to your MCP server. You can verify this in the connector/plug icon in the Claude Desktop toolbar.</p></div><div class="h-px bg-[var(--border-color)]"></div><div id="int-cursor" class="scroll-mt-28"><div class="flex items-center gap-3 mb-4"><img src="/host_icons/cursor (1).svg" alt="Cursor" class="w-7 h-7 object-contain" style="filter:invert(1)"/>
11<h3 class="font-[family-name:var(--font-space-grotesk)] font-semibold text-lg text-[var(--text-primary)]">Cursor</h3></div><div class="mb-3 flex flex-wrap gap-3"><div class="flex flex-col sm:flex-row items-start sm:items-center gap-2 px-3 py-1.5 rounded-lg bg-[var(--card-bg-alt)] border border-[var(--border-color)]"><span class="text-xs font-semibold text-[var(--text-muted)] uppercase tracking-wider font-[family-name:var(--font-inter)] shrink-0">Global</span><code class="text-xs text-[var(--text-secondary)] font-mono break-all">~/.cursor/mcp.json</code></div><div class="flex flex-col sm:flex-row items-start sm:items-center gap-2 px-3 py-1.5 rounded-lg bg-[var(--card-bg-alt)] border border-[var(--border-color)]"><span class="text-xs font-semibold text-[var(--text-muted)] uppercase tracking-wider font-[family-name:var(--font-inter)] shrink-0">Project</span><code class="text-xs text-[var(--text-secondary)] font-mono break-all">.cursor/mcp.json</code></div></div><ol class="mt-1 mb-3 space-y-2 list-decimal list-inside text-sm font-[family-name:var(--font-inter)] text-[var(--text-secondary)]"><li>Open (or create) <code class="text-[var(--primary-blue)]">~/.cursor/mcp.json</code> for a global config, or <code class="text-[var(--primary-blue)]">.cursor/mcp.json</code> inside your project to scope it to one workspace</li><li>Add the <code class="text-[var(--primary-blue)]">mcpServers</code> block below, merging if the file already has content</li><li>Replace <code class="text-[var(--primary-blue)]">/absolute/path/to/mcp_server.py</code> with the real path and update <code class="text-[var(--primary-blue)]">"python"</code> to your venv path if applicable</li><li>Save the file â Cursor picks up MCP config changes automatically. Go to <strong class="text-[var(--text-primary)]">Cursor Settings â MCP</strong> to confirm the server appears as enabled</li></ol><div class="relative group rounded-xl overflow-hidden border border-[var(--border-color)] bg-[#0D0D0D]"><div class="flex items-center justify-between px-4 py-2 bg-[#161616] border-b border-[#2a2a2a]"><div class="flex gap-1.5"><span class="w-3 h-3 rounded-full bg-[#FF5F57]"></span><span class="w-3 h-3 rounded-full bg-[#FFBD2E]"></span><span class="w-3 h-3 rounded-full bg-[#28C840]"></span></div><span class="text-[10px] text-[#666] font-mono uppercase tracking-wider">json</span><button class="flex items-center gap-1 text-xs text-[#888] hover:text-white transition-colors"><span class="flex items-center gap-1" style="opacity:0;transform:scale(0.8)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy w-3.5 h-3.5" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg>Copy</span></button></div><pre class="p-4 text-sm font-mono leading-relaxed overflow-x-auto"><span class="block"><span class="text-[#D4D4D4]">{</span></span><span class="block"><span class="text-[#D4D4D4]"> "mcpServers": {</span></span><span class="block"><span class="text-[#D4D4D4]"> "my-project": {</span></span><span class="block"><span class="text-[#D4D4D4]"> "command": "python",</span></span><span class="block"><span class="text-[#D4D4D4]"> "args": ["/absolute/path/to/mcp_server.py"]</span></span><span class="block"><span class="text-[#D4D4D4]"> }</span></span><span class="block"><span class="text-[#D4D4D4]"> }</span></span><span class="block"><span class="text-[#D4D4D4]">}</span></span></pre></div><p class="mt-2 text-xs text-[var(--text-muted)] font-[family-name:var(--font-inter)]">Use the project-level file (<code class="text-[var(--primary-blue)]">.cursor/mcp.json</code>) to scope the server to one workspace only.</p></div><div class="h-px bg-[var(--border-color)]"></div><div id="int-windsurf" class="scroll-mt-28"><div class="flex items-center gap-3 mb-4"><img src="/host_icons/windsurf (1).svg" alt="Windsurf" class="w-7 h-7 object-contain" style="filter:invert(1)"/>
11<h3 class="font-[family-name:var(--font-space-grotesk)] font-semibold text-lg text-[var(--text-primary)]">Windsurf</h3></div><div class="mb-3 flex flex-wrap gap-3"><div class="flex flex-col sm:flex-row items-start sm:items-center gap-2 px-3 py-1.5 rounded-lg bg-[var(--card-bg-alt)] border border-[var(--border-color)]"><span class="text-xs font-semibold text-[var(--text-muted)] uppercase tracking-wider font-[family-name:var(--font-inter)] shrink-0">macOS / Linux</span><code class="text-xs text-[var(--text-secondary)] font-mono break-all">~/.codeium/windsurf/mcp_config.json</code></div></div><div class="relative group rounded-xl overflow-hidden border border-[var(--border-color)] bg-[#0D0D0D]"><div class="flex items-center justify-between px-4 py-2 bg-[#161616] border-b border-[#2a2a2a]"><div class="flex gap-1.5"><span class="w-3 h-3 rounded-full bg-[#FF5F57]"></span><span class="w-3 h-3 rounded-full bg-[#FFBD2E]"></span><span class="w-3 h-3 rounded-full bg-[#28C840]"></span></div><span class="text-[10px] text-[#666] font-mono uppercase tracking-wider">json</span><button class="flex items-center gap-1 text-xs text-[#888] hover:text-white transition-colors"><span class="flex items-center gap-1" style="opacity:0;transform:scale(0.8)"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-copy w-3.5 h-3.5" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg>Copy</span></button></div><pre class="p-4 text-sm font-mono leading-relaxed overflow-x-auto"><span class="block"><span class="text-[#D4D4D4]">{</span></span><span class="block"><span class="text-[#D4D4D4]"> "mcpServers": {</span></span><span class="block"><span class="text-[#D4D4D4]"> "my-project": {</span></span><span class="block"><span class="text-[#D4D4D4]"> "command": "python", // your python executable path: .venv/bin/python3</span></span><span class="block"><span class="text-[#D4D4D4]"> "args": ["/absolute/path/to/mcp_server.py"]</span></span><span class="block"><span class="text-[#D4D4D4]"> }</span></span><span class="block"><span class="text-[#D4D4D4]"> }</span></span><span class="block"><span class="text-[#D4D4D4]">}</span></span></pre></div><p class="mt-2 text-xs text-[var(--text-muted)] font-[family-name:var(--font-inter)]">Restart Windsurf after saving. The server will appear in the MCP panel in Cascade.</p></div><div class="h-px bg-[var(--border-color)]"></div><div id="int-verify" class="scroll-mt-28"><div class="flex items-center gap-3 mb-4"><div class="w-7 h-7 rounded-lg bg-[var(--primary-blue)]/10 border border-[var(--primary-blue)]/20 flex items-center justify-center"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-shield w-4 h-4 text-[var(--primary-blue)]" aria-hidden="true"><path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"></path></svg></div><h3 class="font-[family-name:var(--font-space-grotesk)] font-semibold text-lg text-[var(--text-primary)]">Verify Your MCP Server</h3></div><p class="text-sm font-[family-name:var(--font-inter)] text-[var(--text-secondary)] mb-4">Use these two checks to confirm your MCP server is running correctly end-to-end.</p><div class="space-y-5"><div class="p-4 rounded-xl bg-[var(--card-bg-alt)] border border-[var(--border-color)]"><p class="font-[family-name:var(--font-inter)] text-sm font-semibold text-[var(--text-primary)] mb-2">Step A â Console verification</p><ol class="space-y-1.5 list-decimal list-inside text-sm font-[family-name:var(--font-inter)] text-[var(--text-secondary)]"><li>Go to the <strong class="text-[var(--text-primary)]">Console</strong> page and click <strong class="text-[var(--text-primary)]">Manage MCP Servers</strong> in the left sidebar</li><li>Your MCP server and its exposed tools should be listed there</li><li>If the server is missing, re-run <code class="text-[var(--primary-blue)]">synapse build</code> in your project directory and confirm the <code class="text-[var(--primary-blue)]">mcp_server.py</code> file exists</li></ol></div><div class="p-4 rounded-xl bg-[var(--card-bg-alt)] border border-[var(--border-color)]">
11<p class="font-[family-name:var(--font-inter)] text-sm font-semibold text-[var(--text-primary)] mb-2">Step B â Claude Desktop verification</p><ol class="space-y-1.5 list-decimal list-inside text-sm font-[family-name:var(--font-inter)] text-[var(--text-secondary)]"><li>After reopening Claude Desktop, click the <strong class="text-[var(--text-primary)]">plug / connectors icon</strong> in the toolbar</li><li>Your server (e.g. <code class="text-[var(--primary-blue)]">my-project</code>) should appear under <strong class="text-[var(--text-primary)]">Connected</strong> in the MCP connectors list</li><li>Open a new chat and ask Claude: <em class="text-[var(--text-muted)]">"What tools do you have access to?"</em> â Claude should list your Synapse MCP tools in its response, confirming the connection is working</li></ol></div></div></div></div></div></div><div class="text-center py-8 border-t border-[var(--border-color)]" style="opacity:0"><p class="font-[family-name:var(--font-inter)] text-sm text-[var(--text-muted)]">Synapse v1.0.0 | MIT License</p></div></div></div></div></main><!--$--><!--/$-->
11<script src="/_next/static/chunks/5a277da6910bd95f.js" id="_R_" async=""></script>
11<script>(self.__next_f=self.__next_f||[]).push([0])</script>
11<script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n3:I[39756,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/a2dfb6fc5208ab9b.js\"],\"default\"]\n4:I[37457,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/a2dfb6fc5208ab9b.js\"],\"default\"]\n5:I[47257,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/a2dfb6fc5208ab9b.js\"],\"ClientPageRoot\"]\n6:I[14287,[\"/_next/static/chunks/843abbd6724a173c.js\",\"/_next/static/chunks/5048d5870c970c2a.js\",\"/_next/static/chunks/43019774194bd974.js\",\"/_next/static/chunks/e029c1c13af548f1.js\",\"/_next/static/chunks/bf722bdf67d56b19.js\",\"/_next/static/chunks/5acbcef3d48dd581.js\",\"/_next/static/chunks/b3aede28ac98903b.js\"],\"default\"]\n7:I[97367,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/a2dfb6fc5208ab9b.js\"],\"OutletBoundary\"]\n8:\"$Sreact.suspense\"\na:I[97367,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/a2dfb6fc5208ab9b.js\"],\"ViewportBoundary\"]\nc:I[97367,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/a2dfb6fc5208ab9b.js\"],\"MetadataBoundary\"]\ne:I[68027,[],\"default\"]\nf:I[5622,[\"/_next/static/chunks/843abbd6724a173c.js\",\"/_next/static/chunks/5048d5870c970c2a.js\",\"/_next/static/chunks/43019774194bd974.js\",\"/_next/static/chunks/e029c1c13af548f1.js\"],\"ThemeProvider\"]\n10:I[83642,[\"/_next/static/chunks/843abbd6724a173c.js\",\"/_next/static/chunks/5048d5870c970c2a.js\",\"/_next/static/chunks/43019774194bd974.js\",\"/_next/static/chunks/e029c1c13af548f1.js\"],\"AuthProvider\"]\n11:I[3021,[\"/_next/static/chunks/843abbd6724a173c.js\",\"/_next/static/chunks/5048d5870c970c2a.js\",\"/_next/static/chunks/43019774194bd974.js\",\"/_next/static/chunks/e029c1c13af548f1.js\"],\"SignupModalProvider\"]\n12:I[15977,[\"/_next/static/chunks/843abbd6724a173c.js\",\"/_next/static/chunks/5048d5870c970c2a.js\",\"/_next/static/chunks/43019774194bd974.js\",\"/_next/static/chunks/e029c1c13af548f1.js\"],\"LoginModalProvider\"]\n13:I[5541,[\"/_next/static/chunks/843abbd6724a173c.js\",\"/_next/static/chunks/5048d5870c970c2a.js\",\"/_next/static/chunks/43019774194bd974.js\",\"/_next/static/chunks/e029c1c13af548f1.js\"],\"SignupModal\"]\n14:I[55214,[\"/_next/static/chunks/843abbd6724a173c.js\",\"/_next/static/chunks/5048d5870c970c2a.js\",\"/_next/static/chunks/43019774194bd974.js\",\"/_next/static/chunks/e029c1c13af548f1.js\"],\"LoginModal\"]\n15:I[27201,[\"/_next/static/chunks/ff1a16fafef87110.js\",\"/_next/static/chunks/a2dfb6fc5208ab9b.js\"],\"IconMark\"]\n:HL[\"/_next/static/chunks/0f3cb0e3fd135551.css\",\"style\"]\n:HL[\"/_next/static/chunks/e589eb1c8c88739f.css\",\"style\"]\n:HL[\"/_next/static/media/0c89a48fa5027cee-s.p.4564287c.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/137e738a3044ae84-s.p.238dcd1b.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/fb30396e64817371-s.p.f046f548.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n"])</script>
11<script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"JXJSa-B78iexYyEAhU3Ap\",\"c\":[\"\",\"docs\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"docs\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0f3cb0e3fd135551.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/e589eb1c8c88739f.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/843abbd6724a173c.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/5048d5870c970c2a.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/chunks/43019774194bd974.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-3\",{\"src\":\"/_next/static/chunks/e029c1c13af548f1.js\",\"async\":true,\"nonce\":\"$undefined\"}]],\"$L2\"]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L5\",null,{\"Component\":\"$6\",\"serverProvidedParams\":{\"searchParams\":{},\"params\":{},\"promises\":null}}],[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/bf722bdf67d56b19.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/5acbcef3d48dd581.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/chunks/b3aede28ac98903b.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L7\",null,{\"children\":[\"$\",\"$8\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@9\"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$La\",null,{\"children\":\"$Lb\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Lc\",null,{\"children\":[\"$\",\"$8\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Ld\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$e\",[]],\"S\":false}\n"])</script>
11<script>self.__next_f.push([1,"2:[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"window.__FIREBASE_CONFIG__={\\\"apiKey\\\":\\\"AIzaSyAs24Pez3u-SLNcjpPskhTnlCliFcBiCHg\\\",\\\"authDomain\\\":\\\"synapse-481005.firebaseapp.com\\\",\\\"projectId\\\":\\\"synapse-481005\\\",\\\"appId\\\":\\\"1:747962208988:web:5253592cc9544047175a19\\\"};window.__API_URL__=\\\"\\\";\"}}],[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\\n try {\\n const t = localStorage.getItem('synapse-theme');\\n if (t) document.documentElement.setAttribute('data-theme', t);\\n } catch(e) {}\\n \"}}],[\"$\",\"script\",null,{\"async\":true,\"src\":\"https://www.googletagmanager.com/gtag/js?id=G-8R0LQ120QY\"}],[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\\n window.dataLayer = window.dataLayer || [];\\n function gtag(){dataLayer.push(arguments);}\\n gtag('js', new Date());\\n gtag('config', 'G-8R0LQ120QY');\\n \"}}]]}],[\"$\",\"body\",null,{\"className\":\"space_grotesk_25f324d0-module___WK4EG__variable inter_dfa45f92-module__ig9XPW__variable bai_jamjuree_5dad350c-module__aqmmjq__variable antialiased\",\"children\":[\"$\",\"$Lf\",null,{\"children\":[\"$\",\"$L10\",null,{\"children\":[\"$\",\"$L11\",null,{\"children\":[\"$\",\"$L12\",null,{\"children\":[[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}],[\"$\",\"$L13\",null,{}],[\"$\",\"$L14\",null,{}]]}]}]}]}]}]]}]\n"])</script>
11<script>self.__next_f.push([1,"b:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n9:null\nd:[[\"$\",\"title\",\"0\",{\"children\":\"Synapse: Enterprise AI Platform\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Enterprise-grade AI platform designed to unify data, automate intelligence, and connect your business.\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?favicon.78f02ac7.ico\",\"sizes\":\"256x256\",\"type\":\"image/x-icon\"}],[\"$\",\"$L15\",\"3\",{}]]\n"])</script>
11</body></html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.