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