[{"data":1,"prerenderedAt":3135},["ShallowReactive",2],{"navigation_docs":3,"-advanced-dynamic-definitions":139,"-advanced-dynamic-definitions-surround":3130},[4,40,65,110],{"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},"MCP 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},"Core Concepts","\u002Fcore-concepts","2.core-concepts",[45,50,55,60],{"title":46,"path":47,"stem":48,"icon":49},"Tools","\u002Fcore-concepts\u002Ftools","2.core-concepts\u002F2.tools","i-lucide-wrench",{"title":51,"path":52,"stem":53,"icon":54},"Resources","\u002Fcore-concepts\u002Fresources","2.core-concepts\u002F3.resources","i-lucide-package",{"title":56,"path":57,"stem":58,"icon":59},"Prompts","\u002Fcore-concepts\u002Fprompts","2.core-concepts\u002F4.prompts","i-lucide-message-square",{"title":61,"path":62,"stem":63,"icon":64},"Handlers","\u002Fcore-concepts\u002Fhandlers","2.core-concepts\u002F5.handlers","i-lucide-server",{"title":66,"path":67,"stem":68,"children":69,"page":39},"Advanced Topics","\u002Fadvanced","3.advanced",[70,75,80,85,90,95,100,105],{"title":71,"path":72,"stem":73,"icon":74},"Custom Paths","\u002Fadvanced\u002Fcustom-paths","3.advanced\u002F1.custom-paths","i-lucide-folder",{"title":76,"path":77,"stem":78,"icon":79},"Middleware","\u002Fadvanced\u002Fmiddleware","3.advanced\u002F2.middleware","i-lucide-shield",{"title":81,"path":82,"stem":83,"icon":84},"TypeScript","\u002Fadvanced\u002Ftypescript","3.advanced\u002F3.typescript","i-lucide-type",{"title":86,"path":87,"stem":88,"icon":89},"Hooks","\u002Fadvanced\u002Fhooks","3.advanced\u002F4.hooks","i-lucide-webhook",{"title":91,"path":92,"stem":93,"icon":94},"MCP Evals","\u002Fadvanced\u002Fevals","3.advanced\u002F5.evals","i-lucide-flask-conical",{"title":96,"path":97,"stem":98,"icon":99},"Sessions","\u002Fadvanced\u002Fsessions","3.advanced\u002F6.sessions","i-lucide-database",{"title":101,"path":102,"stem":103,"icon":104},"Dynamic Definitions","\u002Fadvanced\u002Fdynamic-definitions","3.advanced\u002F7.dynamic-definitions","i-lucide-toggle-right",{"title":106,"path":107,"stem":108,"icon":109},"Code Mode","\u002Fadvanced\u002Fcode-mode","3.advanced\u002F8.code-mode","i-lucide-code",{"title":111,"path":112,"stem":113,"children":114,"page":39},"Examples","\u002Fexamples","4.examples",[115,120,125,130,135],{"title":116,"path":117,"stem":118,"icon":119},"Authentication","\u002Fexamples\u002Fauthentication","4.examples\u002F1.authentication","i-lucide-shield-check",{"title":121,"path":122,"stem":123,"icon":124},"API Integration","\u002Fexamples\u002Fapi-integration","4.examples\u002F2.api-integration","i-lucide-globe",{"title":126,"path":127,"stem":128,"icon":129},"Common Patterns","\u002Fexamples\u002Fcommon-patterns","4.examples\u002F3.common-patterns","i-lucide-lightbulb",{"title":131,"path":132,"stem":133,"icon":134},"File Operations","\u002Fexamples\u002Ffile-operations","4.examples\u002F4.file-operations","i-lucide-file",{"title":136,"path":137,"stem":138,"icon":59},"Prompt Examples","\u002Fexamples\u002Fprompt-examples","4.examples\u002F5.prompt-examples",{"id":140,"title":101,"body":141,"description":3121,"extension":3122,"links":3123,"meta":3124,"navigation":3125,"path":102,"seo":3126,"stem":103,"__hash__":3129},"docs\u002F3.advanced\u002F7.dynamic-definitions.md",{"type":142,"value":143,"toc":3099},"minimark",[144,149,163,166,189,200,229,236,246,250,529,532,718,721,957,961,966,1105,1183,1187,1205,1513,1516,1528,1532,1540,1654,1748,1761,1765,1777,1780,1791,1794,1798,1815,1824,1828,1940,1944,2264,2267,2271,2277,2760,2764,2773,2926,2937,2941,2964,2972,2974,2977,3074,3078,3095],[145,146,148],"h2",{"id":147},"overview","Overview",[150,151,152,153,157,158,162],"p",{},"By default, every tool, resource, and prompt defined in ",[154,155,156],"code",{},"server\u002Fmcp\u002F"," is registered for all clients. Dynamic definitions let you control ",[159,160,161],"strong",{},"which definitions are visible"," based on request context — for example, showing admin-only tools to authenticated admins while hiding them from regular users.",[150,164,165],{},"There are two complementary mechanisms:",[167,168,169,179],"ol",{},[170,171,172,178],"li",{},[159,173,174,177],{},[154,175,176],{},"enabled"," guard"," — A per-definition callback that controls visibility",[170,180,181,184,185,188],{},[159,182,183],{},"Dynamic handler definitions"," — A function in ",[154,186,187],{},"defineMcpHandler"," that returns definitions based on context",[150,190,191,192,195,196,199],{},"Both mechanisms run ",[159,193,194],{},"after middleware",", so ",[154,197,198],{},"event.context"," (e.g. authentication data) is available.",[201,202,205,206,209,210,212,213,216,217,220,221,224,225,228],"callout",{"color":203,"icon":204},"info","i-lucide-info","If you only need to change tool\u002Fprompt ",[159,207,208],{},"behavior"," (not visibility), you can already do that by reading ",[154,211,198],{}," inside your handler via ",[154,214,215],{},"useEvent()",". Dynamic definitions are for controlling which definitions appear in ",[154,218,219],{},"tools\u002Flist",", ",[154,222,223],{},"prompts\u002Flist",", and ",[154,226,227],{},"resources\u002Flist",".",[145,230,232,233,235],{"id":231},"the-enabled-guard","The ",[154,234,176],{}," Guard",[150,237,238,239,241,242,245],{},"Add an ",[154,240,176],{}," callback to any tool, resource, or prompt definition. When the callback returns ",[154,243,244],{},"false",", the definition is hidden from the client.",[247,248,46],"h3",{"id":249},"tools",[251,252,258],"pre",{"className":253,"code":254,"filename":255,"language":256,"meta":257,"style":257},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export default defineMcpTool({\n  name: 'delete-all',\n  description: 'Delete all records (admin only)',\n  inputSchema: {\n    confirm: z.boolean().describe('Confirm deletion'),\n  },\n  enabled: event => event.context.user?.role === 'admin',\n  handler: async ({ confirm }) => {\n    if (!confirm) return textResult('Deletion cancelled')\n    await deleteAllRecords()\n    return textResult('All records deleted')\n  },\n})\n","server\u002Fmcp\u002Ftools\u002Fdelete-all.ts","typescript","",[154,259,260,284,307,324,335,373,379,425,449,485,497,516,521],{"__ignoreMap":257},[261,262,265,269,272,276,280],"span",{"class":263,"line":264},"line",1,[261,266,268],{"class":267},"s7zQu","export",[261,270,271],{"class":267}," default",[261,273,275],{"class":274},"s2Zo4"," defineMcpTool",[261,277,279],{"class":278},"sTEyZ","(",[261,281,283],{"class":282},"sMK4o","{\n",[261,285,287,291,294,297,301,304],{"class":263,"line":286},2,[261,288,290],{"class":289},"swJcz","  name",[261,292,293],{"class":282},":",[261,295,296],{"class":282}," '",[261,298,300],{"class":299},"sfazB","delete-all",[261,302,303],{"class":282},"'",[261,305,306],{"class":282},",\n",[261,308,310,313,315,317,320,322],{"class":263,"line":309},3,[261,311,312],{"class":289},"  description",[261,314,293],{"class":282},[261,316,296],{"class":282},[261,318,319],{"class":299},"Delete all records (admin only)",[261,321,303],{"class":282},[261,323,306],{"class":282},[261,325,327,330,332],{"class":263,"line":326},4,[261,328,329],{"class":289},"  inputSchema",[261,331,293],{"class":282},[261,333,334],{"class":282}," {\n",[261,336,338,341,343,346,348,351,354,356,359,361,363,366,368,371],{"class":263,"line":337},5,[261,339,340],{"class":289},"    confirm",[261,342,293],{"class":282},[261,344,345],{"class":278}," z",[261,347,228],{"class":282},[261,349,350],{"class":274},"boolean",[261,352,353],{"class":278},"()",[261,355,228],{"class":282},[261,357,358],{"class":274},"describe",[261,360,279],{"class":278},[261,362,303],{"class":282},[261,364,365],{"class":299},"Confirm deletion",[261,367,303],{"class":282},[261,369,370],{"class":278},")",[261,372,306],{"class":282},[261,374,376],{"class":263,"line":375},6,[261,377,378],{"class":282},"  },\n",[261,380,382,385,387,391,395,397,399,402,404,407,410,413,416,418,421,423],{"class":263,"line":381},7,[261,383,384],{"class":274},"  enabled",[261,386,293],{"class":282},[261,388,390],{"class":389},"sHdIc"," event",[261,392,394],{"class":393},"spNyl"," =>",[261,396,390],{"class":278},[261,398,228],{"class":282},[261,400,401],{"class":278},"context",[261,403,228],{"class":282},[261,405,406],{"class":278},"user",[261,408,409],{"class":282},"?.",[261,411,412],{"class":278},"role ",[261,414,415],{"class":282},"===",[261,417,296],{"class":282},[261,419,420],{"class":299},"admin",[261,422,303],{"class":282},[261,424,306],{"class":282},[261,426,428,431,433,436,439,442,445,447],{"class":263,"line":427},8,[261,429,430],{"class":274},"  handler",[261,432,293],{"class":282},[261,434,435],{"class":393}," async",[261,437,438],{"class":282}," ({",[261,440,441],{"class":389}," confirm",[261,443,444],{"class":282}," })",[261,446,394],{"class":393},[261,448,334],{"class":282},[261,450,452,455,458,461,464,467,470,473,475,477,480,482],{"class":263,"line":451},9,[261,453,454],{"class":267},"    if",[261,456,457],{"class":289}," (",[261,459,460],{"class":282},"!",[261,462,463],{"class":278},"confirm",[261,465,466],{"class":289},") ",[261,468,469],{"class":267},"return",[261,471,472],{"class":274}," textResult",[261,474,279],{"class":289},[261,476,303],{"class":282},[261,478,479],{"class":299},"Deletion cancelled",[261,481,303],{"class":282},[261,483,484],{"class":289},")\n",[261,486,488,491,494],{"class":263,"line":487},10,[261,489,490],{"class":267},"    await",[261,492,493],{"class":274}," deleteAllRecords",[261,495,496],{"class":289},"()\n",[261,498,500,503,505,507,509,512,514],{"class":263,"line":499},11,[261,501,502],{"class":267},"    return",[261,504,472],{"class":274},[261,506,279],{"class":289},[261,508,303],{"class":282},[261,510,511],{"class":299},"All records deleted",[261,513,303],{"class":282},[261,515,484],{"class":289},[261,517,519],{"class":263,"line":518},12,[261,520,378],{"class":282},[261,522,524,527],{"class":263,"line":523},13,[261,525,526],{"class":282},"}",[261,528,484],{"class":278},[247,530,51],{"id":531},"resources",[251,533,536],{"className":253,"code":534,"filename":535,"language":256,"meta":257,"style":257},"export default defineMcpResource({\n  name: 'internal-logs',\n  description: 'Application logs (admin only)',\n  uri: 'app:\u002F\u002Flogs',\n  enabled: event => event.context.user?.role === 'admin',\n  handler: async (uri) => ({\n    contents: [{ uri: uri.toString(), text: await readLogs() }],\n  }),\n})\n","server\u002Fmcp\u002Fresources\u002Finternal-logs.ts",[154,537,538,551,566,581,597,631,652,703,712],{"__ignoreMap":257},[261,539,540,542,544,547,549],{"class":263,"line":264},[261,541,268],{"class":267},[261,543,271],{"class":267},[261,545,546],{"class":274}," defineMcpResource",[261,548,279],{"class":278},[261,550,283],{"class":282},[261,552,553,555,557,559,562,564],{"class":263,"line":286},[261,554,290],{"class":289},[261,556,293],{"class":282},[261,558,296],{"class":282},[261,560,561],{"class":299},"internal-logs",[261,563,303],{"class":282},[261,565,306],{"class":282},[261,567,568,570,572,574,577,579],{"class":263,"line":309},[261,569,312],{"class":289},[261,571,293],{"class":282},[261,573,296],{"class":282},[261,575,576],{"class":299},"Application logs (admin only)",[261,578,303],{"class":282},[261,580,306],{"class":282},[261,582,583,586,588,590,593,595],{"class":263,"line":326},[261,584,585],{"class":289},"  uri",[261,587,293],{"class":282},[261,589,296],{"class":282},[261,591,592],{"class":299},"app:\u002F\u002Flogs",[261,594,303],{"class":282},[261,596,306],{"class":282},[261,598,599,601,603,605,607,609,611,613,615,617,619,621,623,625,627,629],{"class":263,"line":337},[261,600,384],{"class":274},[261,602,293],{"class":282},[261,604,390],{"class":389},[261,606,394],{"class":393},[261,608,390],{"class":278},[261,610,228],{"class":282},[261,612,401],{"class":278},[261,614,228],{"class":282},[261,616,406],{"class":278},[261,618,409],{"class":282},[261,620,412],{"class":278},[261,622,415],{"class":282},[261,624,296],{"class":282},[261,626,420],{"class":299},[261,628,303],{"class":282},[261,630,306],{"class":282},[261,632,633,635,637,639,641,644,646,648,650],{"class":263,"line":375},[261,634,430],{"class":274},[261,636,293],{"class":282},[261,638,435],{"class":393},[261,640,457],{"class":282},[261,642,643],{"class":389},"uri",[261,645,370],{"class":282},[261,647,394],{"class":393},[261,649,457],{"class":278},[261,651,283],{"class":282},[261,653,654,657,659,662,665,668,670,672,674,677,679,682,685,687,690,693,696,698,701],{"class":263,"line":381},[261,655,656],{"class":289},"    contents",[261,658,293],{"class":282},[261,660,661],{"class":278}," [",[261,663,664],{"class":282},"{",[261,666,667],{"class":289}," uri",[261,669,293],{"class":282},[261,671,667],{"class":278},[261,673,228],{"class":282},[261,675,676],{"class":274},"toString",[261,678,353],{"class":278},[261,680,681],{"class":282},",",[261,683,684],{"class":289}," text",[261,686,293],{"class":282},[261,688,689],{"class":267}," await",[261,691,692],{"class":274}," readLogs",[261,694,695],{"class":278},"() ",[261,697,526],{"class":282},[261,699,700],{"class":278},"]",[261,702,306],{"class":282},[261,704,705,708,710],{"class":263,"line":427},[261,706,707],{"class":282},"  }",[261,709,370],{"class":278},[261,711,306],{"class":282},[261,713,714,716],{"class":263,"line":451},[261,715,526],{"class":282},[261,717,484],{"class":278},[247,719,56],{"id":720},"prompts",[251,722,725],{"className":253,"code":723,"filename":724,"language":256,"meta":257,"style":257},"export default defineMcpPrompt({\n  name: 'onboarding',\n  description: 'Personalized onboarding (authenticated users only)',\n  enabled: event => !!event.context.user,\n  handler: async () => {\n    const event = useEvent()\n    return {\n      messages: [{\n        role: 'user',\n        content: {\n          type: 'text',\n          text: `Welcome ${event.context.user.name}! Here's how to get started...`,\n        },\n      }],\n    }\n  },\n})\n","server\u002Fmcp\u002Fprompts\u002Fonboarding.ts",[154,726,727,740,755,770,796,811,826,832,843,858,867,883,924,929,939,945,950],{"__ignoreMap":257},[261,728,729,731,733,736,738],{"class":263,"line":264},[261,730,268],{"class":267},[261,732,271],{"class":267},[261,734,735],{"class":274}," defineMcpPrompt",[261,737,279],{"class":278},[261,739,283],{"class":282},[261,741,742,744,746,748,751,753],{"class":263,"line":286},[261,743,290],{"class":289},[261,745,293],{"class":282},[261,747,296],{"class":282},[261,749,750],{"class":299},"onboarding",[261,752,303],{"class":282},[261,754,306],{"class":282},[261,756,757,759,761,763,766,768],{"class":263,"line":309},[261,758,312],{"class":289},[261,760,293],{"class":282},[261,762,296],{"class":282},[261,764,765],{"class":299},"Personalized onboarding (authenticated users only)",[261,767,303],{"class":282},[261,769,306],{"class":282},[261,771,772,774,776,778,780,783,786,788,790,792,794],{"class":263,"line":326},[261,773,384],{"class":274},[261,775,293],{"class":282},[261,777,390],{"class":389},[261,779,394],{"class":393},[261,781,782],{"class":282}," !!",[261,784,785],{"class":278},"event",[261,787,228],{"class":282},[261,789,401],{"class":278},[261,791,228],{"class":282},[261,793,406],{"class":278},[261,795,306],{"class":282},[261,797,798,800,802,804,807,809],{"class":263,"line":337},[261,799,430],{"class":274},[261,801,293],{"class":282},[261,803,435],{"class":393},[261,805,806],{"class":282}," ()",[261,808,394],{"class":393},[261,810,334],{"class":282},[261,812,813,816,818,821,824],{"class":263,"line":375},[261,814,815],{"class":393},"    const",[261,817,390],{"class":278},[261,819,820],{"class":282}," =",[261,822,823],{"class":274}," useEvent",[261,825,496],{"class":289},[261,827,828,830],{"class":263,"line":381},[261,829,502],{"class":267},[261,831,334],{"class":282},[261,833,834,837,839,841],{"class":263,"line":427},[261,835,836],{"class":289},"      messages",[261,838,293],{"class":282},[261,840,661],{"class":289},[261,842,283],{"class":282},[261,844,845,848,850,852,854,856],{"class":263,"line":451},[261,846,847],{"class":289},"        role",[261,849,293],{"class":282},[261,851,296],{"class":282},[261,853,406],{"class":299},[261,855,303],{"class":282},[261,857,306],{"class":282},[261,859,860,863,865],{"class":263,"line":487},[261,861,862],{"class":289},"        content",[261,864,293],{"class":282},[261,866,334],{"class":282},[261,868,869,872,874,876,879,881],{"class":263,"line":499},[261,870,871],{"class":289},"          type",[261,873,293],{"class":282},[261,875,296],{"class":282},[261,877,878],{"class":299},"text",[261,880,303],{"class":282},[261,882,306],{"class":282},[261,884,885,888,890,893,896,899,901,903,905,907,909,911,914,916,919,922],{"class":263,"line":518},[261,886,887],{"class":289},"          text",[261,889,293],{"class":282},[261,891,892],{"class":282}," `",[261,894,895],{"class":299},"Welcome ",[261,897,898],{"class":282},"${",[261,900,785],{"class":278},[261,902,228],{"class":282},[261,904,401],{"class":278},[261,906,228],{"class":282},[261,908,406],{"class":278},[261,910,228],{"class":282},[261,912,913],{"class":278},"name",[261,915,526],{"class":282},[261,917,918],{"class":299},"! Here's how to get started...",[261,920,921],{"class":282},"`",[261,923,306],{"class":282},[261,925,926],{"class":263,"line":523},[261,927,928],{"class":282},"        },\n",[261,930,932,935,937],{"class":263,"line":931},14,[261,933,934],{"class":282},"      }",[261,936,700],{"class":289},[261,938,306],{"class":282},[261,940,942],{"class":263,"line":941},15,[261,943,944],{"class":282},"    }\n",[261,946,948],{"class":263,"line":947},16,[261,949,378],{"class":282},[261,951,953,955],{"class":263,"line":952},17,[261,954,526],{"class":282},[261,956,484],{"class":278},[247,958,960],{"id":959},"middleware-setup","Middleware Setup",[150,962,232,963,965],{},[154,964,176],{}," guard runs after middleware, so set up your auth context in middleware:",[251,967,970],{"className":253,"code":968,"filename":969,"language":256,"meta":257,"style":257},"export default defineMcpHandler({\n  middleware: async (event) => {\n    const token = getHeader(event, 'authorization')?.replace('Bearer ', '')\n    if (token) {\n      event.context.user = await verifyToken(token)\n    }\n  },\n})\n","server\u002Fmcp\u002Findex.ts",[154,971,972,985,1004,1052,1065,1091,1095,1099],{"__ignoreMap":257},[261,973,974,976,978,981,983],{"class":263,"line":264},[261,975,268],{"class":267},[261,977,271],{"class":267},[261,979,980],{"class":274}," defineMcpHandler",[261,982,279],{"class":278},[261,984,283],{"class":282},[261,986,987,990,992,994,996,998,1000,1002],{"class":263,"line":286},[261,988,989],{"class":274},"  middleware",[261,991,293],{"class":282},[261,993,435],{"class":393},[261,995,457],{"class":282},[261,997,785],{"class":389},[261,999,370],{"class":282},[261,1001,394],{"class":393},[261,1003,334],{"class":282},[261,1005,1006,1008,1011,1013,1016,1018,1020,1022,1024,1027,1029,1031,1033,1036,1038,1040,1043,1045,1047,1050],{"class":263,"line":309},[261,1007,815],{"class":393},[261,1009,1010],{"class":278}," token",[261,1012,820],{"class":282},[261,1014,1015],{"class":274}," getHeader",[261,1017,279],{"class":289},[261,1019,785],{"class":278},[261,1021,681],{"class":282},[261,1023,296],{"class":282},[261,1025,1026],{"class":299},"authorization",[261,1028,303],{"class":282},[261,1030,370],{"class":289},[261,1032,409],{"class":282},[261,1034,1035],{"class":274},"replace",[261,1037,279],{"class":289},[261,1039,303],{"class":282},[261,1041,1042],{"class":299},"Bearer ",[261,1044,303],{"class":282},[261,1046,681],{"class":282},[261,1048,1049],{"class":282}," ''",[261,1051,484],{"class":289},[261,1053,1054,1056,1058,1061,1063],{"class":263,"line":326},[261,1055,454],{"class":267},[261,1057,457],{"class":289},[261,1059,1060],{"class":278},"token",[261,1062,466],{"class":289},[261,1064,283],{"class":282},[261,1066,1067,1070,1072,1074,1076,1078,1080,1082,1085,1087,1089],{"class":263,"line":337},[261,1068,1069],{"class":278},"      event",[261,1071,228],{"class":282},[261,1073,401],{"class":278},[261,1075,228],{"class":282},[261,1077,406],{"class":278},[261,1079,820],{"class":282},[261,1081,689],{"class":267},[261,1083,1084],{"class":274}," verifyToken",[261,1086,279],{"class":289},[261,1088,1060],{"class":278},[261,1090,484],{"class":289},[261,1092,1093],{"class":263,"line":375},[261,1094,944],{"class":282},[261,1096,1097],{"class":263,"line":381},[261,1098,378],{"class":282},[261,1100,1101,1103],{"class":263,"line":427},[261,1102,526],{"class":282},[261,1104,484],{"class":278},[201,1106,1108,1118],{"color":1107,"icon":129},"primary",[150,1109,1110,1111,1113,1114,1117],{},"To use ",[154,1112,215],{}," inside handlers, enable ",[154,1115,1116],{},"asyncContext"," in your Nuxt config:",[251,1119,1122],{"className":253,"code":1120,"filename":1121,"language":256,"meta":257,"style":257},"export default defineNuxtConfig({\n  nitro: {\n    experimental: {\n      asyncContext: true,\n    },\n  },\n})\n","nuxt.config.ts",[154,1123,1124,1137,1146,1155,1168,1173,1177],{"__ignoreMap":257},[261,1125,1126,1128,1130,1133,1135],{"class":263,"line":264},[261,1127,268],{"class":267},[261,1129,271],{"class":267},[261,1131,1132],{"class":274}," defineNuxtConfig",[261,1134,279],{"class":278},[261,1136,283],{"class":282},[261,1138,1139,1142,1144],{"class":263,"line":286},[261,1140,1141],{"class":289},"  nitro",[261,1143,293],{"class":282},[261,1145,334],{"class":282},[261,1147,1148,1151,1153],{"class":263,"line":309},[261,1149,1150],{"class":289},"    experimental",[261,1152,293],{"class":282},[261,1154,334],{"class":282},[261,1156,1157,1160,1162,1166],{"class":263,"line":326},[261,1158,1159],{"class":289},"      asyncContext",[261,1161,293],{"class":282},[261,1163,1165],{"class":1164},"sfNiH"," true",[261,1167,306],{"class":282},[261,1169,1170],{"class":263,"line":337},[261,1171,1172],{"class":282},"    },\n",[261,1174,1175],{"class":263,"line":375},[261,1176,378],{"class":282},[261,1178,1179,1181],{"class":263,"line":381},[261,1180,526],{"class":282},[261,1182,484],{"class":278},[145,1184,1186],{"id":1185},"dynamic-handler-definitions","Dynamic Handler Definitions",[150,1188,1189,1190,1193,1194,220,1196,1198,1199,1201,1202,1204],{},"For more control, pass a ",[159,1191,1192],{},"function"," as ",[154,1195,249],{},[154,1197,531],{},", or ",[154,1200,720],{}," in ",[154,1203,187],{},". The function receives the H3 event and returns an array of definitions.",[251,1206,1208],{"className":253,"code":1207,"filename":969,"language":256,"meta":257,"style":257},"import { adminTools } from '.\u002Fadmin-tools'\nimport { publicTools } from '.\u002Fpublic-tools'\n\nexport default defineMcpHandler({\n  middleware: async (event) => {\n    event.context.user = await getUser(event)\n  },\n  tools: async (event) => {\n    const base = [...publicTools]\n    if (event.context.user?.role === 'admin') {\n      base.push(...adminTools)\n    }\n    return base\n  },\n  prompts: async (event) => {\n    if (event.context.user) {\n      return [authenticatedPrompt, dashboardPrompt]\n    }\n    return [guestPrompt]\n  },\n})\n",[154,1209,1210,1235,1255,1261,1273,1291,1317,1321,1340,1360,1394,1413,1417,1424,1428,1447,1467,1484,1489,1501,1506],{"__ignoreMap":257},[261,1211,1212,1215,1218,1221,1224,1227,1229,1232],{"class":263,"line":264},[261,1213,1214],{"class":267},"import",[261,1216,1217],{"class":282}," {",[261,1219,1220],{"class":278}," adminTools",[261,1222,1223],{"class":282}," }",[261,1225,1226],{"class":267}," from",[261,1228,296],{"class":282},[261,1230,1231],{"class":299},".\u002Fadmin-tools",[261,1233,1234],{"class":282},"'\n",[261,1236,1237,1239,1241,1244,1246,1248,1250,1253],{"class":263,"line":286},[261,1238,1214],{"class":267},[261,1240,1217],{"class":282},[261,1242,1243],{"class":278}," publicTools",[261,1245,1223],{"class":282},[261,1247,1226],{"class":267},[261,1249,296],{"class":282},[261,1251,1252],{"class":299},".\u002Fpublic-tools",[261,1254,1234],{"class":282},[261,1256,1257],{"class":263,"line":309},[261,1258,1260],{"emptyLinePlaceholder":1259},true,"\n",[261,1262,1263,1265,1267,1269,1271],{"class":263,"line":326},[261,1264,268],{"class":267},[261,1266,271],{"class":267},[261,1268,980],{"class":274},[261,1270,279],{"class":278},[261,1272,283],{"class":282},[261,1274,1275,1277,1279,1281,1283,1285,1287,1289],{"class":263,"line":337},[261,1276,989],{"class":274},[261,1278,293],{"class":282},[261,1280,435],{"class":393},[261,1282,457],{"class":282},[261,1284,785],{"class":389},[261,1286,370],{"class":282},[261,1288,394],{"class":393},[261,1290,334],{"class":282},[261,1292,1293,1296,1298,1300,1302,1304,1306,1308,1311,1313,1315],{"class":263,"line":375},[261,1294,1295],{"class":278},"    event",[261,1297,228],{"class":282},[261,1299,401],{"class":278},[261,1301,228],{"class":282},[261,1303,406],{"class":278},[261,1305,820],{"class":282},[261,1307,689],{"class":267},[261,1309,1310],{"class":274}," getUser",[261,1312,279],{"class":289},[261,1314,785],{"class":278},[261,1316,484],{"class":289},[261,1318,1319],{"class":263,"line":381},[261,1320,378],{"class":282},[261,1322,1323,1326,1328,1330,1332,1334,1336,1338],{"class":263,"line":427},[261,1324,1325],{"class":274},"  tools",[261,1327,293],{"class":282},[261,1329,435],{"class":393},[261,1331,457],{"class":282},[261,1333,785],{"class":389},[261,1335,370],{"class":282},[261,1337,394],{"class":393},[261,1339,334],{"class":282},[261,1341,1342,1344,1347,1349,1351,1354,1357],{"class":263,"line":451},[261,1343,815],{"class":393},[261,1345,1346],{"class":278}," base",[261,1348,820],{"class":282},[261,1350,661],{"class":289},[261,1352,1353],{"class":282},"...",[261,1355,1356],{"class":278},"publicTools",[261,1358,1359],{"class":289},"]\n",[261,1361,1362,1364,1366,1368,1370,1372,1374,1376,1378,1381,1384,1386,1388,1390,1392],{"class":263,"line":487},[261,1363,454],{"class":267},[261,1365,457],{"class":289},[261,1367,785],{"class":278},[261,1369,228],{"class":282},[261,1371,401],{"class":278},[261,1373,228],{"class":282},[261,1375,406],{"class":278},[261,1377,409],{"class":282},[261,1379,1380],{"class":278},"role",[261,1382,1383],{"class":282}," ===",[261,1385,296],{"class":282},[261,1387,420],{"class":299},[261,1389,303],{"class":282},[261,1391,466],{"class":289},[261,1393,283],{"class":282},[261,1395,1396,1399,1401,1404,1406,1408,1411],{"class":263,"line":499},[261,1397,1398],{"class":278},"      base",[261,1400,228],{"class":282},[261,1402,1403],{"class":274},"push",[261,1405,279],{"class":289},[261,1407,1353],{"class":282},[261,1409,1410],{"class":278},"adminTools",[261,1412,484],{"class":289},[261,1414,1415],{"class":263,"line":518},[261,1416,944],{"class":282},[261,1418,1419,1421],{"class":263,"line":523},[261,1420,502],{"class":267},[261,1422,1423],{"class":278}," base\n",[261,1425,1426],{"class":263,"line":931},[261,1427,378],{"class":282},[261,1429,1430,1433,1435,1437,1439,1441,1443,1445],{"class":263,"line":941},[261,1431,1432],{"class":274},"  prompts",[261,1434,293],{"class":282},[261,1436,435],{"class":393},[261,1438,457],{"class":282},[261,1440,785],{"class":389},[261,1442,370],{"class":282},[261,1444,394],{"class":393},[261,1446,334],{"class":282},[261,1448,1449,1451,1453,1455,1457,1459,1461,1463,1465],{"class":263,"line":947},[261,1450,454],{"class":267},[261,1452,457],{"class":289},[261,1454,785],{"class":278},[261,1456,228],{"class":282},[261,1458,401],{"class":278},[261,1460,228],{"class":282},[261,1462,406],{"class":278},[261,1464,466],{"class":289},[261,1466,283],{"class":282},[261,1468,1469,1472,1474,1477,1479,1482],{"class":263,"line":952},[261,1470,1471],{"class":267},"      return",[261,1473,661],{"class":289},[261,1475,1476],{"class":278},"authenticatedPrompt",[261,1478,681],{"class":282},[261,1480,1481],{"class":278}," dashboardPrompt",[261,1483,1359],{"class":289},[261,1485,1487],{"class":263,"line":1486},18,[261,1488,944],{"class":282},[261,1490,1492,1494,1496,1499],{"class":263,"line":1491},19,[261,1493,502],{"class":267},[261,1495,661],{"class":289},[261,1497,1498],{"class":278},"guestPrompt",[261,1500,1359],{"class":289},[261,1502,1504],{"class":263,"line":1503},20,[261,1505,378],{"class":282},[261,1507,1509,1511],{"class":263,"line":1508},21,[261,1510,526],{"class":282},[261,1512,484],{"class":278},[150,1514,1515],{},"This is useful when you need to:",[1517,1518,1519,1522,1525],"ul",{},[170,1520,1521],{},"Build the tool list programmatically from a database or config",[170,1523,1524],{},"Compose definitions from multiple modules",[170,1526,1527],{},"Apply complex filtering logic",[145,1529,1531],{"id":1530},"combining-both-approaches","Combining Both Approaches",[150,1533,232,1534,1536,1537,1539],{},[154,1535,176],{}," guard and dynamic handler definitions work together. When you use dynamic handler definitions, each returned definition's ",[154,1538,176],{}," guard is still evaluated:",[251,1541,1543],{"className":253,"code":1542,"filename":969,"language":256,"meta":257,"style":257},"export default defineMcpHandler({\n  middleware: async (event) => {\n    event.context.user = await getUser(event)\n  },\n  tools: async (event) => {\n    const allTools = await loadToolsFromConfig()\n    return allTools\n  },\n})\n",[154,1544,1545,1557,1575,1599,1603,1621,1637,1644,1648],{"__ignoreMap":257},[261,1546,1547,1549,1551,1553,1555],{"class":263,"line":264},[261,1548,268],{"class":267},[261,1550,271],{"class":267},[261,1552,980],{"class":274},[261,1554,279],{"class":278},[261,1556,283],{"class":282},[261,1558,1559,1561,1563,1565,1567,1569,1571,1573],{"class":263,"line":286},[261,1560,989],{"class":274},[261,1562,293],{"class":282},[261,1564,435],{"class":393},[261,1566,457],{"class":282},[261,1568,785],{"class":389},[261,1570,370],{"class":282},[261,1572,394],{"class":393},[261,1574,334],{"class":282},[261,1576,1577,1579,1581,1583,1585,1587,1589,1591,1593,1595,1597],{"class":263,"line":309},[261,1578,1295],{"class":278},[261,1580,228],{"class":282},[261,1582,401],{"class":278},[261,1584,228],{"class":282},[261,1586,406],{"class":278},[261,1588,820],{"class":282},[261,1590,689],{"class":267},[261,1592,1310],{"class":274},[261,1594,279],{"class":289},[261,1596,785],{"class":278},[261,1598,484],{"class":289},[261,1600,1601],{"class":263,"line":326},[261,1602,378],{"class":282},[261,1604,1605,1607,1609,1611,1613,1615,1617,1619],{"class":263,"line":337},[261,1606,1325],{"class":274},[261,1608,293],{"class":282},[261,1610,435],{"class":393},[261,1612,457],{"class":282},[261,1614,785],{"class":389},[261,1616,370],{"class":282},[261,1618,394],{"class":393},[261,1620,334],{"class":282},[261,1622,1623,1625,1628,1630,1632,1635],{"class":263,"line":375},[261,1624,815],{"class":393},[261,1626,1627],{"class":278}," allTools",[261,1629,820],{"class":282},[261,1631,689],{"class":267},[261,1633,1634],{"class":274}," loadToolsFromConfig",[261,1636,496],{"class":289},[261,1638,1639,1641],{"class":263,"line":381},[261,1640,502],{"class":267},[261,1642,1643],{"class":278}," allTools\n",[261,1645,1646],{"class":263,"line":427},[261,1647,378],{"class":282},[261,1649,1650,1652],{"class":263,"line":451},[261,1651,526],{"class":282},[261,1653,484],{"class":278},[251,1655,1658],{"className":253,"code":1656,"filename":1657,"language":256,"meta":257,"style":257},"export default defineMcpTool({\n  name: 'admin-delete',\n  enabled: event => event.context.user?.role === 'admin',\n  handler: async () => { \u002F* ... *\u002F },\n})\n","server\u002Fmcp\u002Ftools\u002Fadmin-delete.ts",[154,1659,1660,1672,1687,1721,1742],{"__ignoreMap":257},[261,1661,1662,1664,1666,1668,1670],{"class":263,"line":264},[261,1663,268],{"class":267},[261,1665,271],{"class":267},[261,1667,275],{"class":274},[261,1669,279],{"class":278},[261,1671,283],{"class":282},[261,1673,1674,1676,1678,1680,1683,1685],{"class":263,"line":286},[261,1675,290],{"class":289},[261,1677,293],{"class":282},[261,1679,296],{"class":282},[261,1681,1682],{"class":299},"admin-delete",[261,1684,303],{"class":282},[261,1686,306],{"class":282},[261,1688,1689,1691,1693,1695,1697,1699,1701,1703,1705,1707,1709,1711,1713,1715,1717,1719],{"class":263,"line":309},[261,1690,384],{"class":274},[261,1692,293],{"class":282},[261,1694,390],{"class":389},[261,1696,394],{"class":393},[261,1698,390],{"class":278},[261,1700,228],{"class":282},[261,1702,401],{"class":278},[261,1704,228],{"class":282},[261,1706,406],{"class":278},[261,1708,409],{"class":282},[261,1710,412],{"class":278},[261,1712,415],{"class":282},[261,1714,296],{"class":282},[261,1716,420],{"class":299},[261,1718,303],{"class":282},[261,1720,306],{"class":282},[261,1722,1723,1725,1727,1729,1731,1733,1735,1739],{"class":263,"line":326},[261,1724,430],{"class":274},[261,1726,293],{"class":282},[261,1728,435],{"class":393},[261,1730,806],{"class":282},[261,1732,394],{"class":393},[261,1734,1217],{"class":282},[261,1736,1738],{"class":1737},"sHwdD"," \u002F* ... *\u002F",[261,1740,1741],{"class":282}," },\n",[261,1743,1744,1746],{"class":263,"line":337},[261,1745,526],{"class":282},[261,1747,484],{"class":278},[150,1749,1750,1751,1753,1754,1757,1758,1760],{},"In this case, ",[154,1752,1682],{}," is loaded by auto-discovery (or dynamically) ",[159,1755,1756],{},"and"," filtered by its ",[154,1759,176],{}," guard.",[145,1762,1764],{"id":1763},"session-behavior","Session Behavior",[150,1766,1767,1768,1772,1773,1776],{},"When ",[1769,1770,1771],"a",{"href":97},"sessions"," are enabled, the MCP server is created on the ",[159,1774,1775],{},"first request"," of a session. Dynamic definitions are resolved at that point, and the same tool set persists for the session's lifetime.",[150,1778,1779],{},"This means:",[1517,1781,1782,1785,1788],{},[170,1783,1784],{},"An admin who connects gets admin tools for the entire session",[170,1786,1787],{},"A regular user who connects never sees admin tools, even if they gain admin access mid-session",[170,1789,1790],{},"Different sessions can have different tool sets",[150,1792,1793],{},"Without sessions, a new server is created per request, so definitions can vary per request.",[145,1795,1797],{"id":1796},"mid-session-mutations","Mid-Session Mutations",[150,1799,232,1800,1802,1803,1806,1807,1810,1811,1814],{},[154,1801,176],{}," guard and dynamic handler definitions control which definitions are registered ",[159,1804,1805],{},"when the session starts",". For cases where you need to add, remove, or update definitions ",[159,1808,1809],{},"during"," an active session, use the ",[154,1812,1813],{},"useMcpServer()"," composable.",[150,1816,1817,1819,1820,1823],{},[154,1818,1813],{}," returns a helper with methods to register, remove, and manage tools, prompts, and resources. The SDK automatically sends ",[154,1821,1822],{},"notifications\u002Ftools\u002Flist_changed"," (or the equivalent for prompts\u002Fresources) to the client, prompting it to re-fetch the list.",[247,1825,1827],{"id":1826},"api","API",[1829,1830,1831,1844],"table",{},[1832,1833,1834],"thead",{},[1835,1836,1837,1841],"tr",{},[1838,1839,1840],"th",{},"Method",[1838,1842,1843],{},"Description",[1845,1846,1847,1862,1875,1888,1902,1914,1926],"tbody",{},[1835,1848,1849,1855],{},[1850,1851,1852],"td",{},[154,1853,1854],{},"registerTool(name, config, handler)",[1850,1856,1857,1858,1861],{},"Register a new tool. Returns a ",[154,1859,1860],{},"RegisteredTool"," handle.",[1835,1863,1864,1869],{},[1850,1865,1866],{},[154,1867,1868],{},"registerPrompt(name, config, handler)",[1850,1870,1871,1872,1861],{},"Register a new prompt. Returns a ",[154,1873,1874],{},"RegisteredPrompt",[1835,1876,1877,1882],{},[1850,1878,1879],{},[154,1880,1881],{},"registerResource(name, uri, config, handler)",[1850,1883,1884,1885,1861],{},"Register a new resource. Returns a ",[154,1886,1887],{},"RegisteredResource",[1835,1889,1890,1895],{},[1850,1891,1892],{},[154,1893,1894],{},"removeTool(name)",[1850,1896,1897,1898,1901],{},"Remove a tool by name. Returns ",[154,1899,1900],{},"true"," if found.",[1835,1903,1904,1909],{},[1850,1905,1906],{},[154,1907,1908],{},"removePrompt(name)",[1850,1910,1911,1912,1901],{},"Remove a prompt by name. Returns ",[154,1913,1900],{},[1835,1915,1916,1921],{},[1850,1917,1918],{},[154,1919,1920],{},"removeResource(name)",[1850,1922,1923,1924,1901],{},"Remove a resource by name. Returns ",[154,1925,1900],{},[1835,1927,1928,1933],{},[1850,1929,1930],{},[154,1931,1932],{},"server",[1850,1934,1935,1936,1939],{},"The underlying ",[154,1937,1938],{},"McpServer"," instance for advanced SDK operations.",[247,1941,1943],{"id":1942},"registering-a-tool-mid-session","Registering a Tool Mid-Session",[251,1945,1948],{"className":253,"code":1946,"filename":1947,"language":256,"meta":257,"style":257},"export default defineMcpTool({\n  description: 'Create a shortcut tool for a specific query',\n  inputSchema: {\n    name: z.string().describe('Name for the shortcut tool'),\n    query: z.string().describe('The query this shortcut runs'),\n  },\n  handler: async ({ name, query }) => {\n    const mcp = useMcpServer()\n    mcp.registerTool(name, {\n      description: `Shortcut: ${query}`,\n    }, async () => {\n      const result = await runQuery(query)\n      return { content: [{ type: 'text', text: JSON.stringify(result) }] }\n    })\n    return textResult(`Shortcut \"${name}\" created`)\n  },\n})\n","server\u002Fmcp\u002Ftools\u002Fcreate-shortcut.ts",[154,1949,1950,1962,1977,1985,2018,2050,2054,2078,2092,2110,2132,2145,2166,2221,2228,2254,2258],{"__ignoreMap":257},[261,1951,1952,1954,1956,1958,1960],{"class":263,"line":264},[261,1953,268],{"class":267},[261,1955,271],{"class":267},[261,1957,275],{"class":274},[261,1959,279],{"class":278},[261,1961,283],{"class":282},[261,1963,1964,1966,1968,1970,1973,1975],{"class":263,"line":286},[261,1965,312],{"class":289},[261,1967,293],{"class":282},[261,1969,296],{"class":282},[261,1971,1972],{"class":299},"Create a shortcut tool for a specific query",[261,1974,303],{"class":282},[261,1976,306],{"class":282},[261,1978,1979,1981,1983],{"class":263,"line":309},[261,1980,329],{"class":289},[261,1982,293],{"class":282},[261,1984,334],{"class":282},[261,1986,1987,1990,1992,1994,1996,1999,2001,2003,2005,2007,2009,2012,2014,2016],{"class":263,"line":326},[261,1988,1989],{"class":289},"    name",[261,1991,293],{"class":282},[261,1993,345],{"class":278},[261,1995,228],{"class":282},[261,1997,1998],{"class":274},"string",[261,2000,353],{"class":278},[261,2002,228],{"class":282},[261,2004,358],{"class":274},[261,2006,279],{"class":278},[261,2008,303],{"class":282},[261,2010,2011],{"class":299},"Name for the shortcut tool",[261,2013,303],{"class":282},[261,2015,370],{"class":278},[261,2017,306],{"class":282},[261,2019,2020,2023,2025,2027,2029,2031,2033,2035,2037,2039,2041,2044,2046,2048],{"class":263,"line":337},[261,2021,2022],{"class":289},"    query",[261,2024,293],{"class":282},[261,2026,345],{"class":278},[261,2028,228],{"class":282},[261,2030,1998],{"class":274},[261,2032,353],{"class":278},[261,2034,228],{"class":282},[261,2036,358],{"class":274},[261,2038,279],{"class":278},[261,2040,303],{"class":282},[261,2042,2043],{"class":299},"The query this shortcut runs",[261,2045,303],{"class":282},[261,2047,370],{"class":278},[261,2049,306],{"class":282},[261,2051,2052],{"class":263,"line":375},[261,2053,378],{"class":282},[261,2055,2056,2058,2060,2062,2064,2067,2069,2072,2074,2076],{"class":263,"line":381},[261,2057,430],{"class":274},[261,2059,293],{"class":282},[261,2061,435],{"class":393},[261,2063,438],{"class":282},[261,2065,2066],{"class":389}," name",[261,2068,681],{"class":282},[261,2070,2071],{"class":389}," query",[261,2073,444],{"class":282},[261,2075,394],{"class":393},[261,2077,334],{"class":282},[261,2079,2080,2082,2085,2087,2090],{"class":263,"line":427},[261,2081,815],{"class":393},[261,2083,2084],{"class":278}," mcp",[261,2086,820],{"class":282},[261,2088,2089],{"class":274}," useMcpServer",[261,2091,496],{"class":289},[261,2093,2094,2097,2099,2102,2104,2106,2108],{"class":263,"line":451},[261,2095,2096],{"class":278},"    mcp",[261,2098,228],{"class":282},[261,2100,2101],{"class":274},"registerTool",[261,2103,279],{"class":289},[261,2105,913],{"class":278},[261,2107,681],{"class":282},[261,2109,334],{"class":282},[261,2111,2112,2115,2117,2119,2122,2124,2127,2130],{"class":263,"line":487},[261,2113,2114],{"class":289},"      description",[261,2116,293],{"class":282},[261,2118,892],{"class":282},[261,2120,2121],{"class":299},"Shortcut: ",[261,2123,898],{"class":282},[261,2125,2126],{"class":278},"query",[261,2128,2129],{"class":282},"}`",[261,2131,306],{"class":282},[261,2133,2134,2137,2139,2141,2143],{"class":263,"line":499},[261,2135,2136],{"class":282},"    },",[261,2138,435],{"class":393},[261,2140,806],{"class":282},[261,2142,394],{"class":393},[261,2144,334],{"class":282},[261,2146,2147,2150,2153,2155,2157,2160,2162,2164],{"class":263,"line":518},[261,2148,2149],{"class":393},"      const",[261,2151,2152],{"class":278}," result",[261,2154,820],{"class":282},[261,2156,689],{"class":267},[261,2158,2159],{"class":274}," runQuery",[261,2161,279],{"class":289},[261,2163,2126],{"class":278},[261,2165,484],{"class":289},[261,2167,2168,2170,2172,2175,2177,2179,2181,2184,2186,2188,2190,2192,2194,2196,2198,2201,2203,2206,2208,2211,2213,2215,2218],{"class":263,"line":523},[261,2169,1471],{"class":267},[261,2171,1217],{"class":282},[261,2173,2174],{"class":289}," content",[261,2176,293],{"class":282},[261,2178,661],{"class":289},[261,2180,664],{"class":282},[261,2182,2183],{"class":289}," type",[261,2185,293],{"class":282},[261,2187,296],{"class":282},[261,2189,878],{"class":299},[261,2191,303],{"class":282},[261,2193,681],{"class":282},[261,2195,684],{"class":289},[261,2197,293],{"class":282},[261,2199,2200],{"class":278}," JSON",[261,2202,228],{"class":282},[261,2204,2205],{"class":274},"stringify",[261,2207,279],{"class":289},[261,2209,2210],{"class":278},"result",[261,2212,466],{"class":289},[261,2214,526],{"class":282},[261,2216,2217],{"class":289},"] ",[261,2219,2220],{"class":282},"}\n",[261,2222,2223,2226],{"class":263,"line":931},[261,2224,2225],{"class":282},"    }",[261,2227,484],{"class":289},[261,2229,2230,2232,2234,2236,2238,2241,2243,2245,2247,2250,2252],{"class":263,"line":941},[261,2231,502],{"class":267},[261,2233,472],{"class":274},[261,2235,279],{"class":289},[261,2237,921],{"class":282},[261,2239,2240],{"class":299},"Shortcut \"",[261,2242,898],{"class":282},[261,2244,913],{"class":278},[261,2246,526],{"class":282},[261,2248,2249],{"class":299},"\" created",[261,2251,921],{"class":282},[261,2253,484],{"class":289},[261,2255,2256],{"class":263,"line":947},[261,2257,378],{"class":282},[261,2259,2260,2262],{"class":263,"line":952},[261,2261,526],{"class":282},[261,2263,484],{"class":278},[150,2265,2266],{},"After calling this tool, the client's tool list refreshes and includes the new shortcut.",[247,2268,2270],{"id":2269},"removing-a-tool-mid-session","Removing a Tool Mid-Session",[150,2272,2273,2274,2276],{},"Use ",[154,2275,1894],{}," to remove a tool by name -- no need to store handles:",[251,2278,2281],{"className":253,"code":2279,"filename":2280,"language":256,"meta":257,"style":257},"export const registerAgent = defineMcpTool({\n  name: 'register-agent',\n  inputSchema: {\n    agentId: z.string(),\n    agentName: z.string(),\n  },\n  handler: async ({ agentId, agentName }) => {\n    const mcp = useMcpServer()\n    mcp.registerTool(`call-${agentId}`, {\n      description: `Call agent: ${agentName}`,\n    }, async () => {\n      const response = await callAgent(agentId)\n      return { content: [{ type: 'text', text: response }] }\n    })\n    return textResult(`Agent \"${agentName}\" registered`)\n  },\n})\n\nexport const unregisterAgent = defineMcpTool({\n  name: 'unregister-agent',\n  inputSchema: {\n    agentId: z.string(),\n  },\n  handler: async ({ agentId }) => {\n    const mcp = useMcpServer()\n    const removed = mcp.removeTool(`call-${agentId}`)\n    if (removed) return textResult(`Agent \"${agentId}\" unregistered`)\n    return errorResult(`Agent \"${agentId}\" not found`)\n  },\n})\n","server\u002Fmcp\u002Ftools\u002Fmanage-agents.ts",[154,2282,2283,2302,2317,2325,2342,2359,2363,2387,2399,2425,2445,2457,2477,2515,2521,2547,2551,2557,2561,2578,2593,2601,2618,2623,2642,2655,2686,2721,2748,2753],{"__ignoreMap":257},[261,2284,2285,2287,2290,2293,2296,2298,2300],{"class":263,"line":264},[261,2286,268],{"class":267},[261,2288,2289],{"class":393}," const",[261,2291,2292],{"class":278}," registerAgent ",[261,2294,2295],{"class":282},"=",[261,2297,275],{"class":274},[261,2299,279],{"class":278},[261,2301,283],{"class":282},[261,2303,2304,2306,2308,2310,2313,2315],{"class":263,"line":286},[261,2305,290],{"class":289},[261,2307,293],{"class":282},[261,2309,296],{"class":282},[261,2311,2312],{"class":299},"register-agent",[261,2314,303],{"class":282},[261,2316,306],{"class":282},[261,2318,2319,2321,2323],{"class":263,"line":309},[261,2320,329],{"class":289},[261,2322,293],{"class":282},[261,2324,334],{"class":282},[261,2326,2327,2330,2332,2334,2336,2338,2340],{"class":263,"line":326},[261,2328,2329],{"class":289},"    agentId",[261,2331,293],{"class":282},[261,2333,345],{"class":278},[261,2335,228],{"class":282},[261,2337,1998],{"class":274},[261,2339,353],{"class":278},[261,2341,306],{"class":282},[261,2343,2344,2347,2349,2351,2353,2355,2357],{"class":263,"line":337},[261,2345,2346],{"class":289},"    agentName",[261,2348,293],{"class":282},[261,2350,345],{"class":278},[261,2352,228],{"class":282},[261,2354,1998],{"class":274},[261,2356,353],{"class":278},[261,2358,306],{"class":282},[261,2360,2361],{"class":263,"line":375},[261,2362,378],{"class":282},[261,2364,2365,2367,2369,2371,2373,2376,2378,2381,2383,2385],{"class":263,"line":381},[261,2366,430],{"class":274},[261,2368,293],{"class":282},[261,2370,435],{"class":393},[261,2372,438],{"class":282},[261,2374,2375],{"class":389}," agentId",[261,2377,681],{"class":282},[261,2379,2380],{"class":389}," agentName",[261,2382,444],{"class":282},[261,2384,394],{"class":393},[261,2386,334],{"class":282},[261,2388,2389,2391,2393,2395,2397],{"class":263,"line":427},[261,2390,815],{"class":393},[261,2392,2084],{"class":278},[261,2394,820],{"class":282},[261,2396,2089],{"class":274},[261,2398,496],{"class":289},[261,2400,2401,2403,2405,2407,2409,2411,2414,2416,2419,2421,2423],{"class":263,"line":451},[261,2402,2096],{"class":278},[261,2404,228],{"class":282},[261,2406,2101],{"class":274},[261,2408,279],{"class":289},[261,2410,921],{"class":282},[261,2412,2413],{"class":299},"call-",[261,2415,898],{"class":282},[261,2417,2418],{"class":278},"agentId",[261,2420,2129],{"class":282},[261,2422,681],{"class":282},[261,2424,334],{"class":282},[261,2426,2427,2429,2431,2433,2436,2438,2441,2443],{"class":263,"line":487},[261,2428,2114],{"class":289},[261,2430,293],{"class":282},[261,2432,892],{"class":282},[261,2434,2435],{"class":299},"Call agent: ",[261,2437,898],{"class":282},[261,2439,2440],{"class":278},"agentName",[261,2442,2129],{"class":282},[261,2444,306],{"class":282},[261,2446,2447,2449,2451,2453,2455],{"class":263,"line":499},[261,2448,2136],{"class":282},[261,2450,435],{"class":393},[261,2452,806],{"class":282},[261,2454,394],{"class":393},[261,2456,334],{"class":282},[261,2458,2459,2461,2464,2466,2468,2471,2473,2475],{"class":263,"line":518},[261,2460,2149],{"class":393},[261,2462,2463],{"class":278}," response",[261,2465,820],{"class":282},[261,2467,689],{"class":267},[261,2469,2470],{"class":274}," callAgent",[261,2472,279],{"class":289},[261,2474,2418],{"class":278},[261,2476,484],{"class":289},[261,2478,2479,2481,2483,2485,2487,2489,2491,2493,2495,2497,2499,2501,2503,2505,2507,2509,2511,2513],{"class":263,"line":523},[261,2480,1471],{"class":267},[261,2482,1217],{"class":282},[261,2484,2174],{"class":289},[261,2486,293],{"class":282},[261,2488,661],{"class":289},[261,2490,664],{"class":282},[261,2492,2183],{"class":289},[261,2494,293],{"class":282},[261,2496,296],{"class":282},[261,2498,878],{"class":299},[261,2500,303],{"class":282},[261,2502,681],{"class":282},[261,2504,684],{"class":289},[261,2506,293],{"class":282},[261,2508,2463],{"class":278},[261,2510,1223],{"class":282},[261,2512,2217],{"class":289},[261,2514,2220],{"class":282},[261,2516,2517,2519],{"class":263,"line":931},[261,2518,2225],{"class":282},[261,2520,484],{"class":289},[261,2522,2523,2525,2527,2529,2531,2534,2536,2538,2540,2543,2545],{"class":263,"line":941},[261,2524,502],{"class":267},[261,2526,472],{"class":274},[261,2528,279],{"class":289},[261,2530,921],{"class":282},[261,2532,2533],{"class":299},"Agent \"",[261,2535,898],{"class":282},[261,2537,2440],{"class":278},[261,2539,526],{"class":282},[261,2541,2542],{"class":299},"\" registered",[261,2544,921],{"class":282},[261,2546,484],{"class":289},[261,2548,2549],{"class":263,"line":947},[261,2550,378],{"class":282},[261,2552,2553,2555],{"class":263,"line":952},[261,2554,526],{"class":282},[261,2556,484],{"class":278},[261,2558,2559],{"class":263,"line":1486},[261,2560,1260],{"emptyLinePlaceholder":1259},[261,2562,2563,2565,2567,2570,2572,2574,2576],{"class":263,"line":1491},[261,2564,268],{"class":267},[261,2566,2289],{"class":393},[261,2568,2569],{"class":278}," unregisterAgent ",[261,2571,2295],{"class":282},[261,2573,275],{"class":274},[261,2575,279],{"class":278},[261,2577,283],{"class":282},[261,2579,2580,2582,2584,2586,2589,2591],{"class":263,"line":1503},[261,2581,290],{"class":289},[261,2583,293],{"class":282},[261,2585,296],{"class":282},[261,2587,2588],{"class":299},"unregister-agent",[261,2590,303],{"class":282},[261,2592,306],{"class":282},[261,2594,2595,2597,2599],{"class":263,"line":1508},[261,2596,329],{"class":289},[261,2598,293],{"class":282},[261,2600,334],{"class":282},[261,2602,2604,2606,2608,2610,2612,2614,2616],{"class":263,"line":2603},22,[261,2605,2329],{"class":289},[261,2607,293],{"class":282},[261,2609,345],{"class":278},[261,2611,228],{"class":282},[261,2613,1998],{"class":274},[261,2615,353],{"class":278},[261,2617,306],{"class":282},[261,2619,2621],{"class":263,"line":2620},23,[261,2622,378],{"class":282},[261,2624,2626,2628,2630,2632,2634,2636,2638,2640],{"class":263,"line":2625},24,[261,2627,430],{"class":274},[261,2629,293],{"class":282},[261,2631,435],{"class":393},[261,2633,438],{"class":282},[261,2635,2375],{"class":389},[261,2637,444],{"class":282},[261,2639,394],{"class":393},[261,2641,334],{"class":282},[261,2643,2645,2647,2649,2651,2653],{"class":263,"line":2644},25,[261,2646,815],{"class":393},[261,2648,2084],{"class":278},[261,2650,820],{"class":282},[261,2652,2089],{"class":274},[261,2654,496],{"class":289},[261,2656,2658,2660,2663,2665,2667,2669,2672,2674,2676,2678,2680,2682,2684],{"class":263,"line":2657},26,[261,2659,815],{"class":393},[261,2661,2662],{"class":278}," removed",[261,2664,820],{"class":282},[261,2666,2084],{"class":278},[261,2668,228],{"class":282},[261,2670,2671],{"class":274},"removeTool",[261,2673,279],{"class":289},[261,2675,921],{"class":282},[261,2677,2413],{"class":299},[261,2679,898],{"class":282},[261,2681,2418],{"class":278},[261,2683,2129],{"class":282},[261,2685,484],{"class":289},[261,2687,2689,2691,2693,2696,2698,2700,2702,2704,2706,2708,2710,2712,2714,2717,2719],{"class":263,"line":2688},27,[261,2690,454],{"class":267},[261,2692,457],{"class":289},[261,2694,2695],{"class":278},"removed",[261,2697,466],{"class":289},[261,2699,469],{"class":267},[261,2701,472],{"class":274},[261,2703,279],{"class":289},[261,2705,921],{"class":282},[261,2707,2533],{"class":299},[261,2709,898],{"class":282},[261,2711,2418],{"class":278},[261,2713,526],{"class":282},[261,2715,2716],{"class":299},"\" unregistered",[261,2718,921],{"class":282},[261,2720,484],{"class":289},[261,2722,2724,2726,2729,2731,2733,2735,2737,2739,2741,2744,2746],{"class":263,"line":2723},28,[261,2725,502],{"class":267},[261,2727,2728],{"class":274}," errorResult",[261,2730,279],{"class":289},[261,2732,921],{"class":282},[261,2734,2533],{"class":299},[261,2736,898],{"class":282},[261,2738,2418],{"class":278},[261,2740,526],{"class":282},[261,2742,2743],{"class":299},"\" not found",[261,2745,921],{"class":282},[261,2747,484],{"class":289},[261,2749,2751],{"class":263,"line":2750},29,[261,2752,378],{"class":282},[261,2754,2756,2758],{"class":263,"line":2755},30,[261,2757,526],{"class":282},[261,2759,484],{"class":278},[247,2761,2763],{"id":2762},"updating-and-toggling-definitions","Updating and Toggling Definitions",[150,2765,2766,2767,2769,2770,293],{},"For in-place updates, use the ",[154,2768,1860],{}," handle returned by ",[154,2771,2772],{},"registerTool()",[251,2774,2776],{"className":253,"code":2775,"language":256,"meta":257,"style":257},"const mcp = useMcpServer()\nconst registered = mcp.registerTool('my-tool', { description: 'v1' }, handler)\n\n\u002F\u002F Update the description and handler\nregistered.update({ description: 'v2', callback: newHandler })\n\n\u002F\u002F Temporarily hide from the client\nregistered.disable()\n\n\u002F\u002F Re-enable\nregistered.enable()\n",[154,2777,2778,2792,2838,2842,2847,2886,2890,2895,2906,2910,2915],{"__ignoreMap":257},[261,2779,2780,2783,2786,2788,2790],{"class":263,"line":264},[261,2781,2782],{"class":393},"const",[261,2784,2785],{"class":278}," mcp ",[261,2787,2295],{"class":282},[261,2789,2089],{"class":274},[261,2791,496],{"class":278},[261,2793,2794,2796,2799,2801,2803,2805,2807,2809,2811,2814,2816,2818,2820,2823,2825,2827,2830,2832,2835],{"class":263,"line":286},[261,2795,2782],{"class":393},[261,2797,2798],{"class":278}," registered ",[261,2800,2295],{"class":282},[261,2802,2084],{"class":278},[261,2804,228],{"class":282},[261,2806,2101],{"class":274},[261,2808,279],{"class":278},[261,2810,303],{"class":282},[261,2812,2813],{"class":299},"my-tool",[261,2815,303],{"class":282},[261,2817,681],{"class":282},[261,2819,1217],{"class":282},[261,2821,2822],{"class":289}," description",[261,2824,293],{"class":282},[261,2826,296],{"class":282},[261,2828,2829],{"class":299},"v1",[261,2831,303],{"class":282},[261,2833,2834],{"class":282}," },",[261,2836,2837],{"class":278}," handler)\n",[261,2839,2840],{"class":263,"line":309},[261,2841,1260],{"emptyLinePlaceholder":1259},[261,2843,2844],{"class":263,"line":326},[261,2845,2846],{"class":1737},"\u002F\u002F Update the description and handler\n",[261,2848,2849,2852,2854,2857,2859,2861,2863,2865,2867,2870,2872,2874,2877,2879,2882,2884],{"class":263,"line":337},[261,2850,2851],{"class":278},"registered",[261,2853,228],{"class":282},[261,2855,2856],{"class":274},"update",[261,2858,279],{"class":278},[261,2860,664],{"class":282},[261,2862,2822],{"class":289},[261,2864,293],{"class":282},[261,2866,296],{"class":282},[261,2868,2869],{"class":299},"v2",[261,2871,303],{"class":282},[261,2873,681],{"class":282},[261,2875,2876],{"class":289}," callback",[261,2878,293],{"class":282},[261,2880,2881],{"class":278}," newHandler ",[261,2883,526],{"class":282},[261,2885,484],{"class":278},[261,2887,2888],{"class":263,"line":375},[261,2889,1260],{"emptyLinePlaceholder":1259},[261,2891,2892],{"class":263,"line":381},[261,2893,2894],{"class":1737},"\u002F\u002F Temporarily hide from the client\n",[261,2896,2897,2899,2901,2904],{"class":263,"line":427},[261,2898,2851],{"class":278},[261,2900,228],{"class":282},[261,2902,2903],{"class":274},"disable",[261,2905,496],{"class":278},[261,2907,2908],{"class":263,"line":451},[261,2909,1260],{"emptyLinePlaceholder":1259},[261,2911,2912],{"class":263,"line":487},[261,2913,2914],{"class":1737},"\u002F\u002F Re-enable\n",[261,2916,2917,2919,2921,2924],{"class":263,"line":499},[261,2918,2851],{"class":278},[261,2920,228],{"class":282},[261,2922,2923],{"class":274},"enable",[261,2925,496],{"class":278},[150,2927,2928,2929,2932,2933,2936],{},"The same pattern applies to ",[154,2930,2931],{},"registerPrompt()"," and ",[154,2934,2935],{},"registerResource()",", which return handles with the same methods.",[247,2938,2940],{"id":2939},"requirements","Requirements",[1517,2942,2943,2957],{},[170,2944,2945,2950,2951,2953,2954,2956],{},[159,2946,2947],{},[154,2948,2949],{},"nitro.experimental.asyncContext"," must be ",[154,2952,1900],{}," in your Nuxt config (required for ",[154,2955,1813],{}," to access the request context)",[170,2958,2959,2960,2963],{},"Mid-session mutations are most useful with ",[159,2961,2962],{},"sessions enabled",", since the server instance persists across requests. Without sessions, each request creates a fresh server, so mutations only last for a single request.",[201,2965,2968,2969,2971],{"color":2966,"icon":2967},"warning","i-lucide-triangle-alert","Not all MCP clients support ",[154,2970,1822],{},". If a client doesn't support it, the user may need to reconnect to see updated definitions. Check your client's documentation for compatibility.",[145,2973,81],{"id":256},[150,2975,2976],{},"For type-safe context, extend the H3 event context:",[251,2978,2981],{"className":253,"code":2979,"filename":2980,"language":256,"meta":257,"style":257},"declare module 'h3' {\n  interface H3EventContext {\n    user?: {\n      id: string\n      name: string\n      role: 'user' | 'admin'\n    }\n  }\n}\n","server\u002Ftypes.ts",[154,2982,2983,2999,3010,3020,3030,3039,3061,3065,3070],{"__ignoreMap":257},[261,2984,2985,2988,2991,2993,2995,2997],{"class":263,"line":264},[261,2986,2987],{"class":393},"declare",[261,2989,2990],{"class":393}," module",[261,2992,296],{"class":282},[261,2994,247],{"class":299},[261,2996,303],{"class":282},[261,2998,334],{"class":282},[261,3000,3001,3004,3008],{"class":263,"line":286},[261,3002,3003],{"class":393},"  interface",[261,3005,3007],{"class":3006},"sBMFI"," H3EventContext",[261,3009,334],{"class":282},[261,3011,3012,3015,3018],{"class":263,"line":309},[261,3013,3014],{"class":289},"    user",[261,3016,3017],{"class":282},"?:",[261,3019,334],{"class":282},[261,3021,3022,3025,3027],{"class":263,"line":326},[261,3023,3024],{"class":289},"      id",[261,3026,293],{"class":282},[261,3028,3029],{"class":3006}," string\n",[261,3031,3032,3035,3037],{"class":263,"line":337},[261,3033,3034],{"class":289},"      name",[261,3036,293],{"class":282},[261,3038,3029],{"class":3006},[261,3040,3041,3044,3046,3048,3050,3052,3055,3057,3059],{"class":263,"line":375},[261,3042,3043],{"class":289},"      role",[261,3045,293],{"class":282},[261,3047,296],{"class":282},[261,3049,406],{"class":299},[261,3051,303],{"class":282},[261,3053,3054],{"class":282}," |",[261,3056,296],{"class":282},[261,3058,420],{"class":299},[261,3060,1234],{"class":282},[261,3062,3063],{"class":263,"line":381},[261,3064,944],{"class":282},[261,3066,3067],{"class":263,"line":427},[261,3068,3069],{"class":282},"  }\n",[261,3071,3072],{"class":263,"line":451},[261,3073,2220],{"class":282},[145,3075,3077],{"id":3076},"next-steps","Next Steps",[1517,3079,3080,3085,3090],{},[170,3081,3082,3084],{},[1769,3083,76],{"href":77}," — Set up authentication context",[170,3086,3087,3089],{},[1769,3088,96],{"href":97}," — Enable per-session state",[170,3091,3092,3094],{},[1769,3093,61],{"href":62}," — Create custom MCP endpoints",[3096,3097,3098],"style",{},"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 .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}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 .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":257,"searchDepth":286,"depth":286,"links":3100},[3101,3102,3109,3110,3111,3112,3119,3120],{"id":147,"depth":286,"text":148},{"id":231,"depth":286,"text":3103,"children":3104},"The enabled Guard",[3105,3106,3107,3108],{"id":249,"depth":309,"text":46},{"id":531,"depth":309,"text":51},{"id":720,"depth":309,"text":56},{"id":959,"depth":309,"text":960},{"id":1185,"depth":286,"text":1186},{"id":1530,"depth":286,"text":1531},{"id":1763,"depth":286,"text":1764},{"id":1796,"depth":286,"text":1797,"children":3113},[3114,3115,3116,3117,3118],{"id":1826,"depth":309,"text":1827},{"id":1942,"depth":309,"text":1943},{"id":2269,"depth":309,"text":2270},{"id":2762,"depth":309,"text":2763},{"id":2939,"depth":309,"text":2940},{"id":256,"depth":286,"text":81},{"id":3076,"depth":286,"text":3077},"Conditionally register tools, resources, and prompts based on authentication, roles, or request context.","md",null,{},{"icon":104},{"title":3127,"description":3128},"Dynamic MCP Definitions","Control which MCP tools, resources, and prompts are visible per session using enabled guards and dynamic handlers.","WAuhvF7EZHQ_QsAZ3qimPB89cNbk5xK3rbZBNJ1_J-8",[3131,3133],{"title":96,"path":97,"stem":98,"description":3132,"icon":99,"children":-1},"Persist per-session state across tool calls with useMcpSession().",{"title":106,"path":107,"stem":108,"description":3134,"icon":109,"children":-1},"Let LLMs orchestrate multiple tool calls in a single JavaScript execution.",1773932611064]