[{"data":1,"prerenderedAt":3178},["ShallowReactive",2],{"navigation_docs":3,"-advanced-code-mode":287,"-advanced-code-mode-surround":3173},[4,40,70,99,122,156,189,258],{"title":5,"path":6,"stem":7,"children":8,"page":39},"Getting Started","\u002Fgetting-started","1.getting-started",[9,14,19,24,29,34],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-book-open",{"title":15,"path":16,"stem":17,"icon":18},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":20,"path":21,"stem":22,"icon":23},"Configuration","\u002Fgetting-started\u002Fconfiguration","1.getting-started\u002F3.configuration","i-lucide-settings",{"title":25,"path":26,"stem":27,"icon":28},"Inspector","\u002Fgetting-started\u002Finspector","1.getting-started\u002F4.inspector","i-lucide-circuit-board",{"title":30,"path":31,"stem":32,"icon":33},"Connection","\u002Fgetting-started\u002Fconnection","1.getting-started\u002F5.connection","i-lucide-plug",{"title":35,"path":36,"stem":37,"icon":38},"Agent Skills","\u002Fgetting-started\u002Fagent-skills","1.getting-started\u002F6.agent-skills","i-lucide-sparkles",false,{"title":41,"path":42,"stem":43,"children":44,"page":39},"Tools","\u002Ftools","2.tools",[45,50,55,60,65],{"title":46,"path":47,"stem":48,"icon":49},"Overview","\u002Ftools\u002Foverview","2.tools\u002F0.overview","i-lucide-wrench",{"title":51,"path":52,"stem":53,"icon":54},"Schema, handler & returns","\u002Ftools\u002Fschema-handler","2.tools\u002F1.schema-handler","i-lucide-braces",{"title":56,"path":57,"stem":58,"icon":59},"Annotations & input examples","\u002Ftools\u002Fannotations","2.tools\u002F2.annotations","i-lucide-badge-info",{"title":61,"path":62,"stem":63,"icon":64},"Errors & caching","\u002Ftools\u002Ferrors-caching","2.tools\u002F3.errors-caching","i-lucide-shield",{"title":66,"path":67,"stem":68,"icon":69},"Groups, files & dynamic registration","\u002Ftools\u002Fgroups-organization","2.tools\u002F4.groups-organization","i-lucide-tags",{"title":71,"path":72,"stem":73,"children":74,"page":39},"Resources","\u002Fresources","3.resources",[75,79,84,89,94],{"title":46,"path":76,"stem":77,"icon":78},"\u002Fresources\u002Foverview","3.resources\u002F0.overview","i-lucide-package",{"title":80,"path":81,"stem":82,"icon":83},"Static resources & structure","\u002Fresources\u002Fstatic-and-structure","3.resources\u002F1.static-and-structure","i-lucide-file-stack",{"title":85,"path":86,"stem":87,"icon":88},"Templates & handlers","\u002Fresources\u002Ftemplates-and-handlers","3.resources\u002F2.templates-and-handlers","i-lucide-git-branch",{"title":90,"path":91,"stem":92,"icon":93},"Metadata, content & errors","\u002Fresources\u002Fcontent-metadata-errors","3.resources\u002F3.content-metadata-errors","i-lucide-layers",{"title":95,"path":96,"stem":97,"icon":98},"Groups & organization","\u002Fresources\u002Forganization","3.resources\u002F4.organization","i-lucide-folder-tree",{"title":100,"path":101,"stem":102,"children":103,"page":39},"Prompts","\u002Fprompts","4.prompts",[104,108,113,117],{"title":46,"path":105,"stem":106,"icon":107},"\u002Fprompts\u002Foverview","4.prompts\u002F0.overview","i-lucide-message-square",{"title":109,"path":110,"stem":111,"icon":112},"Authoring & structure","\u002Fprompts\u002Fauthoring","4.prompts\u002F1.authoring","i-lucide-pen-line",{"title":114,"path":115,"stem":116,"icon":93},"Input, handler & messages","\u002Fprompts\u002Finput-handler-messages","4.prompts\u002F2.input-handler-messages",{"title":118,"path":119,"stem":120,"icon":121},"Patterns & advanced","\u002Fprompts\u002Fpatterns-advanced","4.prompts\u002F3.patterns-advanced","i-lucide-line-chart",{"title":123,"path":124,"stem":125,"children":126,"page":39},"Handlers","\u002Fhandlers","5.handlers",[127,131,136,141,146,151],{"title":46,"path":128,"stem":129,"icon":130},"\u002Fhandlers\u002Foverview","5.handlers\u002F0.overview","i-lucide-server",{"title":132,"path":133,"stem":134,"icon":135},"Default & custom handlers","\u002Fhandlers\u002Fdefault-and-custom","5.handlers\u002F1.default-and-custom","i-lucide-toggle-left",{"title":137,"path":138,"stem":139,"icon":140},"Structure & options","\u002Fhandlers\u002Fstructure-and-options","5.handlers\u002F2.structure-and-options","i-lucide-sliders-horizontal",{"title":142,"path":143,"stem":144,"icon":145},"Examples & routing","\u002Fhandlers\u002Fexamples-routing","5.handlers\u002F3.examples-routing","i-lucide-route",{"title":147,"path":148,"stem":149,"icon":150},"Sharing & practices","\u002Fhandlers\u002Fsharing-practices","5.handlers\u002F4.sharing-practices","i-lucide-share-2",{"title":152,"path":153,"stem":154,"icon":155},"Multi-handler organization","\u002Fhandlers\u002Forganization","5.handlers\u002F5.organization","i-lucide-network",{"title":157,"path":158,"stem":159,"children":160,"page":39},"Apps","\u002Fapps","6.apps",[161,165,170,175,179,184],{"title":46,"path":162,"stem":163,"icon":164},"\u002Fapps\u002Foverview","6.apps\u002F0.overview","i-lucide-app-window",{"title":166,"path":167,"stem":168,"icon":169},"Authoring & defineMcpApp","\u002Fapps\u002Fauthoring","6.apps\u002F1.authoring","i-lucide-code-2",{"title":171,"path":172,"stem":173,"icon":174},"useMcpApp() bridge","\u002Fapps\u002Fuse-mcp-app","6.apps\u002F2.use-mcp-app","i-lucide-message-circle",{"title":176,"path":177,"stem":178,"icon":64},"CSP & build pipeline","\u002Fapps\u002Fcsp-and-wiring","6.apps\u002F3.csp-and-wiring",{"title":180,"path":181,"stem":182,"icon":183},"Testing & publishing","\u002Fapps\u002Ftesting-publishing","6.apps\u002F4.testing-publishing","i-lucide-rocket",{"title":185,"path":186,"stem":187,"icon":188},"Patterns & limits","\u002Fapps\u002Fpatterns-reference","6.apps\u002F5.patterns-reference","i-lucide-book-marked",{"title":190,"path":191,"stem":192,"children":193,"page":39},"Advanced Topics","\u002Fadvanced","7.advanced",[194,199,204,209,214,219,223,228,233,238,243,248,253],{"title":195,"path":196,"stem":197,"icon":198},"Custom Paths","\u002Fadvanced\u002Fcustom-paths","7.advanced\u002F1.custom-paths","i-lucide-folder",{"title":200,"path":201,"stem":202,"icon":203},"Logging","\u002Fadvanced\u002Flogging","7.advanced\u002F10.logging","i-lucide-scroll-text",{"title":205,"path":206,"stem":207,"icon":208},"MCP Apps Internals","\u002Fadvanced\u002Fmcp-apps-internals","7.advanced\u002F11.mcp-apps-internals","i-lucide-cog",{"title":210,"path":211,"stem":212,"icon":213},"Listing Definitions","\u002Fadvanced\u002Flisting-definitions","7.advanced\u002F12.listing-definitions","i-lucide-list",{"title":215,"path":216,"stem":217,"icon":218},"llms.txt discovery","\u002Fadvanced\u002Fllms-txt","7.advanced\u002F13.llms-txt","i-lucide-file-text",{"title":220,"path":221,"stem":222,"icon":64},"Middleware","\u002Fadvanced\u002Fmiddleware","7.advanced\u002F2.middleware",{"title":224,"path":225,"stem":226,"icon":227},"TypeScript","\u002Fadvanced\u002Ftypescript","7.advanced\u002F3.typescript","i-lucide-type",{"title":229,"path":230,"stem":231,"icon":232},"Hooks","\u002Fadvanced\u002Fhooks","7.advanced\u002F4.hooks","i-lucide-webhook",{"title":234,"path":235,"stem":236,"icon":237},"MCP Evals","\u002Fadvanced\u002Fevals","7.advanced\u002F5.evals","i-lucide-flask-conical",{"title":239,"path":240,"stem":241,"icon":242},"Sessions","\u002Fadvanced\u002Fsessions","7.advanced\u002F6.sessions","i-lucide-database",{"title":244,"path":245,"stem":246,"icon":247},"Dynamic Definitions","\u002Fadvanced\u002Fdynamic-definitions","7.advanced\u002F7.dynamic-definitions","i-lucide-toggle-right",{"title":249,"path":250,"stem":251,"icon":252},"Code Mode","\u002Fadvanced\u002Fcode-mode","7.advanced\u002F8.code-mode","i-lucide-code",{"title":254,"path":255,"stem":256,"icon":257},"Elicitation","\u002Fadvanced\u002Felicitation","7.advanced\u002F9.elicitation","i-lucide-message-square-quote",{"title":259,"path":260,"stem":261,"children":262,"page":39},"Examples","\u002Fexamples","8.examples",[263,268,273,278,283],{"title":264,"path":265,"stem":266,"icon":267},"Authentication","\u002Fexamples\u002Fauthentication","8.examples\u002F1.authentication","i-lucide-shield-check",{"title":269,"path":270,"stem":271,"icon":272},"API Integration","\u002Fexamples\u002Fapi-integration","8.examples\u002F2.api-integration","i-lucide-globe",{"title":274,"path":275,"stem":276,"icon":277},"Common Patterns","\u002Fexamples\u002Fcommon-patterns","8.examples\u002F3.common-patterns","i-lucide-lightbulb",{"title":279,"path":280,"stem":281,"icon":282},"File Operations","\u002Fexamples\u002Ffile-operations","8.examples\u002F4.file-operations","i-lucide-file",{"title":284,"path":285,"stem":286,"icon":107},"Prompt Examples","\u002Fexamples\u002Fprompt-examples","8.examples\u002F5.prompt-examples",{"id":288,"title":249,"body":289,"description":3165,"extension":3166,"links":3167,"meta":3168,"navigation":3169,"path":250,"seo":3170,"stem":251,"__hash__":3172},"docs\u002F7.advanced\u002F8.code-mode.md",{"type":290,"value":291,"toc":3135},"minimark",[292,297,305,364,438,447,451,458,463,473,566,573,586,590,593,632,636,640,649,720,736,740,747,893,899,903,906,928,932,947,1565,1569,1576,1719,1864,1867,1873,1890,1935,1938,1992,1995,1999,2005,2075,2084,2093,2097,2104,2108,2120,2162,2166,2169,2206,2210,2213,2241,2244,2248,2404,2408,2411,2441,2445,2452,2456,2463,2467,2470,2953,2972,2976,2982,3040,3049,3053,3059,3104,3108,3131],[293,294,296],"h2",{"id":295},"what-is-code-mode","What is Code Mode?",[298,299,300,301,304],"p",{},"Code Mode replaces the traditional multi-turn tool calling pattern with a single ",[302,303,302],"code",{}," tool. Instead of the LLM calling tools one at a time — each requiring a round-trip — it writes JavaScript code that orchestrates multiple tools in one execution.",[306,307,310,313,355],"prompt",{":actions":308,"description":309,"icon":252},"[\"copy\",\"cursor\",\"windsurf\"]","Enable Code Mode in the MCP server",[298,311,312],{},"Enable Code Mode in my Nuxt MCP server (@nuxtjs\u002Fmcp-toolkit).",[314,315,316,334,337,340,343,346,349,352],"ul",{},[317,318,319,320,323,324,323,327,323,330,333],"li",{},"Install secure-exec: ",[302,321,322],{},"pnpm add secure-exec"," or ",[302,325,326],{},"npm install secure-exec",[302,328,329],{},"yarn add secure-exec",[302,331,332],{},"bun add secure-exec"," (Node >=18.16.0)",[317,335,336],{},"Set experimental_codeMode: true on the handler in server\u002Fmcp\u002Findex.ts (via defineMcpHandler)",[317,338,339],{},"Code Mode replaces all registered tools with a single 'code' tool",[317,341,342],{},"The LLM writes JavaScript that calls tools via a codemode object (e.g. await codemode.listUsers())",[317,344,345],{},"This reduces round-trips and token usage — especially with many tools (10+ tools saves 50%+ tokens)",[317,347,348],{},"Code runs in a secure V8 sandbox (workerd) — no access to filesystem, network, or Node APIs",[317,350,351],{},"If there are many tools (10+), consider progressive mode (experimental_codeMode: { progressive: true }) to keep both individual tools and the code tool — for fewer tools, standard mode is sufficient",[317,353,354],{},"Code Mode is experimental — the API may evolve",[298,356,357,358],{},"Docs: ",[359,360,361],"a",{"href":361,"rel":362},"https:\u002F\u002Fmcp-toolkit.nuxt.dev\u002Fadvanced\u002Fcode-mode",[363],"nofollow",[365,366,367,381],"table",{},[368,369,370],"thead",{},[371,372,373,376,379],"tr",{},[374,375],"th",{},[374,377,378],{},"Traditional MCP",[374,380,249],{},[382,383,384,399,412,425],"tbody",{},[371,385,386,393,396],{},[387,388,389],"td",{},[390,391,392],"strong",{},"Pattern",[387,394,395],{},"LLM calls tools one by one",[387,397,398],{},"LLM writes JS that calls tools",[371,400,401,406,409],{},[387,402,403],{},[390,404,405],{},"Round-trips",[387,407,408],{},"One per tool call",[387,410,411],{},"One for all operations",[371,413,414,419,422],{},[387,415,416],{},[390,417,418],{},"Complex logic",[387,420,421],{},"Multiple turns for conditionals\u002Floops",[387,423,424],{},"Native JS control flow",[371,426,427,432,435],{},[387,428,429],{},[390,430,431],{},"Token usage",[387,433,434],{},"Higher (repeated context)",[387,436,437],{},"Lower (single invocation)",[439,440,442,443,446],"callout",{"color":441,"icon":237},"warning","Code Mode is ",[390,444,445],{},"experimental for now",". The API may evolve as we stabilize this feature based on feedback.",[293,448,450],{"id":449},"why-code-mode","Why Code Mode?",[298,452,453,454,457],{},"Every LLM round-trip resends ",[390,455,456],{},"all tool descriptions"," as context. With traditional MCP, a task that requires 5 steps with 50 tools sends the full tool catalog 5 times — that's 15,500 tokens just for tool descriptions. Code Mode sends compact TypeScript signatures in a single tool, cutting that to ~3,000 tokens.",[459,460,462],"h3",{"id":461},"the-scaling-problem","The scaling problem",[298,464,465,466,469,470,472],{},"In traditional MCP, tool description overhead scales as ",[390,467,468],{},"tools × round-trips",". Code Mode replaces all tools with one ",[302,471,302],{}," tool containing compact type signatures — and usually needs fewer round-trips.",[365,474,475,489],{},[368,476,477],{},[371,478,479,482,484,486],{},[374,480,481],{},"Server size",[374,483,378],{},[374,485,249],{},[374,487,488],{},"Savings",[382,490,491,510,529,548],{},[371,492,493,499,502,505],{},[387,494,495,498],{},[390,496,497],{},"10 tools",", 3-step task",[387,500,501],{},"~1,860 tokens in tool descriptions",[387,503,504],{},"~920 tokens",[387,506,507],{},[390,508,509],{},"-51%",[371,511,512,518,521,524],{},[387,513,514,517],{},[390,515,516],{},"25 tools",", 4-step task",[387,519,520],{},"~6,200 tokens",[387,522,523],{},"~1,700 tokens",[387,525,526],{},[390,527,528],{},"-73%",[371,530,531,537,540,543],{},[387,532,533,536],{},[390,534,535],{},"50 tools",", 5-step task",[387,538,539],{},"~15,500 tokens",[387,541,542],{},"~3,000 tokens",[387,544,545],{},[390,546,547],{},"-81%",[371,549,550,555,558,561],{},[387,551,552,536],{},[390,553,554],{},"100 tools",[387,556,557],{},"~31,000 tokens",[387,559,560],{},"~5,600 tokens",[387,562,563],{},[390,564,565],{},"-82%",[298,567,568,569,572],{},"These numbers represent tool description overhead only. Total savings depend on the task, but the trend is clear: ",[390,570,571],{},"the more tools you have, the bigger the savings",".",[439,574,577,578,581,582,585],{"color":575,"icon":576},"primary","i-lucide-zap","On a real benchmark with Claude Sonnet (9 tools, 7 tasks), Code Mode saved ",[390,579,580],{},"15% of total tokens overall"," and up to ",[390,583,584],{},"33% on complex batch operations"," — collapsing 8 tool calls into a single JavaScript block.",[459,587,589],{"id":588},"beyond-token-savings","Beyond token savings",[298,591,592],{},"Code Mode also unlocks patterns that traditional MCP cannot do efficiently:",[314,594,595,605,614,623],{},[317,596,597,600,601,604],{},[390,598,599],{},"Parallel execution"," — ",[302,602,603],{},"Promise.all()"," for independent calls instead of sequential round-trips",[317,606,607,600,610,613],{},[390,608,609],{},"Conditional logic",[302,611,612],{},"if\u002Felse"," branching without an extra LLM step",[317,615,616,600,619,622],{},[390,617,618],{},"Loops",[302,620,621],{},"for"," over data instead of repeating tool calls one by one",[317,624,625,600,628,631],{},[390,626,627],{},"Error handling",[302,629,630],{},"try\u002Fcatch"," to handle failures mid-workflow",[293,633,635],{"id":634},"setup","Setup",[459,637,639],{"id":638},"_1-install-secure-exec","1. Install secure-exec",[298,641,642,643,648],{},"Code Mode uses ",[359,644,647],{"href":645,"rel":646},"https:\u002F\u002Fgithub.com\u002Fnicolo-ribaudo\u002Fsecure-exec",[363],"secure-exec"," to run LLM-generated code in a secure V8 isolate:",[650,651,652,677,692,706],"code-group",{},[653,654,660],"pre",{"className":655,"code":656,"filename":657,"language":658,"meta":659,"style":659},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pnpm add secure-exec\n","pnpm","bash","",[302,661,662],{"__ignoreMap":659},[663,664,667,670,674],"span",{"class":665,"line":666},"line",1,[663,668,657],{"class":669},"sBMFI",[663,671,673],{"class":672},"sfazB"," add",[663,675,676],{"class":672}," secure-exec\n",[653,678,681],{"className":655,"code":679,"filename":680,"language":658,"meta":659,"style":659},"npm install secure-exec\n","npm",[302,682,683],{"__ignoreMap":659},[663,684,685,687,690],{"class":665,"line":666},[663,686,680],{"class":669},[663,688,689],{"class":672}," install",[663,691,676],{"class":672},[653,693,696],{"className":655,"code":694,"filename":695,"language":658,"meta":659,"style":659},"yarn add secure-exec\n","yarn",[302,697,698],{"__ignoreMap":659},[663,699,700,702,704],{"class":665,"line":666},[663,701,695],{"class":669},[663,703,673],{"class":672},[663,705,676],{"class":672},[653,707,710],{"className":655,"code":708,"filename":709,"language":658,"meta":659,"style":659},"bun add secure-exec\n","bun",[302,711,712],{"__ignoreMap":659},[663,713,714,716,718],{"class":665,"line":666},[663,715,709],{"class":669},[663,717,673],{"class":672},[663,719,676],{"class":672},[439,721,724,725,727,728,731,732,735],{"color":722,"icon":723},"info","i-lucide-info","Code Mode requires ",[302,726,647],{}," and Node.js ",[302,729,730],{},">=18.16.0",". The rest of the module still supports Node.js 18.x, but code mode depends on ",[302,733,734],{},"AsyncLocalStorage.snapshot()"," to preserve request context.",[459,737,739],{"id":738},"_2-enable-on-a-handler","2. Enable on a handler",[298,741,742,743,746],{},"Add ",[302,744,745],{},"experimental_codeMode"," to any handler:",[650,748,749,811],{},[653,750,755],{"className":751,"code":752,"filename":753,"language":754,"meta":659,"style":659},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F server\u002Fmcp\u002Findex.ts\nexport default defineMcpHandler({\n  experimental_codeMode: true,\n})\n","Default handler","typescript",[302,756,757,763,785,802],{"__ignoreMap":659},[663,758,759],{"class":665,"line":666},[663,760,762],{"class":761},"sHwdD","\u002F\u002F server\u002Fmcp\u002Findex.ts\n",[663,764,766,770,773,777,781],{"class":665,"line":765},2,[663,767,769],{"class":768},"s7zQu","export",[663,771,772],{"class":768}," default",[663,774,776],{"class":775},"s2Zo4"," defineMcpHandler",[663,778,780],{"class":779},"sTEyZ","(",[663,782,784],{"class":783},"sMK4o","{\n",[663,786,788,792,795,799],{"class":665,"line":787},3,[663,789,791],{"class":790},"swJcz","  experimental_codeMode",[663,793,794],{"class":783},":",[663,796,798],{"class":797},"sfNiH"," true",[663,800,801],{"class":783},",\n",[663,803,805,808],{"class":665,"line":804},4,[663,806,807],{"class":783},"}",[663,809,810],{"class":779},")\n",[653,812,815],{"className":751,"code":813,"filename":814,"language":754,"meta":659,"style":659},"\u002F\u002F server\u002Fmcp\u002Fai-agent.ts\nexport default defineMcpHandler({\n  name: 'ai-agent',\n  experimental_codeMode: true,\n  tools: [getUserTool, listTodosTool, createTodoTool],\n})\n","Custom handler",[302,816,817,822,834,852,862,886],{"__ignoreMap":659},[663,818,819],{"class":665,"line":666},[663,820,821],{"class":761},"\u002F\u002F server\u002Fmcp\u002Fai-agent.ts\n",[663,823,824,826,828,830,832],{"class":665,"line":765},[663,825,769],{"class":768},[663,827,772],{"class":768},[663,829,776],{"class":775},[663,831,780],{"class":779},[663,833,784],{"class":783},[663,835,836,839,841,844,847,850],{"class":665,"line":787},[663,837,838],{"class":790},"  name",[663,840,794],{"class":783},[663,842,843],{"class":783}," '",[663,845,846],{"class":672},"ai-agent",[663,848,849],{"class":783},"'",[663,851,801],{"class":783},[663,853,854,856,858,860],{"class":665,"line":804},[663,855,791],{"class":790},[663,857,794],{"class":783},[663,859,798],{"class":797},[663,861,801],{"class":783},[663,863,865,868,870,873,876,879,881,884],{"class":665,"line":864},5,[663,866,867],{"class":790},"  tools",[663,869,794],{"class":783},[663,871,872],{"class":779}," [getUserTool",[663,874,875],{"class":783},",",[663,877,878],{"class":779}," listTodosTool",[663,880,875],{"class":783},[663,882,883],{"class":779}," createTodoTool]",[663,885,801],{"class":783},[663,887,889,891],{"class":665,"line":888},6,[663,890,807],{"class":783},[663,892,810],{"class":779},[298,894,895,896,898],{},"That's it. The module replaces all your tools with a single ",[302,897,302],{}," tool that the LLM uses to orchestrate them.",[293,900,902],{"id":901},"how-it-works","How It Works",[298,904,905],{},"When Code Mode is enabled:",[907,908,909,912,918,925],"ol",{},[317,910,911],{},"All registered tools are converted to TypeScript type definitions",[317,913,914,915,917],{},"A ",[302,916,302],{}," tool is created with those types embedded in its description",[317,919,920,921,924],{},"The LLM writes JavaScript using a ",[302,922,923],{},"codemode"," object to call tools",[317,926,927],{},"The code runs in a V8 isolate with only RPC access to your tools",[459,929,931],{"id":930},"example-what-the-llm-generates","Example: what the LLM generates",[298,933,934,935,938,939,942,943,946],{},"Given tools ",[302,936,937],{},"get-user",", ",[302,940,941],{},"list-todos",", and ",[302,944,945],{},"create-todo",", the LLM receives type definitions and writes code like:",[650,948,949,1168,1341],{},[653,950,955],{"className":951,"code":952,"filename":953,"language":954,"meta":659,"style":659},"language-javascript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","const user = await codemode.get_user({ id: \"123\" });\nconst todos = await codemode.list_todos({ userId: user.id });\n\nif (todos.length === 0) {\n  await codemode.create_todo({\n    title: \"Welcome task\",\n    userId: user.id,\n  });\n}\n\nreturn { user, todos };\n","Sequential calls","javascript",[302,956,957,1008,1049,1055,1080,1096,1112,1129,1139,1145,1150],{"__ignoreMap":659},[663,958,959,963,966,969,972,975,977,980,982,985,988,990,993,996,999,1002,1005],{"class":665,"line":666},[663,960,962],{"class":961},"spNyl","const",[663,964,965],{"class":779}," user ",[663,967,968],{"class":783},"=",[663,970,971],{"class":768}," await",[663,973,974],{"class":779}," codemode",[663,976,572],{"class":783},[663,978,979],{"class":775},"get_user",[663,981,780],{"class":779},[663,983,984],{"class":783},"{",[663,986,987],{"class":790}," id",[663,989,794],{"class":783},[663,991,992],{"class":783}," \"",[663,994,995],{"class":672},"123",[663,997,998],{"class":783},"\"",[663,1000,1001],{"class":783}," }",[663,1003,1004],{"class":779},")",[663,1006,1007],{"class":783},";\n",[663,1009,1010,1012,1015,1017,1019,1021,1023,1026,1028,1030,1033,1035,1038,1040,1043,1045,1047],{"class":665,"line":765},[663,1011,962],{"class":961},[663,1013,1014],{"class":779}," todos ",[663,1016,968],{"class":783},[663,1018,971],{"class":768},[663,1020,974],{"class":779},[663,1022,572],{"class":783},[663,1024,1025],{"class":775},"list_todos",[663,1027,780],{"class":779},[663,1029,984],{"class":783},[663,1031,1032],{"class":790}," userId",[663,1034,794],{"class":783},[663,1036,1037],{"class":779}," user",[663,1039,572],{"class":783},[663,1041,1042],{"class":779},"id ",[663,1044,807],{"class":783},[663,1046,1004],{"class":779},[663,1048,1007],{"class":783},[663,1050,1051],{"class":665,"line":787},[663,1052,1054],{"emptyLinePlaceholder":1053},true,"\n",[663,1056,1057,1060,1063,1065,1068,1071,1075,1078],{"class":665,"line":804},[663,1058,1059],{"class":768},"if",[663,1061,1062],{"class":779}," (todos",[663,1064,572],{"class":783},[663,1066,1067],{"class":779},"length ",[663,1069,1070],{"class":783},"===",[663,1072,1074],{"class":1073},"sbssI"," 0",[663,1076,1077],{"class":779},") ",[663,1079,784],{"class":783},[663,1081,1082,1085,1087,1089,1092,1094],{"class":665,"line":864},[663,1083,1084],{"class":768},"  await",[663,1086,974],{"class":779},[663,1088,572],{"class":783},[663,1090,1091],{"class":775},"create_todo",[663,1093,780],{"class":790},[663,1095,784],{"class":783},[663,1097,1098,1101,1103,1105,1108,1110],{"class":665,"line":888},[663,1099,1100],{"class":790},"    title",[663,1102,794],{"class":783},[663,1104,992],{"class":783},[663,1106,1107],{"class":672},"Welcome task",[663,1109,998],{"class":783},[663,1111,801],{"class":783},[663,1113,1115,1118,1120,1122,1124,1127],{"class":665,"line":1114},7,[663,1116,1117],{"class":790},"    userId",[663,1119,794],{"class":783},[663,1121,1037],{"class":779},[663,1123,572],{"class":783},[663,1125,1126],{"class":779},"id",[663,1128,801],{"class":783},[663,1130,1132,1135,1137],{"class":665,"line":1131},8,[663,1133,1134],{"class":783},"  }",[663,1136,1004],{"class":790},[663,1138,1007],{"class":783},[663,1140,1142],{"class":665,"line":1141},9,[663,1143,1144],{"class":783},"}\n",[663,1146,1148],{"class":665,"line":1147},10,[663,1149,1054],{"emptyLinePlaceholder":1053},[663,1151,1153,1156,1159,1161,1163,1165],{"class":665,"line":1152},11,[663,1154,1155],{"class":768},"return",[663,1157,1158],{"class":783}," {",[663,1160,1037],{"class":779},[663,1162,875],{"class":783},[663,1164,1014],{"class":779},[663,1166,1167],{"class":783},"};\n",[653,1169,1172],{"className":951,"code":1170,"filename":1171,"language":954,"meta":659,"style":659},"const [users, products, orders] = await Promise.all([\n  codemode.list_users(),\n  codemode.list_products(),\n  codemode.list_orders({ status: \"pending\" }),\n]);\n\nreturn {\n  userCount: users.length,\n  productCount: products.length,\n  pendingOrders: orders.length,\n};\n","Parallel calls",[302,1173,1174,1213,1228,1241,1272,1279,1283,1290,1307,1322,1337],{"__ignoreMap":659},[663,1175,1176,1178,1181,1184,1186,1189,1191,1194,1197,1200,1202,1205,1207,1210],{"class":665,"line":666},[663,1177,962],{"class":961},[663,1179,1180],{"class":783}," [",[663,1182,1183],{"class":779},"users",[663,1185,875],{"class":783},[663,1187,1188],{"class":779}," products",[663,1190,875],{"class":783},[663,1192,1193],{"class":779}," orders",[663,1195,1196],{"class":783},"]",[663,1198,1199],{"class":783}," =",[663,1201,971],{"class":768},[663,1203,1204],{"class":669}," Promise",[663,1206,572],{"class":783},[663,1208,1209],{"class":775},"all",[663,1211,1212],{"class":779},"([\n",[663,1214,1215,1218,1220,1223,1226],{"class":665,"line":765},[663,1216,1217],{"class":779},"  codemode",[663,1219,572],{"class":783},[663,1221,1222],{"class":775},"list_users",[663,1224,1225],{"class":779},"()",[663,1227,801],{"class":783},[663,1229,1230,1232,1234,1237,1239],{"class":665,"line":787},[663,1231,1217],{"class":779},[663,1233,572],{"class":783},[663,1235,1236],{"class":775},"list_products",[663,1238,1225],{"class":779},[663,1240,801],{"class":783},[663,1242,1243,1245,1247,1250,1252,1254,1257,1259,1261,1264,1266,1268,1270],{"class":665,"line":804},[663,1244,1217],{"class":779},[663,1246,572],{"class":783},[663,1248,1249],{"class":775},"list_orders",[663,1251,780],{"class":779},[663,1253,984],{"class":783},[663,1255,1256],{"class":790}," status",[663,1258,794],{"class":783},[663,1260,992],{"class":783},[663,1262,1263],{"class":672},"pending",[663,1265,998],{"class":783},[663,1267,1001],{"class":783},[663,1269,1004],{"class":779},[663,1271,801],{"class":783},[663,1273,1274,1277],{"class":665,"line":864},[663,1275,1276],{"class":779},"])",[663,1278,1007],{"class":783},[663,1280,1281],{"class":665,"line":888},[663,1282,1054],{"emptyLinePlaceholder":1053},[663,1284,1285,1287],{"class":665,"line":1114},[663,1286,1155],{"class":768},[663,1288,1289],{"class":783}," {\n",[663,1291,1292,1295,1297,1300,1302,1305],{"class":665,"line":1131},[663,1293,1294],{"class":790},"  userCount",[663,1296,794],{"class":783},[663,1298,1299],{"class":779}," users",[663,1301,572],{"class":783},[663,1303,1304],{"class":779},"length",[663,1306,801],{"class":783},[663,1308,1309,1312,1314,1316,1318,1320],{"class":665,"line":1141},[663,1310,1311],{"class":790},"  productCount",[663,1313,794],{"class":783},[663,1315,1188],{"class":779},[663,1317,572],{"class":783},[663,1319,1304],{"class":779},[663,1321,801],{"class":783},[663,1323,1324,1327,1329,1331,1333,1335],{"class":665,"line":1147},[663,1325,1326],{"class":790},"  pendingOrders",[663,1328,794],{"class":783},[663,1330,1193],{"class":779},[663,1332,572],{"class":783},[663,1334,1304],{"class":779},[663,1336,801],{"class":783},[663,1338,1339],{"class":665,"line":1152},[663,1340,1167],{"class":783},[653,1342,1345],{"className":951,"code":1343,"filename":1344,"language":954,"meta":659,"style":659},"const users = await codemode.list_users();\nconst results = [];\n\nfor (const user of users) {\n  const todos = await codemode.list_todos({ userId: user.id });\n  if (todos.some(t => t.overdue)) {\n    await codemode.send_reminder({ userId: user.id });\n    results.push(user.name);\n  }\n}\n\nreturn { reminded: results };\n","Loop + conditional",[302,1346,1347,1368,1382,1386,1405,1443,1480,1512,1536,1541,1545,1549],{"__ignoreMap":659},[663,1348,1349,1351,1354,1356,1358,1360,1362,1364,1366],{"class":665,"line":666},[663,1350,962],{"class":961},[663,1352,1353],{"class":779}," users ",[663,1355,968],{"class":783},[663,1357,971],{"class":768},[663,1359,974],{"class":779},[663,1361,572],{"class":783},[663,1363,1222],{"class":775},[663,1365,1225],{"class":779},[663,1367,1007],{"class":783},[663,1369,1370,1372,1375,1377,1380],{"class":665,"line":765},[663,1371,962],{"class":961},[663,1373,1374],{"class":779}," results ",[663,1376,968],{"class":783},[663,1378,1379],{"class":779}," []",[663,1381,1007],{"class":783},[663,1383,1384],{"class":665,"line":787},[663,1385,1054],{"emptyLinePlaceholder":1053},[663,1387,1388,1390,1393,1395,1397,1400,1403],{"class":665,"line":804},[663,1389,621],{"class":768},[663,1391,1392],{"class":779}," (",[663,1394,962],{"class":961},[663,1396,965],{"class":779},[663,1398,1399],{"class":783},"of",[663,1401,1402],{"class":779}," users) ",[663,1404,784],{"class":783},[663,1406,1407,1410,1413,1415,1417,1419,1421,1423,1425,1427,1429,1431,1433,1435,1437,1439,1441],{"class":665,"line":864},[663,1408,1409],{"class":961},"  const",[663,1411,1412],{"class":779}," todos",[663,1414,1199],{"class":783},[663,1416,971],{"class":768},[663,1418,974],{"class":779},[663,1420,572],{"class":783},[663,1422,1025],{"class":775},[663,1424,780],{"class":790},[663,1426,984],{"class":783},[663,1428,1032],{"class":790},[663,1430,794],{"class":783},[663,1432,1037],{"class":779},[663,1434,572],{"class":783},[663,1436,1126],{"class":779},[663,1438,1001],{"class":783},[663,1440,1004],{"class":790},[663,1442,1007],{"class":783},[663,1444,1445,1448,1450,1453,1455,1458,1460,1464,1467,1470,1472,1475,1478],{"class":665,"line":888},[663,1446,1447],{"class":768},"  if",[663,1449,1392],{"class":790},[663,1451,1452],{"class":779},"todos",[663,1454,572],{"class":783},[663,1456,1457],{"class":775},"some",[663,1459,780],{"class":790},[663,1461,1463],{"class":1462},"sHdIc","t",[663,1465,1466],{"class":961}," =>",[663,1468,1469],{"class":779}," t",[663,1471,572],{"class":783},[663,1473,1474],{"class":779},"overdue",[663,1476,1477],{"class":790},")) ",[663,1479,784],{"class":783},[663,1481,1482,1485,1487,1489,1492,1494,1496,1498,1500,1502,1504,1506,1508,1510],{"class":665,"line":1114},[663,1483,1484],{"class":768},"    await",[663,1486,974],{"class":779},[663,1488,572],{"class":783},[663,1490,1491],{"class":775},"send_reminder",[663,1493,780],{"class":790},[663,1495,984],{"class":783},[663,1497,1032],{"class":790},[663,1499,794],{"class":783},[663,1501,1037],{"class":779},[663,1503,572],{"class":783},[663,1505,1126],{"class":779},[663,1507,1001],{"class":783},[663,1509,1004],{"class":790},[663,1511,1007],{"class":783},[663,1513,1514,1517,1519,1522,1524,1527,1529,1532,1534],{"class":665,"line":1131},[663,1515,1516],{"class":779},"    results",[663,1518,572],{"class":783},[663,1520,1521],{"class":775},"push",[663,1523,780],{"class":790},[663,1525,1526],{"class":779},"user",[663,1528,572],{"class":783},[663,1530,1531],{"class":779},"name",[663,1533,1004],{"class":790},[663,1535,1007],{"class":783},[663,1537,1538],{"class":665,"line":1141},[663,1539,1540],{"class":783},"  }\n",[663,1542,1543],{"class":665,"line":1147},[663,1544,1144],{"class":783},[663,1546,1547],{"class":665,"line":1152},[663,1548,1054],{"emptyLinePlaceholder":1053},[663,1550,1552,1554,1556,1559,1561,1563],{"class":665,"line":1551},12,[663,1553,1155],{"class":768},[663,1555,1158],{"class":783},[663,1557,1558],{"class":790}," reminded",[663,1560,794],{"class":783},[663,1562,1374],{"class":779},[663,1564,1167],{"class":783},[293,1566,1568],{"id":1567},"configuration-options","Configuration Options",[298,1570,1571,1572,1575],{},"Pass an options object instead of ",[302,1573,1574],{},"true"," for fine-grained control:",[653,1577,1580],{"className":751,"code":1578,"filename":1579,"language":754,"meta":659,"style":659},"export default defineMcpHandler({\n  experimental_codeMode: {\n    memoryLimit: 64,\n    cpuTimeLimitMs: 10_000,\n    maxResultSize: 102_400,\n    maxRequestBodyBytes: 1_048_576,\n    maxToolResponseSize: 1_048_576,\n    wallTimeLimitMs: 60_000,\n    maxToolCalls: 200,\n    progressive: false,\n    description: undefined,\n  },\n})\n","server\u002Fmcp\u002Findex.ts",[302,1581,1582,1594,1602,1614,1626,1638,1650,1661,1673,1685,1697,1707,1712],{"__ignoreMap":659},[663,1583,1584,1586,1588,1590,1592],{"class":665,"line":666},[663,1585,769],{"class":768},[663,1587,772],{"class":768},[663,1589,776],{"class":775},[663,1591,780],{"class":779},[663,1593,784],{"class":783},[663,1595,1596,1598,1600],{"class":665,"line":765},[663,1597,791],{"class":790},[663,1599,794],{"class":783},[663,1601,1289],{"class":783},[663,1603,1604,1607,1609,1612],{"class":665,"line":787},[663,1605,1606],{"class":790},"    memoryLimit",[663,1608,794],{"class":783},[663,1610,1611],{"class":1073}," 64",[663,1613,801],{"class":783},[663,1615,1616,1619,1621,1624],{"class":665,"line":804},[663,1617,1618],{"class":790},"    cpuTimeLimitMs",[663,1620,794],{"class":783},[663,1622,1623],{"class":1073}," 10_000",[663,1625,801],{"class":783},[663,1627,1628,1631,1633,1636],{"class":665,"line":864},[663,1629,1630],{"class":790},"    maxResultSize",[663,1632,794],{"class":783},[663,1634,1635],{"class":1073}," 102_400",[663,1637,801],{"class":783},[663,1639,1640,1643,1645,1648],{"class":665,"line":888},[663,1641,1642],{"class":790},"    maxRequestBodyBytes",[663,1644,794],{"class":783},[663,1646,1647],{"class":1073}," 1_048_576",[663,1649,801],{"class":783},[663,1651,1652,1655,1657,1659],{"class":665,"line":1114},[663,1653,1654],{"class":790},"    maxToolResponseSize",[663,1656,794],{"class":783},[663,1658,1647],{"class":1073},[663,1660,801],{"class":783},[663,1662,1663,1666,1668,1671],{"class":665,"line":1131},[663,1664,1665],{"class":790},"    wallTimeLimitMs",[663,1667,794],{"class":783},[663,1669,1670],{"class":1073}," 60_000",[663,1672,801],{"class":783},[663,1674,1675,1678,1680,1683],{"class":665,"line":1141},[663,1676,1677],{"class":790},"    maxToolCalls",[663,1679,794],{"class":783},[663,1681,1682],{"class":1073}," 200",[663,1684,801],{"class":783},[663,1686,1687,1690,1692,1695],{"class":665,"line":1147},[663,1688,1689],{"class":790},"    progressive",[663,1691,794],{"class":783},[663,1693,1694],{"class":797}," false",[663,1696,801],{"class":783},[663,1698,1699,1702,1704],{"class":665,"line":1152},[663,1700,1701],{"class":790},"    description",[663,1703,794],{"class":783},[663,1705,1706],{"class":783}," undefined,\n",[663,1708,1709],{"class":665,"line":1551},[663,1710,1711],{"class":783},"  },\n",[663,1713,1715,1717],{"class":665,"line":1714},13,[663,1716,807],{"class":783},[663,1718,810],{"class":779},[1720,1721,1722,1740,1751,1763,1785,1797,1815,1826,1843],"field-group",{},[1723,1724,1727,1733],"field",{"name":1725,"type":1726},"memoryLimit","number",[298,1728,1729,1730],{},"Default: ",[302,1731,1732],{},"64",[298,1734,1735,1736,1739],{},"V8 isolate memory limit in MB. Set once at first execution — call ",[302,1737,1738],{},"disposeCodeMode()"," to change.",[1723,1741,1743,1748],{"name":1742,"type":1726},"cpuTimeLimitMs",[298,1744,1729,1745],{},[302,1746,1747],{},"10000",[298,1749,1750],{},"CPU time limit per execution in milliseconds. The sandbox is killed after this duration.",[1723,1752,1754,1760],{"name":1753,"type":1726},"maxResultSize",[298,1755,1729,1756,1759],{},[302,1757,1758],{},"102400"," (100 KB)",[298,1761,1762],{},"Maximum result size in bytes before truncation. Large results are intelligently truncated — arrays by number of items, objects by number of keys.",[1723,1764,1766,1772],{"name":1765,"type":1726},"maxRequestBodyBytes",[298,1767,1729,1768,1771],{},[302,1769,1770],{},"1048576"," (1 MB)",[298,1773,1774,1775,1777,1778,1781,1782,1784],{},"Maximum bytes accepted in a single RPC request body from the sandbox. Returns HTTP 413 if exceeded. Prevents memory exhaustion from oversized payloads. Like ",[302,1776,1725],{},", this applies when the RPC server ",[390,1779,1780],{},"first"," starts; call ",[302,1783,1738],{}," before changing it.",[1723,1786,1788,1792],{"name":1787,"type":1726},"maxToolResponseSize",[298,1789,1729,1790,1771],{},[302,1791,1770],{},[298,1793,1794,1795,572],{},"Maximum bytes for individual tool RPC responses. Large results are truncated using the same strategy as ",[302,1796,1753],{},[1723,1798,1800,1806],{"name":1799,"type":1726},"wallTimeLimitMs",[298,1801,1729,1802,1805],{},[302,1803,1804],{},"60000"," (60 seconds)",[298,1807,1808,1809,1812,1813,572],{},"Per-execution deadline checked at the ",[390,1810,1811],{},"start of each"," sandbox→host RPC call (tool invocation or return value). After the deadline, the next RPC receives HTTP 408. This bounds host-side work (e.g. slow tools); pure CPU loops in the isolate are primarily limited by ",[302,1814,1742],{},[1723,1816,1818,1823],{"name":1817,"type":1726},"maxToolCalls",[298,1819,1729,1820],{},[302,1821,1822],{},"200",[298,1824,1825],{},"Maximum number of tool RPC calls per execution. Prevents runaway loops that repeatedly invoke expensive tools. Returns HTTP 429 when exceeded.",[1723,1827,1830,1835],{"name":1828,"type":1829},"progressive","boolean",[298,1831,1729,1832],{},[302,1833,1834],{},"false",[298,1836,1837,1838,1842],{},"Enable progressive disclosure mode. See ",[359,1839,1841],{"href":1840},"#progressive-mode","Progressive Mode"," below.",[1723,1844,1847,1850],{"name":1845,"type":1846},"description","string",[298,1848,1849],{},"Default: built-in template",[298,1851,1852,1853,1855,1856,1859,1860,1863],{},"Custom description for the ",[302,1854,302],{}," tool. Supports ",[302,1857,1858],{},"{{types}}"," and ",[302,1861,1862],{},"{{count}}"," placeholders.",[293,1865,1841],{"id":1866},"progressive-mode",[298,1868,1869,1870,1872],{},"When your server exposes many tools (50+), embedding all type definitions in the ",[302,1871,302],{}," tool description becomes expensive in tokens. Progressive mode solves this by splitting into two tools:",[907,1874,1875,1883],{},[317,1876,1877,1882],{},[390,1878,1879],{},[302,1880,1881],{},"search"," — discovers tools by keyword, returns their signatures",[317,1884,1885,1889],{},[390,1886,1887],{},[302,1888,302],{}," — executes code using discovered tools",[653,1891,1893],{"className":751,"code":1892,"filename":1579,"language":754,"meta":659,"style":659},"export default defineMcpHandler({\n  experimental_codeMode: {\n    progressive: true,\n  },\n})\n",[302,1894,1895,1907,1915,1925,1929],{"__ignoreMap":659},[663,1896,1897,1899,1901,1903,1905],{"class":665,"line":666},[663,1898,769],{"class":768},[663,1900,772],{"class":768},[663,1902,776],{"class":775},[663,1904,780],{"class":779},[663,1906,784],{"class":783},[663,1908,1909,1911,1913],{"class":665,"line":765},[663,1910,791],{"class":790},[663,1912,794],{"class":783},[663,1914,1289],{"class":783},[663,1916,1917,1919,1921,1923],{"class":665,"line":787},[663,1918,1689],{"class":790},[663,1920,794],{"class":783},[663,1922,798],{"class":797},[663,1924,801],{"class":783},[663,1926,1927],{"class":665,"line":804},[663,1928,1711],{"class":783},[663,1930,1931,1933],{"class":665,"line":864},[663,1932,807],{"class":783},[663,1934,810],{"class":779},[298,1936,1937],{},"The LLM workflow becomes:",[650,1939,1940,1972],{},[653,1941,1946],{"className":1942,"code":1943,"filename":1944,"language":1945,"meta":659,"style":659},"language-txt shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","LLM calls: search({ query: \"user\" })\n\n→ Found 2\u002F12 tools matching \"user\":\n  codemode.get_user: (input: { id: string }) => Promise\u003Cunknown>; \u002F\u002F Get user by ID\n  codemode.list_users: () => Promise\u003Cunknown>; \u002F\u002F List all users\n","Step 1 — Search","txt",[302,1947,1948,1953,1957,1962,1967],{"__ignoreMap":659},[663,1949,1950],{"class":665,"line":666},[663,1951,1952],{},"LLM calls: search({ query: \"user\" })\n",[663,1954,1955],{"class":665,"line":765},[663,1956,1054],{"emptyLinePlaceholder":1053},[663,1958,1959],{"class":665,"line":787},[663,1960,1961],{},"→ Found 2\u002F12 tools matching \"user\":\n",[663,1963,1964],{"class":665,"line":804},[663,1965,1966],{},"  codemode.get_user: (input: { id: string }) => Promise\u003Cunknown>; \u002F\u002F Get user by ID\n",[663,1968,1969],{"class":665,"line":864},[663,1970,1971],{},"  codemode.list_users: () => Promise\u003Cunknown>; \u002F\u002F List all users\n",[653,1973,1976],{"className":1942,"code":1974,"filename":1975,"language":1945,"meta":659,"style":659},"LLM calls: code({ code: \"...\" })\n\n→ Executes code using the discovered tools\n","Step 2 — Execute",[302,1977,1978,1983,1987],{"__ignoreMap":659},[663,1979,1980],{"class":665,"line":666},[663,1981,1982],{},"LLM calls: code({ code: \"...\" })\n",[663,1984,1985],{"class":665,"line":765},[663,1986,1054],{"emptyLinePlaceholder":1053},[663,1988,1989],{"class":665,"line":787},[663,1990,1991],{},"→ Executes code using the discovered tools\n",[439,1993,1994],{"color":722,"icon":723},"Progressive mode adds an extra tool call but significantly reduces the initial prompt size. Only use it when you have a large number of tools — for small toolsets, standard mode is more efficient.",[293,1996,1998],{"id":1997},"custom-description","Custom Description",[298,2000,2001,2002,2004],{},"Override the ",[302,2003,302],{}," tool description to customize LLM instructions:",[653,2006,2008],{"className":751,"code":2007,"filename":1579,"language":754,"meta":659,"style":659},"export default defineMcpHandler({\n  experimental_codeMode: {\n    description: `You have {{count}} tools available. Write JavaScript using the codemode object.\n\n{{types}}\n\nAlways combine related operations into a single code block.`,\n  },\n})\n",[302,2009,2010,2022,2030,2042,2046,2051,2055,2065,2069],{"__ignoreMap":659},[663,2011,2012,2014,2016,2018,2020],{"class":665,"line":666},[663,2013,769],{"class":768},[663,2015,772],{"class":768},[663,2017,776],{"class":775},[663,2019,780],{"class":779},[663,2021,784],{"class":783},[663,2023,2024,2026,2028],{"class":665,"line":765},[663,2025,791],{"class":790},[663,2027,794],{"class":783},[663,2029,1289],{"class":783},[663,2031,2032,2034,2036,2039],{"class":665,"line":787},[663,2033,1701],{"class":790},[663,2035,794],{"class":783},[663,2037,2038],{"class":783}," `",[663,2040,2041],{"class":672},"You have {{count}} tools available. Write JavaScript using the codemode object.\n",[663,2043,2044],{"class":665,"line":804},[663,2045,1054],{"emptyLinePlaceholder":1053},[663,2047,2048],{"class":665,"line":864},[663,2049,2050],{"class":672},"{{types}}\n",[663,2052,2053],{"class":665,"line":888},[663,2054,1054],{"emptyLinePlaceholder":1053},[663,2056,2057,2060,2063],{"class":665,"line":1114},[663,2058,2059],{"class":672},"Always combine related operations into a single code block.",[663,2061,2062],{"class":783},"`",[663,2064,801],{"class":783},[663,2066,2067],{"class":665,"line":1131},[663,2068,1711],{"class":783},[663,2070,2071,2073],{"class":665,"line":1141},[663,2072,807],{"class":783},[663,2074,810],{"class":779},[298,2076,2077,2078,2080,2081,2083],{},"The ",[302,2079,1858],{}," placeholder is replaced with the generated TypeScript definitions. The ",[302,2082,1862],{}," placeholder is replaced with the number of available tools.",[298,2085,2086,2087,2089,2090,2092],{},"In progressive mode, ",[302,2088,1858],{}," is not available since types are discovered via the ",[302,2091,1881],{}," tool.",[293,2094,2096],{"id":2095},"security","Security",[298,2098,2099,2100,2103],{},"Running LLM-generated code requires serious security measures. Code Mode implements ",[390,2101,2102],{},"defense in depth"," across 7 layers to ensure the sandbox cannot escape, access unauthorized resources, or exhaust host resources.",[459,2105,2107],{"id":2106},"sandbox-isolation","Sandbox Isolation",[298,2109,2110,2111,2116,2117,2119],{},"LLM-generated code runs in a separate ",[359,2112,2115],{"href":2113,"rel":2114},"https:\u002F\u002Fv8.dev\u002Fdocs\u002Fembed",[363],"V8 isolate"," via ",[302,2118,647],{},". This is the same isolation technology used by Cloudflare Workers and similar platforms. The sandbox has:",[314,2121,2122,2128,2150,2156],{},[317,2123,2124,2127],{},[390,2125,2126],{},"No filesystem access"," — cannot read, write, or list files",[317,2129,2130,2133,2134,938,2137,938,2140,938,2143,938,2146,2149],{},[390,2131,2132],{},"No Node.js APIs"," — no ",[302,2135,2136],{},"require()",[302,2138,2139],{},"import()",[302,2141,2142],{},"process",[302,2144,2145],{},"fs",[302,2147,2148],{},"child_process",", etc.",[317,2151,2152,2155],{},[390,2153,2154],{},"No environment variables"," — cannot read secrets or configuration",[317,2157,2158,2161],{},[390,2159,2160],{},"No host process access"," — cannot modify the parent process in any way",[459,2163,2165],{"id":2164},"network-restrictions","Network Restrictions",[298,2167,2168],{},"The sandbox can only communicate with the internal RPC server. All other network access is blocked:",[314,2170,2171,2177,2190,2196],{},[317,2172,2173,2176],{},[390,2174,2175],{},"Port-locked"," — Only the randomly-assigned RPC port is accessible. Other localhost services (databases, admin panels, other apps) are blocked.",[317,2178,2179,2182,2183,1859,2186,2189],{},[390,2180,2181],{},"Host-locked"," — Only ",[302,2184,2185],{},"127.0.0.1",[302,2187,2188],{},"localhost"," are allowed. External hosts are rejected.",[317,2191,2192,2195],{},[390,2193,2194],{},"No DNS"," — DNS resolution is disabled entirely.",[317,2197,2198,2201,2202,2205],{},[390,2199,2200],{},"No redirects"," — HTTP redirects are rejected (",[302,2203,2204],{},"redirect: 'error'","), preventing SSRF via open redirects.",[459,2207,2209],{"id":2208},"rpc-authentication","RPC Authentication",[298,2211,2212],{},"Communication between the sandbox and the host uses a per-session cryptographic token:",[314,2214,2215,2225,2235],{},[317,2216,2217,2220,2221,2224],{},[390,2218,2219],{},"256-bit token"," — Generated with ",[302,2222,2223],{},"crypto.randomBytes(32)"," at RPC server startup.",[317,2226,2227,2230,2231,2234],{},[390,2228,2229],{},"Header-based auth"," — Every request must include the token via ",[302,2232,2233],{},"x-rpc-token"," header.",[317,2236,2237,2240],{},[390,2238,2239],{},"403 on mismatch"," — Requests without a valid token are rejected immediately.",[298,2242,2243],{},"This prevents other local processes from calling your MCP tools through the RPC port.",[459,2245,2247],{"id":2246},"resource-limits","Resource Limits",[365,2249,2250,2266],{},[368,2251,2252],{},[371,2253,2254,2257,2260,2263],{},[374,2255,2256],{},"Resource",[374,2258,2259],{},"Default",[374,2261,2262],{},"Configurable",[374,2264,2265],{},"Protection",[382,2267,2268,2285,2302,2319,2336,2353,2369,2385],{},[371,2269,2270,2275,2278,2282],{},[387,2271,2272],{},[390,2273,2274],{},"CPU time",[387,2276,2277],{},"10 seconds",[387,2279,2280],{},[302,2281,1742],{},[387,2283,2284],{},"Sandbox is killed on timeout — prevents infinite loops",[371,2286,2287,2292,2295,2299],{},[387,2288,2289],{},[390,2290,2291],{},"Wall-clock deadline",[387,2293,2294],{},"60 seconds",[387,2296,2297],{},[302,2298,1799],{},[387,2300,2301],{},"Enforced on each RPC from the sandbox — stops further tool\u002Freturn RPCs after the deadline",[371,2303,2304,2309,2312,2316],{},[387,2305,2306],{},[390,2307,2308],{},"Memory",[387,2310,2311],{},"64 MB",[387,2313,2314],{},[302,2315,1725],{},[387,2317,2318],{},"V8 isolate hard limit — prevents OOM crashes",[371,2320,2321,2326,2329,2333],{},[387,2322,2323],{},[390,2324,2325],{},"Result size",[387,2327,2328],{},"100 KB",[387,2330,2331],{},[302,2332,1753],{},[387,2334,2335],{},"Intelligent truncation (arrays by items, objects by keys)",[371,2337,2338,2343,2346,2350],{},[387,2339,2340],{},[390,2341,2342],{},"Tool response size",[387,2344,2345],{},"1 MB",[387,2347,2348],{},[302,2349,1787],{},[387,2351,2352],{},"Per-call truncation before response delivery",[371,2354,2355,2360,2362,2366],{},[387,2356,2357],{},[390,2358,2359],{},"Request body size",[387,2361,2345],{},[387,2363,2364],{},[302,2365,1765],{},[387,2367,2368],{},"HTTP 413 early rejection — prevents memory exhaustion",[371,2370,2371,2376,2378,2382],{},[387,2372,2373],{},[390,2374,2375],{},"Tool calls per execution",[387,2377,1822],{},[387,2379,2380],{},[302,2381,1817],{},[387,2383,2384],{},"HTTP 429 rate limit — prevents runaway loops",[371,2386,2387,2392,2394,2397],{},[387,2388,2389],{},[390,2390,2391],{},"Log entries",[387,2393,1822],{},[387,2395,2396],{},"No",[387,2398,2399,2400,2403],{},"Console output capped — prevents ",[302,2401,2402],{},"console.log"," flooding",[459,2405,2407],{"id":2406},"input-validation","Input Validation",[298,2409,2410],{},"Tool names are interpolated into the sandbox code template. To prevent code injection:",[314,2412,2413,2423,2435],{},[317,2414,2415,2418,2419,2422],{},[390,2416,2417],{},"Strict identifier regex"," — Every tool name is validated against ",[302,2420,2421],{},"\u002F^[\\w$]+$\u002F"," before being injected into the sandbox template.",[317,2424,2425,2428,2429,2431,2432,2434],{},[390,2426,2427],{},"Sanitization"," — Names are sanitized upstream (",[302,2430,937],{}," → ",[302,2433,979],{},"), but a second validation layer at the template level ensures defense in depth.",[317,2436,2437,2440],{},[390,2438,2439],{},"Rejection"," — If a name fails validation, the execution throws immediately — no partial injection.",[459,2442,2444],{"id":2443},"error-sanitization","Error Sanitization",[298,2446,2447,2448,2451],{},"Infrastructure errors (file paths, stack traces) are sanitized before being returned to the sandbox or the MCP client. Full error details are logged server-side with the ",[302,2449,2450],{},"[nuxt-mcp-toolkit]"," prefix for debugging.",[459,2453,2455],{"id":2454},"summary","Summary",[439,2457,2458,2459,2462],{"color":722,"icon":64},"The sandbox can ",[390,2460,2461],{},"only"," communicate with your registered MCP tools via the authenticated RPC bridge. It cannot access the filesystem, network, environment, or any other host resources.",[293,2464,2466],{"id":2465},"usage-with-other-features","Usage with Other Features",[298,2468,2469],{},"Code Mode is fully compatible with other module features. Your tools remain unchanged — only the way they are exposed to the LLM changes.",[650,2471,2472,2608,2769],{},[653,2473,2476],{"className":751,"code":2474,"filename":2475,"language":754,"meta":659,"style":659},"\u002F\u002F server\u002Fmcp\u002Findex.ts\nexport default defineMcpHandler({\n  experimental_codeMode: true,\n  middleware: async (event) => {\n    const user = await getUser(event).catch(() => null)\n    if (user) event.context.user = user\n    \u002F\u002F Soft auth — see \u002Fadvanced\u002Fmiddleware. Use `enabled` guards to\n    \u002F\u002F hide tools from anonymous callers instead of throwing 401 here.\n  },\n})\n","With Middleware",[302,2477,2478,2482,2494,2504,2525,2561,2588,2593,2598,2602],{"__ignoreMap":659},[663,2479,2480],{"class":665,"line":666},[663,2481,762],{"class":761},[663,2483,2484,2486,2488,2490,2492],{"class":665,"line":765},[663,2485,769],{"class":768},[663,2487,772],{"class":768},[663,2489,776],{"class":775},[663,2491,780],{"class":779},[663,2493,784],{"class":783},[663,2495,2496,2498,2500,2502],{"class":665,"line":787},[663,2497,791],{"class":790},[663,2499,794],{"class":783},[663,2501,798],{"class":797},[663,2503,801],{"class":783},[663,2505,2506,2509,2511,2514,2516,2519,2521,2523],{"class":665,"line":804},[663,2507,2508],{"class":775},"  middleware",[663,2510,794],{"class":783},[663,2512,2513],{"class":961}," async",[663,2515,1392],{"class":783},[663,2517,2518],{"class":1462},"event",[663,2520,1004],{"class":783},[663,2522,1466],{"class":961},[663,2524,1289],{"class":783},[663,2526,2527,2530,2532,2534,2536,2539,2541,2543,2545,2547,2550,2552,2554,2556,2559],{"class":665,"line":864},[663,2528,2529],{"class":961},"    const",[663,2531,1037],{"class":779},[663,2533,1199],{"class":783},[663,2535,971],{"class":768},[663,2537,2538],{"class":775}," getUser",[663,2540,780],{"class":790},[663,2542,2518],{"class":779},[663,2544,1004],{"class":790},[663,2546,572],{"class":783},[663,2548,2549],{"class":775},"catch",[663,2551,780],{"class":790},[663,2553,1225],{"class":783},[663,2555,1466],{"class":961},[663,2557,2558],{"class":783}," null",[663,2560,810],{"class":790},[663,2562,2563,2566,2568,2570,2572,2574,2576,2579,2581,2583,2585],{"class":665,"line":888},[663,2564,2565],{"class":768},"    if",[663,2567,1392],{"class":790},[663,2569,1526],{"class":779},[663,2571,1077],{"class":790},[663,2573,2518],{"class":779},[663,2575,572],{"class":783},[663,2577,2578],{"class":779},"context",[663,2580,572],{"class":783},[663,2582,1526],{"class":779},[663,2584,1199],{"class":783},[663,2586,2587],{"class":779}," user\n",[663,2589,2590],{"class":665,"line":1114},[663,2591,2592],{"class":761},"    \u002F\u002F Soft auth — see \u002Fadvanced\u002Fmiddleware. Use `enabled` guards to\n",[663,2594,2595],{"class":665,"line":1131},[663,2596,2597],{"class":761},"    \u002F\u002F hide tools from anonymous callers instead of throwing 401 here.\n",[663,2599,2600],{"class":665,"line":1141},[663,2601,1711],{"class":783},[663,2603,2604,2606],{"class":665,"line":1147},[663,2605,807],{"class":783},[663,2607,810],{"class":779},[653,2609,2612],{"className":751,"code":2610,"filename":2611,"language":754,"meta":659,"style":659},"\u002F\u002F server\u002Fmcp\u002Ftools\u002Fadmin-tool.ts\nexport default defineMcpTool({\n  name: 'admin-delete',\n  description: 'Delete a resource (admin only)',\n  enabled: event => event.context.user?.role === 'admin',\n  inputSchema: {\n    id: z.string(),\n  },\n  handler: async ({ id }) => {\n    \u002F\u002F Only visible in code mode when user is admin\n  },\n})\n","With Dynamic Definitions",[302,2613,2614,2619,2632,2647,2663,2702,2711,2729,2733,2754,2759,2763],{"__ignoreMap":659},[663,2615,2616],{"class":665,"line":666},[663,2617,2618],{"class":761},"\u002F\u002F server\u002Fmcp\u002Ftools\u002Fadmin-tool.ts\n",[663,2620,2621,2623,2625,2628,2630],{"class":665,"line":765},[663,2622,769],{"class":768},[663,2624,772],{"class":768},[663,2626,2627],{"class":775}," defineMcpTool",[663,2629,780],{"class":779},[663,2631,784],{"class":783},[663,2633,2634,2636,2638,2640,2643,2645],{"class":665,"line":787},[663,2635,838],{"class":790},[663,2637,794],{"class":783},[663,2639,843],{"class":783},[663,2641,2642],{"class":672},"admin-delete",[663,2644,849],{"class":783},[663,2646,801],{"class":783},[663,2648,2649,2652,2654,2656,2659,2661],{"class":665,"line":804},[663,2650,2651],{"class":790},"  description",[663,2653,794],{"class":783},[663,2655,843],{"class":783},[663,2657,2658],{"class":672},"Delete a resource (admin only)",[663,2660,849],{"class":783},[663,2662,801],{"class":783},[663,2664,2665,2668,2670,2673,2675,2677,2679,2681,2683,2685,2688,2691,2693,2695,2698,2700],{"class":665,"line":864},[663,2666,2667],{"class":775},"  enabled",[663,2669,794],{"class":783},[663,2671,2672],{"class":1462}," event",[663,2674,1466],{"class":961},[663,2676,2672],{"class":779},[663,2678,572],{"class":783},[663,2680,2578],{"class":779},[663,2682,572],{"class":783},[663,2684,1526],{"class":779},[663,2686,2687],{"class":783},"?.",[663,2689,2690],{"class":779},"role ",[663,2692,1070],{"class":783},[663,2694,843],{"class":783},[663,2696,2697],{"class":672},"admin",[663,2699,849],{"class":783},[663,2701,801],{"class":783},[663,2703,2704,2707,2709],{"class":665,"line":888},[663,2705,2706],{"class":790},"  inputSchema",[663,2708,794],{"class":783},[663,2710,1289],{"class":783},[663,2712,2713,2716,2718,2721,2723,2725,2727],{"class":665,"line":1114},[663,2714,2715],{"class":790},"    id",[663,2717,794],{"class":783},[663,2719,2720],{"class":779}," z",[663,2722,572],{"class":783},[663,2724,1846],{"class":775},[663,2726,1225],{"class":779},[663,2728,801],{"class":783},[663,2730,2731],{"class":665,"line":1131},[663,2732,1711],{"class":783},[663,2734,2735,2738,2740,2742,2745,2747,2750,2752],{"class":665,"line":1141},[663,2736,2737],{"class":775},"  handler",[663,2739,794],{"class":783},[663,2741,2513],{"class":961},[663,2743,2744],{"class":783}," ({",[663,2746,987],{"class":1462},[663,2748,2749],{"class":783}," })",[663,2751,1466],{"class":961},[663,2753,1289],{"class":783},[663,2755,2756],{"class":665,"line":1147},[663,2757,2758],{"class":761},"    \u002F\u002F Only visible in code mode when user is admin\n",[663,2760,2761],{"class":665,"line":1152},[663,2762,1711],{"class":783},[663,2764,2765,2767],{"class":665,"line":1551},[663,2766,807],{"class":783},[663,2768,810],{"class":779},[653,2770,2773],{"className":751,"code":2771,"filename":2772,"language":754,"meta":659,"style":659},"\u002F\u002F server\u002Fmcp\u002Findex.ts\nexport default defineMcpHandler({\n  experimental_codeMode: {\n    progressive: true,\n    cpuTimeLimitMs: 15_000,\n  },\n  middleware: async (event) => {\n    const apiKey = getHeader(event, 'x-api-key')\n    if (!apiKey) return\n    const user = await getUserByApiKey(apiKey).catch(() => null)\n    if (user) event.context.user = user\n  },\n})\n","With Progressive + Auth",[302,2774,2775,2779,2791,2799,2809,2820,2824,2842,2869,2886,2919,2943,2947],{"__ignoreMap":659},[663,2776,2777],{"class":665,"line":666},[663,2778,762],{"class":761},[663,2780,2781,2783,2785,2787,2789],{"class":665,"line":765},[663,2782,769],{"class":768},[663,2784,772],{"class":768},[663,2786,776],{"class":775},[663,2788,780],{"class":779},[663,2790,784],{"class":783},[663,2792,2793,2795,2797],{"class":665,"line":787},[663,2794,791],{"class":790},[663,2796,794],{"class":783},[663,2798,1289],{"class":783},[663,2800,2801,2803,2805,2807],{"class":665,"line":804},[663,2802,1689],{"class":790},[663,2804,794],{"class":783},[663,2806,798],{"class":797},[663,2808,801],{"class":783},[663,2810,2811,2813,2815,2818],{"class":665,"line":864},[663,2812,1618],{"class":790},[663,2814,794],{"class":783},[663,2816,2817],{"class":1073}," 15_000",[663,2819,801],{"class":783},[663,2821,2822],{"class":665,"line":888},[663,2823,1711],{"class":783},[663,2825,2826,2828,2830,2832,2834,2836,2838,2840],{"class":665,"line":1114},[663,2827,2508],{"class":775},[663,2829,794],{"class":783},[663,2831,2513],{"class":961},[663,2833,1392],{"class":783},[663,2835,2518],{"class":1462},[663,2837,1004],{"class":783},[663,2839,1466],{"class":961},[663,2841,1289],{"class":783},[663,2843,2844,2846,2849,2851,2854,2856,2858,2860,2862,2865,2867],{"class":665,"line":1131},[663,2845,2529],{"class":961},[663,2847,2848],{"class":779}," apiKey",[663,2850,1199],{"class":783},[663,2852,2853],{"class":775}," getHeader",[663,2855,780],{"class":790},[663,2857,2518],{"class":779},[663,2859,875],{"class":783},[663,2861,843],{"class":783},[663,2863,2864],{"class":672},"x-api-key",[663,2866,849],{"class":783},[663,2868,810],{"class":790},[663,2870,2871,2873,2875,2878,2881,2883],{"class":665,"line":1141},[663,2872,2565],{"class":768},[663,2874,1392],{"class":790},[663,2876,2877],{"class":783},"!",[663,2879,2880],{"class":779},"apiKey",[663,2882,1077],{"class":790},[663,2884,2885],{"class":768},"return\n",[663,2887,2888,2890,2892,2894,2896,2899,2901,2903,2905,2907,2909,2911,2913,2915,2917],{"class":665,"line":1147},[663,2889,2529],{"class":961},[663,2891,1037],{"class":779},[663,2893,1199],{"class":783},[663,2895,971],{"class":768},[663,2897,2898],{"class":775}," getUserByApiKey",[663,2900,780],{"class":790},[663,2902,2880],{"class":779},[663,2904,1004],{"class":790},[663,2906,572],{"class":783},[663,2908,2549],{"class":775},[663,2910,780],{"class":790},[663,2912,1225],{"class":783},[663,2914,1466],{"class":961},[663,2916,2558],{"class":783},[663,2918,810],{"class":790},[663,2920,2921,2923,2925,2927,2929,2931,2933,2935,2937,2939,2941],{"class":665,"line":1152},[663,2922,2565],{"class":768},[663,2924,1392],{"class":790},[663,2926,1526],{"class":779},[663,2928,1077],{"class":790},[663,2930,2518],{"class":779},[663,2932,572],{"class":783},[663,2934,2578],{"class":779},[663,2936,572],{"class":783},[663,2938,1526],{"class":779},[663,2940,1199],{"class":783},[663,2942,2587],{"class":779},[663,2944,2945],{"class":665,"line":1551},[663,2946,1711],{"class":783},[663,2948,2949,2951],{"class":665,"line":1714},[663,2950,807],{"class":783},[663,2952,810],{"class":779},[298,2954,2955,2957,2958,2961,2962,2968,2969,2971],{},[359,2956,220],{"href":221}," runs before tool execution — your tools access ",[302,2959,2960],{},"event.context"," as usual. Tools with ",[359,2963,2964,2967],{"href":245},[302,2965,2966],{},"enabled"," guards"," are excluded from the generated type definitions and the ",[302,2970,923],{}," object.",[293,2973,2975],{"id":2974},"tool-name-sanitization","Tool Name Sanitization",[298,2977,2978,2979,2981],{},"MCP tool names (kebab-case) are automatically converted to valid JavaScript identifiers for the ",[302,2980,923],{}," object:",[365,2983,2984,2994],{},[368,2985,2986],{},[371,2987,2988,2991],{},[374,2989,2990],{},"MCP Name",[374,2992,2993],{},"JavaScript Name",[382,2995,2996,3006,3016,3028],{},[371,2997,2998,3002],{},[387,2999,3000],{},[302,3001,937],{},[387,3003,3004],{},[302,3005,979],{},[371,3007,3008,3012],{},[387,3009,3010],{},[302,3011,941],{},[387,3013,3014],{},[302,3015,1025],{},[371,3017,3018,3023],{},[387,3019,3020],{},[302,3021,3022],{},"123-tool",[387,3024,3025],{},[302,3026,3027],{},"_123_tool",[371,3029,3030,3035],{},[387,3031,3032],{},[302,3033,3034],{},"delete",[387,3036,3037],{},[302,3038,3039],{},"delete_",[298,3041,3042,3043,3046,3047,572],{},"Reserved JavaScript words are suffixed with ",[302,3044,3045],{},"_",". Names starting with a digit are prefixed with ",[302,3048,3045],{},[293,3050,3052],{"id":3051},"cleanup","Cleanup",[298,3054,3055,3056,3058],{},"Call ",[302,3057,1738],{}," during shutdown to release resources (V8 runtime, RPC server):",[653,3060,3062],{"className":751,"code":3061,"language":754,"meta":659,"style":659},"import { disposeCodeMode } from '#imports'\n\n\u002F\u002F In a shutdown hook or cleanup function\ndisposeCodeMode()\n",[302,3063,3064,3087,3091,3096],{"__ignoreMap":659},[663,3065,3066,3069,3071,3074,3076,3079,3081,3084],{"class":665,"line":666},[663,3067,3068],{"class":768},"import",[663,3070,1158],{"class":783},[663,3072,3073],{"class":779}," disposeCodeMode",[663,3075,1001],{"class":783},[663,3077,3078],{"class":768}," from",[663,3080,843],{"class":783},[663,3082,3083],{"class":672},"#imports",[663,3085,3086],{"class":783},"'\n",[663,3088,3089],{"class":665,"line":765},[663,3090,1054],{"emptyLinePlaceholder":1053},[663,3092,3093],{"class":665,"line":787},[663,3094,3095],{"class":761},"\u002F\u002F In a shutdown hook or cleanup function\n",[663,3097,3098,3101],{"class":665,"line":804},[663,3099,3100],{"class":775},"disposeCodeMode",[663,3102,3103],{"class":779},"()\n",[293,3105,3107],{"id":3106},"next-steps","Next Steps",[314,3109,3110,3115,3120,3125],{},[317,3111,3112,3114],{},[359,3113,123],{"href":128}," - Create custom MCP endpoints",[317,3116,3117,3119],{},[359,3118,220],{"href":221}," - Add authentication",[317,3121,3122,3124],{},[359,3123,244],{"href":245}," - Conditionally register tools",[317,3126,3127,3130],{},[359,3128,3129],{"href":235},"Evals"," - Benchmark code mode vs standard MCP",[3132,3133,3134],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}",{"title":659,"searchDepth":765,"depth":765,"links":3136},[3137,3138,3142,3146,3149,3150,3151,3152,3161,3162,3163,3164],{"id":295,"depth":765,"text":296},{"id":449,"depth":765,"text":450,"children":3139},[3140,3141],{"id":461,"depth":787,"text":462},{"id":588,"depth":787,"text":589},{"id":634,"depth":765,"text":635,"children":3143},[3144,3145],{"id":638,"depth":787,"text":639},{"id":738,"depth":787,"text":739},{"id":901,"depth":765,"text":902,"children":3147},[3148],{"id":930,"depth":787,"text":931},{"id":1567,"depth":765,"text":1568},{"id":1866,"depth":765,"text":1841},{"id":1997,"depth":765,"text":1998},{"id":2095,"depth":765,"text":2096,"children":3153},[3154,3155,3156,3157,3158,3159,3160],{"id":2106,"depth":787,"text":2107},{"id":2164,"depth":787,"text":2165},{"id":2208,"depth":787,"text":2209},{"id":2246,"depth":787,"text":2247},{"id":2406,"depth":787,"text":2407},{"id":2443,"depth":787,"text":2444},{"id":2454,"depth":787,"text":2455},{"id":2465,"depth":765,"text":2466},{"id":2974,"depth":765,"text":2975},{"id":3051,"depth":765,"text":3052},{"id":3106,"depth":765,"text":3107},"Let LLMs orchestrate multiple tool calls in a single JavaScript execution.","md",null,{},{"icon":252},{"title":249,"description":3171},"Reduce token usage and latency by letting LLMs write JavaScript that orchestrates MCP tools in a secure V8 sandbox.","cle_tP6RXOe0tZgdMHgH7Mk_nDmxAyZ-l6KZdsQau8s",[3174,3176],{"title":244,"path":245,"stem":246,"description":3175,"icon":247,"children":-1},"Conditionally register tools, resources, and prompts based on authentication, roles, or request context.",{"title":254,"path":255,"stem":256,"description":3177,"icon":257,"children":-1},"Ask the user for structured input or send them to a URL with useMcpElicitation().",1787670838613]