PageSourceSearch

https://www.luxalgo.com/_next/static/chunks/pages/mcp-fe19bd4e66bb8e8f.js

js luxalgo.com collected 2026-10-04 00:00:37 UTC 32,777 bytes, 1 lines download raw bytes

1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2972],{9731:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>_});var r=s(66352),a=s(94092),n=s.n(a),l=s(83643),i=s(21081),o=s(56900),d=s(59038),c=s(72766),x=s(75271),h=s(69626),p=s(12301),m=s(61274),g=s(50821),u=s(19932),f=s(18923);let v=["library_search","library_get_concept","library_get_indicator","library_get_source_code","library_list_concepts","library_list_indicators","library_list_tags","library_list_families","library_get_family"],b=["journal_list_accounts","journal_overview","journal_calendar","journal_breakdown","journal_list_trades","journal_get_trade","journal_get_day","journal_list_tags","journal_search_notes","journal_add_trade","journal_update_trade","journal_write_note","journal_update_note"],y=["trackers_datasets","trackers_query","trackers_latest","trackers_ticker"],j=["edge_symbols","edge_presets","edge_report"],w=["broker_setup","broker_accounts","broker_positions","broker_trades","broker_stats","broker_refresh"],N=[{label:"Whale Options",href:"/whale-options",tools:16,description:"The options-flow engine that shows its work: sweeps, blocks, splits, and a score with the math attached."},{label:"Trade Relay",href:"/trade-relay",tools:9,description:"Alerts to broker orders through your own risk rails; reading is safe, trading is opt-in per tool."},{label:"Broker SDK",href:"/broker-sdk",tools:6,description:"Read-only sight of your real accounts across 22 brokers. Local by design: keys never touch a server."}];function k(){return(0,r.jsx)("div",{className:"dark",children:(0,r.jsxs)("div",{className:"relative overflow-hidden rounded-2xl border border-white/10 bg-[#060606] p-5 sm:p-7",children:[(0,r.jsxs)("div",{className:"space-y-5",children:[(0,r.jsx)("div",{className:"flex justify-end",children:(0,r.jsx)("p",{className:"max-w-[85%] rounded-2xl rounded-br-md bg-white/[0.07] px-4 py-2.5 text-sm leading-relaxed text-fg-100 sm:text-[15px]",children:"What exactly is an opening range breakout?"})}),(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-x-2.5 gap-y-1 font-mono text-xs",children:[(0,r.jsx)("span",{"aria-hidden":!0,className:"size-[9px] shrink-0 rounded-full border border-green-400/60 bg-green-400/15"}),(0,r.jsx)("span",{className:"text-green-300/90",children:"library_get_concept"}),(0,r.jsx)("span",{className:"text-fg-300",children:'slug: "opening-range-and-orb"'})]}),(0,r.jsxs)("div",{className:"max-w-2xl space-y-3",children:[(0,r.jsx)("p",{className:"text-sm leading-relaxed text-fg-200 sm:text-[15px]",children:"The high-low span a market prints in the first minutes of a session, held as reference levels for the rest of the day. Once price trades decisively outside it, the classic play is to trade in the direction of the break. The entry covers windows, triggers, failure modes, and six open implementations."}),(0,r.jsx)(n(),{href:"/library/concept/opening-range-and-orb/",className:"inline-flex max-w-full items-center rounded-full border border-white/10 bg-white/[0.03] px-3 py-1 font-mono text-[11px] text-fg-300 transition-colors duration-150 hover:border-white/25 hover:text-fg-100",children:(0,r.jsx)("span",{className:"truncate",children:"luxalgo.com/library/concept/opening-range-and-orb"})})]}),(0,r.jsx)("div",{className:"flex justify-end",children:(0,r.jsx)("p",{className:"max-w-[85%] rounded-2xl rounded-br-md bg-white/[0.07] px-4 py-2.5 text-sm leading-relaxed text-fg-100 sm:text-[15px]",children:"If I trade it at a 45% win rate and 1.3R, three trades a day risking 1%, what are my odds on a 100k two-step?"})}),(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-x-2.5 gap-y-1 font-mono text-xs",children:[(0,r.jsx)("span",{"aria-hidden":!0,className:"size-[9px] shrink-0 rounded-full border border-green-400/60 bg-green-400/15"}),(0,r.jsx)("span",{className:"text-green-300/90",children:"propfirms_simulate"}),(0,r.jsx)("span",{className:"text-fg-300",children:"winRate: 45 \xb7 avgWinR: 1.3 \xb7 risk: 1%"})]}),(0,r.jsxs)("div",{className:"max-w-2xl space-y-3",children:[(0,r.jsx)("p",{className:"text-sm leading-relaxed text-fg-200 sm:text-[15px]",children:"About 47% per attempt, so plan on roughly two. Every simulated failure died on the max-loss rule, never the clock."}),(0,r.jsxs)("p",{className:"font-mono text-xs text-fg-300",children:[(0,r.jsx)("span",{className:"text-fg-100",children:"47.0% pass"})," \xb7 95% CI [46.3%, 47.7%] \xb7 10,000 paths"]})]}),(0,r.jsx)("div",{className:"flex justify-end",children:(0,r.jsx)("p",{className:"max-w-[85%] rounded-2xl rounded-br-md bg-white/[0.07] px-4 py-2.5 text-sm leading-relaxed text-fg-100 sm:text-[15px]",children:"Who in Washington has been trading NVDA lately?"})}),(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-x-2.5 gap-y-1 font-mono text-xs",children:[(0,r.jsx)("span",{"aria-hidden":!0,
1className:"size-[9px] shrink-0 rounded-full border border-green-400/60 bg-green-400/15"}),(0,r.jsx)("span",{className:"text-green-300/90",children:"trackers_ticker"}),(0,r.jsx)("span",{className:"text-fg-300",children:'ticker: "NVDA" \xb7 year: 2026'})]}),(0,r.jsxs)("div",{className:"max-w-2xl space-y-3",children:[(0,r.jsx)("p",{className:"text-sm leading-relaxed text-fg-200 sm:text-[15px]",children:"Twenty-four congressional trades filed this year. The newest: Senator Whitehouse sold $15,001 to $50,000 on August 13, filed September 2, and a House member’s spouse bought $1,001 to $15,000 on August 18. On the insider side, director Mark Stevens sold 900,000 shares on September 2 at $220 to $224."}),(0,r.jsx)("a",{href:"https://efdsearch.senate.gov/search/view/ptr/f8d003c0-ca1e-4c39-9d66-632d220180e1/",target:"_blank",rel:"noopener noreferrer",className:"inline-flex max-w-full items-center rounded-full border border-white/10 bg-white/[0.03] px-3 py-1 font-mono text-[11px] text-fg-300 transition-colors duration-150 hover:border-white/25 hover:text-fg-100",children:(0,r.jsx)("span",{className:"truncate",children:"efdsearch.senate.gov \xb7 the filing itself"})})]}),(0,r.jsx)("div",{className:"flex justify-end",children:(0,r.jsx)("p",{className:"max-w-[85%] rounded-2xl rounded-br-md bg-white/[0.07] px-4 py-2.5 text-sm leading-relaxed text-fg-100 sm:text-[15px]",children:"How often does Bitcoin put in its daily high in the first hour?"})}),(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-x-2.5 gap-y-1 font-mono text-xs",children:[(0,r.jsx)("span",{"aria-hidden":!0,className:"size-[9px] shrink-0 rounded-full border border-green-400/60 bg-green-400/15"}),(0,r.jsx)("span",{className:"text-green-300/90",children:"edge_report"}),(0,r.jsx)("span",{className:"text-fg-300",children:'preset: "high-time" \xb7 symbol: BTCUSDT'})]}),(0,r.jsxs)("div",{className:"max-w-2xl space-y-3",children:[(0,r.jsx)("p",{className:"text-sm leading-relaxed text-fg-200 sm:text-[15px]",children:"About 15% of sessions since 2020, and it has been drifting lower: 17% in the first half of the sample, 12% in the second, so the engine flags the halves as disagreeing rather than smoothing them over."}),(0,r.jsxs)("p",{className:"font-mono text-xs text-fg-300",children:[(0,r.jsx)("span",{className:"text-fg-100",children:"14.9%"})," \xb7 95% CI [13.5%, 16.3%] \xb7 N = 2,437 sessions \xb7 halves disagree"]})]})]}),(0,r.jsx)("p",{className:"mt-6 border-t border-white/[0.06] pt-3 text-xs text-fg-300",children:"Simulation, not prediction."})]})})}function _(){return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(o.A,{title:"The LuxAlgo MCP: One MCP Server for All of Trading",description:"Connect your agent to trading in one click: a free MCP server with 42 tools for trading concepts, indicators, your own trade journal, prop firm simulations, session statistics, and the public record of US markets. Keyless for everything public, one sign-in for your journal, and a whole open-source family behind it.",canonicalUrl:"".concat("https://www.luxalgo.com","/mcp"),openGraphImageUrl:"/api/og/page/?title=The%20LuxAlgo%20MCP",markdownPath:"/mcp.md"}),(0,r.jsx)(d.gk,{items:[{name:"LuxAlgo",url:"/"},{name:"LuxAlgo MCP",url:"/mcp/"}]}),(0,r.jsx)(d.Ec,{project:"mcp"}),(0,r.jsxs)("section",{className:"relative overflow-hidden px-6 pt-24 pb-16 sm:pt-32 sm:pb-20",children:[(0,r.jsx)(g.A,{wgsl:"\nstruct Params { time: f32, aspect: f32, light: f32 }\n@group(0) @binding(0) var<uniform> params: Params;\n\nfn hash11(p: f32) -> f32 {\n  var q = fract(p * 0.1031);\n  q *= q + 33.33;\n  q *= q + q;\n  return fract(q);\n}\nfn hash21(p: vec2f) -> f32 {\n  var q = fract(p * vec2f(123.34, 345.45));\n  q += dot(q, q + 34.345);\n  return fract(q.x * q.y);\n}\n\n// The LuxAlgo Illumination as a living beacon: one source above the fold,\n// volumetric god-rays breathing around it, request pulses radiating out.\n@fragment fn fs_main(@location(0) uv: vec2f) -> @location(0) vec4f {\n  let p = vec2f(uv.x * params.aspect, uv.y);\n  let c = vec2f(0.5 * params.aspect, -0.06);\n  let rel = p - c;\n  let d = length(rel);\n  let ang = atan2(rel.x, rel.y); // 0 = straight down\n\n  // Volumetric rays: layered angular bands, slowly counter-rotating.\n  var ray = 0.0;\n  ray += pow(0.5 + 0.5 * sin(ang * 9.0 + params.time * 0.10), 3.0) * 0.55;\n  ray += pow(0.5 + 0.5 * sin(ang * 17.0 - params.time * 0.16 + 2.1), 5.0) * 0.35;\n  ray += pow(0.5 + 0.5 * sin(ang * 5.0 + params.time * 0.05 + 4.2), 2.0) * 0.45;\n  // Rays live inside a wide downward cone and fade with distance.\n  let cone = smoothstep(1.9, 0.4, abs(ang));\n  let fall = smoothstep(1.5, 0.05, d);\n  var lum = ray * cone * fall * 0.16;\n\n  // The core: white-hot heart of the beacon.\n  lum += smoothstep(0.55, 0.0, d) * 0.35;\n  lum += smoothstep(0.18, 0.0, d) * 0.5;
1\n\n  // Request pulses: two slow rings expanding from the source.\n  for (var i = 0; i < 2; i++) {\n    let ph = fract(params.time * 0.055 + f32(i) * 0.5);\n    let rr = ph * 1.35;\n    let ring = smoothstep(0.05, 0.0, abs(d - rr)) * (1.0 - ph);\n    lum += ring * cone * 0.10;\n  }\n\n  // Edge fades and grain.\n  lum *= smoothstep(0.0, 0.05, uv.y) * smoothstep(1.05, 0.62, uv.y);\n  lum += (hash21(uv * 831.7) - 0.5) * 0.004;\n\n  // Brand ink: cobalt deep in the field, sky through the beam, white core.\n  let cobalt = vec3f(0.0, 0.07, 0.72);   // #0012b8\n  let sky = vec3f(0.05, 0.56, 0.84);     // #0d8ed6\n  let hot = clamp(smoothstep(0.75, 0.0, d), 0.0, 1.0);\n  var ink = mix(cobalt, sky, clamp(lum * 2.6, 0.0, 1.0));\n  ink = mix(ink, vec3f(0.85, 0.95, 1.05), hot * hot * 0.8);\n  let dark = ink * lum * 2.1 + cobalt * 0.05 * fall * cone;\n  let paper = vec3f(1.0) - lum * 1.6 * (vec3f(1.0) - ink * 0.6);\n  let col = mix(dark, paper, params.light);\n  return vec4f(col, 1.0);\n}\n"}),(0,r.jsxs)("div",{className:"relative mx-auto max-w-3xl space-y-8 text-center",children:[(0,r.jsx)(x.A,{immediate:!0,children:(0,r.jsxs)("div",{className:"space-y-6",children:[(0,r.jsx)("h1",{className:"text-[clamp(38px,6vw,68px)] leading-[1.05] font-medium tracking-tight text-fg-100 text-balance",children:"One MCP for all of trading."}),(0,r.jsx)(c.Y0,{children:(0,r.jsx)("span",{className:"mx-auto block max-w-2xl",children:"Connect your agent to LuxAlgo once and it can explain any trading concept, read and write your trade journal, run prop-firm simulations, pull session statistics with the sample size attached, and search the public record of US markets. Free, no key, and no account for anything public: one URL, one sign-in for your journal, and your assistant knows markets."})})]})}),(0,r.jsx)(x.A,{immediate:!0,delay:120,children:(0,r.jsxs)("div",{className:"flex flex-col items-center gap-4",children:[(0,r.jsx)(p.A,{}),(0,r.jsxs)("span",{className:"relative inline-flex overflow-hidden rounded-full p-px",children:[(0,r.jsx)("span",{"aria-hidden":!0,className:"absolute inset-[-200%] animate-border-spin bg-[conic-gradient(from_0deg,transparent_0deg,rgba(255,255,255,0.10)_40deg,var(--color-sky-400)_78deg,var(--color-cobalt-500)_104deg,var(--color-purple-500)_128deg,var(--color-pink-500)_144deg,color-mix(in_srgb,var(--color-orange-400)_60%,transparent)_162deg,transparent_195deg)] motion-reduce:animate-none"}),(0,r.jsx)(m.og,{className:"relative !border-transparent"})]})]})})]}),(0,r.jsx)(x.A,{delay:240,children:(0,r.jsx)("div",{className:"mx-auto mt-16 grid max-w-2xl gap-px overflow-hidden rounded-xl border border-white/10 bg-white/[0.06] sm:grid-cols-2",children:[[(0,r.jsx)(h.T9,{value:42},"live"),"tools live on the hosted server"],[(0,r.jsx)(h.T9,{value:100},"all"),"tools across the open-source family"]].map(e=>{let[t,s]=e;return(0,r.jsxs)("div",{className:"bg-surface-100 px-4 py-6 sm:px-6",children:[(0,r.jsx)("p",{className:"font-mono text-[clamp(22px,2.6vw,34px)] font-medium tracking-tight text-fg-100",children:t}),(0,r.jsx)("p",{className:"mt-1.5 text-xs leading-snug text-fg-300 sm:text-sm",children:s})]},s)})})}),(0,r.jsx)(x.A,{delay:300,className:"relative mx-auto mt-14 max-w-[880px]",children:(0,r.jsx)(k,{})})]}),(0,r.jsxs)(u.Ay,{hue:"sky",hue2:"cobalt",innerClassName:"grid items-center gap-10 lg:grid-cols-[1.2fr_1fr] lg:gap-16",children:[(0,r.jsx)(x.A,{children:(0,r.jsxs)("div",{className:"space-y-6",children:[(0,r.jsx)(u.v0,{hue:"emerald",children:"Live on the hosted server"}),(0,r.jsx)("h2",{className:"text-[clamp(30px,4vw,52px)] leading-[1.06] font-medium tracking-tight text-fg-100 text-balance",children:"Every trading concept, explained on demand."}),(0,r.jsx)("p",{className:"max-w-xl text-base leading-relaxed text-fg-300 sm:text-lg",children:"The LuxAlgo Library: 850+ trading concepts across 17 families, explained, cross-linked, and implemented in open code. An agent searches it, pulls full concept pages as markdown, and fetches indicator source on demand, with canonical URLs attached to every answer."}),(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[(0,r.jsx)(c.Bk,{href:"/features/library",children:"The Library flagship page"}),(0,r.jsx)(c.pq,{href:"/library",children:"Browse the Library"})]})]})}),(0,r.jsx)(x.A,{delay:120,className:"order-last",children:(0,r.jsxs)("div",{className:"relative overflow-hidden rounded-2xl border border-white/10 bg-surface-100 p-5 sm:p-6",children:[(0,r.jsx)("span",{"aria-hidden":!0,
1className:"pointer-events-none absolute inset-x-6 top-0 h-px ".concat(c.jD)}),(0,r.jsx)("div",{className:"flex flex-wrap gap-2",children:v.map(e=>(0,r.jsx)("span",{className:"rounded-md border border-white/10 bg-white/[0.03] px-2.5 py-1.5 font-mono text-[11px] text-fg-200",children:e},e))})]})})]}),(0,r.jsxs)(u.Ay,{hue:"green",hue2:"sky",innerClassName:"grid items-center gap-10 lg:grid-cols-[1fr_1.2fr] lg:gap-16",children:[(0,r.jsx)(x.A,{delay:120,className:"order-last lg:order-first",children:(0,r.jsxs)("div",{className:"relative overflow-hidden rounded-2xl border border-white/10 bg-surface-100 p-5 sm:p-6",children:[(0,r.jsx)("span",{"aria-hidden":!0,className:"pointer-events-none absolute inset-x-6 top-0 h-px ".concat(c.jD)}),(0,r.jsx)("div",{className:"flex flex-wrap gap-2",children:b.map(e=>(0,r.jsx)("span",{className:"rounded-md border border-white/10 bg-white/[0.03] px-2.5 py-1.5 font-mono text-[11px] text-fg-200",children:e},e))}),(0,r.jsx)("p",{className:"mt-4 text-xs text-fg-300",children:"Sign in with your LuxAlgo account \xb7 OAuth 2.1 \xb7 writes act only as you, on your own journal"})]})}),(0,r.jsx)(x.A,{children:(0,r.jsxs)("div",{className:"space-y-6",children:[(0,r.jsx)(u.v0,{hue:"emerald",children:"Live on the hosted server \xb7 sign in"}),(0,r.jsx)("h2",{className:"text-[clamp(30px,4vw,52px)] leading-[1.06] font-medium tracking-tight text-fg-100 text-balance",children:"Your journal, in the conversation."}),(0,r.jsx)("p",{className:"max-w-xl text-base leading-relaxed text-fg-300 sm:text-lg",children:"Thirteen journal_* tools read and write the trade journal inside LuxAlgo, as you: the dashboard with its Edge Score and equity curve, the P&L calendar, breakdowns by weekday, hold time, symbol and tag, every trade with its fills, and your day notes. Ask what your worst weekday was and why, then let the agent tag the trades and write the note. The first protected call asks you to sign in; the app owns the rules and validates every change."}),(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[(0,r.jsx)(c.Bk,{href:"/trade-journal",children:"The Trade Journal page"}),(0,r.jsx)(c.pq,{href:"https://app.luxalgo.com",children:"Open your journal"})]})]})})]}),(0,r.jsxs)(u.Ay,{hue:"purple",hue2:"pink",innerClassName:"grid items-center gap-10 lg:grid-cols-[1.2fr_1fr] lg:gap-16",children:[(0,r.jsx)(x.A,{delay:120,className:"order-last",children:(0,r.jsx)("div",{className:"dark",children:(0,r.jsxs)("div",{className:"overflow-hidden rounded-2xl border border-white/10 bg-[#060606]",children:[(0,r.jsx)("div",{className:"border-b border-white/[0.06] px-5 py-3",children:(0,r.jsxs)("p",{className:"text-xs font-medium text-fg-300",children:[(0,r.jsx)("span",{className:"font-mono",children:"propfirms_simulate"})," \xb7 one real answer"]})}),(0,r.jsxs)("div",{className:"space-y-3 px-5 py-5",children:[(0,r.jsxs)("div",{className:"flex flex-wrap items-baseline gap-x-4 gap-y-1",children:[(0,r.jsx)("span",{className:"font-mono text-3xl tabular-nums text-fg-100",children:(0,r.jsx)(h.T9,{value:47,decimals:1,suffix:"%"})}),(0,r.jsx)("span",{className:"text-xs font-medium text-fg-200",children:"pass per attempt"}),(0,r.jsx)("span",{className:"font-mono text-xs text-fg-300",children:"95% CI [46.3%, 47.7%]"})]}),(0,r.jsx)("p",{className:"font-mono text-[11px] leading-relaxed text-fg-300",children:"45% win rate \xb7 1.3R \xb7 3 trades/day \xb7 1% risk \xb7 a 100k two-step challenge \xb7 every failure hit max-loss"})]}),(0,r.jsx)("p",{className:"border-t border-white/[0.06] px-5 py-2.5 text-xs text-fg-300",children:"Simulation, not prediction."})]})})}),(0,r.jsx)(x.A,{children:(0,r.jsxs)("div",{className:"space-y-6",children:[(0,r.jsx)(u.v0,{hue:"emerald",children:"Live on the hosted server"}),(0,r.jsx)("h2",{className:"text-[clamp(30px,4vw,52px)] leading-[1.06] font-medium tracking-tight text-fg-100 text-balance",children:"Know your odds before you pay the fee."}),(0,r.jsx)("p",{className:"max-w-xl text-base leading-relaxed text-fg-300 sm:text-lg",children:"The whole Prop Firm Sim engine and the live directory: simulate your stats or your real trade series through a firm’s exact ruleset, sweep risk, compare challenges, and screen strategies, with a confidence interval on every percentage."}),(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[(0,r.jsx)(c.Bk,{href:"/prop-firm-sim",children:"The Prop Firm Sim page"}),(0,r.jsx)(c.pq,{href:"/mcp/prop-firm-sim",children:"Reference pass rates"})]})]})})]}),(0,r.jsxs)(u.Ay,{hue:"cobalt",hue2:"purple",innerClassName:"grid items-center gap-10 lg:grid-cols-[1fr_1.2fr] lg:gap-16",children:[(0,r.jsx)(x.A,{children:(0,r.jsxs)("div",{className:"space-y-6",children:[(0,r.jsx)(u.v0,{hue:"emerald",children:"Live on the hosted server"}),(0,r.jsx)("h2",{className:"text-[clamp(30px,4vw,52px)] leading-[1.06] font-medium tracking-tight text-fg-100 text-balance",children:"What Congress and insiders are actually buying."}),(0,r.jsx)("p",{className:"max-w-xl text-base leading-relaxed text-fg-300 sm:text-lg",children:"Market Trackers on the host: congressional trades, insider filings, 13F holdings, federal contracts, lobbying, patents, clinical trials, and more, read straight from the pipeline’s CC0 dumps. Ask “what did Congress buy this week?” and every row comes back with its primary-source link. Data only: no signals, scores, or predictions."}),(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[(0,r.jsx)(c.Bk,{href:"/market-trackers",children:"The Market Trackers page"}),(0,r.jsx)(c.pq,{href:"/markets",children:"Browse the live trackers"})]})]})}),(0,r.jsx)(x.A,{delay:120,className:"order-last lg:order-first",children:(0,r.jsxs)("div",{className:"relative overflow-hidden rounded-2xl border border-white/10 bg-surface-100 p-5 sm:p-6",children:[(0,r.jsx)("span",{"aria-hidden":!0,
1className:"pointer-events-none absolute inset-x-6 top-0 h-px ".concat(c.jD)}),(0,r.jsx)("div",{className:"flex flex-wrap gap-2",children:y.map(e=>(0,r.jsx)("span",{className:"rounded-md border border-white/10 bg-white/[0.03] px-2.5 py-1.5 font-mono text-[11px] text-fg-200",children:e},e))})]})})]}),(0,r.jsxs)(u.Ay,{hue:"pink",hue2:"purple",innerClassName:"grid items-center gap-10 lg:grid-cols-[1.2fr_1fr] lg:gap-16",children:[(0,r.jsx)(x.A,{delay:120,className:"order-last",children:(0,r.jsxs)("div",{className:"relative overflow-hidden rounded-2xl border border-white/10 bg-surface-100 p-5 sm:p-6",children:[(0,r.jsx)("span",{"aria-hidden":!0,className:"pointer-events-none absolute inset-x-6 top-0 h-px ".concat(c.jD)}),(0,r.jsx)("div",{className:"flex flex-wrap gap-2",children:j.map(e=>(0,r.jsx)("span",{className:"rounded-md border border-white/10 bg-white/[0.03] px-2.5 py-1.5 font-mono text-[11px] text-fg-200",children:e},e))})]})}),(0,r.jsx)(x.A,{children:(0,r.jsxs)("div",{className:"space-y-6",children:[(0,r.jsx)(u.v0,{hue:"emerald",children:"Live on the hosted server"}),(0,r.jsx)("h2",{className:"text-[clamp(30px,4vw,52px)] leading-[1.06] font-medium tracking-tight text-fg-100 text-balance",children:"Did that setup ever actually work?"}),(0,r.jsx)("p",{className:"max-w-xl text-base leading-relaxed text-fg-300 sm:text-lg",children:"Edge Stats on the host: session statistics from the open-source engine, precomputed nightly over free market data. Gap fills, opening-range breakouts, day-of-week effects, event days: every answer arrives with its sample size and confidence interval, and the engine has no code path that returns a percentage without one. Historical frequencies, never predictions."}),(0,r.jsx)("div",{className:"flex flex-wrap items-center gap-3",children:(0,r.jsx)(c.Bk,{href:"/edge-stats",children:"The Edge Stats page"})})]})})]}),(0,r.jsxs)(u.Ay,{hue:"cobalt",hue2:"sky",glow:!1,innerClassName:"grid items-center gap-10 lg:grid-cols-[1fr_1.2fr] lg:gap-16",children:[(0,r.jsx)(x.A,{children:(0,r.jsxs)("div",{className:"space-y-6",children:[(0,r.jsx)(u.v0,{hue:"cobalt",children:"Local, on purpose"}),(0,r.jsx)("h2",{className:"text-[clamp(30px,4vw,52px)] leading-[1.06] font-medium tracking-tight text-fg-100 text-balance",children:"Your accounts never visit a server."}),(0,r.jsx)("p",{className:"max-w-xl text-base leading-relaxed text-fg-300 sm:text-lg",children:"Run the same server locally (npx @luxalgo/mcp) and six broker_* tools appear: read-only sight of your real accounts across 22 brokers through the open Broker SDK. The hosted endpoint does not carry these tools, on purpose: a hosted process has no business holding anyone’s broker credentials."}),(0,r.jsx)("div",{className:"flex flex-wrap items-center gap-3",children:(0,r.jsx)(c.Bk,{href:"/broker-sdk",children:"The Broker SDK page"})})]})}),(0,r.jsx)(x.A,{delay:120,className:"order-last lg:order-first",children:(0,r.jsxs)("div",{className:"overflow-hidden rounded-2xl border border-white/10 bg-surface-100 p-5 sm:p-6",children:[(0,r.jsx)("div",{className:"flex flex-wrap gap-2",children:w.map(e=>(0,r.jsx)("span",{className:"rounded-md border border-white/10 bg-white/[0.03] px-2.5 py-1.5 font-mono text-[11px] text-fg-200",children:e},e))}),(0,r.jsx)("p",{className:"mt-4 text-xs text-fg-300",children:"stdio only \xb7 your keys stay in your env"})]})})]}),(0,r.jsxs)(u.Ay,{hue:"orange",hue2:"pink",innerClassName:"grid items-center gap-10 lg:grid-cols-[1.2fr_1fr] lg:gap-16",children:[(0,r.jsx)(x.A,{delay:120,className:"order-last",children:(0,r.jsx)("div",{className:"relative",children:(0,r.jsx)(f.A,{className:"h-[340px] sm:h-[420px]",fallback:(0,r.jsx)("div",{"aria-hidden":!0,className:"absolute inset-0 rounded-xl border border-white/10 bg-[#0b0d10]"})})})}),(0,r.jsx)(x.A,{children:(0,r.jsxs)("div",{className:"space-y-6",children:[(0,r.jsx)(u.v0,{hue:"orange",children:"In your browser, not on the server"}),(0,r.jsx)("h2",{className:"text-[clamp(30px,4vw,52px)] leading-[1.06] font-medium tracking-tight text-fg-100 text-balance",children:"The server returns text. Vela draws it."}),(0,r.jsx)("p",{className:"max-w-xl text-base leading-relaxed text-fg-300 sm:text-lg",children:"The server answers in text. When you want to see it, Vela for Developers draws it: our open-source charting library, running in your browser on your own bars or a free public feed. Any Library indicator’s Pine Script\xae source runs live on the chart. The MCP server itself never touches a chart."}),(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[(0,r.jsx)(c.Bk,{href:(0,l.Wx)("/"),
1children:"Vela for Developers"}),(0,r.jsx)(c.pq,{href:"https://github.com/LuxAlgo/Vela",children:"Vela on GitHub"})]})]})})]}),(0,r.jsxs)(u.Ay,{hue:"sky",hue2:"pink",innerClassName:"space-y-12",children:[(0,r.jsx)(x.A,{children:(0,r.jsxs)("div",{className:"max-w-2xl space-y-4",children:[(0,r.jsx)("h2",{className:"text-[clamp(32px,4vw,52px)] leading-[1.08] font-medium tracking-tight text-fg-100",children:"The rest of the family runs local today."}),(0,r.jsx)(c.Y0,{children:"Every project below ships its own MCP server you can run right now, and each is built to join the hosted endpoint. Same tool shapes, no dates promised."})]})}),(0,r.jsx)("div",{className:"grid gap-4 sm:grid-cols-2 lg:grid-cols-3",children:N.map((e,t)=>(0,r.jsx)(x.A,{delay:50*t,y:12,children:(0,r.jsxs)(n(),{href:e.href,className:"group relative flex h-full flex-col overflow-hidden rounded-xl border border-white/10 bg-surface-100 p-6 transition-colors duration-200 hover:border-white/25",children:[(0,r.jsxs)("div",{className:"flex items-start justify-between gap-4",children:[(0,r.jsx)("h3",{className:"text-lg font-medium tracking-tight text-fg-100",children:e.label}),(0,r.jsx)(i.A,{"aria-hidden":!0,className:"size-4 shrink-0 text-fg-300 transition-transform duration-200 group-hover:translate-x-0.5 group-hover:-translate-y-0.5 group-hover:text-fg-100"})]}),(0,r.jsx)("p",{className:"mt-2 flex-1 text-sm leading-relaxed text-fg-300",children:e.description}),(0,r.jsx)("p",{className:"mt-4 text-[11px] font-medium text-fg-300",children:"".concat(e.tools," tools \xb7 local MCP")})]})},e.label))})]}),(0,r.jsx)(u.Ay,{hue:"purple",hue2:"pink",children:(0,r.jsx)(x.A,{children:(0,r.jsxs)("div",{className:"mx-auto max-w-3xl space-y-7 text-center",children:[(0,r.jsx)("h2",{className:"text-[clamp(32px,4.5vw,52px)] leading-[1.08] font-medium tracking-tight text-fg-100",children:"Add one URL. Ask better questions."}),(0,r.jsxs)("p",{className:"text-lg text-fg-200 text-pretty",children:["No install, no key. Forty-two tools today, spanning"," ",(0,r.jsx)("span",{className:"font-mono text-[0.9em] text-fg-100",children:"library_*"}),","," ",(0,r.jsx)("span",{className:"font-mono text-[0.9em] text-fg-100",children:"journal_*"}),","," ",(0,r.jsx)("span",{className:"font-mono text-[0.9em] text-fg-100",children:"propfirms_*"}),","," ",(0,r.jsx)("span",{className:"font-mono text-[0.9em] text-fg-100",children:"trackers_*"}),", and"," ",(0,r.jsx)("span",{className:"font-mono text-[0.9em] text-fg-100",children:"edge_*"}),". Everything public works without an account; one sign-in adds your own journal. The rest of the family is on the way, and the server code is open at"," ",(0,r.jsx)("a",{href:"https://github.com/LuxAlgo/luxalgo-mcp-server",target:"_blank",rel:"noopener noreferrer",className:"text-fg-100 underline decoration-white/25 underline-offset-4 transition-colors duration-150 hover:decoration-white/60",children:"LuxAlgo/luxalgo-mcp-server"}),"."]}),(0,r.jsxs)("div",{className:"flex flex-col items-center gap-4",children:[(0,r.jsx)(p.A,{}),(0,r.jsxs)("p",{className:"text-xs text-fg-300",children:["42 hosted tools \xb7 streamable HTTP \xb7"," ",(0,r.jsx)("span",{className:"font-mono",children:"mcp.luxalgo.com/mcp"})]})]})]})})})]})}},18923:(e,t,s)=>{"use strict";s.d(t,{A:()=>i});var r=s(66352),a=s(95132),n=s(29209),l=s.n(n);function i(e){let{fallback:t,className:n=""}=e,i=(0,a.useRef)(null),[o,d]=(0,a.useState)(!1);return(0,a.useEffect)(()=>{let e,t,r,a=i.current;if(!a)return;let n=function(e){let t=new Set,s=null,r=function(t){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;if(!t.getClientRects().length)return;let a=e.getBoundingClientRect(),n=t.getBoundingClientRect(),l=new DOMMatrixReadOnly(getComputedStyle(t).transform),i=l.m41+Math.max(a.left+8-n.left,Math.min(s,a.right-8-n.right)),o=l.m42+Math.max(a.top+8-n.top,Math.min(r,a.bottom-8-n.bottom));t.style.transform="translate(".concat(i,"px, ").concat(o,"px)")},a=new ResizeObserver(()=>t.forEach(e=>r(e)));a.observe(e);let n=()=>{for(let s of t)e.contains(s)||(a.unobserve(s),t.delete(s));
1e.querySelectorAll(".vela-dialog").forEach(e=>{t.has(e)||(t.add(e),a.observe(e))})},l=new MutationObserver(n);l.observe(e,{childList:!0,subtree:!0}),n();let i=()=>{let e=s;s=null,(null==e?void 0:e.header.hasPointerCapture(e.pointerId))&&e.header.releasePointerCapture(e.pointerId)},o=e=>{if(0!==e.button||!(e.target instanceof Element))return;let t=e.target.closest(".vela-dialog-header"),r=null==t?void 0:t.closest(".vela-dialog");t&&r&&"move"===t.style.cursor&&(e.target.closest("button, input, select, textarea, a")||(e.stopPropagation(),e.preventDefault(),i(),s={panel:r,header:t,pointerId:e.pointerId,x:e.clientX,y:e.clientY},t.setPointerCapture(e.pointerId)))},d=e=>{s&&s.pointerId===e.pointerId&&(e.stopPropagation(),r(s.panel,e.clientX-s.x,e.clientY-s.y),s.x=e.clientX,s.y=e.clientY)},c=e=>{(null==s?void 0:s.pointerId)===e.pointerId&&i()};return e.addEventListener("pointerdown",o,!0),e.addEventListener("pointermove",d,!0),e.addEventListener("pointerup",c,!0),e.addEventListener("pointercancel",c,!0),e.addEventListener("lostpointercapture",c,!0),()=>{i(),a.disconnect(),l.disconnect(),e.removeEventListener("pointerdown",o,!0),e.removeEventListener("pointermove",d,!0),e.removeEventListener("pointerup",c,!0),e.removeEventListener("pointercancel",c,!0),e.removeEventListener("lostpointercapture",c,!0)}}(a),l=!1;return(async()=>{try{let[{VelaWorkspace:n},{HyperliquidProvider:i},o]=await Promise.all([Promise.all([s.e(1158),s.e(2569),s.e(8658),s.e(1970),s.e(1729),s.e(4403)]).then(s.bind(s,41304)),s.e(626).then(s.bind(s,80626)),Promise.all([s.e(1970),s.e(1729),s.e(7349)]).then(s.bind(s,37349))]);if(l)return;r=function(e,t,s){let r=()=>{let s=t();if(!s||!e.contains(s))return;let r=e.querySelector(".vela-popover");if(!r||!r.getClientRects().length)return;let a=e.getBoundingClientRect(),n=(e,t)=>{r.style.getPropertyValue(e)!==t&&r.style.setProperty(e,t)};n("max-width","".concat(Math.max(0,a.width-16),"px")),n("max-height","".concat(Math.max(0,a.height-16),"px"));let l=s.getBoundingClientRect();n("min-width","".concat(Math.max(0,Math.min(l.width,a.width-16)),"px"));let i=r.getBoundingClientRect(),o=r.offsetParent;if(!o)return;let d=o.getBoundingClientRect(),c=l.bottom+4,x=l.top-i.height-4,h=c+i.height>a.bottom-8&&l.top-a.top>a.bottom-l.bottom?x:c,p=Math.max(a.left+8,Math.min(l.left,a.right-8-i.width)),m=Math.max(a.top+8,Math.min(h,a.bottom-8-i.height));n("left","".concat(p-d.left-o.clientLeft+o.scrollLeft,"px")),n("top","".concat(m-d.top-o.clientTop+o.scrollTop,"px"))},a=new MutationObserver(e=>{e.some(e=>"childList"===e.type||e.target instanceof Element&&e.target.matches(".vela-popover"))&&r()});a.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["style"]});let n=new ResizeObserver(r);return n.observe(e),()=>{a.disconnect(),n.disconnect();let r=t();r&&e.contains(r)&&s()}}(a,o.openPopoverTrigger,o.closeOpenPopovers);let c=new n(a,{layout:!1,symbol:"hyperliquid:BTC",timeframe:"60",live:!0,theme:"dark",persist:!1,animations:{intro:!1},providers:{hyperliquid:()=>new i}});e=c;let x=c.active.chart,h=()=>{l||(null==t||t(),d(!0))},p=x.on("history:progress",e=>{let{loaded:t}=e;t>0&&h()}),m=x.on("history:complete",e=>{let{barsLoaded:t}=e;t>0&&h()});t=()=>{p(),m()}}catch(e){}})(),()=>{l=!0,null==t||t(),n(),null==r||r(),null==e||e.destroy()}},[]),(0,r.jsxs)("div",{className:"vela-live relative ".concat(n),children:[t&&(0,r.jsx)("div",{"aria-hidden":o,className:"absolute inset-0 transition-opacity duration-700 ".concat(o?"pointer-events-none opacity-0":""),children:t}),(0,r.jsx)("div",{ref:i,className:"".concat(l().host," absolute inset-0 rounded-xl border border-white/10 bg-[#0b0d10] transition-opacity duration-700 [&>.vela-workspace]:rounded-xl ").concat(o?"opacity-100":"pointer-events-none opacity-0")})]})}},29209:e=>{e.exports={host:"live-chart_host__ix3Eg"}},59871:(e,t,s)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/mcp",function(){return s(9731)}])}},e=>{e.O(0,[8626,9546,1274,636,6593,8792],()=>e(e.s=59871)),_N_E=e.O()}]);

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.