PageSourceSearch

https://sekrd.com/_next/static/chunks/0yxvw44bbd.z9.js

js sekrd.com collected 2026-10-05 18:29:57 UTC 42,453 bytes, 87 lines download raw bytes

1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,45605,e=>{"use strict";var s=e.i(43476),t=e.i(71645);e.s(["SekrdLogo",0,function({size:e=40}){let r=(0,t.useId)();return(0,s.jsxs)("svg",{width:e,height:e,viewBox:"0 0 80 80",fill:"none",role:"img","aria-label":"Sekrd",xmlns:"http://www.w3.org/2000/svg",children:[(0,s.jsx)("defs",{children:(0,s.jsxs)("mask",{id:r,children:[(0,s.jsx)("path",{d:"M40 6L12 16v20c0 16 12 28 28 34 16-6 28-18 28-34V16L40 6z",fill:"white"}),(0,s.jsx)("text",{x:"40",y:"51",textAnchor:"middle",fill:"black",fontSize:"44",fontWeight:"800",fontFamily:"SF Pro Display,-apple-system,Helvetica Neue,Helvetica,Arial,sans-serif",children:"S"})]})}),(0,s.jsx)("path",{d:"M40 6L12 16v20c0 16 12 28 28 34 16-6 28-18 28-34V16L40 6z",fill:"#1C1C1E",stroke:"#1C1C1E",strokeWidth:"4",strokeLinejoin:"round"}),(0,s.jsx)("path",{d:"M40 6L12 16v20c0 16 12 28 28 34 16-6 28-18 28-34V16L40 6z",fill:"#30D158",mask:`url(#${r})`}),(0,s.jsx)("circle",{cx:"57.5",cy:"14",r:"10",fill:"#1C1C1E"}),(0,s.jsxs)("circle",{cx:"57.5",cy:"14",r:"5.5",fill:"#30D158",children:[(0,s.jsx)("animate",{attributeName:"r",values:"5.5;3.5;5.5",dur:"2.5s",repeatCount:"indefinite",calcMode:"spline",keySplines:"0.4 0 0.2 1;0.4 0 0.2 1"}),(0,s.jsx)("animate",{attributeName:"opacity",values:"1;0.45;1",dur:"2.5s",repeatCount:"indefinite",calcMode:"spline",keySplines:"0.4 0 0.2 1;0.4 0 0.2 1"})]})]})}])},3265,e=>{"use strict";var s=e.i(43476),t=e.i(22016),r=e.i(71645),i=e.i(26732),n=e.i(45605);let a=[{href:"/pricing",label:"Pricing"},{href:"/docs",label:"Docs"},{href:"/blog",label:"Blog"},{href:"/about",label:"About"}];e.s(["Navbar",0,function(){let[e,c]=(0,r.useState)(!1),{data:l}=(0,i.useSession)();return(0,s.jsxs)("nav",{className:"sticky top-0 z-50 backdrop-blur-xl bg-black/80 border-b border-white/5",children:[(0,s.jsxs)("div",{className:"max-w-6xl mx-auto px-6 h-16 flex items-center justify-between",children:[(0,s.jsxs)(t.default,{href:"/",className:"flex items-center gap-2.5 group",children:[(0,s.jsx)(n.SekrdLogo,{size:28}),(0,s.jsx)("span",{className:"font-[var(--font-heading)] text-lg font-bold tracking-tight group-hover:text-[#30D158] transition-colors",children:"sekrd"})]}),(0,s.jsx)("div",{className:"hidden md:flex items-center gap-6",children:a.map(e=>(0,s.jsx)(t.default,{href:e.href,className:"text-sm text-[#86868B] hover:text-white transition-colors py-2 px-1",children:e.label},e.href))}),(0,s.jsx)("div",{className:"hidden md:flex items-center gap-3",children:l?.user?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.default,{href:"/dashboard",className:"text-sm text-[#86868B] hover:text-white transition-colors px-3 py-2",children:"Dashboard"}),(0,s.jsx)("span",{className:"text-sm text-[#A1A1A6] px-2",children:l.user.name||l.user.email}),(0,s.jsx)("button",{type:"button",onClick:()=>(0,i.signOut)(),className:"text-sm text-[#86868B] hover:text-white transition-colors px-3 py-2",children:"Sign Out"})]}):(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.default,{href:"/auth/signin",className:"text-sm text-[#86868B] hover:text-white transition-colors px-3 py-2",children:"Sign In"}),(0,s.jsx)(t.default,{href:"/scan",className:"px-4 py-2 bg-[#30D158] text-black text-sm font-semibold rounded-lg hover:bg-[#28B84C] transition-all hover:shadow-[0_0_20px_rgba(48,209,88,0.3)]",children:"Scan Now"})]})}),(0,s.jsx)("button",{type:"button",className:"md:hidden p-2.5 -mr-2.5",onClick:()=>c(!e),"aria-label":e?"Close menu":"Open menu","aria-expanded":e,children:(0,s.jsx)("svg",{width:"24",height:"24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:e?(0,s.jsx)("path",{d:"M6 6l12 12M6 18L18 6"}):(0,s.jsx)("path",{d:"M4 6h16M4 12h16M4 18h16"})})})]}),e&&(0,s.jsx)("div",{className:"md:hidden border-t border-white/5 bg-black/95 backdrop-blur-xl",children:(0,s.jsxs)("div",{className:"px-6 py-3",children:[(0,s.jsx)("div",{className:"flex flex-wrap gap-x-5 gap-y-1",children:a.map(e=>(0,s.jsx)(t.default,{href:e.href,className:"text-sm text-[#86868B] hover:text-white py-1.5",onClick:()=>c(!1),children:e.label},e.href))}),(0,s.jsx)("div",{className:"mt-2 pt-2 border-t border-white/5 flex items-center gap-4",children:l?.user?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.default,{href:"/dashboard",className:"text-sm font-bold text-white py-1.5",onClick:()=>c(!1),children:"Dashboard"}),(0,s.jsx)("button",{type:"button",onClick:()=>(0,i.signOut)(),className:"text-sm text-[#86868B] py-1.5",children:"Sign Out"})]}):(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.default,{href:"/auth/signin",className:"text-sm text-[#86868B] py-1.5",children:"Sign In"}),(0,s.jsx)(t.default,{href:"/scan",className:"px-4 py-1.5 bg-[#30D158] text-black text-sm font-semibold rounded-lg",children:"Scan Now"})]})})]})})]})}])},80736,e=>{"use strict";var s=e.i(43476),t=e.i(71645);let r=[{id:"getting-started",label:"Getting Started"},{id:"deep-scan",label:"Deep Scan"},{id:"fix-prompts",label:"Fix Prompts"},{id:"mcp-plugin",label:"MCP Plugin"},{id:"api-reference",label:"API Reference"},{id:"webhooks",label:"Webhooks"},{id:"badge",label:"Badge"},{id:"monitoring",label:"Monitoring"},{id:"ai-review",label:"AI Review"},{id:"scoring",label:"Scoring"},{id:"account",label:"Account & Data"}],i=[{id:"getting-started",title:"Getting Started",keywords:"scan url paste results findings severity fix prompt free signup providers secrets depen
1dencies dast supabase firebase auth payments cost exposure"},{id:"deep-scan",title:"Deep Scan",keywords:"supabase firebase integration credentials project ref service role key rls row level security auth storage bucket edge functions firestore rules realtime database deep scan connect backend"},{id:"fix-prompts",title:"Fix Prompts",keywords:"cursor claude code lovable copy paste fix prompt vulnerability combined prompt pdf report dashboard"},{id:"mcp-plugin",title:"MCP Plugin",keywords:"mcp server fastmcp httpx claude code claude desktop cursor scan_url deep_scan get_scan get_report list_findings install python pip"},{id:"api-reference",title:"API Reference",keywords:"api endpoint post get scan url scans report pdf badge svg curl json request response status queued scanning complete score verdict findings providers"},{id:"webhooks",title:"Webhooks",keywords:"webhook vercel deploy hook ci cd pipeline continuous monitoring notification payload event scan complete"},{id:"badge",title:"Badge",keywords:"badge readme markdown html img svg security score verified"},{id:"monitoring",title:"Monitoring",keywords:"monitoring script tag uptime errors vitals daily rescan alert telegram email pro continuous security"},{id:"scoring",title:"Scoring",keywords:"score verdict trust score deduction severity critical high medium low info hard block ship provider weights points"}];function n({text:e}){let[r,i]=(0,t.useState)(!1);return(0,s.jsx)("button",{type:"button",onClick:()=>{navigator.clipboard.writeText(e),i(!0),setTimeout(()=>i(!1),2e3)},className:"absolute top-2 right-2 px-2 py-1 text-xs rounded bg-[#2C2C2E] hover:bg-[#3A3A3C] text-[#86868B] hover:text-[#F5F5F7] transition-colors",children:r?"Copied!":"Copy"})}function a({children:e,block:t}){return t?(0,s.jsxs)("pre",{className:"relative group my-4 p-4 bg-black border border-[#2C2C2E] rounded-lg overflow-x-auto text-sm leading-relaxed",children:[(0,s.jsx)(n,{text:e}),(0,s.jsx)("code",{className:"font-mono text-[#E5E5EA]",children:e})]}):(0,s.jsx)("code",{className:"px-1.5 py-0.5 bg-[#1C1C1E] border border-[#2C2C2E] rounded text-sm font-mono text-[#30D158]",children:e})}function c({id:e,children:t}){return(0,s.jsx)("h2",{id:e,className:"font-[var(--font-heading)] text-2xl font-bold mb-6 pb-3 border-b border-white/5 scroll-mt-24",children:t})}function l({children:e}){return(0,s.jsx)("h3",{className:"text-lg font-semibold mb-3 mt-8 text-[#F5F5F7]",children:e})}function o({children:e}){return(0,s.jsx)("p",{className:"text-sm text-[#A1A1A6] leading-relaxed mb-4",children:e})}function d({children:e}){return(0,s.jsx)("div",{className:"p-5 rounded-xl bg-[#111113] border border-white/5 mb-4",children:e})}e.s(["default",0,function(){let[e,n]=(0,t.useState)(""),[h,x]=(0,t.useState)(""),p=(0,t.useRef)(null),m=(0,t.useCallback)(e=>{n(e),p.current&&clearTimeout(p.current),p.current=setTimeout(()=>{x(e)},200)},[]);(0,t.useEffect)(()=>()=>{p.current&&clearTimeout(p.current)},[]);let u=h.toLowerCase().trim(),b=u?i.filter(e=>e.title.toLowerCase().includes(u)||e.keywords.toLowerCase().includes(u)).map(e=>e.id):null,j=e=>null===b||b.includes(e),g=null!==b&&0===b.length,f=null===b?r:r.filter(e=>b.includes(e.id));return(0,s.jsxs)("div",{className:"max-w-5xl mx-auto px-6 py-16",children:[(0,s.jsx)("h1",{className:"font-[var(--font-heading)] text-4xl font-bold mb-4",children:"Documentation"}),(0,s.jsx)("p",{className:"text-[#86868B] text-lg mb-6",children:"Everything you need to know about securing your AI-built apps with Sekrd."}),(0,s.jsx)("div",{className:"sticky top-16 z-20 bg-black/95 backdrop-blur-sm pb-4 pt-2 -mx-6 px-6",children:(0,s.jsxs)("div",{className:"relative",children:[(0,s.jsxs)("svg",{className:"absolute left-4 top-1/2 -translate-y-1/2 w-4 h-4 text-[#86868B]",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",strokeWidth:2,children:[(0,s.jsx)("circle",{cx:"11",cy:"11",r:"8"}),(0,s.jsx)("path",{d:"m21 21-4.35-4.35",strokeLinecap:"round"})]}),(0,s.jsx)("input",{type:"text",value:e,onChange:e=>m(e.target.value),placeholder:"Search docs...",className:"w-full pl-11 pr-10 py-3 bg-black border border-[#2C2C2E] rounded-lg text-[#F5F5F7] placeholder:text-[#86868B]/50 focus:outline-none focus:border-[#30D158] transition-colors text-sm"}),e&&(0,s.jsx)("button",{type:"button",onClick:()=>{n(""),x("")},className:"absolute right-3 top-1/2 -translate-y-1/2 w-5 h-5 flex items-center justify-center rounded-full bg-[#2C2C2E] hover:bg-[#3A3A3C] transition-colors text-[#86868B] hover:text-[#F5F5F7]",children:(0,s.jsx)("svg",{className:"w-3 h-3",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",strokeWidth:2,children:(0,s.jsx)("path",{d:"M18 6 6 18M6 6l12 12",strokeLinecap:"round"})})})]})}),f.length>0&&(0,s.jsx)("nav",{className:"flex flex-wrap gap-2 mb-16 p-4 bg-[#111113] border border-white/5 rounded-xl",children:f.map(e=>(0,s.jsx)("a",{href:`#${e.id}`,className:"px-3 py-1.5 text-sm text-[#86868B] hover:text-[#F5F5F7] hover:bg-[#1C1C1E] rounded-lg transition-colors",children:e.label},e.id))}),g&&(0,s.jsxs)("div",{className:"text-center py-16",children:[(0,s.jsxs)("p",{className:"text-[#86868B] text-sm",children:["No results for “",(0,s.jsx)("span",{className:"text-[#F5F5F7]",children:h}),"”"]}
1),(0,s.jsx)("button",{type:"button",onClick:()=>{n(""),x("")},className:"mt-3 text-sm text-[#30D158] hover:underline",children:"Clear search"})]}),(0,s.jsxs)("div",{className:"space-y-20",children:[j("getting-started")&&(0,s.jsxs)("section",{"data-search":"getting-started scan url paste results findings fix prompt",children:[(0,s.jsx)(c,{id:"getting-started",children:"Getting Started"}),(0,s.jsx)(o,{children:"Sekrd scans any web application for security vulnerabilities. Most scans finish in under 2 minutes; large or slow targets can take longer. Sign up is OAuth-quick. Free URL scans with a generous monthly quota (tune from /admin/settings)."}),(0,s.jsx)(l,{children:"1. Paste your URL"}),(0,s.jsxs)(o,{children:["Go to the ",(0,s.jsx)("a",{href:"/scan",className:"text-[#30D158] hover:underline",children:"Scan page"})," and enter the URL of your deployed app (e.g. ",(0,s.jsx)(a,{children:"https://myapp.vercel.app"}),")."]}),(0,s.jsx)(l,{children:"2. Wait for results"}),(0,s.jsx)(o,{children:"Sekrd runs 15 security checks in parallel: secrets detection, dependency CVE scanning, DAST (dynamic application security testing), active DAST (XSS probing, CORS verification, rate limit testing, IDOR detection, open redirect, CSRF, error page analysis), Supabase RLS audit, Firebase rules check, authentication flow analysis, payment security, cost exposure analysis, GDPR compliance scanning, and MCP server security audit. You will see each provider complete in real time."}),(0,s.jsx)(l,{children:"3. Review findings"}),(0,s.jsx)(o,{children:"Each finding includes a severity level (critical, high, medium, low, info), a description of the issue, its potential impact, evidence found, and a ready-to-use fix prompt tailored for your AI coding tool."}),(0,s.jsx)(l,{children:"4. Fix with one prompt"}),(0,s.jsx)(o,{children:"Copy the universal fix prompt for the finding and paste it into any AI coding tool (Cursor, Claude Code, Lovable — same prompt, same result). It includes the full context the tool needs to generate the exact code fix."})]}),j("deep-scan")&&(0,s.jsxs)("section",{"data-search":"deep-scan supabase firebase integration credentials backend",children:[(0,s.jsx)(c,{id:"deep-scan",children:"Deep Scan"}),(0,s.jsx)(o,{children:"A free scan checks your app externally. A Deep Scan connects to your backend services to audit internal configuration that is invisible from outside."}),(0,s.jsx)(l,{children:"Supabase Integration"}),(0,s.jsxs)(d,{children:[(0,s.jsx)("p",{className:"text-sm text-[#A1A1A6] mb-3",children:"Required credentials:"}),(0,s.jsxs)("ul",{className:"list-disc list-inside text-sm text-[#A1A1A6] space-y-1 mb-3",children:[(0,s.jsxs)("li",{children:[(0,s.jsx)(a,{children:"Project Ref"})," — found in your Supabase dashboard URL"]}),(0,s.jsxs)("li",{children:[(0,s.jsx)(a,{children:"Service Role Key"})," — Settings → API → service_role (secret)"]}),(0,s.jsxs)("li",{children:[(0,s.jsx)(a,{children:"Database Password"})," (recommended) — Settings → Database → Connection string password"]})]}),(0,s.jsxs)("div",{className:"p-3 bg-[#30D158]/5 border border-[#30D158]/20 rounded-lg mb-3",children:[(0,s.jsx)("p",{className:"text-xs text-[#30D158] font-semibold mb-1",children:"Why we need the Database Password"}),(0,s.jsxs)("p",{className:"text-xs text-[#A1A1A6]",children:["The database password enables direct SQL access to ",(0,s.jsx)(a,{children:"pg_policies"}),", which is the only way to read the actual SQL of your RLS policies (e.g., catching ",(0,s.jsx)(a,{children:"USING(true)"}),"). Without it, we can only detect whether tables are publicly accessible, not parse the policy logic. We perform ",(0,s.jsx)("strong",{children:"strictly read-only"})," operations."]})]}),(0,s.jsxs)("div",{className:"p-3 bg-[#FF9F0A]/5 border border-[#FF9F0A]/20 rounded-lg mb-3",children:[(0,s.jsx)("p",{className:"text-xs text-[#FF9F0A] font-semibold mb-1",children:"Security best practice"}),(0,s.jsxs)("p",{className:"text-xs text-[#A1A1A6]",children:["All credentials are sent over HTTPS and used once for this audit, then immediately deleted. We never store your passwords. ",(0,s.jsx)("strong",{children:"Change your database password in Supabase after the scan"}
1),"(Settings → Database → Reset database password). You can also revoke and regenerate the service role key."]})]}),(0,s.jsx)("p",{className:"text-sm text-[#A1A1A6]",children:"We audit: RLS policy SQL on every table, auth configuration (email confirmation, password strength), storage bucket policies, and database roles."})]}),(0,s.jsx)(l,{children:"Firebase Integration"}),(0,s.jsxs)(d,{children:[(0,s.jsx)("p",{className:"text-sm text-[#A1A1A6] mb-3",children:"Required credentials:"}),(0,s.jsxs)("ul",{className:"list-disc list-inside text-sm text-[#A1A1A6] space-y-1 mb-3",children:[(0,s.jsxs)("li",{children:[(0,s.jsx)(a,{children:"Project ID"})," — found in Firebase console project settings"]}),(0,s.jsxs)("li",{children:[(0,s.jsx)(a,{children:"Service Account JSON"})," (optional) — Settings → Service accounts → Generate new private key"]})]}),(0,s.jsxs)("div",{className:"p-3 bg-[#FF9F0A]/5 border border-[#FF9F0A]/20 rounded-lg mb-3",children:[(0,s.jsx)("p",{className:"text-xs text-[#FF9F0A] font-semibold mb-1",children:"Recommended: create a dedicated read-only account"}),(0,s.jsxs)("p",{className:"text-xs text-[#A1A1A6]",children:["Create a new Service Account in your Firebase project and assign it the ",(0,s.jsx)("strong",{children:"Viewer"})," role. We only need read access to your security rules, not write. The JSON key is used once for the audit and immediately deleted. You can revoke the service account after the scan."]})]}),(0,s.jsx)("p",{className:"text-sm text-[#A1A1A6]",children:"We audit: Firestore security rules, Realtime Database rules, Cloud Storage rules, Authentication providers, and exposed API keys."})]}),(0,s.jsx)(l,{children:"Running a Deep Scan"}),(0,s.jsx)(o,{children:'After connecting your integrations in the dashboard, click "Deep Scan" on your project. The deep scan includes all free-scan providers plus the connected service audits. Results typically complete in 30-90 seconds.'})]}),j("fix-prompts")&&(0,s.jsxs)("section",{"data-search":"fix-prompts cursor claude code lovable bolt prompt",children:[(0,s.jsx)(c,{id:"fix-prompts",children:"Fix Prompts"}),(0,s.jsx)(o,{children:"Every finding includes copy-paste fix prompts tailored for popular AI coding tools. Each prompt includes the vulnerability context, evidence, and step-by-step instructions that the AI can use to generate the exact fix."}),(0,s.jsx)(l,{children:"Cursor"}),(0,s.jsx)(d,{children:(0,s.jsxs)("ol",{className:"list-decimal list-inside text-sm text-[#A1A1A6] space-y-2",children:[(0,s.jsxs)("li",{children:["Click the ",(0,s.jsx)("strong",{className:"text-[#F5F5F7]",children:"Cursor"})," tab on any finding card"]}),(0,s.jsx)("li",{children:'Click "Copy prompt" to copy it to your clipboard'}),(0,s.jsxs)("li",{children:["Open Cursor and press ",(0,s.jsx)(a,{children:"Cmd+K"})," (or ",(0,s.jsx)(a,{children:"Ctrl+K"}),") to open the AI chat"]}),(0,s.jsx)("li",{children:"Paste the prompt — Cursor will generate the fix in context"})]})}),(0,s.jsx)(l,{children:"Claude Code"}),(0,s.jsx)(d,{children:(0,s.jsxs)("ol",{className:"list-decimal list-inside text-sm text-[#A1A1A6] space-y-2",children:[(0,s.jsxs)("li",{children:["Click the ",(0,s.jsx)("strong",{className:"text-[#F5F5F7]",children:"Claude Code"})," tab on any finding card"]}),(0,s.jsx)("li",{children:"Copy the prompt"}),(0,s.jsx)("li",{children:"Paste it into your Claude Code terminal session"}),(0,s.jsx)("li",{children:"Claude Code will edit the relevant files directly"})]})}),(0,s.jsx)(l,{children:"Lovable"}),(0,s.jsx)(d,{children:(0,s.jsxs)("ol",{className:"list-decimal list-inside text-sm text-[#A1A1A6] space-y-2",children:[(0,s.jsxs)("li",{children:["Click the ",(0,s.jsx)("strong",{className:"text-[#F5F5F7]",children:"Lovable"})," tab on any finding card"]}),(0,s.jsx)("li",{children:"Copy the prompt"}),(0,s.jsx)("li",{children:"Paste it into the Lovable editor chat — it understands Supabase context natively"})]})}),(0,s.jsx)(l,{children:"Combined Fix Prompt"}),(0,s.jsxs)(o,{children:["Sign up to receive a single combined prompt that fixes ",(0,s.jsx)("em",{children:"all"})," findings at once. This is sent via email as part of your PDF report, or available on the dashboard for authenticated users."]})]}),j("mcp-plugin")&&(0,s.jsxs)("section",{"data-search":"mcp-plugin mcp server install claude cursor api key python",children:[(0,s.jsx)(c,{id:"mcp-plugin",children:"MCP Plugin"}),(0,s.jsx)(o,{children:"The Sekrd MCP server lets you scan URLs for vulnerabilities directly from your AI coding assistant. Install once, then just ask it to scan any URL."}),(0,s.jsx)(l,{children:"Install"}
1),(0,s.jsxs)(o,{children:["The server runs natively via NPX. No installation required. Source code: ",(0,s.jsx)("a",{href:"https://github.com/sekrdcom/sekrd-mcp-ts",className:"text-[#30D158] hover:underline",target:"_blank",rel:"noopener",children:"github.com/sekrdcom/sekrd-mcp-ts"})]}),(0,s.jsx)(l,{children:"Claude Code"}),(0,s.jsx)(a,{block:!0,children:"claude mcp add sekrd -- npx -y @sekrd/mcp-server"}),(0,s.jsx)(o,{children:"With API key (for paid plans, unlimited scans):"}),(0,s.jsx)(a,{block:!0,children:"claude mcp add sekrd -e SEKRD_API_KEY=your_key -- npx -y @sekrd/mcp-server"}),(0,s.jsx)(l,{children:"Claude Desktop"}),(0,s.jsxs)(o,{children:["Add to your ",(0,s.jsx)(a,{children:"claude_desktop_config.json"}),":"]}),(0,s.jsx)(a,{block:!0,children:`{
2  "mcpServers": {
3    "sekrd": {
4      "command": "npx",
5      "args": ["-y", "@sekrd/mcp-server"],
6      "env": {
7        "SEKRD_API_KEY": "your_key_here"
8      }
9    }
10  }
11}`}),(0,s.jsx)(l,{children:"Cursor"}),(0,s.jsxs)(o,{children:["Add to ",(0,s.jsx)(a,{children:".cursor/mcp.json"})," in your project root:"]}),(0,s.jsx)(a,{block:!0,children:`{
12  "mcpServers": {
13    "sekrd": {
14      "command": "npx",
15      "args": ["-y", "@sekrd/mcp-server"],
16      "env": {
17        "SEKRD_API_KEY": "your_key_here"
18      }
19    }
20  }
21}`}),(0,s.jsx)(l,{children:"API Key"}),(0,s.jsxs)(d,{children:[(0,s.jsxs)("ul",{className:"list-disc list-inside text-sm text-[#A1A1A6] space-y-1",children:[(0,s.jsxs)("li",{children:[(0,s.jsx)("strong",{className:"text-[#F5F5F7]",children:"Without key:"})," free scans per month subject to a per-IP rate limit"]}),(0,s.jsxs)("li",{children:[(0,s.jsx)("strong",{className:"text-[#F5F5F7]",children:"With key:"})," Unlimited scans on Pre-Launch and Continuous Pro plans — see ",(0,s.jsx)("a",{href:"/pricing",className:"text-[#30D158] hover:underline",children:"pricing"})]})]}),(0,s.jsxs)("p",{className:"text-xs text-[#86868B] mt-2",children:["Get your API key at ",(0,s.jsx)("a",{href:"/dashboard/settings",className:"text-[#30D158] hover:underline",children:"Dashboard → Settings"}),"."]})]}),(0,s.jsx)(l,{children:"Available Tools"}),(0,s.jsx)("div",{className:"overflow-x-auto my-4",children:(0,s.jsxs)("table",{className:"w-full text-sm border border-[#2C2C2E] rounded-lg overflow-hidden",children:[(0,s.jsx)("thead",{children:(0,s.jsxs)("tr",{className:"bg-[#1C1C1E]",children:[(0,s.jsx)("th",{className:"text-left p-3 font-semibold text-[#F5F5F7] border-b border-[#2C2C2E]",children:"Tool"}),(0,s.jsx)("th",{className:"text-left p-3 font-semibold text-[#F5F5F7] border-b border-[#2C2C2E]",children:"Description"})]})}),(0,s.jsxs)("tbody",{className:"text-[#A1A1A6]",children:[(0,s.jsxs)("tr",{className:"border-b border-[#2C2C2E]",children:[(0,s.jsx)("td",{className:"p-3 font-mono text-[#30D158]",children:"scan_url(url)"}),(0,s.jsx)("td",{className:"p-3",children:"Free security scan — submits URL and waits for results"})]}),(0,s.jsxs)("tr",{className:"border-b border-[#2C2C2E]",children:[(0,s.jsx)("td",{className:"p-3 font-mono text-[#30D158]",children:"deep_scan(url, api_key)"}),(0,s.jsx)("td",{className:"p-3",children:"Authenticated deep scan with Supabase/Firebase audit"})]}),(0,s.jsxs)("tr",{className:"border-b border-[#2C2C2E]",children:[(0,s.jsx)("td",{className:"p-3 font-mono text-[#30D158]",children:"get_scan(scan_id)"}),(0,s.jsx)("td",{className:"p-3",children:"Retrieve a scan result by ID"})]}),(0,s.jsxs)("tr",{className:"border-b border-[#2C2C2E]",children:[(0,s.jsx)("td",{className:"p-3 font-mono text-[#30D158]",children:"get_report(scan_id)"}),(0,s.jsx)("td",{className:"p-3",children:"Formatted report with findings grouped by severity"})]}),(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{className:"p-3 font-mono text-[#30D158]",children:"list_findings(scan_id)"}),(0,s.jsx)("td",{className:"p-3",children:"List findings with fix prompts"})]})]})]})}),(0,s.jsx)(l,{children:"Usage Example"}),(0,s.jsx)(o,{children:"Once installed, just ask your AI assistant:"}),(0,s.jsx)(a,{block:!0,children:"Scan https://myapp.vercel.app for security issues"}),(0,s.jsx)(o,{children:"The scan runs 13 parallel security checks: secrets detection, dependency CVEs, DAST, Supabase RLS audit, Firebase rules, auth flow, payment security, cost exposure analysis, and GDPR compliance."})]}),j("api-reference")&&(0,s.jsxs)("section",{"data-search":"api-reference endpoint post get scan url report pdf badge svg curl",children:[(0,s.jsx)(c,{id:"api-reference",children:"API Reference"}),(0,s.jsxs)(o,{children:["All endpoints are served from your Sekrd instance. The default base URL is ",(0,s.jsx)(a,{children:"https://api.sekrd.com"}),"."]}),(0,s.jsx)(l,{children:"POST /api/v1/scan/url"}),(0,s.jsxs)(d,{children:[(0,s.jsx)("p",{className:"text-sm text-[#A1A1A6] mb-3",children:"Submit a free URL scan. Rate limited to 10 scans per IP per month on the free tier."}),(0,s.jsx)("p",{className:"text-xs font-semibold text-[#86868B] mb-2 uppercase tracking-wide",children:"Request"}),(0,s.jsx)(a,{block:!0,children:`curl -X POST https://api.sekrd.com/api/v1/scan/url \\
22  -H "Content-Type: application/json" \\
23  -H "Authorization: Bearer YOUR_SEKRD_API_KEY" \\
24  -d '{"url": "https://myapp.vercel.app"}'`}),(0,s.jsx)("p",{className:"text-xs font-semibold text-[#86868B] mb-2 uppercase tracking-wide",children:"Response"}),(0,s.jsx)(a,{block:!0,children:`{
25  "scan_id": "abc123",
26  "status": "queued",
27  "poll_url": "/api/v1/scans/abc123"
28}`})]}
28),(0,s.jsx)(l,{children:"GET /api/v1/scans/{id}"}),(0,s.jsxs)(d,{children:[(0,s.jsx)("p",{className:"text-sm text-[#A1A1A6] mb-3",children:"Poll scan status and results. Returns the full scan result when complete, including score, verdict, provider breakdown, findings, and fix prompts."}),(0,s.jsx)("p",{className:"text-xs font-semibold text-[#86868B] mb-2 uppercase tracking-wide",children:"Request"}),(0,s.jsx)(a,{block:!0,children:"curl https://api.sekrd.com/api/v1/scans/abc123"}),(0,s.jsx)("p",{className:"text-xs font-semibold text-[#86868B] mb-2 uppercase tracking-wide",children:"Response (scanning)"}),(0,s.jsx)(a,{block:!0,children:`{
29  "scan_id": "abc123",
30  "status": "scanning",
31  "progress": "5/15 checks complete"
32}`}),(0,s.jsx)("p",{className:"text-xs font-semibold text-[#86868B] mb-2 uppercase tracking-wide",children:"Response (complete)"}),(0,s.jsx)(a,{block:!0,children:`{
33  "scan_id": "abc123",
34  "url": "https://myapp.vercel.app",
35  "status": "complete",
36  "score": 72,
37  "verdict": "SHIP",
38  "summary": "3 issues found across 15 checks",
39  "duration_ms": 12340,
40  "providers": {
41    "secrets": { "score": 0, "findings": 0 },
42    "dependencies": { "score": 15, "findings": 2 },
43    "dast": { "score": 10, "findings": 1 }
44  },
45  "findings": [
46    {
47      "id": "f1",
48      "severity": "high",
49      "provider": "dependencies",
50      "title": "Known CVE in [email protected]",
51      "description": "...",
52      "fix_prompts": {
53        "cursor": "...",
54        "claude_code": "...",
55        "lovable": "...",
56        "bolt": "..."
57      }
58    }
59  ]
60}`})]}),(0,s.jsx)(l,{children:"GET /api/v1/scans/{id}/report.pdf"}),(0,s.jsxs)(d,{children:[(0,s.jsx)("p",{className:"text-sm text-[#A1A1A6] mb-3",children:"Download the full PDF security report for a completed scan. Includes all findings, scores, and fix prompts in a printable format."}),(0,s.jsx)("p",{className:"text-xs font-semibold text-[#86868B] mb-2 uppercase tracking-wide",children:"Request"}),(0,s.jsx)(a,{block:!0,children:"curl -o report.pdf https://api.sekrd.com/api/v1/scans/abc123/report.pdf"})]}),(0,s.jsx)(l,{children:"GET /badge/{id}.svg"}),(0,s.jsxs)(d,{children:[(0,s.jsx)("p",{className:"text-sm text-[#A1A1A6] mb-3",children:"Returns an SVG security badge for the given scan. The badge color reflects the score verdict (green for SHIP, red for BLOCK)."}),(0,s.jsx)("p",{className:"text-xs font-semibold text-[#86868B] mb-2 uppercase tracking-wide",children:"Request"}),(0,s.jsx)(a,{block:!0,children:"curl https://api.sekrd.com/badge/abc123.svg"})]})]}),j("webhooks")&&(0,s.jsxs)("section",{"data-search":"webhooks vercel deploy hook ci cd pipeline monitoring",children:[(0,s.jsx)(c,{id:"webhooks",children:"Webhooks"}),(0,s.jsx)(o,{children:"Set up webhooks to get notified when scans complete. This is useful for CI/CD pipelines and continuous monitoring."}),(0,s.jsx)(l,{children:"Vercel Deploy Hook"}),(0,s.jsxs)(d,{children:[(0,s.jsx)("p",{className:"text-sm text-[#A1A1A6] mb-3",children:"Trigger a Sekrd scan automatically every time you deploy to Vercel:"}),(0,s.jsxs)("ol",{className:"list-decimal list-inside text-sm text-[#A1A1A6] space-y-2 mb-4",children:[(0,s.jsx)("li",{children:"Go to your Sekrd dashboard and copy your project webhook URL"}),(0,s.jsx)("li",{children:"In Vercel, go to Project Settings → Git → Deploy Hooks"}),(0,s.jsx)("li",{children:"Create a new hook and paste the Sekrd webhook URL"})]}),(0,s.jsx)("p",{className:"text-xs font-semibold text-[#86868B] mb-2 uppercase tracking-wide",children:"Webhook URL format"}),(0,s.jsx)(a,{block:!0,children:"https://api.sekrd.com/api/v1/webhooks/deploy/{project_id}"})]}),(0,s.jsx)(l,{children:"Webhook Payload"}),(0,s.jsxs)(d,{children:[(0,s.jsx)("p",{className:"text-sm text-[#A1A1A6] mb-3",children:"When a scan completes, Sekrd sends a POST request to your configured webhook URL:"}),(0,s.jsx)(a,{block:!0,children:`{
61  "event": "scan.complete",
62  "scan_id": "abc123",
63  "url": "https://myapp.vercel.app",
64  "score": 72,
65  "verdict": "SHIP",
66  "findings_count": 3,
67  "critical_count": 0,
68  "high_count": 1,
69  "timestamp": "2026-03-25T12:00:00Z"
70}`})]})]}),j("badge")&&(0,s.jsxs)("section",{"data-search":"badge readme markdown html svg security score verified",children:[(0,s.jsx)(c,{id:"badge",children:"Badge"}),(0,s.jsx)(o,{children:"Show your security score in your README with the Sekrd verified badge. The badge updates automatically when you run new scans."}),(0,s.jsx)(l,{children:"Markdown"}),(0,s.jsxs)(d,{children:[(0,s.jsx)("p",{className:"text-xs font-semibold text-[#86868B] mb-2 uppercase tracking-wide",children:"Copy this into your README.md"}),(0,s.jsx)(a,{block:!0,children:"[![Sekrd Security Score](https://api.sekrd.com/badge/YOUR_SCAN_ID.svg)](https://sekrd.com/report/YOUR_SCAN_ID)"})]}),(0,s.jsx)(l,{children:"HTML"}),(0,s.jsxs)(d,{children:[(0,s.jsx)("p",{className:"text-xs font-semibold text-[#86868B] mb-2 uppercase tracking-wide",children:"Or use an HTML img tag"}),(0,s.jsx)(a,{block:!0,children:`<a href="https://sekrd.com/report/YOUR_SCAN_ID">
71  <img src="https://api.sekrd.com/badge/YOUR_SCAN_ID.svg" alt="Sekrd Security Score" />
72</a>`})]}),(0,s.jsxs)(o,{children:["Replace ",(0,s.jsx)(a,{children:"YOUR_SCAN_ID"})," with the scan ID from your latest scan. You can find this in the URL of your scan results page or in the API response."]})]}),j("monitoring")&&(0,s.jsxs)("section",{"data-search":"monitoring script tag uptime errors vitals daily rescan alert telegram email pro",children:[(0,s.jsx)(c,{id:"monitoring",children:"Monitoring"}),(0,s.jsx)(o,{children:"Sekrd provides automated security monitoring for Pro subscribers. This includes scheduled re-scans (daily, weekly, or monthly), uptime monitoring, and instant alerts via email and Telegram."}),(0,s.jsx)(l,{children:"Setup: Add the Monitoring Script"}),(0,s.jsxs)(o,{children:["After creating a project in your ",(0,s.jsx)("a",{href:"/dashboard",className:"text-[#30D158] hover:underline",children:"dashboard"}),", you'll get a unique script tag. Add it to your app's HTML:"]}),(0,s.jsx)(a,{block:!0,children:'<script defer src="https://api.sekrd.com/monitor/YOUR_PROJECT_ID.js"></script>'}),(0,s.jsx)(l,{children:"Next.js (App Router)"}),(0,s.jsx)(a,{block:!0,children:`// app/layout.tsx
73import Script from 'next/script'
74
75export default function RootLayout({ children }) {
76  return (
77    <html>
78      <head>
79        <Script
80          src="https://api.sekrd.com/monitor/YOUR_PROJECT_ID.js"
81          strategy="afterInteractive"
82        />
83      </head>
84      <body>{children}</body>
85    </html>
86  )
87}`}),(0,s.jsx)(l,{children:"React (Vite / CRA)"}),(0,s.jsxs)(o,{children:["Add to ",(0,s.jsx)(a,{children:"index.html"})," before the closing ",(0,s.jsx)(a,{children:"</head>"})," tag:"]}),(0,s.jsx)(a,{block:!0,children:'<script defer src="https://api.sekrd.com/monitor/YOUR_PROJECT_ID.js"></script>'}),(0,s.jsx)(l,{children:"What It Collects"}),(0,s.jsx)(d,{children:(0,s.jsxs)("ul",{className:"list-disc list-inside text-sm text-[#A1A1A6] space-y-1",children:[(0,s.jsxs)("li",{children:[(0,s.jsx)("strong",{className:"text-[#F5F5F7]",children:"JS Errors"})," — runtime errors and unhandled promise rejections"]}),(0,s.jsxs)("li",{children:[(0,s.jsx)("strong",{className:"text-[#F5F5F7]",children:"Pageviews"})," — URL and referrer (no cookies, no PII)"]})]})}),(0,s.jsx)(l,{children:"What It Does NOT Collect"}),(0,s.jsx)(d,{children:(0,s.jsxs)("ul",{className:"list-disc list-inside text-sm text-[#A1A1A6] space-y-1",children:[(0,s.jsx)("li",{children:"No cookies or tracking"}),(0,s.jsx)("li",{children:"No personal data or user identifiers"}),(0,s.jsx)("li",{children:"No DOM content or screenshots"}),(0,s.jsx)("li",{children:"Lightweight (<2KB), non-blocking, zero impact on your app"})]})}),(0,s.jsx)(l,{children:"Pro Features"}),(0,s.jsxs)(d,{children:[(0,s.jsxs)("ul",{className:"list-disc list-inside text-sm text-[#A1A1A6] space-y-1",children:[(0,s.jsxs)("li",{children:[(0,s.jsx)("strong",{className:"text-[#F5F5F7]",children:"Uptime Monitoring"})," — 5-minute health checks with downtime alerts"]}),(0,s.jsxs)("li",{children:[(0,s.jsx)("strong",{className:"text-[#F5F5F7]",children:"Automated Re-scans"})," — custom schedule: daily, weekly, or monthly"]}),(0,s.jsxs)("li",{children:[(0,s.jsx)("strong",{className:"text-[#F5F5F7]",children:"CVE Scanning"})," — detect new vulnerabilities on every re-scan"]}),(0,s.jsxs)("li",{children:[(0,s.jsx)("strong",{className:"text-[#F5F5F7]",children:"Email + Telegram Alerts"})," — instant notifications on score drops, new findings, downtime"]})]}),(0,s.jsxs)("p",{className:"text-xs text-[#86868B] mt-3",children:["Configure alerts in ",(0,s.jsx)("a",{href:"/dashboard/settings",className:"text-[#30D158] hover:underline",children:"Dashboard → Settings"}),". Connect Telegram with one click."]})]})]}),j("ai-review")&&(0,s.jsxs)("section",{"data-search":"ai review gemini security analysis attack chain business impact recommendations artificial intelligence",children:[(0,s.jsx)(c,{id:"ai-review",children:"AI Security Review"}),(0,s.jsx)(o,{children:"AI Security Review performs a deep analysis of your scan results using advanced language models. It goes beyond pattern-matching rules to understand business context, identify attack chains, and provide prioritized recommendations."}),(0,s.jsx)(l,{children:"What AI Review Adds"}),(0,s.jsxs)(o,{children:["After a scan completes, click ",(0,s.jsx)("strong",{className:"text-[#F5F5F7]",children:"Run AI Review"})," on the report page. The AI analyzes all findings together and returns:"]}),(0,s.jsxs)("ul",{className:"space-y-2 mb-4 ml-4",children:[(0,s.jsxs)("li",{className:"text-sm text-[#A1A1A6]",children:[(0,s.jsx)("strong",{className:"text-[#F5F5F7]",children:"Executive Summary"})," — plain-English overview for founders and non-technical stakeholders"]}),(0,s.jsxs)("li",{className:"text-sm text-[#A1A1A6]",children:[(0,s.jsx)("strong",{className:"text-[#F5F5F7]",children:"Risk Level"})," — overall critical / high / medium / low assessment"]}),(0,s.jsxs)("li",{className:"text-sm text-[#A1A1A6]",children:[(0,s.jsx)("strong",{className:"text-[#F5F5F7]",children:"Attack Chains"}),' — how multiple findings combine into larger attacks (e.g. "leaked key + weak RLS = full database access")']}),(0,s.jsxs)("li",{className:"text-sm text-[#A1A1A6]",children:[(0,s.jsx)("strong",{className:"text-[#F5F5F7]",children:"Additional Findings"})," — logic flaws, IDOR, and business-context issues that rule-based scanners miss"]}),(0,s.jsxs)("li",{className:"text-sm text-[#A1A1A6]",children:[(0,s.jsx)("strong",{className:"text-[#F5F5F7]",children:"Prioritized Recommendations"})," — top 3 actions to take, in order of impact"]})]}),(0,s.jsx)(l,{children:"Limits"}),(0,s.jsxs)(o,{children:["Pre-Launch Audit: ",(0,s.jsx)("strong",{className:"text-[#F5F5F7]",children:"10 AI reviews"})," (during the 7-day re-scan window). Continuous Pro: ",(0,s.jsx)("strong",{className:"text-[#F5F5F7]",children:"100 AI reviews/month"}),". Free plan: not available (upgrade to Pre-Launch or Continuous Pro)."]}),(0,s.jsx)(l,{children:"Accuracy"}),(0,s.jsx)(o,{children:"AI findings are flagged as AI-generated and should be verified. The AI sees only the scan results, not your source code, so some findings may be speculative. Use AI Review as an additional signal alongside the deterministic rule-based scan, not as a replacement."})]}),j("scoring")&&(0,s.jsxs)("section",{"data-search":"scoring score verdict trust deduction severity hard block provider weights ship",children:[(0,s.jsx)(c,{id:"scoring",children:"Scoring"}),(0,s.jsx)(o,{children:"The Sekrd Trust Score is a 0–100 composite score calculated from findings across all 9 security providers. A higher score means fewer and less severe vulnerabilities."}),(0,s.jsx)(l,{children:"Verdict"}),(0,s.jsx)(o,{children:"Every scan produces a binary verdict based on the Trust Score and findings:"}),(0,s.jsx)("div",{className:"overflow-x-auto my-4",children:(0,s.jsxs)("table",{className:"w-full text-sm border border-[#2C2C2E] rounded-lg overflow-hidden",children:[(0,s.jsx)("thead",{children:(0,s.jsxs)("tr",{className:"bg-[#1C1C1E]",children:[(0,s.jsx)("th",{className:"text-left p-3 font-semibold text-[#F5F5F7] border-b border-[#2C2C2E]",children:"Verdict"}),(0,s.jsx)("th",{className:"text-left p-3 font-semibold text-[#F5F5F7] border-b border-[#2C2C2E]",children:"Condition"}),(0,s.jsx)("th",{className:"text-left p-3 font-semibold text-[#F5F5F7] border-b border-[#2C2C2E]",children:"Meaning"})]})}),(0,s.jsxs)("tbody",{className:"text-[#A1A1A6]",children:[(0,s.jsxs)("tr",{className:"border-b border-[#2C2C2E]",children:[(0,s.jsx)("td",{className:"p-3",children:(0,s.jsx)("span",{className:"px-2 py-1 bg-[#30D158]/10 text-[#30D158] font-bold rounded",children:"SHIP"})}),(0,s.jsx)("td",{className:"p-3",children:"Score ≥ 70, no critical findings"}),(0,s.jsx)("td",{className:"p-3",children:"Safe to deploy. Fix remaining issues at your pace."})]}),(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{className:"p-3",children:(0,s.jsx)("span",{className:"px-2 py-1 bg-[#FF453A]/10 text-[#FF453A] font-bold rounded",children:"BLOCK"})}),(0,s.jsx)("td",{className:"p-3",children:"Score < 70 or any critical finding"}),(0,s.jsx)("td",{className:"p-3",children:"Do not deploy. Fix critical issues first."})]})]})]})}),(0,s.jsx)(l,{children:"How Deductions Work"}),(0,s.jsx)(o,{children:"Every scan starts at 100 points. Each finding deducts points based on its severity:"}),(0,s.jsx)("div",{className:"overflow-x-auto my-4",children:(0,s.jsxs)("table",{className:"w-full text-sm border border-[#2C2C2E] rounded-lg overflow-hidden",children:[(0,s.jsx)("thead",{children:(0,s.jsxs)("tr",{className:"bg-[#1C1C1E]",children:[(0,s.jsx)("th",{className:"text-left p-3 font-semibold text-[#F5F5F7] border-b border-[#2C2C2E]",children:"Severity"}),(0,s.jsx)("th",{className:"text-left p-3 font-semibold text-[#F5F5F7] border-b border-[#2C2C2E]",children:"Deduction"})]})}),(0,s.jsxs)("tbody",{className:"text-[#A1A1A6]",children:[(0,s.jsxs)("tr",{className:"border-b border-[#2C2C2E]",children:[(0,s.jsx)("td",{className:"p-3 text-[#FF453A] font-semibold",children:"Critical"}),(0,s.jsx)("td",{className:"p-3",children:"-25 points"})]}),(0,s.jsxs)("tr",{className:"border-b border-[#2C2C2E]",children:[(0,s.jsx)("td",{className:"p-3 text-[#FF453A] font-semibold",children:"High"}),(0,s.jsx)("td",{className:"p-3",children:"-15 points"})]}),(0,s.jsxs)("tr",{className:"border-b border-[#2C2C2E]",children:[(0,s.jsx)("td",{className:"p-3 text-[#FF9F0A] font-semibold",children:"Medium"}),(0,s.jsx)("td",{className:"p-3",children:"-8 points"})]}),(0,s.jsxs)("tr",{className:"border-b border-[#2C2C2E]",children:[(0,s.jsx)("td",{className:"p-3 text-[#86868B] font-semibold",children:"Low"}),(0,s.jsx)("td",{className:"p-3",children:"-3 points"})]}),(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{className:"p-3 text-[#48484A] font-semibold",children:"Info"}),(0,s.jsx)("td",{className:"p-3",children:"0 points (informational only)"})]})]})]})}),(0,s.jsx)(l,{children:"Free Scan vs Deep Scan Verdict"}),(0,s.jsx)(o,{children:'Free scans run 9 of 15 checks (external only
87). Because they cannot test active vulnerabilities (XSS, CORS, rate limits, IDOR) or backend configuration, free scans do not give a SHIP/BLOCK verdict. Instead they show "No critical issues" or "Needs review" with a recommendation to run a deep scan before shipping. Only deep scans produce the full SHIP/BLOCK verdict.'}),(0,s.jsx)(l,{children:"Hard Blocks"}),(0,s.jsxs)(o,{children:["Certain critical findings (exposed database credentials, admin panels without auth, etc.) are classified as ",(0,s.jsx)("strong",{className:"text-[#F5F5F7]",children:"hard blocks"}),". A hard block forces the score to 0 regardless of other findings. This ensures that the most dangerous vulnerabilities cannot be masked by good scores elsewhere."]}),(0,s.jsx)(l,{children:"Provider Weights"}),(0,s.jsx)(o,{children:"All 15 checks contribute equally to the score. Findings from any provider are deducted from the same 100-point pool. The provider breakdown on your scan result shows the individual risk score per provider so you can see which area needs the most attention."})]}),(0,s.jsxs)("section",{className:"mb-16",children:[(0,s.jsx)(c,{id:"account",children:"Account & Data"}),(0,s.jsx)(l,{children:"Account Deletion"}),(0,s.jsxs)(o,{children:["You can delete your account at any time from"," ",(0,s.jsx)("strong",{className:"text-[#F5F5F7]",children:"Dashboard → Settings → Danger Zone → Delete Account"}),". This permanently removes your account, all projects, scan history, and associated data. Active subscriptions are cancelled automatically. This action cannot be undone."]}),(0,s.jsx)(l,{children:"Data Export"}),(0,s.jsxs)(o,{children:["Pro subscribers can export a compliance report (PDF) for any project from the project page. This includes all scan results, findings, and score history. For a full data export request, contact"," ",(0,s.jsx)("a",{href:"mailto:[email protected]",className:"text-[#30D158] hover:underline",children:"[email protected]"}),"."]}),(0,s.jsx)(l,{children:"Cookies"}),(0,s.jsxs)(o,{children:["Sekrd uses only essential cookies for authentication (NextAuth session token). We do not use tracking cookies, analytics cookies, or third-party advertising cookies. See our ",(0,s.jsx)("a",{href:"/privacy",className:"text-[#30D158] hover:underline",children:"Privacy Policy"})," for details."]})]})]})]})}])}]);

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.