[{"data":1,"prerenderedAt":1887},["ShallowReactive",2],{"navigation_docs":3,"-advanced-listing-definitions":287,"-advanced-listing-definitions-surround":1882},[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":210,"body":289,"description":1873,"extension":1874,"links":1875,"meta":1876,"navigation":1877,"path":211,"seo":1878,"stem":212,"__hash__":1881},"docs\u002F7.advanced\u002F12.listing-definitions.md",{"type":290,"value":291,"toc":1856},"minimark",[292,296,315,326,433,465,493,497,502,512,880,884,887,1007,1011,1018,1121,1127,1139,1186,1190,1201,1285,1289,1299,1457,1461,1474,1584,1588,1591,1658,1662,1673,1815,1826,1830,1852],[293,294,46],"h2",{"id":295},"overview",[297,298,299,300,304,305,314],"p",{},"The toolkit auto-discovers every tool, resource, and prompt under ",[301,302,303],"code",{},"server\u002Fmcp\u002F",". From your own server routes you sometimes need to read that catalog back — to render an ",[306,307,311],"a",{"href":308,"rel":309},"https:\u002F\u002Fmodelcontextprotocol.io\u002Fspecification\u002F2025-11-25\u002Fbasic\u002Fserver-cards",[310],"nofollow",[301,312,313],{},"\u002F.well-known\u002Fmcp\u002Fserver-card.json",", an admin dashboard, an API catalog, or a sitemap.",[297,316,317,318,321,322,325],{},"Use the ",[301,319,320],{},"listMcp*"," helpers from ",[301,323,324],{},"@nuxtjs\u002Fmcp-toolkit\u002Fserver"," to get JSON-friendly summaries of every discovered definition without duplicating their names and descriptions in your own code.",[327,328,329,342],"table",{},[330,331,332],"thead",{},[333,334,335,339],"tr",{},[336,337,338],"th",{},"Helper",[336,340,341],{},"Returns",[343,344,345,359,371,383,395,408,421],"tbody",{},[333,346,347,353],{},[348,349,350],"td",{},[301,351,352],{},"listMcpTools(options?)",[348,354,355,358],{},[301,356,357],{},"McpToolSummary[]"," (JSON-friendly)",[333,360,361,366],{},[348,362,363],{},[301,364,365],{},"listMcpResources(options?)",[348,367,368,358],{},[301,369,370],{},"McpResourceSummary[]",[333,372,373,378],{},[348,374,375],{},[301,376,377],{},"listMcpPrompts(options?)",[348,379,380,358],{},[301,381,382],{},"McpPromptSummary[]",[333,384,385,390],{},[348,386,387],{},[301,388,389],{},"listMcpDefinitions(options?)",[348,391,392],{},[301,393,394],{},"{ tools, resources, prompts }",[333,396,397,402],{},[348,398,399],{},[301,400,401],{},"getMcpTools(options?)",[348,403,404,407],{},[301,405,406],{},"McpToolDefinitionListItem[]"," (raw, with handlers + Zod schemas)",[333,409,410,415],{},[348,411,412],{},[301,413,414],{},"getMcpResources(options?)",[348,416,417,420],{},[301,418,419],{},"McpResourceDefinition[]"," (raw)",[333,422,423,428],{},[348,424,425],{},[301,426,427],{},"getMcpPrompts(options?)",[348,429,430,420],{},[301,431,432],{},"McpPromptDefinition[]",[297,434,435,436,439,440,439,443,439,446,439,449,452,453,456,457,460,461,464],{},"Each summary contains ",[301,437,438],{},"name",", ",[301,441,442],{},"title",[301,444,445],{},"description",[301,447,448],{},"group",[301,450,451],{},"tags",", and ",[301,454,455],{},"handler"," (plus ",[301,458,459],{},"uri"," for resources). Names auto-generated from the filename are already resolved, so what you get matches exactly what the MCP client sees in ",[301,462,463],{},"tools\u002Flist",".",[466,467,470,471,473,474,478,479,482,483,486,487,464],"callout",{"color":468,"icon":469},"info","i-lucide-info","Use ",[301,472,320],{}," for ",[475,476,477],"strong",{},"summaries"," (JSON catalog endpoints). Use ",[301,480,481],{},"getMcp*"," to feed ",[475,484,485],{},"raw definitions"," back into ",[306,488,490],{"href":489},"\u002Fhandlers\u002Forganization#b-function-form-the-escape-hatch",[301,491,492],{},"defineMcpHandler({ tools: ev => getMcpTools(...) })",[293,494,496],{"id":495},"usage","Usage",[498,499,501],"h3",{"id":500},"server-card","Server card",[297,503,504,505,511],{},"Expose the toolkit's catalog as a ",[306,506,508],{"href":308,"rel":507},[310],[301,509,510],{},"server-card.json"," so other agents can discover what your server provides:",[513,514,520],"pre",{"className":515,"code":516,"filename":517,"language":518,"meta":519,"style":519},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { listMcpDefinitions } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\nexport default defineEventHandler(async (event) => {\n  const { tools, resources, prompts } = await listMcpDefinitions({ event })\n  return {\n    name: 'My MCP Server',\n    description: 'Tools, resources and prompts exposed by my Nuxt app.',\n    tools: tools.map(t => ({ name: t.name, description: t.description })),\n    resources: resources.map(r => ({ name: r.name, uri: r.uri, description: r.description })),\n    prompts: prompts.map(p => ({ name: p.name, description: p.description })),\n  }\n})\n","server\u002Froutes\u002F.well-known\u002Fmcp\u002Fserver-card.json.get.ts","typescript","",[301,521,522,554,561,597,643,651,671,688,746,813,866,872],{"__ignoreMap":519},[523,524,527,531,535,539,542,545,548,551],"span",{"class":525,"line":526},"line",1,[523,528,530],{"class":529},"s7zQu","import",[523,532,534],{"class":533},"sMK4o"," {",[523,536,538],{"class":537},"sTEyZ"," listMcpDefinitions",[523,540,541],{"class":533}," }",[523,543,544],{"class":529}," from",[523,546,547],{"class":533}," '",[523,549,324],{"class":550},"sfazB",[523,552,553],{"class":533},"'\n",[523,555,557],{"class":525,"line":556},2,[523,558,560],{"emptyLinePlaceholder":559},true,"\n",[523,562,564,567,570,574,577,581,584,588,591,594],{"class":525,"line":563},3,[523,565,566],{"class":529},"export",[523,568,569],{"class":529}," default",[523,571,573],{"class":572},"s2Zo4"," defineEventHandler",[523,575,576],{"class":537},"(",[523,578,580],{"class":579},"spNyl","async",[523,582,583],{"class":533}," (",[523,585,587],{"class":586},"sHdIc","event",[523,589,590],{"class":533},")",[523,592,593],{"class":579}," =>",[523,595,596],{"class":533}," {\n",[523,598,600,603,605,608,611,614,616,619,621,624,627,629,632,635,638,640],{"class":525,"line":599},4,[523,601,602],{"class":579},"  const",[523,604,534],{"class":533},[523,606,607],{"class":537}," tools",[523,609,610],{"class":533},",",[523,612,613],{"class":537}," resources",[523,615,610],{"class":533},[523,617,618],{"class":537}," prompts",[523,620,541],{"class":533},[523,622,623],{"class":533}," =",[523,625,626],{"class":529}," await",[523,628,538],{"class":572},[523,630,576],{"class":631},"swJcz",[523,633,634],{"class":533},"{",[523,636,637],{"class":537}," event",[523,639,541],{"class":533},[523,641,642],{"class":631},")\n",[523,644,646,649],{"class":525,"line":645},5,[523,647,648],{"class":529},"  return",[523,650,596],{"class":533},[523,652,654,657,660,662,665,668],{"class":525,"line":653},6,[523,655,656],{"class":631},"    name",[523,658,659],{"class":533},":",[523,661,547],{"class":533},[523,663,664],{"class":550},"My MCP Server",[523,666,667],{"class":533},"'",[523,669,670],{"class":533},",\n",[523,672,674,677,679,681,684,686],{"class":525,"line":673},7,[523,675,676],{"class":631},"    description",[523,678,659],{"class":533},[523,680,547],{"class":533},[523,682,683],{"class":550},"Tools, resources and prompts exposed by my Nuxt app.",[523,685,667],{"class":533},[523,687,670],{"class":533},[523,689,691,694,696,698,700,703,705,708,710,712,714,717,719,722,724,726,728,731,733,735,737,739,741,744],{"class":525,"line":690},8,[523,692,693],{"class":631},"    tools",[523,695,659],{"class":533},[523,697,607],{"class":537},[523,699,464],{"class":533},[523,701,702],{"class":572},"map",[523,704,576],{"class":631},[523,706,707],{"class":586},"t",[523,709,593],{"class":579},[523,711,583],{"class":631},[523,713,634],{"class":533},[523,715,716],{"class":631}," name",[523,718,659],{"class":533},[523,720,721],{"class":537}," t",[523,723,464],{"class":533},[523,725,438],{"class":537},[523,727,610],{"class":533},[523,729,730],{"class":631}," description",[523,732,659],{"class":533},[523,734,721],{"class":537},[523,736,464],{"class":533},[523,738,445],{"class":537},[523,740,541],{"class":533},[523,742,743],{"class":631},"))",[523,745,670],{"class":533},[523,747,749,752,754,756,758,760,762,765,767,769,771,773,775,778,780,782,784,787,789,791,793,795,797,799,801,803,805,807,809,811],{"class":525,"line":748},9,[523,750,751],{"class":631},"    resources",[523,753,659],{"class":533},[523,755,613],{"class":537},[523,757,464],{"class":533},[523,759,702],{"class":572},[523,761,576],{"class":631},[523,763,764],{"class":586},"r",[523,766,593],{"class":579},[523,768,583],{"class":631},[523,770,634],{"class":533},[523,772,716],{"class":631},[523,774,659],{"class":533},[523,776,777],{"class":537}," r",[523,779,464],{"class":533},[523,781,438],{"class":537},[523,783,610],{"class":533},[523,785,786],{"class":631}," uri",[523,788,659],{"class":533},[523,790,777],{"class":537},[523,792,464],{"class":533},[523,794,459],{"class":537},[523,796,610],{"class":533},[523,798,730],{"class":631},[523,800,659],{"class":533},[523,802,777],{"class":537},[523,804,464],{"class":533},[523,806,445],{"class":537},[523,808,541],{"class":533},[523,810,743],{"class":631},[523,812,670],{"class":533},[523,814,816,819,821,823,825,827,829,831,833,835,837,839,841,844,846,848,850,852,854,856,858,860,862,864],{"class":525,"line":815},10,[523,817,818],{"class":631},"    prompts",[523,820,659],{"class":533},[523,822,618],{"class":537},[523,824,464],{"class":533},[523,826,702],{"class":572},[523,828,576],{"class":631},[523,830,297],{"class":586},[523,832,593],{"class":579},[523,834,583],{"class":631},[523,836,634],{"class":533},[523,838,716],{"class":631},[523,840,659],{"class":533},[523,842,843],{"class":537}," p",[523,845,464],{"class":533},[523,847,438],{"class":537},[523,849,610],{"class":533},[523,851,730],{"class":631},[523,853,659],{"class":533},[523,855,843],{"class":537},[523,857,464],{"class":533},[523,859,445],{"class":537},[523,861,541],{"class":533},[523,863,743],{"class":631},[523,865,670],{"class":533},[523,867,869],{"class":525,"line":868},11,[523,870,871],{"class":533},"  }\n",[523,873,875,878],{"class":525,"line":874},12,[523,876,877],{"class":533},"}",[523,879,642],{"class":537},[498,881,883],{"id":882},"tool-catalog","Tool catalog",[297,885,886],{},"Render a public list of available tools, optionally grouped:",[513,888,891],{"className":515,"code":889,"filename":890,"language":518,"meta":519,"style":519},"import { listMcpTools } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\nexport default defineEventHandler(async (event) => {\n  const tools = await listMcpTools({ event })\n  return Object.groupBy(tools, t => t.group ?? 'default')\n})\n","server\u002Fapi\u002Ftools.get.ts",[301,892,893,912,916,938,960,1001],{"__ignoreMap":519},[523,894,895,897,899,902,904,906,908,910],{"class":525,"line":526},[523,896,530],{"class":529},[523,898,534],{"class":533},[523,900,901],{"class":537}," listMcpTools",[523,903,541],{"class":533},[523,905,544],{"class":529},[523,907,547],{"class":533},[523,909,324],{"class":550},[523,911,553],{"class":533},[523,913,914],{"class":525,"line":556},[523,915,560],{"emptyLinePlaceholder":559},[523,917,918,920,922,924,926,928,930,932,934,936],{"class":525,"line":563},[523,919,566],{"class":529},[523,921,569],{"class":529},[523,923,573],{"class":572},[523,925,576],{"class":537},[523,927,580],{"class":579},[523,929,583],{"class":533},[523,931,587],{"class":586},[523,933,590],{"class":533},[523,935,593],{"class":579},[523,937,596],{"class":533},[523,939,940,942,944,946,948,950,952,954,956,958],{"class":525,"line":599},[523,941,602],{"class":579},[523,943,607],{"class":537},[523,945,623],{"class":533},[523,947,626],{"class":529},[523,949,901],{"class":572},[523,951,576],{"class":631},[523,953,634],{"class":533},[523,955,637],{"class":537},[523,957,541],{"class":533},[523,959,642],{"class":631},[523,961,962,964,967,969,972,974,977,979,981,983,985,987,989,992,994,997,999],{"class":525,"line":645},[523,963,648],{"class":529},[523,965,966],{"class":537}," Object",[523,968,464],{"class":533},[523,970,971],{"class":572},"groupBy",[523,973,576],{"class":631},[523,975,976],{"class":537},"tools",[523,978,610],{"class":533},[523,980,721],{"class":586},[523,982,593],{"class":579},[523,984,721],{"class":537},[523,986,464],{"class":533},[523,988,448],{"class":537},[523,990,991],{"class":533}," ??",[523,993,547],{"class":533},[523,995,996],{"class":550},"default",[523,998,667],{"class":533},[523,1000,642],{"class":631},[523,1002,1003,1005],{"class":525,"line":653},[523,1004,877],{"class":533},[523,1006,642],{"class":537},[293,1008,1010],{"id":1009},"options","Options",[297,1012,1013,1014,1017],{},"Every helper accepts the same ",[301,1015,1016],{},"ListMcpDefinitionsOptions"," object. All keys are optional and combine with AND semantics — a definition must pass every active filter.",[327,1019,1020,1033],{},[330,1021,1022],{},[333,1023,1024,1027,1030],{},[336,1025,1026],{},"Option",[336,1028,1029],{},"Type",[336,1031,1032],{},"Description",[343,1034,1035,1057,1074,1087,1104],{},[333,1036,1037,1041,1046],{},[348,1038,1039],{},[301,1040,587],{},[348,1042,1043],{},[301,1044,1045],{},"H3Event",[348,1047,1048,1049,1056],{},"Apply per-definition ",[306,1050,1052,1055],{"href":1051},"\u002Fadvanced\u002Fdynamic-definitions#the-enabled-guard",[301,1053,1054],{},"enabled()"," guards"," using the request context.",[333,1058,1059,1063,1068],{},[348,1060,1061],{},[301,1062,448],{},[348,1064,1065],{},[301,1066,1067],{},"string | string[]",[348,1069,1070,1071,1073],{},"Keep only definitions whose ",[306,1072,448],{"href":67}," matches one of these (OR).",[333,1075,1076,1080,1084],{},[348,1077,1078],{},[301,1079,451],{},[348,1081,1082],{},[301,1083,1067],{},[348,1085,1086],{},"Keep only definitions tagged with at least one of these (OR).",[333,1088,1089,1093,1097],{},[348,1090,1091],{},[301,1092,455],{},[348,1094,1095],{},[301,1096,1067],{},[348,1098,1099,1100,464],{},"Keep only definitions attached to one of these named handlers via ",[306,1101,1103],{"href":1102},"\u002Fhandlers\u002Forganization#a-folder-convention-the-way-to-attribute","folder convention",[333,1105,1106,1111,1116],{},[348,1107,1108],{},[301,1109,1110],{},"orphansOnly",[348,1112,1113],{},[301,1114,1115],{},"boolean",[348,1117,1118,1119,464],{},"Return only orphan definitions (those not attached to any named handler). Mutually exclusive with ",[301,1120,455],{},[498,1122,1124,1125],{"id":1123},"filter-by-enabled","Filter by ",[301,1126,1054],{},[297,1128,1129,1130,1132,1133,1136,1137,659],{},"Pass the current ",[301,1131,1045],{}," to apply per-definition ",[301,1134,1135],{},"enabled"," guards. Definitions hidden for the current request are excluded so the catalog you expose matches what the request would actually see in ",[301,1138,463],{},[513,1140,1142],{"className":515,"code":1141,"language":518,"meta":519,"style":519},"const all = await listMcpTools()\nconst visible = await listMcpTools({ event })\n",[301,1143,1144,1162],{"__ignoreMap":519},[523,1145,1146,1149,1152,1155,1157,1159],{"class":525,"line":526},[523,1147,1148],{"class":579},"const",[523,1150,1151],{"class":537}," all ",[523,1153,1154],{"class":533},"=",[523,1156,626],{"class":529},[523,1158,901],{"class":572},[523,1160,1161],{"class":537},"()\n",[523,1163,1164,1166,1169,1171,1173,1175,1177,1179,1182,1184],{"class":525,"line":556},[523,1165,1148],{"class":579},[523,1167,1168],{"class":537}," visible ",[523,1170,1154],{"class":533},[523,1172,626],{"class":529},[523,1174,901],{"class":572},[523,1176,576],{"class":537},[523,1178,634],{"class":533},[523,1180,1181],{"class":537}," event ",[523,1183,877],{"class":533},[523,1185,642],{"class":537},[498,1187,1189],{"id":1188},"filter-by-group","Filter by group",[297,1191,1192,1193,1196,1197,1200],{},"Auto-inferred from the directory structure (e.g. ",[301,1194,1195],{},"server\u002Fmcp\u002Ftools\u002Fadmin\u002Ffoo.ts"," → ",[301,1198,1199],{},"'admin'",") or set explicitly on the definition.",[513,1202,1204],{"className":515,"code":1203,"language":518,"meta":519,"style":519},"const adminTools = await listMcpTools({ group: 'admin' })\nconst adminOrContent = await listMcpTools({ group: ['admin', 'content'] })\n",[301,1205,1206,1239],{"__ignoreMap":519},[523,1207,1208,1210,1213,1215,1217,1219,1221,1223,1226,1228,1230,1233,1235,1237],{"class":525,"line":526},[523,1209,1148],{"class":579},[523,1211,1212],{"class":537}," adminTools ",[523,1214,1154],{"class":533},[523,1216,626],{"class":529},[523,1218,901],{"class":572},[523,1220,576],{"class":537},[523,1222,634],{"class":533},[523,1224,1225],{"class":631}," group",[523,1227,659],{"class":533},[523,1229,547],{"class":533},[523,1231,1232],{"class":550},"admin",[523,1234,667],{"class":533},[523,1236,541],{"class":533},[523,1238,642],{"class":537},[523,1240,1241,1243,1246,1248,1250,1252,1254,1256,1258,1260,1263,1265,1267,1269,1271,1273,1276,1278,1281,1283],{"class":525,"line":556},[523,1242,1148],{"class":579},[523,1244,1245],{"class":537}," adminOrContent ",[523,1247,1154],{"class":533},[523,1249,626],{"class":529},[523,1251,901],{"class":572},[523,1253,576],{"class":537},[523,1255,634],{"class":533},[523,1257,1225],{"class":631},[523,1259,659],{"class":533},[523,1261,1262],{"class":537}," [",[523,1264,667],{"class":533},[523,1266,1232],{"class":550},[523,1268,667],{"class":533},[523,1270,610],{"class":533},[523,1272,547],{"class":533},[523,1274,1275],{"class":550},"content",[523,1277,667],{"class":533},[523,1279,1280],{"class":537},"] ",[523,1282,877],{"class":533},[523,1284,642],{"class":537},[498,1286,1288],{"id":1287},"filter-by-tags","Filter by tags",[297,1290,1291,1292,1295,1296,464],{},"Tags use OR-match — pass several to widen the result. To require ",[475,1293,1294],{},"every"," listed tag (AND), post-filter the result with ",[301,1297,1298],{},"Array.filter",[513,1300,1302],{"className":515,"code":1301,"language":518,"meta":519,"style":519},"const publicTools = await listMcpTools({ tags: 'public' })\nconst publicOrDocs = await listMcpTools({ tags: ['public', 'docs'] })\n\nconst publicAndStable = (await listMcpTools({ tags: 'public' }))\n  .filter(t => t.tags?.includes('stable'))\n",[301,1303,1304,1337,1381,1385,1420],{"__ignoreMap":519},[523,1305,1306,1308,1311,1313,1315,1317,1319,1321,1324,1326,1328,1331,1333,1335],{"class":525,"line":526},[523,1307,1148],{"class":579},[523,1309,1310],{"class":537}," publicTools ",[523,1312,1154],{"class":533},[523,1314,626],{"class":529},[523,1316,901],{"class":572},[523,1318,576],{"class":537},[523,1320,634],{"class":533},[523,1322,1323],{"class":631}," tags",[523,1325,659],{"class":533},[523,1327,547],{"class":533},[523,1329,1330],{"class":550},"public",[523,1332,667],{"class":533},[523,1334,541],{"class":533},[523,1336,642],{"class":537},[523,1338,1339,1341,1344,1346,1348,1350,1352,1354,1356,1358,1360,1362,1364,1366,1368,1370,1373,1375,1377,1379],{"class":525,"line":556},[523,1340,1148],{"class":579},[523,1342,1343],{"class":537}," publicOrDocs ",[523,1345,1154],{"class":533},[523,1347,626],{"class":529},[523,1349,901],{"class":572},[523,1351,576],{"class":537},[523,1353,634],{"class":533},[523,1355,1323],{"class":631},[523,1357,659],{"class":533},[523,1359,1262],{"class":537},[523,1361,667],{"class":533},[523,1363,1330],{"class":550},[523,1365,667],{"class":533},[523,1367,610],{"class":533},[523,1369,547],{"class":533},[523,1371,1372],{"class":550},"docs",[523,1374,667],{"class":533},[523,1376,1280],{"class":537},[523,1378,877],{"class":533},[523,1380,642],{"class":537},[523,1382,1383],{"class":525,"line":563},[523,1384,560],{"emptyLinePlaceholder":559},[523,1386,1387,1389,1392,1394,1396,1399,1401,1403,1405,1407,1409,1411,1413,1415,1417],{"class":525,"line":599},[523,1388,1148],{"class":579},[523,1390,1391],{"class":537}," publicAndStable ",[523,1393,1154],{"class":533},[523,1395,583],{"class":537},[523,1397,1398],{"class":529},"await",[523,1400,901],{"class":572},[523,1402,576],{"class":537},[523,1404,634],{"class":533},[523,1406,1323],{"class":631},[523,1408,659],{"class":533},[523,1410,547],{"class":533},[523,1412,1330],{"class":550},[523,1414,667],{"class":533},[523,1416,541],{"class":533},[523,1418,1419],{"class":537},"))\n",[523,1421,1422,1425,1428,1430,1432,1434,1436,1438,1440,1443,1446,1448,1450,1453,1455],{"class":525,"line":645},[523,1423,1424],{"class":533},"  .",[523,1426,1427],{"class":572},"filter",[523,1429,576],{"class":537},[523,1431,707],{"class":586},[523,1433,593],{"class":579},[523,1435,721],{"class":537},[523,1437,464],{"class":533},[523,1439,451],{"class":537},[523,1441,1442],{"class":533},"?.",[523,1444,1445],{"class":572},"includes",[523,1447,576],{"class":537},[523,1449,667],{"class":533},[523,1451,1452],{"class":550},"stable",[523,1454,667],{"class":533},[523,1456,1419],{"class":537},[498,1458,1460],{"id":1459},"filter-by-handler-attribution","Filter by handler attribution",[297,1462,470,1463,1465,1466,1469,1470,1473],{},[301,1464,455],{}," to scope the catalog to a single ",[306,1467,1468],{"href":153},"named handler",", or ",[301,1471,1472],{},"orphansOnly: true"," to enumerate definitions only exposed via the default route:",[513,1475,1477],{"className":515,"code":1476,"language":518,"meta":519,"style":519},"const adminCatalog = await listMcpTools({ handler: 'admin' })\nconst adminOrPublic = await listMcpTools({ handler: ['admin', 'public'] })\nconst orphans = await listMcpTools({ orphansOnly: true })\n",[301,1478,1479,1511,1554],{"__ignoreMap":519},[523,1480,1481,1483,1486,1488,1490,1492,1494,1496,1499,1501,1503,1505,1507,1509],{"class":525,"line":526},[523,1482,1148],{"class":579},[523,1484,1485],{"class":537}," adminCatalog ",[523,1487,1154],{"class":533},[523,1489,626],{"class":529},[523,1491,901],{"class":572},[523,1493,576],{"class":537},[523,1495,634],{"class":533},[523,1497,1498],{"class":631}," handler",[523,1500,659],{"class":533},[523,1502,547],{"class":533},[523,1504,1232],{"class":550},[523,1506,667],{"class":533},[523,1508,541],{"class":533},[523,1510,642],{"class":537},[523,1512,1513,1515,1518,1520,1522,1524,1526,1528,1530,1532,1534,1536,1538,1540,1542,1544,1546,1548,1550,1552],{"class":525,"line":556},[523,1514,1148],{"class":579},[523,1516,1517],{"class":537}," adminOrPublic ",[523,1519,1154],{"class":533},[523,1521,626],{"class":529},[523,1523,901],{"class":572},[523,1525,576],{"class":537},[523,1527,634],{"class":533},[523,1529,1498],{"class":631},[523,1531,659],{"class":533},[523,1533,1262],{"class":537},[523,1535,667],{"class":533},[523,1537,1232],{"class":550},[523,1539,667],{"class":533},[523,1541,610],{"class":533},[523,1543,547],{"class":533},[523,1545,1330],{"class":550},[523,1547,667],{"class":533},[523,1549,1280],{"class":537},[523,1551,877],{"class":533},[523,1553,642],{"class":537},[523,1555,1556,1558,1561,1563,1565,1567,1569,1571,1574,1576,1580,1582],{"class":525,"line":563},[523,1557,1148],{"class":579},[523,1559,1560],{"class":537}," orphans ",[523,1562,1154],{"class":533},[523,1564,626],{"class":529},[523,1566,901],{"class":572},[523,1568,576],{"class":537},[523,1570,634],{"class":533},[523,1572,1573],{"class":631}," orphansOnly",[523,1575,659],{"class":533},[523,1577,1579],{"class":1578},"sfNiH"," true",[523,1581,541],{"class":533},[523,1583,642],{"class":537},[498,1585,1587],{"id":1586},"combine-everything","Combine everything",[297,1589,1590],{},"Filters compose freely — request-aware visibility plus group, tag, and handler narrowing in one call:",[513,1592,1594],{"className":515,"code":1593,"language":518,"meta":519,"style":519},"const adminDestructive = await listMcpTools({\n  event,\n  handler: 'admin',\n  tags: 'destructive',\n})\n",[301,1595,1596,1614,1621,1636,1652],{"__ignoreMap":519},[523,1597,1598,1600,1603,1605,1607,1609,1611],{"class":525,"line":526},[523,1599,1148],{"class":579},[523,1601,1602],{"class":537}," adminDestructive ",[523,1604,1154],{"class":533},[523,1606,626],{"class":529},[523,1608,901],{"class":572},[523,1610,576],{"class":537},[523,1612,1613],{"class":533},"{\n",[523,1615,1616,1619],{"class":525,"line":556},[523,1617,1618],{"class":537},"  event",[523,1620,670],{"class":533},[523,1622,1623,1626,1628,1630,1632,1634],{"class":525,"line":563},[523,1624,1625],{"class":631},"  handler",[523,1627,659],{"class":533},[523,1629,547],{"class":533},[523,1631,1232],{"class":550},[523,1633,667],{"class":533},[523,1635,670],{"class":533},[523,1637,1638,1641,1643,1645,1648,1650],{"class":525,"line":599},[523,1639,1640],{"class":631},"  tags",[523,1642,659],{"class":533},[523,1644,547],{"class":533},[523,1646,1647],{"class":550},"destructive",[523,1649,667],{"class":533},[523,1651,670],{"class":533},[523,1653,1654,1656],{"class":525,"line":645},[523,1655,877],{"class":533},[523,1657,642],{"class":537},[293,1659,1661],{"id":1660},"caching","Caching",[297,1663,1664,1665,1672],{},"Listings are cheap (in-memory reads of the auto-generated registry), but if you expose them on a public route you can still wrap the handler with ",[306,1666,1669],{"href":1667,"rel":1668},"https:\u002F\u002Fnitro.build\u002Fguide\u002Fcache#cached-event-handlers",[310],[301,1670,1671],{},"defineCachedEventHandler"," to add HTTP cache headers:",[513,1674,1676],{"className":515,"code":1675,"filename":517,"language":518,"meta":519,"style":519},"import { listMcpDefinitions } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\nexport default defineCachedEventHandler(async (event) => {\n  const definitions = await listMcpDefinitions({ event })\n  return { name: 'My MCP Server', ...definitions }\n}, {\n  maxAge: 60 * 60,\n  swr: true,\n})\n",[301,1677,1678,1696,1700,1723,1746,1773,1780,1798,1809],{"__ignoreMap":519},[523,1679,1680,1682,1684,1686,1688,1690,1692,1694],{"class":525,"line":526},[523,1681,530],{"class":529},[523,1683,534],{"class":533},[523,1685,538],{"class":537},[523,1687,541],{"class":533},[523,1689,544],{"class":529},[523,1691,547],{"class":533},[523,1693,324],{"class":550},[523,1695,553],{"class":533},[523,1697,1698],{"class":525,"line":556},[523,1699,560],{"emptyLinePlaceholder":559},[523,1701,1702,1704,1706,1709,1711,1713,1715,1717,1719,1721],{"class":525,"line":563},[523,1703,566],{"class":529},[523,1705,569],{"class":529},[523,1707,1708],{"class":572}," defineCachedEventHandler",[523,1710,576],{"class":537},[523,1712,580],{"class":579},[523,1714,583],{"class":533},[523,1716,587],{"class":586},[523,1718,590],{"class":533},[523,1720,593],{"class":579},[523,1722,596],{"class":533},[523,1724,1725,1727,1730,1732,1734,1736,1738,1740,1742,1744],{"class":525,"line":599},[523,1726,602],{"class":579},[523,1728,1729],{"class":537}," definitions",[523,1731,623],{"class":533},[523,1733,626],{"class":529},[523,1735,538],{"class":572},[523,1737,576],{"class":631},[523,1739,634],{"class":533},[523,1741,637],{"class":537},[523,1743,541],{"class":533},[523,1745,642],{"class":631},[523,1747,1748,1750,1752,1754,1756,1758,1760,1762,1764,1767,1770],{"class":525,"line":645},[523,1749,648],{"class":529},[523,1751,534],{"class":533},[523,1753,716],{"class":631},[523,1755,659],{"class":533},[523,1757,547],{"class":533},[523,1759,664],{"class":550},[523,1761,667],{"class":533},[523,1763,610],{"class":533},[523,1765,1766],{"class":533}," ...",[523,1768,1769],{"class":537},"definitions",[523,1771,1772],{"class":533}," }\n",[523,1774,1775,1778],{"class":525,"line":653},[523,1776,1777],{"class":533},"},",[523,1779,596],{"class":533},[523,1781,1782,1785,1787,1791,1794,1796],{"class":525,"line":673},[523,1783,1784],{"class":631},"  maxAge",[523,1786,659],{"class":533},[523,1788,1790],{"class":1789},"sbssI"," 60",[523,1792,1793],{"class":533}," *",[523,1795,1790],{"class":1789},[523,1797,670],{"class":533},[523,1799,1800,1803,1805,1807],{"class":525,"line":690},[523,1801,1802],{"class":631},"  swr",[523,1804,659],{"class":533},[523,1806,1579],{"class":1578},[523,1808,670],{"class":533},[523,1810,1811,1813],{"class":525,"line":748},[523,1812,877],{"class":533},[523,1814,642],{"class":537},[466,1816,1819,1820,1822,1823,1825],{"color":1817,"icon":1818},"warning","i-lucide-triangle-alert","Skip the cache wrapper if you pass ",[301,1821,587],{}," to apply ",[301,1824,1054],{}," guards that depend on per-request context (auth, headers). Caching would freeze the response for the first request's context.",[293,1827,1829],{"id":1828},"next-steps","Next Steps",[1831,1832,1833,1842,1847],"ul",{},[1834,1835,1836,1838,1839,1841],"li",{},[306,1837,244],{"href":245}," — Hide or show definitions per request with ",[301,1840,1054],{}," guards.",[1834,1843,1844,1846],{},[306,1845,229],{"href":230}," — Add extra directories to scan for definitions.",[1834,1848,1849,1851],{},[306,1850,123],{"href":128}," — Define custom MCP endpoints with their own subset of tools.",[1853,1854,1855],"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 .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}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 .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}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 .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":519,"searchDepth":556,"depth":556,"links":1857},[1858,1859,1863,1871,1872],{"id":295,"depth":556,"text":46},{"id":495,"depth":556,"text":496,"children":1860},[1861,1862],{"id":500,"depth":563,"text":501},{"id":882,"depth":563,"text":883},{"id":1009,"depth":556,"text":1010,"children":1864},[1865,1867,1868,1869,1870],{"id":1123,"depth":563,"text":1866},"Filter by enabled()",{"id":1188,"depth":563,"text":1189},{"id":1287,"depth":563,"text":1288},{"id":1459,"depth":563,"text":1460},{"id":1586,"depth":563,"text":1587},{"id":1660,"depth":556,"text":1661},{"id":1828,"depth":556,"text":1829},"Read the toolkit's discovered tools, resources, and prompts from your own server routes — without duplicating their names and descriptions.","md",null,{},{"icon":213},{"title":1879,"description":1880},"Listing MCP Definitions","Use listMcpTools, listMcpResources, listMcpPrompts, and listMcpDefinitions to expose a public catalog of MCP definitions from your own server routes.","POgQ24vnE5uVEMDZ5uI4-Nu41VMX1DJ6RII7-5VWIO8",[1883,1885],{"title":205,"path":206,"stem":207,"description":1884,"icon":208,"children":-1},"How the toolkit bundles, serves, and connects MCP Apps — and the patterns you can build on top.",{"title":215,"path":216,"stem":217,"description":1886,"icon":218,"children":-1},"Let agents discover your MCP server through llms.txt.",1787670843699]