[{"data":1,"prerenderedAt":1091},["ShallowReactive",2],{"navigation_docs":3,"-tools-overview":282,"-tools-overview-surround":1086},[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":41,"body":284,"description":1070,"extension":1071,"links":1072,"meta":1081,"navigation":1082,"path":47,"seo":1083,"stem":48,"__hash__":1085},"docs\u002F2.tools\u002F0.overview.md",{"type":285,"value":286,"toc":1063},"minimark",[287,292,296,346,350,353,586,590,601,702,709,728,737,741,744,1019,1023,1026,1059],[288,289,291],"h2",{"id":290},"what-are-tools","What are Tools?",[293,294,295],"p",{},"Tools are functions that AI assistants can call to perform actions or retrieve information. They accept validated input parameters and return structured results.",[297,298,301,304,337],"prompt",{":actions":299,"description":300,"icon":49},"[\"copy\",\"cursor\",\"windsurf\"]","Scaffold a new MCP tool",[293,302,303],{},"Create a new MCP tool in my Nuxt app using @nuxtjs\u002Fmcp-toolkit.",[305,306,307,311,314,322,325,328,331,334],"ul",{},[308,309,310],"li",{},"Create a file in server\u002Fmcp\u002Ftools\u002F (e.g. server\u002Fmcp\u002Ftools\u002Fmy-tool.ts)",[308,312,313],{},"Use defineMcpTool (auto-imported) with a description and handler",[308,315,316,317,321],{},"Import Zod with ",[318,319,320],"code",{},"import { z } from 'zod'"," and define input parameters in inputSchema (e.g. z.string().describe('...'))",[308,323,324],{},"The handler receives validated input and returns a string, number, boolean, object, or full CallToolResult",[308,326,327],{},"Throw errors with createError({ statusCode, message }) from h3 for error cases",[308,329,330],{},"Name and title are auto-generated from the filename (e.g. my-tool.ts → name: 'my-tool', title: 'My Tool')",[308,332,333],{},"Add annotations for behavioral hints (readOnlyHint, destructiveHint, idempotentHint, openWorldHint)",[308,335,336],{},"Use subdirectories to auto-infer groups (e.g. tools\u002Fadmin\u002Fdelete-user.ts → group: 'admin')",[293,338,339,340],{},"Docs: ",[341,342,343],"a",{"href":343,"rel":344},"https:\u002F\u002Fmcp-toolkit.nuxt.dev\u002Ftools\u002Foverview",[345],"nofollow",[288,347,349],{"id":348},"basic-tool-definition","Basic Tool Definition",[293,351,352],{},"Here's a simple tool that echoes back a message:",[354,355,361],"pre",{"className":356,"code":357,"filename":358,"language":359,"meta":360,"style":360},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { z } from 'zod'\nimport { defineMcpTool } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\nexport default defineMcpTool({\n  name: 'echo',\n  description: 'Echo back a message',\n  inputSchema: {\n    message: z.string().describe('The message to echo back'),\n  },\n  handler: async ({ message }) => `Echo: ${message}`,\n})\n","server\u002Fmcp\u002Ftools\u002Fecho.ts","typescript","",[318,362,363,396,417,424,442,463,480,491,529,535,577],{"__ignoreMap":360},[364,365,368,372,376,380,383,386,389,393],"span",{"class":366,"line":367},"line",1,[364,369,371],{"class":370},"s7zQu","import",[364,373,375],{"class":374},"sMK4o"," {",[364,377,379],{"class":378},"sTEyZ"," z",[364,381,382],{"class":374}," }",[364,384,385],{"class":370}," from",[364,387,388],{"class":374}," '",[364,390,392],{"class":391},"sfazB","zod",[364,394,395],{"class":374},"'\n",[364,397,399,401,403,406,408,410,412,415],{"class":366,"line":398},2,[364,400,371],{"class":370},[364,402,375],{"class":374},[364,404,405],{"class":378}," defineMcpTool",[364,407,382],{"class":374},[364,409,385],{"class":370},[364,411,388],{"class":374},[364,413,414],{"class":391},"@nuxtjs\u002Fmcp-toolkit\u002Fserver",[364,416,395],{"class":374},[364,418,420],{"class":366,"line":419},3,[364,421,423],{"emptyLinePlaceholder":422},true,"\n",[364,425,427,430,433,436,439],{"class":366,"line":426},4,[364,428,429],{"class":370},"export",[364,431,432],{"class":370}," default",[364,434,405],{"class":435},"s2Zo4",[364,437,438],{"class":378},"(",[364,440,441],{"class":374},"{\n",[364,443,445,449,452,454,457,460],{"class":366,"line":444},5,[364,446,448],{"class":447},"swJcz","  name",[364,450,451],{"class":374},":",[364,453,388],{"class":374},[364,455,456],{"class":391},"echo",[364,458,459],{"class":374},"'",[364,461,462],{"class":374},",\n",[364,464,466,469,471,473,476,478],{"class":366,"line":465},6,[364,467,468],{"class":447},"  description",[364,470,451],{"class":374},[364,472,388],{"class":374},[364,474,475],{"class":391},"Echo back a message",[364,477,459],{"class":374},[364,479,462],{"class":374},[364,481,483,486,488],{"class":366,"line":482},7,[364,484,485],{"class":447},"  inputSchema",[364,487,451],{"class":374},[364,489,490],{"class":374}," {\n",[364,492,494,497,499,501,504,507,510,512,515,517,519,522,524,527],{"class":366,"line":493},8,[364,495,496],{"class":447},"    message",[364,498,451],{"class":374},[364,500,379],{"class":378},[364,502,503],{"class":374},".",[364,505,506],{"class":435},"string",[364,508,509],{"class":378},"()",[364,511,503],{"class":374},[364,513,514],{"class":435},"describe",[364,516,438],{"class":378},[364,518,459],{"class":374},[364,520,521],{"class":391},"The message to echo back",[364,523,459],{"class":374},[364,525,526],{"class":378},")",[364,528,462],{"class":374},[364,530,532],{"class":366,"line":531},9,[364,533,534],{"class":374},"  },\n",[364,536,538,541,543,547,550,554,557,560,563,566,569,572,575],{"class":366,"line":537},10,[364,539,540],{"class":435},"  handler",[364,542,451],{"class":374},[364,544,546],{"class":545},"spNyl"," async",[364,548,549],{"class":374}," ({",[364,551,553],{"class":552},"sHdIc"," message",[364,555,556],{"class":374}," })",[364,558,559],{"class":545}," =>",[364,561,562],{"class":374}," `",[364,564,565],{"class":391},"Echo: ",[364,567,568],{"class":374},"${",[364,570,571],{"class":378},"message",[364,573,574],{"class":374},"}`",[364,576,462],{"class":374},[364,578,580,583],{"class":366,"line":579},11,[364,581,582],{"class":374},"}",[364,584,585],{"class":378},")\n",[288,587,589],{"id":588},"auto-generated-name-and-title","Auto-Generated Name and Title",[293,591,592,593,596,597,600],{},"You can omit ",[318,594,595],{},"name"," and ",[318,598,599],{},"title"," - they will be automatically generated from the filename:",[354,602,605],{"className":356,"code":603,"filename":604,"language":359,"meta":360,"style":360},"import { defineMcpTool } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\nexport default defineMcpTool({\n  \u002F\u002F name and title are auto-generated from filename:\n  \u002F\u002F name: 'list-documentation'\n  \u002F\u002F title: 'List Documentation'\n  description: 'List all documentation files',\n  handler: async () => {\n    \u002F\u002F ...\n  },\n})\n","server\u002Fmcp\u002Ftools\u002Flist-documentation.ts",[318,606,607,625,629,641,647,652,657,672,687,692,696],{"__ignoreMap":360},[364,608,609,611,613,615,617,619,621,623],{"class":366,"line":367},[364,610,371],{"class":370},[364,612,375],{"class":374},[364,614,405],{"class":378},[364,616,382],{"class":374},[364,618,385],{"class":370},[364,620,388],{"class":374},[364,622,414],{"class":391},[364,624,395],{"class":374},[364,626,627],{"class":366,"line":398},[364,628,423],{"emptyLinePlaceholder":422},[364,630,631,633,635,637,639],{"class":366,"line":419},[364,632,429],{"class":370},[364,634,432],{"class":370},[364,636,405],{"class":435},[364,638,438],{"class":378},[364,640,441],{"class":374},[364,642,643],{"class":366,"line":426},[364,644,646],{"class":645},"sHwdD","  \u002F\u002F name and title are auto-generated from filename:\n",[364,648,649],{"class":366,"line":444},[364,650,651],{"class":645},"  \u002F\u002F name: 'list-documentation'\n",[364,653,654],{"class":366,"line":465},[364,655,656],{"class":645},"  \u002F\u002F title: 'List Documentation'\n",[364,658,659,661,663,665,668,670],{"class":366,"line":482},[364,660,468],{"class":447},[364,662,451],{"class":374},[364,664,388],{"class":374},[364,666,667],{"class":391},"List all documentation files",[364,669,459],{"class":374},[364,671,462],{"class":374},[364,673,674,676,678,680,683,685],{"class":366,"line":493},[364,675,540],{"class":435},[364,677,451],{"class":374},[364,679,546],{"class":545},[364,681,682],{"class":374}," ()",[364,684,559],{"class":545},[364,686,490],{"class":374},[364,688,689],{"class":366,"line":531},[364,690,691],{"class":645},"    \u002F\u002F ...\n",[364,693,694],{"class":366,"line":537},[364,695,534],{"class":374},[364,697,698,700],{"class":366,"line":579},[364,699,582],{"class":374},[364,701,585],{"class":378},[293,703,704,705,708],{},"The filename ",[318,706,707],{},"list-documentation.ts"," automatically becomes:",[305,710,711,720],{},[308,712,713,715,716,719],{},[318,714,595],{},": ",[318,717,718],{},"list-documentation"," (kebab-case)",[308,721,722,715,724,727],{},[318,723,599],{},[318,725,726],{},"List Documentation"," (title case)",[293,729,730,731,733,734,736],{},"You can still provide ",[318,732,595],{}," or ",[318,735,599],{}," explicitly to override the auto-generated values.",[288,738,740],{"id":739},"tool-structure","Tool Structure",[293,742,743],{},"A tool definition consists of:",[745,746,747,846],"code-group",{},[354,748,751],{"className":356,"code":749,"filename":750,"language":359,"meta":360,"style":360},"export default defineMcpTool({\n  name: 'tool-name',        \u002F\u002F Unique identifier (optional - auto-generated from filename)\n  inputSchema: { ... },      \u002F\u002F Zod schema for input validation\n  handler: async (args) => {\n    return 'result'          \u002F\u002F string, number, boolean, object, or CallToolResult\n  },\n})\n","Required Fields",[318,752,753,765,784,801,821,836,840],{"__ignoreMap":360},[364,754,755,757,759,761,763],{"class":366,"line":367},[364,756,429],{"class":370},[364,758,432],{"class":370},[364,760,405],{"class":435},[364,762,438],{"class":378},[364,764,441],{"class":374},[364,766,767,769,771,773,776,778,781],{"class":366,"line":398},[364,768,448],{"class":447},[364,770,451],{"class":374},[364,772,388],{"class":374},[364,774,775],{"class":391},"tool-name",[364,777,459],{"class":374},[364,779,780],{"class":374},",",[364,782,783],{"class":645},"        \u002F\u002F Unique identifier (optional - auto-generated from filename)\n",[364,785,786,788,790,792,795,798],{"class":366,"line":419},[364,787,485],{"class":447},[364,789,451],{"class":374},[364,791,375],{"class":374},[364,793,794],{"class":374}," ...",[364,796,797],{"class":374}," },",[364,799,800],{"class":645},"      \u002F\u002F Zod schema for input validation\n",[364,802,803,805,807,809,812,815,817,819],{"class":366,"line":426},[364,804,540],{"class":435},[364,806,451],{"class":374},[364,808,546],{"class":545},[364,810,811],{"class":374}," (",[364,813,814],{"class":552},"args",[364,816,526],{"class":374},[364,818,559],{"class":545},[364,820,490],{"class":374},[364,822,823,826,828,831,833],{"class":366,"line":444},[364,824,825],{"class":370},"    return",[364,827,388],{"class":374},[364,829,830],{"class":391},"result",[364,832,459],{"class":374},[364,834,835],{"class":645},"          \u002F\u002F string, number, boolean, object, or CallToolResult\n",[364,837,838],{"class":366,"line":465},[364,839,534],{"class":374},[364,841,842,844],{"class":366,"line":482},[364,843,582],{"class":374},[364,845,585],{"class":378},[354,847,850],{"className":356,"code":848,"filename":849,"language":359,"meta":360,"style":360},"export default defineMcpTool({\n  name: 'tool-name',              \u002F\u002F Optional - auto-generated from filename\n  title: 'Tool Title',            \u002F\u002F Optional - auto-generated from filename\n  description: 'Tool description',  \u002F\u002F What the tool does\n  inputSchema: { ... },            \u002F\u002F Optional - Zod schema for input validation\n  outputSchema: { ... },            \u002F\u002F Zod schema for structured output\n  annotations: { ... },             \u002F\u002F Behavioral hints for clients\n  inputExamples: [{ ... }],         \u002F\u002F Concrete usage examples\n  handler: async (args) => { ... },\n})\n","Optional Fields",[318,851,852,864,881,900,918,933,949,965,990,1013],{"__ignoreMap":360},[364,853,854,856,858,860,862],{"class":366,"line":367},[364,855,429],{"class":370},[364,857,432],{"class":370},[364,859,405],{"class":435},[364,861,438],{"class":378},[364,863,441],{"class":374},[364,865,866,868,870,872,874,876,878],{"class":366,"line":398},[364,867,448],{"class":447},[364,869,451],{"class":374},[364,871,388],{"class":374},[364,873,775],{"class":391},[364,875,459],{"class":374},[364,877,780],{"class":374},[364,879,880],{"class":645},"              \u002F\u002F Optional - auto-generated from filename\n",[364,882,883,886,888,890,893,895,897],{"class":366,"line":419},[364,884,885],{"class":447},"  title",[364,887,451],{"class":374},[364,889,388],{"class":374},[364,891,892],{"class":391},"Tool Title",[364,894,459],{"class":374},[364,896,780],{"class":374},[364,898,899],{"class":645},"            \u002F\u002F Optional - auto-generated from filename\n",[364,901,902,904,906,908,911,913,915],{"class":366,"line":426},[364,903,468],{"class":447},[364,905,451],{"class":374},[364,907,388],{"class":374},[364,909,910],{"class":391},"Tool description",[364,912,459],{"class":374},[364,914,780],{"class":374},[364,916,917],{"class":645},"  \u002F\u002F What the tool does\n",[364,919,920,922,924,926,928,930],{"class":366,"line":444},[364,921,485],{"class":447},[364,923,451],{"class":374},[364,925,375],{"class":374},[364,927,794],{"class":374},[364,929,797],{"class":374},[364,931,932],{"class":645},"            \u002F\u002F Optional - Zod schema for input validation\n",[364,934,935,938,940,942,944,946],{"class":366,"line":465},[364,936,937],{"class":447},"  outputSchema",[364,939,451],{"class":374},[364,941,375],{"class":374},[364,943,794],{"class":374},[364,945,797],{"class":374},[364,947,948],{"class":645},"            \u002F\u002F Zod schema for structured output\n",[364,950,951,954,956,958,960,962],{"class":366,"line":482},[364,952,953],{"class":447},"  annotations",[364,955,451],{"class":374},[364,957,375],{"class":374},[364,959,794],{"class":374},[364,961,797],{"class":374},[364,963,964],{"class":645},"             \u002F\u002F Behavioral hints for clients\n",[364,966,967,970,972,975,978,980,982,985,987],{"class":366,"line":493},[364,968,969],{"class":447},"  inputExamples",[364,971,451],{"class":374},[364,973,974],{"class":378}," [",[364,976,977],{"class":374},"{",[364,979,794],{"class":374},[364,981,382],{"class":374},[364,983,984],{"class":378},"]",[364,986,780],{"class":374},[364,988,989],{"class":645},"         \u002F\u002F Concrete usage examples\n",[364,991,992,994,996,998,1000,1002,1004,1006,1008,1010],{"class":366,"line":531},[364,993,540],{"class":435},[364,995,451],{"class":374},[364,997,546],{"class":545},[364,999,811],{"class":374},[364,1001,814],{"class":552},[364,1003,526],{"class":374},[364,1005,559],{"class":545},[364,1007,375],{"class":374},[364,1009,794],{"class":374},[364,1011,1012],{"class":374}," },\n",[364,1014,1015,1017],{"class":366,"line":537},[364,1016,582],{"class":374},[364,1018,585],{"class":378},[288,1020,1022],{"id":1021},"going-further","Going further",[293,1024,1025],{},"Once you've authored a few tools, branch out:",[1027,1028,1029,1039,1047,1052],"card-group",{},[1030,1031,1034,1035,1038],"card",{"color":1032,"icon":267,"title":1033,"to":265},"neutral","Integrate external APIs","Call third-party services, use ",[318,1036,1037],{},"useEvent()",", and cache responses with Nitro.",[1030,1040,1042,1043,1046],{"color":1032,"icon":262,"title":1041,"to":260},"Authenticate clients","Bearer tokens, Better Auth API keys, and per-tool ",[318,1044,1045],{},"enabled"," guards.",[1030,1048,1051],{"color":1032,"icon":1049,"title":1050,"to":245},"i-lucide-terminal","Use Code Mode","Let the LLM orchestrate multiple tool calls in a single sandboxed JS execution.",[1030,1053,1054,1055,1058],{"color":1032,"icon":155,"title":152,"to":153},"Attribute tools to dedicated MCP routes via the ",[318,1056,1057],{},"handlers\u002F\u003Cname>\u002F"," folder convention.",[1060,1061,1062],"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 .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}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 .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}",{"title":360,"searchDepth":398,"depth":398,"links":1064},[1065,1066,1067,1068,1069],{"id":290,"depth":398,"text":291},{"id":348,"depth":398,"text":349},{"id":588,"depth":398,"text":589},{"id":739,"depth":398,"text":740},{"id":1021,"depth":398,"text":1022},"Create MCP tools with Zod validation and type safety.","md",[1073,1076,1078,1079],{"label":1074,"icon":54,"to":52,"color":1032,"variant":1075},"Schema & handler","subtle",{"label":1077,"icon":59,"to":57,"color":1032,"variant":1075},"Annotations",{"label":61,"icon":64,"to":62,"color":1032,"variant":1075},{"label":1080,"icon":69,"to":67,"color":1032,"variant":1075},"Groups & advanced",{},{"title":46,"icon":49},{"title":41,"description":1084},"Create MCP tools with Zod validation and full TypeScript support.","XhAwUJfu8QwkeApR9NEJfABOqLPpn8FUvdftNaC7HK4",[1087,1089],{"title":35,"path":36,"stem":37,"description":1088,"icon":38,"children":-1},"AI-assisted MCP server development using Agent Skills. Let AI help you setup, create, review, and troubleshoot MCP servers in your Nuxt app.",{"title":51,"path":52,"stem":53,"description":1090,"icon":54,"children":-1},"Define tool inputs and outputs with Zod, and return text, structured data, or media from handlers.",1777888631058]