[{"data":1,"prerenderedAt":6001},["ShallowReactive",2],{"navigation_docs":3,"-core-concepts-tools":139,"-core-concepts-tools-surround":5996},[4,40,65,110],{"title":5,"path":6,"stem":7,"children":8,"page":39},"Getting Started","\u002Fgetting-started","1.getting-started",[9,14,19,24,29,34],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-book-open",{"title":15,"path":16,"stem":17,"icon":18},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":20,"path":21,"stem":22,"icon":23},"Configuration","\u002Fgetting-started\u002Fconfiguration","1.getting-started\u002F3.configuration","i-lucide-settings",{"title":25,"path":26,"stem":27,"icon":28},"MCP Inspector","\u002Fgetting-started\u002Finspector","1.getting-started\u002F4.inspector","i-lucide-circuit-board",{"title":30,"path":31,"stem":32,"icon":33},"Connection","\u002Fgetting-started\u002Fconnection","1.getting-started\u002F5.connection","i-lucide-plug",{"title":35,"path":36,"stem":37,"icon":38},"Agent Skills","\u002Fgetting-started\u002Fagent-skills","1.getting-started\u002F6.agent-skills","i-lucide-sparkles",false,{"title":41,"path":42,"stem":43,"children":44,"page":39},"Core Concepts","\u002Fcore-concepts","2.core-concepts",[45,50,55,60],{"title":46,"path":47,"stem":48,"icon":49},"Tools","\u002Fcore-concepts\u002Ftools","2.core-concepts\u002F2.tools","i-lucide-wrench",{"title":51,"path":52,"stem":53,"icon":54},"Resources","\u002Fcore-concepts\u002Fresources","2.core-concepts\u002F3.resources","i-lucide-package",{"title":56,"path":57,"stem":58,"icon":59},"Prompts","\u002Fcore-concepts\u002Fprompts","2.core-concepts\u002F4.prompts","i-lucide-message-square",{"title":61,"path":62,"stem":63,"icon":64},"Handlers","\u002Fcore-concepts\u002Fhandlers","2.core-concepts\u002F5.handlers","i-lucide-server",{"title":66,"path":67,"stem":68,"children":69,"page":39},"Advanced Topics","\u002Fadvanced","3.advanced",[70,75,80,85,90,95,100,105],{"title":71,"path":72,"stem":73,"icon":74},"Custom Paths","\u002Fadvanced\u002Fcustom-paths","3.advanced\u002F1.custom-paths","i-lucide-folder",{"title":76,"path":77,"stem":78,"icon":79},"Middleware","\u002Fadvanced\u002Fmiddleware","3.advanced\u002F2.middleware","i-lucide-shield",{"title":81,"path":82,"stem":83,"icon":84},"TypeScript","\u002Fadvanced\u002Ftypescript","3.advanced\u002F3.typescript","i-lucide-type",{"title":86,"path":87,"stem":88,"icon":89},"Hooks","\u002Fadvanced\u002Fhooks","3.advanced\u002F4.hooks","i-lucide-webhook",{"title":91,"path":92,"stem":93,"icon":94},"MCP Evals","\u002Fadvanced\u002Fevals","3.advanced\u002F5.evals","i-lucide-flask-conical",{"title":96,"path":97,"stem":98,"icon":99},"Sessions","\u002Fadvanced\u002Fsessions","3.advanced\u002F6.sessions","i-lucide-database",{"title":101,"path":102,"stem":103,"icon":104},"Dynamic Definitions","\u002Fadvanced\u002Fdynamic-definitions","3.advanced\u002F7.dynamic-definitions","i-lucide-toggle-right",{"title":106,"path":107,"stem":108,"icon":109},"Code Mode","\u002Fadvanced\u002Fcode-mode","3.advanced\u002F8.code-mode","i-lucide-code",{"title":111,"path":112,"stem":113,"children":114,"page":39},"Examples","\u002Fexamples","4.examples",[115,120,125,130,135],{"title":116,"path":117,"stem":118,"icon":119},"Authentication","\u002Fexamples\u002Fauthentication","4.examples\u002F1.authentication","i-lucide-shield-check",{"title":121,"path":122,"stem":123,"icon":124},"API Integration","\u002Fexamples\u002Fapi-integration","4.examples\u002F2.api-integration","i-lucide-globe",{"title":126,"path":127,"stem":128,"icon":129},"Common Patterns","\u002Fexamples\u002Fcommon-patterns","4.examples\u002F3.common-patterns","i-lucide-lightbulb",{"title":131,"path":132,"stem":133,"icon":134},"File Operations","\u002Fexamples\u002Ffile-operations","4.examples\u002F4.file-operations","i-lucide-file",{"title":136,"path":137,"stem":138,"icon":59},"Prompt Examples","\u002Fexamples\u002Fprompt-examples","4.examples\u002F5.prompt-examples",{"id":140,"title":46,"body":141,"description":5988,"extension":5989,"links":5990,"meta":5991,"navigation":5992,"path":47,"seo":5993,"stem":48,"__hash__":5995},"docs\u002F2.core-concepts\u002F2.tools.md",{"type":142,"value":143,"toc":5957},"minimark",[144,149,153,157,160,468,472,483,603,610,631,640,644,647,978,982,992,1142,1145,1570,1575,1717,1721,1727,2260,2269,2273,2276,2403,2407,2410,2667,2671,2674,3313,3403,3407,3410,3633,3637,3751,3754,4003,4014,4018,4031,4034,4294,4300,4304,4307,4637,4641,4648,4652,4665,4893,4897,4900,5108,5112,5238,5247,5251,5255,5258,5635,5639,5646,5653,5656,5660,5663,5770,5774,5781,5898,5911,5917,5921,5953],[145,146,148],"h2",{"id":147},"what-are-tools","What are Tools?",[150,151,152],"p",{},"Tools are functions that AI assistants can call to perform actions or retrieve information. They accept validated input parameters and return structured results.",[145,154,156],{"id":155},"basic-tool-definition","Basic Tool Definition",[150,158,159],{},"Here's a simple tool that echoes back a message:",[161,162,168],"pre",{"className":163,"code":164,"filename":165,"language":166,"meta":167,"style":167},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { z } from 'zod'\nimport { defineMcpTool } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver' \u002F\u002F optional\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 }) => {\n    return {\n      content: [{\n        type: 'text',\n        text: `Echo: ${message}`,\n      }],\n    }\n  },\n})\n","server\u002Fmcp\u002Ftools\u002Fecho.ts","typescript","",[169,170,171,204,230,237,255,275,292,303,341,347,374,382,395,412,437,448,454,459],"code",{"__ignoreMap":167},[172,173,176,180,184,188,191,194,197,201],"span",{"class":174,"line":175},"line",1,[172,177,179],{"class":178},"s7zQu","import",[172,181,183],{"class":182},"sMK4o"," {",[172,185,187],{"class":186},"sTEyZ"," z",[172,189,190],{"class":182}," }",[172,192,193],{"class":178}," from",[172,195,196],{"class":182}," '",[172,198,200],{"class":199},"sfazB","zod",[172,202,203],{"class":182},"'\n",[172,205,207,209,211,214,216,218,220,223,226],{"class":174,"line":206},2,[172,208,179],{"class":178},[172,210,183],{"class":182},[172,212,213],{"class":186}," defineMcpTool",[172,215,190],{"class":182},[172,217,193],{"class":178},[172,219,196],{"class":182},[172,221,222],{"class":199},"@nuxtjs\u002Fmcp-toolkit\u002Fserver",[172,224,225],{"class":182},"'",[172,227,229],{"class":228},"sHwdD"," \u002F\u002F optional\n",[172,231,233],{"class":174,"line":232},3,[172,234,236],{"emptyLinePlaceholder":235},true,"\n",[172,238,240,243,246,249,252],{"class":174,"line":239},4,[172,241,242],{"class":178},"export",[172,244,245],{"class":178}," default",[172,247,213],{"class":248},"s2Zo4",[172,250,251],{"class":186},"(",[172,253,254],{"class":182},"{\n",[172,256,258,262,265,267,270,272],{"class":174,"line":257},5,[172,259,261],{"class":260},"swJcz","  name",[172,263,264],{"class":182},":",[172,266,196],{"class":182},[172,268,269],{"class":199},"echo",[172,271,225],{"class":182},[172,273,274],{"class":182},",\n",[172,276,278,281,283,285,288,290],{"class":174,"line":277},6,[172,279,280],{"class":260},"  description",[172,282,264],{"class":182},[172,284,196],{"class":182},[172,286,287],{"class":199},"Echo back a message",[172,289,225],{"class":182},[172,291,274],{"class":182},[172,293,295,298,300],{"class":174,"line":294},7,[172,296,297],{"class":260},"  inputSchema",[172,299,264],{"class":182},[172,301,302],{"class":182}," {\n",[172,304,306,309,311,313,316,319,322,324,327,329,331,334,336,339],{"class":174,"line":305},8,[172,307,308],{"class":260},"    message",[172,310,264],{"class":182},[172,312,187],{"class":186},[172,314,315],{"class":182},".",[172,317,318],{"class":248},"string",[172,320,321],{"class":186},"()",[172,323,315],{"class":182},[172,325,326],{"class":248},"describe",[172,328,251],{"class":186},[172,330,225],{"class":182},[172,332,333],{"class":199},"The message to echo back",[172,335,225],{"class":182},[172,337,338],{"class":186},")",[172,340,274],{"class":182},[172,342,344],{"class":174,"line":343},9,[172,345,346],{"class":182},"  },\n",[172,348,350,353,355,359,362,366,369,372],{"class":174,"line":349},10,[172,351,352],{"class":248},"  handler",[172,354,264],{"class":182},[172,356,358],{"class":357},"spNyl"," async",[172,360,361],{"class":182}," ({",[172,363,365],{"class":364},"sHdIc"," message",[172,367,368],{"class":182}," })",[172,370,371],{"class":357}," =>",[172,373,302],{"class":182},[172,375,377,380],{"class":174,"line":376},11,[172,378,379],{"class":178},"    return",[172,381,302],{"class":182},[172,383,385,388,390,393],{"class":174,"line":384},12,[172,386,387],{"class":260},"      content",[172,389,264],{"class":182},[172,391,392],{"class":260}," [",[172,394,254],{"class":182},[172,396,398,401,403,405,408,410],{"class":174,"line":397},13,[172,399,400],{"class":260},"        type",[172,402,264],{"class":182},[172,404,196],{"class":182},[172,406,407],{"class":199},"text",[172,409,225],{"class":182},[172,411,274],{"class":182},[172,413,415,418,420,423,426,429,432,435],{"class":174,"line":414},14,[172,416,417],{"class":260},"        text",[172,419,264],{"class":182},[172,421,422],{"class":182}," `",[172,424,425],{"class":199},"Echo: ",[172,427,428],{"class":182},"${",[172,430,431],{"class":186},"message",[172,433,434],{"class":182},"}`",[172,436,274],{"class":182},[172,438,440,443,446],{"class":174,"line":439},15,[172,441,442],{"class":182},"      }",[172,444,445],{"class":260},"]",[172,447,274],{"class":182},[172,449,451],{"class":174,"line":450},16,[172,452,453],{"class":182},"    }\n",[172,455,457],{"class":174,"line":456},17,[172,458,346],{"class":182},[172,460,462,465],{"class":174,"line":461},18,[172,463,464],{"class":182},"}",[172,466,467],{"class":186},")\n",[145,469,471],{"id":470},"auto-generated-name-and-title","Auto-Generated Name and Title",[150,473,474,475,478,479,482],{},"You can omit ",[169,476,477],{},"name"," and ",[169,480,481],{},"title"," - they will be automatically generated from the filename:",[161,484,487],{"className":163,"code":485,"filename":486,"language":166,"meta":167,"style":167},"import { z } from 'zod'\nimport { defineMcpTool } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver' \u002F\u002F optional\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",[169,488,489,507,527,531,543,548,553,558,573,588,593,597],{"__ignoreMap":167},[172,490,491,493,495,497,499,501,503,505],{"class":174,"line":175},[172,492,179],{"class":178},[172,494,183],{"class":182},[172,496,187],{"class":186},[172,498,190],{"class":182},[172,500,193],{"class":178},[172,502,196],{"class":182},[172,504,200],{"class":199},[172,506,203],{"class":182},[172,508,509,511,513,515,517,519,521,523,525],{"class":174,"line":206},[172,510,179],{"class":178},[172,512,183],{"class":182},[172,514,213],{"class":186},[172,516,190],{"class":182},[172,518,193],{"class":178},[172,520,196],{"class":182},[172,522,222],{"class":199},[172,524,225],{"class":182},[172,526,229],{"class":228},[172,528,529],{"class":174,"line":232},[172,530,236],{"emptyLinePlaceholder":235},[172,532,533,535,537,539,541],{"class":174,"line":239},[172,534,242],{"class":178},[172,536,245],{"class":178},[172,538,213],{"class":248},[172,540,251],{"class":186},[172,542,254],{"class":182},[172,544,545],{"class":174,"line":257},[172,546,547],{"class":228},"  \u002F\u002F name and title are auto-generated from filename:\n",[172,549,550],{"class":174,"line":277},[172,551,552],{"class":228},"  \u002F\u002F name: 'list-documentation'\n",[172,554,555],{"class":174,"line":294},[172,556,557],{"class":228},"  \u002F\u002F title: 'List Documentation'\n",[172,559,560,562,564,566,569,571],{"class":174,"line":305},[172,561,280],{"class":260},[172,563,264],{"class":182},[172,565,196],{"class":182},[172,567,568],{"class":199},"List all documentation files",[172,570,225],{"class":182},[172,572,274],{"class":182},[172,574,575,577,579,581,584,586],{"class":174,"line":343},[172,576,352],{"class":248},[172,578,264],{"class":182},[172,580,358],{"class":357},[172,582,583],{"class":182}," ()",[172,585,371],{"class":357},[172,587,302],{"class":182},[172,589,590],{"class":174,"line":349},[172,591,592],{"class":228},"    \u002F\u002F ...\n",[172,594,595],{"class":174,"line":376},[172,596,346],{"class":182},[172,598,599,601],{"class":174,"line":384},[172,600,464],{"class":182},[172,602,467],{"class":186},[150,604,605,606,609],{},"The filename ",[169,607,608],{},"list-documentation.ts"," automatically becomes:",[611,612,613,623],"ul",{},[614,615,616,618,619,622],"li",{},[169,617,477],{},": ",[169,620,621],{},"list-documentation"," (kebab-case)",[614,624,625,618,627,630],{},[169,626,481],{},[169,628,629],{},"List Documentation"," (title case)",[150,632,633,634,636,637,639],{},"You can still provide ",[169,635,477],{}," or ",[169,638,481],{}," explicitly to override the auto-generated values.",[145,641,643],{"id":642},"tool-structure","Tool Structure",[150,645,646],{},"A tool definition consists of:",[648,649,650,783],"code-group",{},[161,651,654],{"className":163,"code":652,"filename":653,"language":166,"meta":167,"style":167},"import { defineMcpTool } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver' \u002F\u002F optional\n\nexport 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) => { \u002F\u002F Handler function\n    return { content: [...] }\n  },\n})\n","Required Fields",[169,655,656,676,680,692,711,728,751,773,777],{"__ignoreMap":167},[172,657,658,660,662,664,666,668,670,672,674],{"class":174,"line":175},[172,659,179],{"class":178},[172,661,183],{"class":182},[172,663,213],{"class":186},[172,665,190],{"class":182},[172,667,193],{"class":178},[172,669,196],{"class":182},[172,671,222],{"class":199},[172,673,225],{"class":182},[172,675,229],{"class":228},[172,677,678],{"class":174,"line":206},[172,679,236],{"emptyLinePlaceholder":235},[172,681,682,684,686,688,690],{"class":174,"line":232},[172,683,242],{"class":178},[172,685,245],{"class":178},[172,687,213],{"class":248},[172,689,251],{"class":186},[172,691,254],{"class":182},[172,693,694,696,698,700,703,705,708],{"class":174,"line":239},[172,695,261],{"class":260},[172,697,264],{"class":182},[172,699,196],{"class":182},[172,701,702],{"class":199},"tool-name",[172,704,225],{"class":182},[172,706,707],{"class":182},",",[172,709,710],{"class":228},"        \u002F\u002F Unique identifier (optional - auto-generated from filename)\n",[172,712,713,715,717,719,722,725],{"class":174,"line":257},[172,714,297],{"class":260},[172,716,264],{"class":182},[172,718,183],{"class":182},[172,720,721],{"class":182}," ...",[172,723,724],{"class":182}," },",[172,726,727],{"class":228},"      \u002F\u002F Zod schema for input validation\n",[172,729,730,732,734,736,739,742,744,746,748],{"class":174,"line":277},[172,731,352],{"class":248},[172,733,264],{"class":182},[172,735,358],{"class":357},[172,737,738],{"class":182}," (",[172,740,741],{"class":364},"args",[172,743,338],{"class":182},[172,745,371],{"class":357},[172,747,183],{"class":182},[172,749,750],{"class":228}," \u002F\u002F Handler function\n",[172,752,753,755,757,760,762,764,767,770],{"class":174,"line":294},[172,754,379],{"class":178},[172,756,183],{"class":182},[172,758,759],{"class":260}," content",[172,761,264],{"class":182},[172,763,392],{"class":260},[172,765,766],{"class":182},"...",[172,768,769],{"class":260},"] ",[172,771,772],{"class":182},"}\n",[172,774,775],{"class":174,"line":305},[172,776,346],{"class":182},[172,778,779,781],{"class":174,"line":343},[172,780,464],{"class":182},[172,782,467],{"class":186},[161,784,787],{"className":163,"code":785,"filename":786,"language":166,"meta":167,"style":167},"import { defineMcpTool } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver' \u002F\u002F optional\n\nexport 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",[169,788,789,809,813,825,842,861,879,894,910,926,949,972],{"__ignoreMap":167},[172,790,791,793,795,797,799,801,803,805,807],{"class":174,"line":175},[172,792,179],{"class":178},[172,794,183],{"class":182},[172,796,213],{"class":186},[172,798,190],{"class":182},[172,800,193],{"class":178},[172,802,196],{"class":182},[172,804,222],{"class":199},[172,806,225],{"class":182},[172,808,229],{"class":228},[172,810,811],{"class":174,"line":206},[172,812,236],{"emptyLinePlaceholder":235},[172,814,815,817,819,821,823],{"class":174,"line":232},[172,816,242],{"class":178},[172,818,245],{"class":178},[172,820,213],{"class":248},[172,822,251],{"class":186},[172,824,254],{"class":182},[172,826,827,829,831,833,835,837,839],{"class":174,"line":239},[172,828,261],{"class":260},[172,830,264],{"class":182},[172,832,196],{"class":182},[172,834,702],{"class":199},[172,836,225],{"class":182},[172,838,707],{"class":182},[172,840,841],{"class":228},"              \u002F\u002F Optional - auto-generated from filename\n",[172,843,844,847,849,851,854,856,858],{"class":174,"line":257},[172,845,846],{"class":260},"  title",[172,848,264],{"class":182},[172,850,196],{"class":182},[172,852,853],{"class":199},"Tool Title",[172,855,225],{"class":182},[172,857,707],{"class":182},[172,859,860],{"class":228},"            \u002F\u002F Optional - auto-generated from filename\n",[172,862,863,865,867,869,872,874,876],{"class":174,"line":277},[172,864,280],{"class":260},[172,866,264],{"class":182},[172,868,196],{"class":182},[172,870,871],{"class":199},"Tool description",[172,873,225],{"class":182},[172,875,707],{"class":182},[172,877,878],{"class":228},"  \u002F\u002F What the tool does\n",[172,880,881,883,885,887,889,891],{"class":174,"line":294},[172,882,297],{"class":260},[172,884,264],{"class":182},[172,886,183],{"class":182},[172,888,721],{"class":182},[172,890,724],{"class":182},[172,892,893],{"class":228},"            \u002F\u002F Optional - Zod schema for input validation\n",[172,895,896,899,901,903,905,907],{"class":174,"line":305},[172,897,898],{"class":260},"  outputSchema",[172,900,264],{"class":182},[172,902,183],{"class":182},[172,904,721],{"class":182},[172,906,724],{"class":182},[172,908,909],{"class":228},"            \u002F\u002F Zod schema for structured output\n",[172,911,912,915,917,919,921,923],{"class":174,"line":343},[172,913,914],{"class":260},"  annotations",[172,916,264],{"class":182},[172,918,183],{"class":182},[172,920,721],{"class":182},[172,922,724],{"class":182},[172,924,925],{"class":228},"             \u002F\u002F Behavioral hints for clients\n",[172,927,928,931,933,935,938,940,942,944,946],{"class":174,"line":349},[172,929,930],{"class":260},"  inputExamples",[172,932,264],{"class":182},[172,934,392],{"class":186},[172,936,937],{"class":182},"{",[172,939,721],{"class":182},[172,941,190],{"class":182},[172,943,445],{"class":186},[172,945,707],{"class":182},[172,947,948],{"class":228},"         \u002F\u002F Concrete usage examples\n",[172,950,951,953,955,957,959,961,963,965,967,969],{"class":174,"line":376},[172,952,352],{"class":248},[172,954,264],{"class":182},[172,956,358],{"class":357},[172,958,738],{"class":182},[172,960,741],{"class":364},[172,962,338],{"class":182},[172,964,371],{"class":357},[172,966,183],{"class":182},[172,968,721],{"class":182},[172,970,971],{"class":182}," },\n",[172,973,974,976],{"class":174,"line":384},[172,975,464],{"class":182},[172,977,467],{"class":186},[145,979,981],{"id":980},"input-schema","Input Schema",[150,983,984,985,988,989,991],{},"The ",[169,986,987],{},"inputSchema"," is optional and uses Zod to define and validate input parameters. When provided, each field must be a Zod schema. Tools without parameters can omit ",[169,990,987],{}," entirely:",[161,993,995],{"className":163,"code":994,"filename":165,"language":166,"meta":167,"style":167},"import { defineMcpTool } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver' \u002F\u002F optional\n\nexport default defineMcpTool({\n  name: 'echo',\n  description: 'Echo back a message',\n  handler: async () => {\n    return {\n      content: [{\n        type: 'text',\n        text: 'Echo: test',\n      }],\n    }\n  },\n})\n",[169,996,997,1017,1021,1033,1047,1061,1075,1081,1091,1105,1120,1128,1132,1136],{"__ignoreMap":167},[172,998,999,1001,1003,1005,1007,1009,1011,1013,1015],{"class":174,"line":175},[172,1000,179],{"class":178},[172,1002,183],{"class":182},[172,1004,213],{"class":186},[172,1006,190],{"class":182},[172,1008,193],{"class":178},[172,1010,196],{"class":182},[172,1012,222],{"class":199},[172,1014,225],{"class":182},[172,1016,229],{"class":228},[172,1018,1019],{"class":174,"line":206},[172,1020,236],{"emptyLinePlaceholder":235},[172,1022,1023,1025,1027,1029,1031],{"class":174,"line":232},[172,1024,242],{"class":178},[172,1026,245],{"class":178},[172,1028,213],{"class":248},[172,1030,251],{"class":186},[172,1032,254],{"class":182},[172,1034,1035,1037,1039,1041,1043,1045],{"class":174,"line":239},[172,1036,261],{"class":260},[172,1038,264],{"class":182},[172,1040,196],{"class":182},[172,1042,269],{"class":199},[172,1044,225],{"class":182},[172,1046,274],{"class":182},[172,1048,1049,1051,1053,1055,1057,1059],{"class":174,"line":257},[172,1050,280],{"class":260},[172,1052,264],{"class":182},[172,1054,196],{"class":182},[172,1056,287],{"class":199},[172,1058,225],{"class":182},[172,1060,274],{"class":182},[172,1062,1063,1065,1067,1069,1071,1073],{"class":174,"line":277},[172,1064,352],{"class":248},[172,1066,264],{"class":182},[172,1068,358],{"class":357},[172,1070,583],{"class":182},[172,1072,371],{"class":357},[172,1074,302],{"class":182},[172,1076,1077,1079],{"class":174,"line":294},[172,1078,379],{"class":178},[172,1080,302],{"class":182},[172,1082,1083,1085,1087,1089],{"class":174,"line":305},[172,1084,387],{"class":260},[172,1086,264],{"class":182},[172,1088,392],{"class":260},[172,1090,254],{"class":182},[172,1092,1093,1095,1097,1099,1101,1103],{"class":174,"line":343},[172,1094,400],{"class":260},[172,1096,264],{"class":182},[172,1098,196],{"class":182},[172,1100,407],{"class":199},[172,1102,225],{"class":182},[172,1104,274],{"class":182},[172,1106,1107,1109,1111,1113,1116,1118],{"class":174,"line":349},[172,1108,417],{"class":260},[172,1110,264],{"class":182},[172,1112,196],{"class":182},[172,1114,1115],{"class":199},"Echo: test",[172,1117,225],{"class":182},[172,1119,274],{"class":182},[172,1121,1122,1124,1126],{"class":174,"line":376},[172,1123,442],{"class":182},[172,1125,445],{"class":260},[172,1127,274],{"class":182},[172,1129,1130],{"class":174,"line":384},[172,1131,453],{"class":182},[172,1133,1134],{"class":174,"line":397},[172,1135,346],{"class":182},[172,1137,1138,1140],{"class":174,"line":414},[172,1139,464],{"class":182},[172,1141,467],{"class":186},[150,1143,1144],{},"For tools with parameters, define them using Zod schemas:",[161,1146,1149],{"className":163,"code":1147,"filename":1148,"language":166,"meta":167,"style":167},"import { z } from 'zod'\nimport { defineMcpTool } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver' \u002F\u002F optional\n\nexport default defineMcpTool({\n  name: 'calculator',\n  inputSchema: {\n    \u002F\u002F String input\n    operation: z.string().describe('Operation to perform'),\n\n    \u002F\u002F Number input\n    a: z.number().describe('First number'),\n    b: z.number().describe('Second number'),\n\n    \u002F\u002F Optional field\n    precision: z.number().optional().describe('Decimal precision'),\n\n    \u002F\u002F Enum input\n    format: z.enum(['decimal', 'fraction']).describe('Output format'),\n\n    \u002F\u002F Array input\n    numbers: z.array(z.number()).describe('List of numbers'),\n  },\n  handler: async ({ operation, a, b, precision, format, numbers }) => {\n    \u002F\u002F Handler implementation\n  },\n})\n","server\u002Fmcp\u002Ftools\u002Fcalculator.ts",[169,1150,1151,1169,1189,1193,1205,1220,1228,1233,1265,1269,1274,1307,1339,1343,1348,1387,1391,1396,1449,1454,1460,1502,1507,1552,1558,1563],{"__ignoreMap":167},[172,1152,1153,1155,1157,1159,1161,1163,1165,1167],{"class":174,"line":175},[172,1154,179],{"class":178},[172,1156,183],{"class":182},[172,1158,187],{"class":186},[172,1160,190],{"class":182},[172,1162,193],{"class":178},[172,1164,196],{"class":182},[172,1166,200],{"class":199},[172,1168,203],{"class":182},[172,1170,1171,1173,1175,1177,1179,1181,1183,1185,1187],{"class":174,"line":206},[172,1172,179],{"class":178},[172,1174,183],{"class":182},[172,1176,213],{"class":186},[172,1178,190],{"class":182},[172,1180,193],{"class":178},[172,1182,196],{"class":182},[172,1184,222],{"class":199},[172,1186,225],{"class":182},[172,1188,229],{"class":228},[172,1190,1191],{"class":174,"line":232},[172,1192,236],{"emptyLinePlaceholder":235},[172,1194,1195,1197,1199,1201,1203],{"class":174,"line":239},[172,1196,242],{"class":178},[172,1198,245],{"class":178},[172,1200,213],{"class":248},[172,1202,251],{"class":186},[172,1204,254],{"class":182},[172,1206,1207,1209,1211,1213,1216,1218],{"class":174,"line":257},[172,1208,261],{"class":260},[172,1210,264],{"class":182},[172,1212,196],{"class":182},[172,1214,1215],{"class":199},"calculator",[172,1217,225],{"class":182},[172,1219,274],{"class":182},[172,1221,1222,1224,1226],{"class":174,"line":277},[172,1223,297],{"class":260},[172,1225,264],{"class":182},[172,1227,302],{"class":182},[172,1229,1230],{"class":174,"line":294},[172,1231,1232],{"class":228},"    \u002F\u002F String input\n",[172,1234,1235,1238,1240,1242,1244,1246,1248,1250,1252,1254,1256,1259,1261,1263],{"class":174,"line":305},[172,1236,1237],{"class":260},"    operation",[172,1239,264],{"class":182},[172,1241,187],{"class":186},[172,1243,315],{"class":182},[172,1245,318],{"class":248},[172,1247,321],{"class":186},[172,1249,315],{"class":182},[172,1251,326],{"class":248},[172,1253,251],{"class":186},[172,1255,225],{"class":182},[172,1257,1258],{"class":199},"Operation to perform",[172,1260,225],{"class":182},[172,1262,338],{"class":186},[172,1264,274],{"class":182},[172,1266,1267],{"class":174,"line":343},[172,1268,236],{"emptyLinePlaceholder":235},[172,1270,1271],{"class":174,"line":349},[172,1272,1273],{"class":228},"    \u002F\u002F Number input\n",[172,1275,1276,1279,1281,1283,1285,1288,1290,1292,1294,1296,1298,1301,1303,1305],{"class":174,"line":376},[172,1277,1278],{"class":260},"    a",[172,1280,264],{"class":182},[172,1282,187],{"class":186},[172,1284,315],{"class":182},[172,1286,1287],{"class":248},"number",[172,1289,321],{"class":186},[172,1291,315],{"class":182},[172,1293,326],{"class":248},[172,1295,251],{"class":186},[172,1297,225],{"class":182},[172,1299,1300],{"class":199},"First number",[172,1302,225],{"class":182},[172,1304,338],{"class":186},[172,1306,274],{"class":182},[172,1308,1309,1312,1314,1316,1318,1320,1322,1324,1326,1328,1330,1333,1335,1337],{"class":174,"line":384},[172,1310,1311],{"class":260},"    b",[172,1313,264],{"class":182},[172,1315,187],{"class":186},[172,1317,315],{"class":182},[172,1319,1287],{"class":248},[172,1321,321],{"class":186},[172,1323,315],{"class":182},[172,1325,326],{"class":248},[172,1327,251],{"class":186},[172,1329,225],{"class":182},[172,1331,1332],{"class":199},"Second number",[172,1334,225],{"class":182},[172,1336,338],{"class":186},[172,1338,274],{"class":182},[172,1340,1341],{"class":174,"line":397},[172,1342,236],{"emptyLinePlaceholder":235},[172,1344,1345],{"class":174,"line":414},[172,1346,1347],{"class":228},"    \u002F\u002F Optional field\n",[172,1349,1350,1353,1355,1357,1359,1361,1363,1365,1368,1370,1372,1374,1376,1378,1381,1383,1385],{"class":174,"line":439},[172,1351,1352],{"class":260},"    precision",[172,1354,264],{"class":182},[172,1356,187],{"class":186},[172,1358,315],{"class":182},[172,1360,1287],{"class":248},[172,1362,321],{"class":186},[172,1364,315],{"class":182},[172,1366,1367],{"class":248},"optional",[172,1369,321],{"class":186},[172,1371,315],{"class":182},[172,1373,326],{"class":248},[172,1375,251],{"class":186},[172,1377,225],{"class":182},[172,1379,1380],{"class":199},"Decimal precision",[172,1382,225],{"class":182},[172,1384,338],{"class":186},[172,1386,274],{"class":182},[172,1388,1389],{"class":174,"line":450},[172,1390,236],{"emptyLinePlaceholder":235},[172,1392,1393],{"class":174,"line":456},[172,1394,1395],{"class":228},"    \u002F\u002F Enum input\n",[172,1397,1398,1401,1403,1405,1407,1410,1413,1415,1418,1420,1422,1424,1427,1429,1432,1434,1436,1438,1440,1443,1445,1447],{"class":174,"line":461},[172,1399,1400],{"class":260},"    format",[172,1402,264],{"class":182},[172,1404,187],{"class":186},[172,1406,315],{"class":182},[172,1408,1409],{"class":248},"enum",[172,1411,1412],{"class":186},"([",[172,1414,225],{"class":182},[172,1416,1417],{"class":199},"decimal",[172,1419,225],{"class":182},[172,1421,707],{"class":182},[172,1423,196],{"class":182},[172,1425,1426],{"class":199},"fraction",[172,1428,225],{"class":182},[172,1430,1431],{"class":186},"])",[172,1433,315],{"class":182},[172,1435,326],{"class":248},[172,1437,251],{"class":186},[172,1439,225],{"class":182},[172,1441,1442],{"class":199},"Output format",[172,1444,225],{"class":182},[172,1446,338],{"class":186},[172,1448,274],{"class":182},[172,1450,1452],{"class":174,"line":1451},19,[172,1453,236],{"emptyLinePlaceholder":235},[172,1455,1457],{"class":174,"line":1456},20,[172,1458,1459],{"class":228},"    \u002F\u002F Array input\n",[172,1461,1463,1466,1468,1470,1472,1475,1478,1480,1482,1485,1487,1489,1491,1493,1496,1498,1500],{"class":174,"line":1462},21,[172,1464,1465],{"class":260},"    numbers",[172,1467,264],{"class":182},[172,1469,187],{"class":186},[172,1471,315],{"class":182},[172,1473,1474],{"class":248},"array",[172,1476,1477],{"class":186},"(z",[172,1479,315],{"class":182},[172,1481,1287],{"class":248},[172,1483,1484],{"class":186},"())",[172,1486,315],{"class":182},[172,1488,326],{"class":248},[172,1490,251],{"class":186},[172,1492,225],{"class":182},[172,1494,1495],{"class":199},"List of numbers",[172,1497,225],{"class":182},[172,1499,338],{"class":186},[172,1501,274],{"class":182},[172,1503,1505],{"class":174,"line":1504},22,[172,1506,346],{"class":182},[172,1508,1510,1512,1514,1516,1518,1521,1523,1526,1528,1531,1533,1536,1538,1541,1543,1546,1548,1550],{"class":174,"line":1509},23,[172,1511,352],{"class":248},[172,1513,264],{"class":182},[172,1515,358],{"class":357},[172,1517,361],{"class":182},[172,1519,1520],{"class":364}," operation",[172,1522,707],{"class":182},[172,1524,1525],{"class":364}," a",[172,1527,707],{"class":182},[172,1529,1530],{"class":364}," b",[172,1532,707],{"class":182},[172,1534,1535],{"class":364}," precision",[172,1537,707],{"class":182},[172,1539,1540],{"class":364}," format",[172,1542,707],{"class":182},[172,1544,1545],{"class":364}," numbers",[172,1547,368],{"class":182},[172,1549,371],{"class":357},[172,1551,302],{"class":182},[172,1553,1555],{"class":174,"line":1554},24,[172,1556,1557],{"class":228},"    \u002F\u002F Handler implementation\n",[172,1559,1561],{"class":174,"line":1560},25,[172,1562,346],{"class":182},[172,1564,1566,1568],{"class":174,"line":1565},26,[172,1567,464],{"class":182},[172,1569,467],{"class":186},[1571,1572,1574],"h3",{"id":1573},"common-zod-types","Common Zod Types",[1576,1577,1578,1594],"table",{},[1579,1580,1581],"thead",{},[1582,1583,1584,1588,1591],"tr",{},[1585,1586,1587],"th",{},"Zod Type",[1585,1589,1590],{},"Example",[1585,1592,1593],{},"Description",[1595,1596,1597,1613,1628,1642,1657,1672,1687,1702],"tbody",{},[1582,1598,1599,1605,1610],{},[1600,1601,1602],"td",{},[169,1603,1604],{},"z.string()",[1600,1606,1607],{},[169,1608,1609],{},"z.string().min(1).max(100)",[1600,1611,1612],{},"String with validation",[1582,1614,1615,1620,1625],{},[1600,1616,1617],{},[169,1618,1619],{},"z.number()",[1600,1621,1622],{},[169,1623,1624],{},"z.number().min(0).max(100)",[1600,1626,1627],{},"Number with validation",[1582,1629,1630,1635,1639],{},[1600,1631,1632],{},[169,1633,1634],{},"z.boolean()",[1600,1636,1637],{},[169,1638,1634],{},[1600,1640,1641],{},"Boolean value",[1582,1643,1644,1649,1654],{},[1600,1645,1646],{},[169,1647,1648],{},"z.array()",[1600,1650,1651],{},[169,1652,1653],{},"z.array(z.string())",[1600,1655,1656],{},"Array of values",[1582,1658,1659,1664,1669],{},[1600,1660,1661],{},[169,1662,1663],{},"z.object()",[1600,1665,1666],{},[169,1667,1668],{},"z.object({ ... })",[1600,1670,1671],{},"Nested object",[1582,1673,1674,1679,1684],{},[1600,1675,1676],{},[169,1677,1678],{},"z.enum()",[1600,1680,1681],{},[169,1682,1683],{},"z.enum(['a', 'b'])",[1600,1685,1686],{},"Enumeration",[1582,1688,1689,1694,1699],{},[1600,1690,1691],{},[169,1692,1693],{},"z.optional()",[1600,1695,1696],{},[169,1697,1698],{},"z.string().optional()",[1600,1700,1701],{},"Optional field",[1582,1703,1704,1709,1714],{},[1600,1705,1706],{},[169,1707,1708],{},"z.default()",[1600,1710,1711],{},[169,1712,1713],{},"z.string().default('value')",[1600,1715,1716],{},"Field with default",[145,1718,1720],{"id":1719},"output-schema","Output Schema",[150,1722,1723,1724,264],{},"Define structured output using ",[169,1725,1726],{},"outputSchema",[161,1728,1731],{"className":163,"code":1729,"filename":1730,"language":166,"meta":167,"style":167},"import { z } from 'zod'\nimport { defineMcpTool } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver' \u002F\u002F optional\n\nexport default defineMcpTool({\n  name: 'calculate-bmi',\n  description: 'Calculate Body Mass Index',\n  inputSchema: {\n    weightKg: z.number().describe('Weight in kilograms'),\n    heightM: z.number().describe('Height in meters'),\n  },\n  outputSchema: {\n    bmi: z.number(),\n    category: z.string(),\n  },\n  handler: async ({ weightKg, heightM }) => {\n    const bmi = weightKg \u002F (heightM * heightM)\n    let category = 'Normal'\n    if (bmi \u003C 18.5) category = 'Underweight'\n    else if (bmi >= 25) category = 'Overweight'\n    else if (bmi >= 30) category = 'Obese'\n\n    return {\n      content: [{\n        type: 'text',\n        text: `BMI: ${bmi.toFixed(2)} (${category})`,\n      }],\n      structuredContent: {\n        bmi: Math.round(bmi * 100) \u002F 100,\n        category,\n      },\n    }\n  },\n})\n","server\u002Fmcp\u002Ftools\u002Fbmi.ts",[169,1732,1733,1751,1771,1775,1787,1802,1817,1825,1857,1889,1893,1901,1918,1935,1939,1963,1991,2008,2040,2071,2099,2103,2109,2119,2133,2177,2185,2195,2229,2237,2243,2248,2253],{"__ignoreMap":167},[172,1734,1735,1737,1739,1741,1743,1745,1747,1749],{"class":174,"line":175},[172,1736,179],{"class":178},[172,1738,183],{"class":182},[172,1740,187],{"class":186},[172,1742,190],{"class":182},[172,1744,193],{"class":178},[172,1746,196],{"class":182},[172,1748,200],{"class":199},[172,1750,203],{"class":182},[172,1752,1753,1755,1757,1759,1761,1763,1765,1767,1769],{"class":174,"line":206},[172,1754,179],{"class":178},[172,1756,183],{"class":182},[172,1758,213],{"class":186},[172,1760,190],{"class":182},[172,1762,193],{"class":178},[172,1764,196],{"class":182},[172,1766,222],{"class":199},[172,1768,225],{"class":182},[172,1770,229],{"class":228},[172,1772,1773],{"class":174,"line":232},[172,1774,236],{"emptyLinePlaceholder":235},[172,1776,1777,1779,1781,1783,1785],{"class":174,"line":239},[172,1778,242],{"class":178},[172,1780,245],{"class":178},[172,1782,213],{"class":248},[172,1784,251],{"class":186},[172,1786,254],{"class":182},[172,1788,1789,1791,1793,1795,1798,1800],{"class":174,"line":257},[172,1790,261],{"class":260},[172,1792,264],{"class":182},[172,1794,196],{"class":182},[172,1796,1797],{"class":199},"calculate-bmi",[172,1799,225],{"class":182},[172,1801,274],{"class":182},[172,1803,1804,1806,1808,1810,1813,1815],{"class":174,"line":277},[172,1805,280],{"class":260},[172,1807,264],{"class":182},[172,1809,196],{"class":182},[172,1811,1812],{"class":199},"Calculate Body Mass Index",[172,1814,225],{"class":182},[172,1816,274],{"class":182},[172,1818,1819,1821,1823],{"class":174,"line":294},[172,1820,297],{"class":260},[172,1822,264],{"class":182},[172,1824,302],{"class":182},[172,1826,1827,1830,1832,1834,1836,1838,1840,1842,1844,1846,1848,1851,1853,1855],{"class":174,"line":305},[172,1828,1829],{"class":260},"    weightKg",[172,1831,264],{"class":182},[172,1833,187],{"class":186},[172,1835,315],{"class":182},[172,1837,1287],{"class":248},[172,1839,321],{"class":186},[172,1841,315],{"class":182},[172,1843,326],{"class":248},[172,1845,251],{"class":186},[172,1847,225],{"class":182},[172,1849,1850],{"class":199},"Weight in kilograms",[172,1852,225],{"class":182},[172,1854,338],{"class":186},[172,1856,274],{"class":182},[172,1858,1859,1862,1864,1866,1868,1870,1872,1874,1876,1878,1880,1883,1885,1887],{"class":174,"line":343},[172,1860,1861],{"class":260},"    heightM",[172,1863,264],{"class":182},[172,1865,187],{"class":186},[172,1867,315],{"class":182},[172,1869,1287],{"class":248},[172,1871,321],{"class":186},[172,1873,315],{"class":182},[172,1875,326],{"class":248},[172,1877,251],{"class":186},[172,1879,225],{"class":182},[172,1881,1882],{"class":199},"Height in meters",[172,1884,225],{"class":182},[172,1886,338],{"class":186},[172,1888,274],{"class":182},[172,1890,1891],{"class":174,"line":349},[172,1892,346],{"class":182},[172,1894,1895,1897,1899],{"class":174,"line":376},[172,1896,898],{"class":260},[172,1898,264],{"class":182},[172,1900,302],{"class":182},[172,1902,1903,1906,1908,1910,1912,1914,1916],{"class":174,"line":384},[172,1904,1905],{"class":260},"    bmi",[172,1907,264],{"class":182},[172,1909,187],{"class":186},[172,1911,315],{"class":182},[172,1913,1287],{"class":248},[172,1915,321],{"class":186},[172,1917,274],{"class":182},[172,1919,1920,1923,1925,1927,1929,1931,1933],{"class":174,"line":397},[172,1921,1922],{"class":260},"    category",[172,1924,264],{"class":182},[172,1926,187],{"class":186},[172,1928,315],{"class":182},[172,1930,318],{"class":248},[172,1932,321],{"class":186},[172,1934,274],{"class":182},[172,1936,1937],{"class":174,"line":414},[172,1938,346],{"class":182},[172,1940,1941,1943,1945,1947,1949,1952,1954,1957,1959,1961],{"class":174,"line":439},[172,1942,352],{"class":248},[172,1944,264],{"class":182},[172,1946,358],{"class":357},[172,1948,361],{"class":182},[172,1950,1951],{"class":364}," weightKg",[172,1953,707],{"class":182},[172,1955,1956],{"class":364}," heightM",[172,1958,368],{"class":182},[172,1960,371],{"class":357},[172,1962,302],{"class":182},[172,1964,1965,1968,1971,1974,1976,1979,1981,1984,1987,1989],{"class":174,"line":450},[172,1966,1967],{"class":357},"    const",[172,1969,1970],{"class":186}," bmi",[172,1972,1973],{"class":182}," =",[172,1975,1951],{"class":186},[172,1977,1978],{"class":182}," \u002F",[172,1980,738],{"class":260},[172,1982,1983],{"class":186},"heightM",[172,1985,1986],{"class":182}," *",[172,1988,1956],{"class":186},[172,1990,467],{"class":260},[172,1992,1993,1996,1999,2001,2003,2006],{"class":174,"line":456},[172,1994,1995],{"class":357},"    let",[172,1997,1998],{"class":186}," category",[172,2000,1973],{"class":182},[172,2002,196],{"class":182},[172,2004,2005],{"class":199},"Normal",[172,2007,203],{"class":182},[172,2009,2010,2013,2015,2018,2021,2025,2028,2031,2033,2035,2038],{"class":174,"line":461},[172,2011,2012],{"class":178},"    if",[172,2014,738],{"class":260},[172,2016,2017],{"class":186},"bmi",[172,2019,2020],{"class":182}," \u003C",[172,2022,2024],{"class":2023},"sbssI"," 18.5",[172,2026,2027],{"class":260},") ",[172,2029,2030],{"class":186},"category",[172,2032,1973],{"class":182},[172,2034,196],{"class":182},[172,2036,2037],{"class":199},"Underweight",[172,2039,203],{"class":182},[172,2041,2042,2045,2048,2050,2052,2055,2058,2060,2062,2064,2066,2069],{"class":174,"line":1451},[172,2043,2044],{"class":178},"    else",[172,2046,2047],{"class":178}," if",[172,2049,738],{"class":260},[172,2051,2017],{"class":186},[172,2053,2054],{"class":182}," >=",[172,2056,2057],{"class":2023}," 25",[172,2059,2027],{"class":260},[172,2061,2030],{"class":186},[172,2063,1973],{"class":182},[172,2065,196],{"class":182},[172,2067,2068],{"class":199},"Overweight",[172,2070,203],{"class":182},[172,2072,2073,2075,2077,2079,2081,2083,2086,2088,2090,2092,2094,2097],{"class":174,"line":1456},[172,2074,2044],{"class":178},[172,2076,2047],{"class":178},[172,2078,738],{"class":260},[172,2080,2017],{"class":186},[172,2082,2054],{"class":182},[172,2084,2085],{"class":2023}," 30",[172,2087,2027],{"class":260},[172,2089,2030],{"class":186},[172,2091,1973],{"class":182},[172,2093,196],{"class":182},[172,2095,2096],{"class":199},"Obese",[172,2098,203],{"class":182},[172,2100,2101],{"class":174,"line":1462},[172,2102,236],{"emptyLinePlaceholder":235},[172,2104,2105,2107],{"class":174,"line":1504},[172,2106,379],{"class":178},[172,2108,302],{"class":182},[172,2110,2111,2113,2115,2117],{"class":174,"line":1509},[172,2112,387],{"class":260},[172,2114,264],{"class":182},[172,2116,392],{"class":260},[172,2118,254],{"class":182},[172,2120,2121,2123,2125,2127,2129,2131],{"class":174,"line":1554},[172,2122,400],{"class":260},[172,2124,264],{"class":182},[172,2126,196],{"class":182},[172,2128,407],{"class":199},[172,2130,225],{"class":182},[172,2132,274],{"class":182},[172,2134,2135,2137,2139,2141,2144,2146,2148,2150,2153,2155,2158,2160,2162,2164,2166,2168,2170,2172,2175],{"class":174,"line":1560},[172,2136,417],{"class":260},[172,2138,264],{"class":182},[172,2140,422],{"class":182},[172,2142,2143],{"class":199},"BMI: ",[172,2145,428],{"class":182},[172,2147,2017],{"class":186},[172,2149,315],{"class":182},[172,2151,2152],{"class":248},"toFixed",[172,2154,251],{"class":186},[172,2156,2157],{"class":2023},"2",[172,2159,338],{"class":186},[172,2161,464],{"class":182},[172,2163,738],{"class":199},[172,2165,428],{"class":182},[172,2167,2030],{"class":186},[172,2169,464],{"class":182},[172,2171,338],{"class":199},[172,2173,2174],{"class":182},"`",[172,2176,274],{"class":182},[172,2178,2179,2181,2183],{"class":174,"line":1565},[172,2180,442],{"class":182},[172,2182,445],{"class":260},[172,2184,274],{"class":182},[172,2186,2188,2191,2193],{"class":174,"line":2187},27,[172,2189,2190],{"class":260},"      structuredContent",[172,2192,264],{"class":182},[172,2194,302],{"class":182},[172,2196,2198,2201,2203,2206,2208,2211,2213,2215,2217,2220,2222,2225,2227],{"class":174,"line":2197},28,[172,2199,2200],{"class":260},"        bmi",[172,2202,264],{"class":182},[172,2204,2205],{"class":186}," Math",[172,2207,315],{"class":182},[172,2209,2210],{"class":248},"round",[172,2212,251],{"class":260},[172,2214,2017],{"class":186},[172,2216,1986],{"class":182},[172,2218,2219],{"class":2023}," 100",[172,2221,2027],{"class":260},[172,2223,2224],{"class":182},"\u002F",[172,2226,2219],{"class":2023},[172,2228,274],{"class":182},[172,2230,2232,2235],{"class":174,"line":2231},29,[172,2233,2234],{"class":186},"        category",[172,2236,274],{"class":182},[172,2238,2240],{"class":174,"line":2239},30,[172,2241,2242],{"class":182},"      },\n",[172,2244,2246],{"class":174,"line":2245},31,[172,2247,453],{"class":182},[172,2249,2251],{"class":174,"line":2250},32,[172,2252,346],{"class":182},[172,2254,2256,2258],{"class":174,"line":2255},33,[172,2257,464],{"class":182},[172,2259,467],{"class":186},[150,2261,984,2262,2265,2266,2268],{},[169,2263,2264],{},"structuredContent"," field provides structured data that matches your ",[169,2267,1726],{},", making it easier for AI assistants to work with the results.",[145,2270,2272],{"id":2271},"handler-function","Handler Function",[150,2274,2275],{},"The handler is an async function that receives validated input and returns results:",[161,2277,2279],{"className":163,"code":2278,"language":166,"meta":167,"style":167},"handler: async (args, extra) => {\n  \u002F\u002F args: Validated input matching inputSchema\n  \u002F\u002F extra: Request handler extra information\n\n  return {\n    content: [{\n      type: 'text',\n      text: 'Result text',\n    }],\n    structuredContent: { ... }, \u002F\u002F Optional structured output\n  }\n}\n",[169,2280,2281,2306,2311,2316,2320,2327,2338,2353,2369,2378,2394,2399],{"__ignoreMap":167},[172,2282,2283,2287,2289,2291,2293,2295,2297,2300,2302,2304],{"class":174,"line":175},[172,2284,2286],{"class":2285},"sBMFI","handler",[172,2288,264],{"class":182},[172,2290,358],{"class":357},[172,2292,738],{"class":182},[172,2294,741],{"class":364},[172,2296,707],{"class":182},[172,2298,2299],{"class":364}," extra",[172,2301,338],{"class":182},[172,2303,371],{"class":357},[172,2305,302],{"class":182},[172,2307,2308],{"class":174,"line":206},[172,2309,2310],{"class":228},"  \u002F\u002F args: Validated input matching inputSchema\n",[172,2312,2313],{"class":174,"line":232},[172,2314,2315],{"class":228},"  \u002F\u002F extra: Request handler extra information\n",[172,2317,2318],{"class":174,"line":239},[172,2319,236],{"emptyLinePlaceholder":235},[172,2321,2322,2325],{"class":174,"line":257},[172,2323,2324],{"class":178},"  return",[172,2326,302],{"class":182},[172,2328,2329,2332,2334,2336],{"class":174,"line":277},[172,2330,2331],{"class":260},"    content",[172,2333,264],{"class":182},[172,2335,392],{"class":260},[172,2337,254],{"class":182},[172,2339,2340,2343,2345,2347,2349,2351],{"class":174,"line":294},[172,2341,2342],{"class":260},"      type",[172,2344,264],{"class":182},[172,2346,196],{"class":182},[172,2348,407],{"class":199},[172,2350,225],{"class":182},[172,2352,274],{"class":182},[172,2354,2355,2358,2360,2362,2365,2367],{"class":174,"line":305},[172,2356,2357],{"class":260},"      text",[172,2359,264],{"class":182},[172,2361,196],{"class":182},[172,2363,2364],{"class":199},"Result text",[172,2366,225],{"class":182},[172,2368,274],{"class":182},[172,2370,2371,2374,2376],{"class":174,"line":343},[172,2372,2373],{"class":182},"    }",[172,2375,445],{"class":260},[172,2377,274],{"class":182},[172,2379,2380,2383,2385,2387,2389,2391],{"class":174,"line":349},[172,2381,2382],{"class":260},"    structuredContent",[172,2384,264],{"class":182},[172,2386,183],{"class":182},[172,2388,721],{"class":182},[172,2390,724],{"class":182},[172,2392,2393],{"class":228}," \u002F\u002F Optional structured output\n",[172,2395,2396],{"class":174,"line":376},[172,2397,2398],{"class":182},"  }\n",[172,2400,2401],{"class":174,"line":384},[172,2402,772],{"class":182},[1571,2404,2406],{"id":2405},"content-types","Content Types",[150,2408,2409],{},"Tools can return different content types:",[648,2411,2412,2480,2557],{},[161,2413,2416],{"className":163,"code":2414,"filename":2415,"language":166,"meta":167,"style":167},"return {\n  content: [{\n    type: 'text',\n    text: 'Hello, world!',\n  }],\n}\n","Text Content",[169,2417,2418,2425,2436,2451,2467,2476],{"__ignoreMap":167},[172,2419,2420,2423],{"class":174,"line":175},[172,2421,2422],{"class":178},"return",[172,2424,302],{"class":182},[172,2426,2427,2430,2432,2434],{"class":174,"line":206},[172,2428,2429],{"class":260},"  content",[172,2431,264],{"class":182},[172,2433,392],{"class":186},[172,2435,254],{"class":182},[172,2437,2438,2441,2443,2445,2447,2449],{"class":174,"line":232},[172,2439,2440],{"class":260},"    type",[172,2442,264],{"class":182},[172,2444,196],{"class":182},[172,2446,407],{"class":199},[172,2448,225],{"class":182},[172,2450,274],{"class":182},[172,2452,2453,2456,2458,2460,2463,2465],{"class":174,"line":239},[172,2454,2455],{"class":260},"    text",[172,2457,264],{"class":182},[172,2459,196],{"class":182},[172,2461,2462],{"class":199},"Hello, world!",[172,2464,225],{"class":182},[172,2466,274],{"class":182},[172,2468,2469,2472,2474],{"class":174,"line":257},[172,2470,2471],{"class":182},"  }",[172,2473,445],{"class":186},[172,2475,274],{"class":182},[172,2477,2478],{"class":174,"line":277},[172,2479,772],{"class":182},[161,2481,2484],{"className":163,"code":2482,"filename":2483,"language":166,"meta":167,"style":167},"return {\n  content: [{\n    type: 'image',\n    data: base64ImageData,\n    mimeType: 'image\u002Fpng',\n  }],\n}\n","Image Content",[169,2485,2486,2492,2502,2517,2529,2545,2553],{"__ignoreMap":167},[172,2487,2488,2490],{"class":174,"line":175},[172,2489,2422],{"class":178},[172,2491,302],{"class":182},[172,2493,2494,2496,2498,2500],{"class":174,"line":206},[172,2495,2429],{"class":260},[172,2497,264],{"class":182},[172,2499,392],{"class":186},[172,2501,254],{"class":182},[172,2503,2504,2506,2508,2510,2513,2515],{"class":174,"line":232},[172,2505,2440],{"class":260},[172,2507,264],{"class":182},[172,2509,196],{"class":182},[172,2511,2512],{"class":199},"image",[172,2514,225],{"class":182},[172,2516,274],{"class":182},[172,2518,2519,2522,2524,2527],{"class":174,"line":239},[172,2520,2521],{"class":260},"    data",[172,2523,264],{"class":182},[172,2525,2526],{"class":186}," base64ImageData",[172,2528,274],{"class":182},[172,2530,2531,2534,2536,2538,2541,2543],{"class":174,"line":257},[172,2532,2533],{"class":260},"    mimeType",[172,2535,264],{"class":182},[172,2537,196],{"class":182},[172,2539,2540],{"class":199},"image\u002Fpng",[172,2542,225],{"class":182},[172,2544,274],{"class":182},[172,2546,2547,2549,2551],{"class":174,"line":277},[172,2548,2471],{"class":182},[172,2550,445],{"class":186},[172,2552,274],{"class":182},[172,2554,2555],{"class":174,"line":294},[172,2556,772],{"class":182},[161,2558,2561],{"className":163,"code":2559,"filename":2560,"language":166,"meta":167,"style":167},"return {\n  content: [{\n    type: 'resource',\n    resource: {\n      uri: 'file:\u002F\u002F\u002Fpath\u002Fto\u002Ffile',\n      text: 'File content',\n      mimeType: 'text\u002Fplain',\n    },\n  }],\n}\n","Resource Reference",[169,2562,2563,2569,2579,2594,2603,2619,2634,2650,2655,2663],{"__ignoreMap":167},[172,2564,2565,2567],{"class":174,"line":175},[172,2566,2422],{"class":178},[172,2568,302],{"class":182},[172,2570,2571,2573,2575,2577],{"class":174,"line":206},[172,2572,2429],{"class":260},[172,2574,264],{"class":182},[172,2576,392],{"class":186},[172,2578,254],{"class":182},[172,2580,2581,2583,2585,2587,2590,2592],{"class":174,"line":232},[172,2582,2440],{"class":260},[172,2584,264],{"class":182},[172,2586,196],{"class":182},[172,2588,2589],{"class":199},"resource",[172,2591,225],{"class":182},[172,2593,274],{"class":182},[172,2595,2596,2599,2601],{"class":174,"line":239},[172,2597,2598],{"class":260},"    resource",[172,2600,264],{"class":182},[172,2602,302],{"class":182},[172,2604,2605,2608,2610,2612,2615,2617],{"class":174,"line":257},[172,2606,2607],{"class":260},"      uri",[172,2609,264],{"class":182},[172,2611,196],{"class":182},[172,2613,2614],{"class":199},"file:\u002F\u002F\u002Fpath\u002Fto\u002Ffile",[172,2616,225],{"class":182},[172,2618,274],{"class":182},[172,2620,2621,2623,2625,2627,2630,2632],{"class":174,"line":277},[172,2622,2357],{"class":260},[172,2624,264],{"class":182},[172,2626,196],{"class":182},[172,2628,2629],{"class":199},"File content",[172,2631,225],{"class":182},[172,2633,274],{"class":182},[172,2635,2636,2639,2641,2643,2646,2648],{"class":174,"line":294},[172,2637,2638],{"class":260},"      mimeType",[172,2640,264],{"class":182},[172,2642,196],{"class":182},[172,2644,2645],{"class":199},"text\u002Fplain",[172,2647,225],{"class":182},[172,2649,274],{"class":182},[172,2651,2652],{"class":174,"line":305},[172,2653,2654],{"class":182},"    },\n",[172,2656,2657,2659,2661],{"class":174,"line":343},[172,2658,2471],{"class":182},[172,2660,445],{"class":186},[172,2662,274],{"class":182},[172,2664,2665],{"class":174,"line":349},[172,2666,772],{"class":182},[1571,2668,2670],{"id":2669},"result-helpers","Result Helpers",[150,2672,2673],{},"To simplify creating tool responses, the module provides auto-imported helper functions:",[648,2675,2676,2807,2965,3146],{},[161,2677,2680],{"className":163,"code":2678,"filename":2679,"language":166,"meta":167,"style":167},"import { defineMcpTool, textResult } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver' \u002F\u002F optional\n\n\u002F\u002F Simple text response\nexport default defineMcpTool({\n  description: 'Echo a message',\n  inputSchema: { message: z.string() },\n  handler: async ({ message }) => textResult(`Echo: ${message}`),\n})\n","textResult",[169,2681,2682,2707,2711,2716,2728,2743,2767,2801],{"__ignoreMap":167},[172,2683,2684,2686,2688,2690,2692,2695,2697,2699,2701,2703,2705],{"class":174,"line":175},[172,2685,179],{"class":178},[172,2687,183],{"class":182},[172,2689,213],{"class":186},[172,2691,707],{"class":182},[172,2693,2694],{"class":186}," textResult",[172,2696,190],{"class":182},[172,2698,193],{"class":178},[172,2700,196],{"class":182},[172,2702,222],{"class":199},[172,2704,225],{"class":182},[172,2706,229],{"class":228},[172,2708,2709],{"class":174,"line":206},[172,2710,236],{"emptyLinePlaceholder":235},[172,2712,2713],{"class":174,"line":232},[172,2714,2715],{"class":228},"\u002F\u002F Simple text response\n",[172,2717,2718,2720,2722,2724,2726],{"class":174,"line":239},[172,2719,242],{"class":178},[172,2721,245],{"class":178},[172,2723,213],{"class":248},[172,2725,251],{"class":186},[172,2727,254],{"class":182},[172,2729,2730,2732,2734,2736,2739,2741],{"class":174,"line":257},[172,2731,280],{"class":260},[172,2733,264],{"class":182},[172,2735,196],{"class":182},[172,2737,2738],{"class":199},"Echo a message",[172,2740,225],{"class":182},[172,2742,274],{"class":182},[172,2744,2745,2747,2749,2751,2753,2755,2757,2759,2761,2764],{"class":174,"line":277},[172,2746,297],{"class":260},[172,2748,264],{"class":182},[172,2750,183],{"class":182},[172,2752,365],{"class":260},[172,2754,264],{"class":182},[172,2756,187],{"class":186},[172,2758,315],{"class":182},[172,2760,318],{"class":248},[172,2762,2763],{"class":186},"() ",[172,2765,2766],{"class":182},"},\n",[172,2768,2769,2771,2773,2775,2777,2779,2781,2783,2785,2787,2789,2791,2793,2795,2797,2799],{"class":174,"line":294},[172,2770,352],{"class":248},[172,2772,264],{"class":182},[172,2774,358],{"class":357},[172,2776,361],{"class":182},[172,2778,365],{"class":364},[172,2780,368],{"class":182},[172,2782,371],{"class":357},[172,2784,2694],{"class":248},[172,2786,251],{"class":186},[172,2788,2174],{"class":182},[172,2790,425],{"class":199},[172,2792,428],{"class":182},[172,2794,431],{"class":186},[172,2796,434],{"class":182},[172,2798,338],{"class":186},[172,2800,274],{"class":182},[172,2802,2803,2805],{"class":174,"line":305},[172,2804,464],{"class":182},[172,2806,467],{"class":186},[161,2808,2811],{"className":163,"code":2809,"filename":2810,"language":166,"meta":167,"style":167},"import { defineMcpTool, jsonResult } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver' \u002F\u002F optional\n\n\u002F\u002F JSON response (auto-stringified)\nexport default defineMcpTool({\n  description: 'Get user data',\n  inputSchema: { id: z.string() },\n  handler: async ({ id }) => {\n    const user = await getUser(id)\n    return jsonResult(user)\n    \u002F\u002F or jsonResult(user, false) for compact JSON\n  },\n})\n","jsonResult",[169,2812,2813,2838,2842,2847,2859,2874,2897,2915,2937,2950,2955,2959],{"__ignoreMap":167},[172,2814,2815,2817,2819,2821,2823,2826,2828,2830,2832,2834,2836],{"class":174,"line":175},[172,2816,179],{"class":178},[172,2818,183],{"class":182},[172,2820,213],{"class":186},[172,2822,707],{"class":182},[172,2824,2825],{"class":186}," jsonResult",[172,2827,190],{"class":182},[172,2829,193],{"class":178},[172,2831,196],{"class":182},[172,2833,222],{"class":199},[172,2835,225],{"class":182},[172,2837,229],{"class":228},[172,2839,2840],{"class":174,"line":206},[172,2841,236],{"emptyLinePlaceholder":235},[172,2843,2844],{"class":174,"line":232},[172,2845,2846],{"class":228},"\u002F\u002F JSON response (auto-stringified)\n",[172,2848,2849,2851,2853,2855,2857],{"class":174,"line":239},[172,2850,242],{"class":178},[172,2852,245],{"class":178},[172,2854,213],{"class":248},[172,2856,251],{"class":186},[172,2858,254],{"class":182},[172,2860,2861,2863,2865,2867,2870,2872],{"class":174,"line":257},[172,2862,280],{"class":260},[172,2864,264],{"class":182},[172,2866,196],{"class":182},[172,2868,2869],{"class":199},"Get user data",[172,2871,225],{"class":182},[172,2873,274],{"class":182},[172,2875,2876,2878,2880,2882,2885,2887,2889,2891,2893,2895],{"class":174,"line":277},[172,2877,297],{"class":260},[172,2879,264],{"class":182},[172,2881,183],{"class":182},[172,2883,2884],{"class":260}," id",[172,2886,264],{"class":182},[172,2888,187],{"class":186},[172,2890,315],{"class":182},[172,2892,318],{"class":248},[172,2894,2763],{"class":186},[172,2896,2766],{"class":182},[172,2898,2899,2901,2903,2905,2907,2909,2911,2913],{"class":174,"line":294},[172,2900,352],{"class":248},[172,2902,264],{"class":182},[172,2904,358],{"class":357},[172,2906,361],{"class":182},[172,2908,2884],{"class":364},[172,2910,368],{"class":182},[172,2912,371],{"class":357},[172,2914,302],{"class":182},[172,2916,2917,2919,2922,2924,2927,2930,2932,2935],{"class":174,"line":305},[172,2918,1967],{"class":357},[172,2920,2921],{"class":186}," user",[172,2923,1973],{"class":182},[172,2925,2926],{"class":178}," await",[172,2928,2929],{"class":248}," getUser",[172,2931,251],{"class":260},[172,2933,2934],{"class":186},"id",[172,2936,467],{"class":260},[172,2938,2939,2941,2943,2945,2948],{"class":174,"line":343},[172,2940,379],{"class":178},[172,2942,2825],{"class":248},[172,2944,251],{"class":260},[172,2946,2947],{"class":186},"user",[172,2949,467],{"class":260},[172,2951,2952],{"class":174,"line":349},[172,2953,2954],{"class":228},"    \u002F\u002F or jsonResult(user, false) for compact JSON\n",[172,2956,2957],{"class":174,"line":376},[172,2958,346],{"class":182},[172,2960,2961,2963],{"class":174,"line":384},[172,2962,464],{"class":182},[172,2964,467],{"class":186},[161,2966,2969],{"className":163,"code":2967,"filename":2968,"language":166,"meta":167,"style":167},"import { defineMcpTool, jsonResult, errorResult } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver' \u002F\u002F optional\n\n\u002F\u002F Error response\nexport default defineMcpTool({\n  description: 'Find resource',\n  inputSchema: { id: z.string() },\n  handler: async ({ id }) => {\n    const resource = await findResource(id)\n    if (!resource) return errorResult('Resource not found')\n    return jsonResult(resource)\n  },\n})\n","errorResult",[169,2970,2971,3000,3004,3009,3021,3036,3058,3076,3096,3124,3136,3140],{"__ignoreMap":167},[172,2972,2973,2975,2977,2979,2981,2983,2985,2988,2990,2992,2994,2996,2998],{"class":174,"line":175},[172,2974,179],{"class":178},[172,2976,183],{"class":182},[172,2978,213],{"class":186},[172,2980,707],{"class":182},[172,2982,2825],{"class":186},[172,2984,707],{"class":182},[172,2986,2987],{"class":186}," errorResult",[172,2989,190],{"class":182},[172,2991,193],{"class":178},[172,2993,196],{"class":182},[172,2995,222],{"class":199},[172,2997,225],{"class":182},[172,2999,229],{"class":228},[172,3001,3002],{"class":174,"line":206},[172,3003,236],{"emptyLinePlaceholder":235},[172,3005,3006],{"class":174,"line":232},[172,3007,3008],{"class":228},"\u002F\u002F Error response\n",[172,3010,3011,3013,3015,3017,3019],{"class":174,"line":239},[172,3012,242],{"class":178},[172,3014,245],{"class":178},[172,3016,213],{"class":248},[172,3018,251],{"class":186},[172,3020,254],{"class":182},[172,3022,3023,3025,3027,3029,3032,3034],{"class":174,"line":257},[172,3024,280],{"class":260},[172,3026,264],{"class":182},[172,3028,196],{"class":182},[172,3030,3031],{"class":199},"Find resource",[172,3033,225],{"class":182},[172,3035,274],{"class":182},[172,3037,3038,3040,3042,3044,3046,3048,3050,3052,3054,3056],{"class":174,"line":277},[172,3039,297],{"class":260},[172,3041,264],{"class":182},[172,3043,183],{"class":182},[172,3045,2884],{"class":260},[172,3047,264],{"class":182},[172,3049,187],{"class":186},[172,3051,315],{"class":182},[172,3053,318],{"class":248},[172,3055,2763],{"class":186},[172,3057,2766],{"class":182},[172,3059,3060,3062,3064,3066,3068,3070,3072,3074],{"class":174,"line":294},[172,3061,352],{"class":248},[172,3063,264],{"class":182},[172,3065,358],{"class":357},[172,3067,361],{"class":182},[172,3069,2884],{"class":364},[172,3071,368],{"class":182},[172,3073,371],{"class":357},[172,3075,302],{"class":182},[172,3077,3078,3080,3083,3085,3087,3090,3092,3094],{"class":174,"line":305},[172,3079,1967],{"class":357},[172,3081,3082],{"class":186}," resource",[172,3084,1973],{"class":182},[172,3086,2926],{"class":178},[172,3088,3089],{"class":248}," findResource",[172,3091,251],{"class":260},[172,3093,2934],{"class":186},[172,3095,467],{"class":260},[172,3097,3098,3100,3102,3105,3107,3109,3111,3113,3115,3117,3120,3122],{"class":174,"line":343},[172,3099,2012],{"class":178},[172,3101,738],{"class":260},[172,3103,3104],{"class":182},"!",[172,3106,2589],{"class":186},[172,3108,2027],{"class":260},[172,3110,2422],{"class":178},[172,3112,2987],{"class":248},[172,3114,251],{"class":260},[172,3116,225],{"class":182},[172,3118,3119],{"class":199},"Resource not found",[172,3121,225],{"class":182},[172,3123,467],{"class":260},[172,3125,3126,3128,3130,3132,3134],{"class":174,"line":349},[172,3127,379],{"class":178},[172,3129,2825],{"class":248},[172,3131,251],{"class":260},[172,3133,2589],{"class":186},[172,3135,467],{"class":260},[172,3137,3138],{"class":174,"line":376},[172,3139,346],{"class":182},[172,3141,3142,3144],{"class":174,"line":384},[172,3143,464],{"class":182},[172,3145,467],{"class":186},[161,3147,3150],{"className":163,"code":3148,"filename":3149,"language":166,"meta":167,"style":167},"import { defineMcpTool, imageResult } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver' \u002F\u002F optional\n\n\u002F\u002F Image response (base64)\nexport default defineMcpTool({\n  description: 'Generate chart',\n  inputSchema: { data: z.array(z.number()) },\n  handler: async ({ data }) => {\n    const base64 = await generateChart(data)\n    return imageResult(base64, 'image\u002Fpng')\n  },\n})\n","imageResult",[169,3151,3152,3177,3181,3186,3198,3213,3243,3261,3282,3303,3307],{"__ignoreMap":167},[172,3153,3154,3156,3158,3160,3162,3165,3167,3169,3171,3173,3175],{"class":174,"line":175},[172,3155,179],{"class":178},[172,3157,183],{"class":182},[172,3159,213],{"class":186},[172,3161,707],{"class":182},[172,3163,3164],{"class":186}," imageResult",[172,3166,190],{"class":182},[172,3168,193],{"class":178},[172,3170,196],{"class":182},[172,3172,222],{"class":199},[172,3174,225],{"class":182},[172,3176,229],{"class":228},[172,3178,3179],{"class":174,"line":206},[172,3180,236],{"emptyLinePlaceholder":235},[172,3182,3183],{"class":174,"line":232},[172,3184,3185],{"class":228},"\u002F\u002F Image response (base64)\n",[172,3187,3188,3190,3192,3194,3196],{"class":174,"line":239},[172,3189,242],{"class":178},[172,3191,245],{"class":178},[172,3193,213],{"class":248},[172,3195,251],{"class":186},[172,3197,254],{"class":182},[172,3199,3200,3202,3204,3206,3209,3211],{"class":174,"line":257},[172,3201,280],{"class":260},[172,3203,264],{"class":182},[172,3205,196],{"class":182},[172,3207,3208],{"class":199},"Generate chart",[172,3210,225],{"class":182},[172,3212,274],{"class":182},[172,3214,3215,3217,3219,3221,3224,3226,3228,3230,3232,3234,3236,3238,3241],{"class":174,"line":277},[172,3216,297],{"class":260},[172,3218,264],{"class":182},[172,3220,183],{"class":182},[172,3222,3223],{"class":260}," data",[172,3225,264],{"class":182},[172,3227,187],{"class":186},[172,3229,315],{"class":182},[172,3231,1474],{"class":248},[172,3233,1477],{"class":186},[172,3235,315],{"class":182},[172,3237,1287],{"class":248},[172,3239,3240],{"class":186},"()) ",[172,3242,2766],{"class":182},[172,3244,3245,3247,3249,3251,3253,3255,3257,3259],{"class":174,"line":294},[172,3246,352],{"class":248},[172,3248,264],{"class":182},[172,3250,358],{"class":357},[172,3252,361],{"class":182},[172,3254,3223],{"class":364},[172,3256,368],{"class":182},[172,3258,371],{"class":357},[172,3260,302],{"class":182},[172,3262,3263,3265,3268,3270,3272,3275,3277,3280],{"class":174,"line":305},[172,3264,1967],{"class":357},[172,3266,3267],{"class":186}," base64",[172,3269,1973],{"class":182},[172,3271,2926],{"class":178},[172,3273,3274],{"class":248}," generateChart",[172,3276,251],{"class":260},[172,3278,3279],{"class":186},"data",[172,3281,467],{"class":260},[172,3283,3284,3286,3288,3290,3293,3295,3297,3299,3301],{"class":174,"line":343},[172,3285,379],{"class":178},[172,3287,3164],{"class":248},[172,3289,251],{"class":260},[172,3291,3292],{"class":186},"base64",[172,3294,707],{"class":182},[172,3296,196],{"class":182},[172,3298,2540],{"class":199},[172,3300,225],{"class":182},[172,3302,467],{"class":260},[172,3304,3305],{"class":174,"line":349},[172,3306,346],{"class":182},[172,3308,3309,3311],{"class":174,"line":376},[172,3310,464],{"class":182},[172,3312,467],{"class":186},[1576,3314,3315,3327],{},[1579,3316,3317],{},[1582,3318,3319,3322,3324],{},[1585,3320,3321],{},"Helper",[1585,3323,1593],{},[1585,3325,3326],{},"Parameters",[1595,3328,3329,3344,3367,3385],{},[1582,3330,3331,3336,3339],{},[1600,3332,3333],{},[169,3334,3335],{},"textResult(text)",[1600,3337,3338],{},"Simple text response",[1600,3340,3341],{},[169,3342,3343],{},"text: string",[1582,3345,3346,3351,3354],{},[1600,3347,3348],{},[169,3349,3350],{},"jsonResult(data, pretty?)",[1600,3352,3353],{},"JSON response (auto-stringify)",[1600,3355,3356,3359,3360,3363,3364,338],{},[169,3357,3358],{},"data: unknown",", ",[169,3361,3362],{},"pretty?: boolean"," (default: ",[169,3365,3366],{},"true",[1582,3368,3369,3374,3380],{},[1600,3370,3371],{},[169,3372,3373],{},"errorResult(message)",[1600,3375,3376,3377],{},"Error response with ",[169,3378,3379],{},"isError: true",[1600,3381,3382],{},[169,3383,3384],{},"message: string",[1582,3386,3387,3392,3395],{},[1600,3388,3389],{},[169,3390,3391],{},"imageResult(data, mimeType)",[1600,3393,3394],{},"Base64 image response",[1600,3396,3397,3359,3400],{},[169,3398,3399],{},"data: string",[169,3401,3402],{},"mimeType: string",[145,3404,3406],{"id":3405},"tool-annotations","Tool Annotations",[150,3408,3409],{},"Annotations are behavioral hints that tell MCP clients how a tool behaves. Clients can use them to decide when to prompt users for confirmation (human-in-the-loop).",[161,3411,3414],{"className":163,"code":3412,"filename":3413,"language":166,"meta":167,"style":167},"import { z } from 'zod'\nimport { defineMcpTool } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver' \u002F\u002F optional\n\nexport default defineMcpTool({\n  name: 'delete-user',\n  description: 'Delete a user account',\n  inputSchema: {\n    userId: z.string(),\n  },\n  annotations: {\n    readOnlyHint: false,    \u002F\u002F Tool modifies state\n    destructiveHint: true,  \u002F\u002F Tool performs destructive updates\n    idempotentHint: true,   \u002F\u002F Deleting the same user twice has no additional effect\n    openWorldHint: false,   \u002F\u002F Tool does not interact with external systems\n  },\n  handler: async ({ userId }) => {\n    \u002F\u002F ...\n  },\n})\n","server\u002Fmcp\u002Ftools\u002Fdelete-user.ts",[169,3415,3416,3434,3454,3458,3470,3485,3500,3508,3525,3529,3537,3553,3568,3582,3596,3600,3619,3623,3627],{"__ignoreMap":167},[172,3417,3418,3420,3422,3424,3426,3428,3430,3432],{"class":174,"line":175},[172,3419,179],{"class":178},[172,3421,183],{"class":182},[172,3423,187],{"class":186},[172,3425,190],{"class":182},[172,3427,193],{"class":178},[172,3429,196],{"class":182},[172,3431,200],{"class":199},[172,3433,203],{"class":182},[172,3435,3436,3438,3440,3442,3444,3446,3448,3450,3452],{"class":174,"line":206},[172,3437,179],{"class":178},[172,3439,183],{"class":182},[172,3441,213],{"class":186},[172,3443,190],{"class":182},[172,3445,193],{"class":178},[172,3447,196],{"class":182},[172,3449,222],{"class":199},[172,3451,225],{"class":182},[172,3453,229],{"class":228},[172,3455,3456],{"class":174,"line":232},[172,3457,236],{"emptyLinePlaceholder":235},[172,3459,3460,3462,3464,3466,3468],{"class":174,"line":239},[172,3461,242],{"class":178},[172,3463,245],{"class":178},[172,3465,213],{"class":248},[172,3467,251],{"class":186},[172,3469,254],{"class":182},[172,3471,3472,3474,3476,3478,3481,3483],{"class":174,"line":257},[172,3473,261],{"class":260},[172,3475,264],{"class":182},[172,3477,196],{"class":182},[172,3479,3480],{"class":199},"delete-user",[172,3482,225],{"class":182},[172,3484,274],{"class":182},[172,3486,3487,3489,3491,3493,3496,3498],{"class":174,"line":277},[172,3488,280],{"class":260},[172,3490,264],{"class":182},[172,3492,196],{"class":182},[172,3494,3495],{"class":199},"Delete a user account",[172,3497,225],{"class":182},[172,3499,274],{"class":182},[172,3501,3502,3504,3506],{"class":174,"line":294},[172,3503,297],{"class":260},[172,3505,264],{"class":182},[172,3507,302],{"class":182},[172,3509,3510,3513,3515,3517,3519,3521,3523],{"class":174,"line":305},[172,3511,3512],{"class":260},"    userId",[172,3514,264],{"class":182},[172,3516,187],{"class":186},[172,3518,315],{"class":182},[172,3520,318],{"class":248},[172,3522,321],{"class":186},[172,3524,274],{"class":182},[172,3526,3527],{"class":174,"line":343},[172,3528,346],{"class":182},[172,3530,3531,3533,3535],{"class":174,"line":349},[172,3532,914],{"class":260},[172,3534,264],{"class":182},[172,3536,302],{"class":182},[172,3538,3539,3542,3544,3548,3550],{"class":174,"line":376},[172,3540,3541],{"class":260},"    readOnlyHint",[172,3543,264],{"class":182},[172,3545,3547],{"class":3546},"sfNiH"," false",[172,3549,707],{"class":182},[172,3551,3552],{"class":228},"    \u002F\u002F Tool modifies state\n",[172,3554,3555,3558,3560,3563,3565],{"class":174,"line":384},[172,3556,3557],{"class":260},"    destructiveHint",[172,3559,264],{"class":182},[172,3561,3562],{"class":3546}," true",[172,3564,707],{"class":182},[172,3566,3567],{"class":228},"  \u002F\u002F Tool performs destructive updates\n",[172,3569,3570,3573,3575,3577,3579],{"class":174,"line":397},[172,3571,3572],{"class":260},"    idempotentHint",[172,3574,264],{"class":182},[172,3576,3562],{"class":3546},[172,3578,707],{"class":182},[172,3580,3581],{"class":228},"   \u002F\u002F Deleting the same user twice has no additional effect\n",[172,3583,3584,3587,3589,3591,3593],{"class":174,"line":414},[172,3585,3586],{"class":260},"    openWorldHint",[172,3588,264],{"class":182},[172,3590,3547],{"class":3546},[172,3592,707],{"class":182},[172,3594,3595],{"class":228},"   \u002F\u002F Tool does not interact with external systems\n",[172,3597,3598],{"class":174,"line":439},[172,3599,346],{"class":182},[172,3601,3602,3604,3606,3608,3610,3613,3615,3617],{"class":174,"line":450},[172,3603,352],{"class":248},[172,3605,264],{"class":182},[172,3607,358],{"class":357},[172,3609,361],{"class":182},[172,3611,3612],{"class":364}," userId",[172,3614,368],{"class":182},[172,3616,371],{"class":357},[172,3618,302],{"class":182},[172,3620,3621],{"class":174,"line":456},[172,3622,592],{"class":228},[172,3624,3625],{"class":174,"line":461},[172,3626,346],{"class":182},[172,3628,3629,3631],{"class":174,"line":1451},[172,3630,464],{"class":182},[172,3632,467],{"class":186},[1571,3634,3636],{"id":3635},"annotation-reference","Annotation Reference",[1576,3638,3639,3654],{},[1579,3640,3641],{},[1582,3642,3643,3646,3649,3652],{},[1585,3644,3645],{},"Annotation",[1585,3647,3648],{},"Type",[1585,3650,3651],{},"Default",[1585,3653,1593],{},[1595,3655,3656,3679,3704,3728],{},[1582,3657,3658,3663,3668,3673],{},[1600,3659,3660],{},[169,3661,3662],{},"readOnlyHint",[1600,3664,3665],{},[169,3666,3667],{},"boolean",[1600,3669,3670],{},[169,3671,3672],{},"false",[1600,3674,3675,3676,3678],{},"If ",[169,3677,3366],{},", the tool only reads data without modifying any state (safe to retry).",[1582,3680,3681,3686,3690,3694],{},[1600,3682,3683],{},[169,3684,3685],{},"destructiveHint",[1600,3687,3688],{},[169,3689,3667],{},[1600,3691,3692],{},[169,3693,3366],{},[1600,3695,3675,3696,3698,3699,3701,3702,315],{},[169,3697,3366],{},", the tool may perform destructive operations like deleting data. Only meaningful when ",[169,3700,3662],{}," is ",[169,3703,3672],{},[1582,3705,3706,3711,3715,3719],{},[1600,3707,3708],{},[169,3709,3710],{},"idempotentHint",[1600,3712,3713],{},[169,3714,3667],{},[1600,3716,3717],{},[169,3718,3672],{},[1600,3720,3675,3721,3723,3724,3701,3726,315],{},[169,3722,3366],{},", calling the tool multiple times with the same arguments has no additional effect beyond the first call. Only meaningful when ",[169,3725,3662],{},[169,3727,3672],{},[1582,3729,3730,3735,3739,3743],{},[1600,3731,3732],{},[169,3733,3734],{},"openWorldHint",[1600,3736,3737],{},[169,3738,3667],{},[1600,3740,3741],{},[169,3742,3366],{},[1600,3744,3675,3745,3747,3748,3750],{},[169,3746,3366],{},", the tool may interact with the outside world (external APIs, internet). If ",[169,3749,3672],{},", it only operates on local\u002Finternal data.",[150,3752,3753],{},"Here are common annotation patterns for typical tools:",[648,3755,3756,3813,3877,3940],{},[161,3757,3760],{"className":163,"code":3758,"filename":3759,"language":166,"meta":167,"style":167},"\u002F\u002F Search, list, lookup, calculate...\nannotations: {\n  readOnlyHint: true,\n  destructiveHint: false,\n  openWorldHint: false,\n}\n","Read-only tool",[169,3761,3762,3767,3776,3787,3798,3809],{"__ignoreMap":167},[172,3763,3764],{"class":174,"line":175},[172,3765,3766],{"class":228},"\u002F\u002F Search, list, lookup, calculate...\n",[172,3768,3769,3772,3774],{"class":174,"line":206},[172,3770,3771],{"class":2285},"annotations",[172,3773,264],{"class":182},[172,3775,302],{"class":182},[172,3777,3778,3781,3783,3785],{"class":174,"line":232},[172,3779,3780],{"class":2285},"  readOnlyHint",[172,3782,264],{"class":182},[172,3784,3562],{"class":3546},[172,3786,274],{"class":182},[172,3788,3789,3792,3794,3796],{"class":174,"line":239},[172,3790,3791],{"class":2285},"  destructiveHint",[172,3793,264],{"class":182},[172,3795,3547],{"class":3546},[172,3797,274],{"class":182},[172,3799,3800,3803,3805,3807],{"class":174,"line":257},[172,3801,3802],{"class":2285},"  openWorldHint",[172,3804,264],{"class":182},[172,3806,3547],{"class":3546},[172,3808,274],{"class":182},[172,3810,3811],{"class":174,"line":277},[172,3812,772],{"class":182},[161,3814,3817],{"className":163,"code":3815,"filename":3816,"language":166,"meta":167,"style":167},"\u002F\u002F Creates a new record each time\nannotations: {\n  readOnlyHint: false,\n  destructiveHint: false,\n  idempotentHint: false,\n  openWorldHint: false,\n}\n","Create tool",[169,3818,3819,3824,3832,3842,3852,3863,3873],{"__ignoreMap":167},[172,3820,3821],{"class":174,"line":175},[172,3822,3823],{"class":228},"\u002F\u002F Creates a new record each time\n",[172,3825,3826,3828,3830],{"class":174,"line":206},[172,3827,3771],{"class":2285},[172,3829,264],{"class":182},[172,3831,302],{"class":182},[172,3833,3834,3836,3838,3840],{"class":174,"line":232},[172,3835,3780],{"class":2285},[172,3837,264],{"class":182},[172,3839,3547],{"class":3546},[172,3841,274],{"class":182},[172,3843,3844,3846,3848,3850],{"class":174,"line":239},[172,3845,3791],{"class":2285},[172,3847,264],{"class":182},[172,3849,3547],{"class":3546},[172,3851,274],{"class":182},[172,3853,3854,3857,3859,3861],{"class":174,"line":257},[172,3855,3856],{"class":2285},"  idempotentHint",[172,3858,264],{"class":182},[172,3860,3547],{"class":3546},[172,3862,274],{"class":182},[172,3864,3865,3867,3869,3871],{"class":174,"line":277},[172,3866,3802],{"class":2285},[172,3868,264],{"class":182},[172,3870,3547],{"class":3546},[172,3872,274],{"class":182},[172,3874,3875],{"class":174,"line":294},[172,3876,772],{"class":182},[161,3878,3881],{"className":163,"code":3879,"filename":3880,"language":166,"meta":167,"style":167},"\u002F\u002F Updates are idempotent (same input → same result)\nannotations: {\n  readOnlyHint: false,\n  destructiveHint: false,\n  idempotentHint: true,\n  openWorldHint: false,\n}\n","Update tool",[169,3882,3883,3888,3896,3906,3916,3926,3936],{"__ignoreMap":167},[172,3884,3885],{"class":174,"line":175},[172,3886,3887],{"class":228},"\u002F\u002F Updates are idempotent (same input → same result)\n",[172,3889,3890,3892,3894],{"class":174,"line":206},[172,3891,3771],{"class":2285},[172,3893,264],{"class":182},[172,3895,302],{"class":182},[172,3897,3898,3900,3902,3904],{"class":174,"line":232},[172,3899,3780],{"class":2285},[172,3901,264],{"class":182},[172,3903,3547],{"class":3546},[172,3905,274],{"class":182},[172,3907,3908,3910,3912,3914],{"class":174,"line":239},[172,3909,3791],{"class":2285},[172,3911,264],{"class":182},[172,3913,3547],{"class":3546},[172,3915,274],{"class":182},[172,3917,3918,3920,3922,3924],{"class":174,"line":257},[172,3919,3856],{"class":2285},[172,3921,264],{"class":182},[172,3923,3562],{"class":3546},[172,3925,274],{"class":182},[172,3927,3928,3930,3932,3934],{"class":174,"line":277},[172,3929,3802],{"class":2285},[172,3931,264],{"class":182},[172,3933,3547],{"class":3546},[172,3935,274],{"class":182},[172,3937,3938],{"class":174,"line":294},[172,3939,772],{"class":182},[161,3941,3944],{"className":163,"code":3942,"filename":3943,"language":166,"meta":167,"style":167},"\u002F\u002F Destructive and idempotent (deleting twice is the same)\nannotations: {\n  readOnlyHint: false,\n  destructiveHint: true,\n  idempotentHint: true,\n  openWorldHint: false,\n}\n","Delete tool",[169,3945,3946,3951,3959,3969,3979,3989,3999],{"__ignoreMap":167},[172,3947,3948],{"class":174,"line":175},[172,3949,3950],{"class":228},"\u002F\u002F Destructive and idempotent (deleting twice is the same)\n",[172,3952,3953,3955,3957],{"class":174,"line":206},[172,3954,3771],{"class":2285},[172,3956,264],{"class":182},[172,3958,302],{"class":182},[172,3960,3961,3963,3965,3967],{"class":174,"line":232},[172,3962,3780],{"class":2285},[172,3964,264],{"class":182},[172,3966,3547],{"class":3546},[172,3968,274],{"class":182},[172,3970,3971,3973,3975,3977],{"class":174,"line":239},[172,3972,3791],{"class":2285},[172,3974,264],{"class":182},[172,3976,3562],{"class":3546},[172,3978,274],{"class":182},[172,3980,3981,3983,3985,3987],{"class":174,"line":257},[172,3982,3856],{"class":2285},[172,3984,264],{"class":182},[172,3986,3562],{"class":3546},[172,3988,274],{"class":182},[172,3990,3991,3993,3995,3997],{"class":174,"line":277},[172,3992,3802],{"class":2285},[172,3994,264],{"class":182},[172,3996,3547],{"class":3546},[172,3998,274],{"class":182},[172,4000,4001],{"class":174,"line":294},[172,4002,772],{"class":182},[4004,4005,4008,4009,4013],"callout",{"color":4006,"icon":4007},"info","i-lucide-info","All annotations are ",[4010,4011,4012],"strong",{},"hints"," — they are not guaranteed to be respected by every MCP client. Clients should never make security-critical decisions based on annotations from untrusted servers.",[145,4015,4017],{"id":4016},"input-examples","Input Examples",[150,4019,4020,4021,4024,4025,4027,4028,315],{},"You can provide concrete usage examples for your tools using ",[169,4022,4023],{},"inputExamples",". These examples are type-safe (matching your ",[169,4026,987],{},") and are transmitted to clients via ",[169,4029,4030],{},"_meta.inputExamples",[150,4032,4033],{},"Input examples help AI models understand how to correctly fill in tool parameters, especially for tools with optional fields or complex inputs.",[161,4035,4038],{"className":163,"code":4036,"filename":4037,"language":166,"meta":167,"style":167},"import { z } from 'zod'\nimport { defineMcpTool } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver' \u002F\u002F optional\n\nexport default defineMcpTool({\n  description: 'Create a new todo',\n  inputSchema: {\n    title: z.string().describe('The title of the todo'),\n    content: z.string().optional().describe('Optional description'),\n  },\n  inputExamples: [\n    { title: 'Buy groceries', content: 'Milk, eggs, bread' },\n    { title: 'Fix login bug' },  \u002F\u002F content is optional\n  ],\n  handler: async ({ title, content }) => {\n    \u002F\u002F ...\n  },\n})\n","server\u002Fmcp\u002Ftools\u002Fcreate-todo.ts",[169,4039,4040,4058,4078,4082,4094,4109,4117,4149,4186,4190,4199,4231,4251,4258,4280,4284,4288],{"__ignoreMap":167},[172,4041,4042,4044,4046,4048,4050,4052,4054,4056],{"class":174,"line":175},[172,4043,179],{"class":178},[172,4045,183],{"class":182},[172,4047,187],{"class":186},[172,4049,190],{"class":182},[172,4051,193],{"class":178},[172,4053,196],{"class":182},[172,4055,200],{"class":199},[172,4057,203],{"class":182},[172,4059,4060,4062,4064,4066,4068,4070,4072,4074,4076],{"class":174,"line":206},[172,4061,179],{"class":178},[172,4063,183],{"class":182},[172,4065,213],{"class":186},[172,4067,190],{"class":182},[172,4069,193],{"class":178},[172,4071,196],{"class":182},[172,4073,222],{"class":199},[172,4075,225],{"class":182},[172,4077,229],{"class":228},[172,4079,4080],{"class":174,"line":232},[172,4081,236],{"emptyLinePlaceholder":235},[172,4083,4084,4086,4088,4090,4092],{"class":174,"line":239},[172,4085,242],{"class":178},[172,4087,245],{"class":178},[172,4089,213],{"class":248},[172,4091,251],{"class":186},[172,4093,254],{"class":182},[172,4095,4096,4098,4100,4102,4105,4107],{"class":174,"line":257},[172,4097,280],{"class":260},[172,4099,264],{"class":182},[172,4101,196],{"class":182},[172,4103,4104],{"class":199},"Create a new todo",[172,4106,225],{"class":182},[172,4108,274],{"class":182},[172,4110,4111,4113,4115],{"class":174,"line":277},[172,4112,297],{"class":260},[172,4114,264],{"class":182},[172,4116,302],{"class":182},[172,4118,4119,4122,4124,4126,4128,4130,4132,4134,4136,4138,4140,4143,4145,4147],{"class":174,"line":294},[172,4120,4121],{"class":260},"    title",[172,4123,264],{"class":182},[172,4125,187],{"class":186},[172,4127,315],{"class":182},[172,4129,318],{"class":248},[172,4131,321],{"class":186},[172,4133,315],{"class":182},[172,4135,326],{"class":248},[172,4137,251],{"class":186},[172,4139,225],{"class":182},[172,4141,4142],{"class":199},"The title of the todo",[172,4144,225],{"class":182},[172,4146,338],{"class":186},[172,4148,274],{"class":182},[172,4150,4151,4153,4155,4157,4159,4161,4163,4165,4167,4169,4171,4173,4175,4177,4180,4182,4184],{"class":174,"line":305},[172,4152,2331],{"class":260},[172,4154,264],{"class":182},[172,4156,187],{"class":186},[172,4158,315],{"class":182},[172,4160,318],{"class":248},[172,4162,321],{"class":186},[172,4164,315],{"class":182},[172,4166,1367],{"class":248},[172,4168,321],{"class":186},[172,4170,315],{"class":182},[172,4172,326],{"class":248},[172,4174,251],{"class":186},[172,4176,225],{"class":182},[172,4178,4179],{"class":199},"Optional description",[172,4181,225],{"class":182},[172,4183,338],{"class":186},[172,4185,274],{"class":182},[172,4187,4188],{"class":174,"line":343},[172,4189,346],{"class":182},[172,4191,4192,4194,4196],{"class":174,"line":349},[172,4193,930],{"class":260},[172,4195,264],{"class":182},[172,4197,4198],{"class":186}," [\n",[172,4200,4201,4204,4207,4209,4211,4214,4216,4218,4220,4222,4224,4227,4229],{"class":174,"line":376},[172,4202,4203],{"class":182},"    {",[172,4205,4206],{"class":260}," title",[172,4208,264],{"class":182},[172,4210,196],{"class":182},[172,4212,4213],{"class":199},"Buy groceries",[172,4215,225],{"class":182},[172,4217,707],{"class":182},[172,4219,759],{"class":260},[172,4221,264],{"class":182},[172,4223,196],{"class":182},[172,4225,4226],{"class":199},"Milk, eggs, bread",[172,4228,225],{"class":182},[172,4230,971],{"class":182},[172,4232,4233,4235,4237,4239,4241,4244,4246,4248],{"class":174,"line":384},[172,4234,4203],{"class":182},[172,4236,4206],{"class":260},[172,4238,264],{"class":182},[172,4240,196],{"class":182},[172,4242,4243],{"class":199},"Fix login bug",[172,4245,225],{"class":182},[172,4247,724],{"class":182},[172,4249,4250],{"class":228},"  \u002F\u002F content is optional\n",[172,4252,4253,4256],{"class":174,"line":397},[172,4254,4255],{"class":186},"  ]",[172,4257,274],{"class":182},[172,4259,4260,4262,4264,4266,4268,4270,4272,4274,4276,4278],{"class":174,"line":414},[172,4261,352],{"class":248},[172,4263,264],{"class":182},[172,4265,358],{"class":357},[172,4267,361],{"class":182},[172,4269,4206],{"class":364},[172,4271,707],{"class":182},[172,4273,759],{"class":364},[172,4275,368],{"class":182},[172,4277,371],{"class":357},[172,4279,302],{"class":182},[172,4281,4282],{"class":174,"line":439},[172,4283,592],{"class":228},[172,4285,4286],{"class":174,"line":450},[172,4287,346],{"class":182},[172,4289,4290,4292],{"class":174,"line":456},[172,4291,464],{"class":182},[172,4293,467],{"class":186},[4004,4295,4297,4299],{"color":4296,"icon":129},"warning",[169,4298,4023],{}," are particularly useful for tools with optional parameters, enums, or complex nested inputs where showing concrete values helps models pick the right format.",[145,4301,4303],{"id":4302},"error-handling","Error Handling",[150,4305,4306],{},"Handle errors gracefully in your handlers:",[161,4308,4311],{"className":163,"code":4309,"filename":4310,"language":166,"meta":167,"style":167},"import { z } from 'zod'\nimport { defineMcpTool } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver' \u002F\u002F optional\n\nexport default defineMcpTool({\n  name: 'safe-divide',\n  inputSchema: {\n    a: z.number(),\n    b: z.number(),\n  },\n  handler: async ({ a, b }) => {\n    if (b === 0) {\n      return {\n        content: [{\n          type: 'text',\n          text: 'Error: Division by zero',\n        }],\n        isError: true,\n      }\n    }\n\n    const result = a \u002F b\n    return {\n      content: [{\n        type: 'text',\n        text: `Result: ${result}`,\n      }],\n    }\n  },\n})\n","server\u002Fmcp\u002Ftools\u002Fsafe-divide.ts",[169,4312,4313,4331,4351,4355,4367,4382,4390,4406,4422,4426,4448,4467,4474,4485,4500,4516,4525,4536,4541,4545,4549,4565,4571,4581,4595,4615,4623,4627,4631],{"__ignoreMap":167},[172,4314,4315,4317,4319,4321,4323,4325,4327,4329],{"class":174,"line":175},[172,4316,179],{"class":178},[172,4318,183],{"class":182},[172,4320,187],{"class":186},[172,4322,190],{"class":182},[172,4324,193],{"class":178},[172,4326,196],{"class":182},[172,4328,200],{"class":199},[172,4330,203],{"class":182},[172,4332,4333,4335,4337,4339,4341,4343,4345,4347,4349],{"class":174,"line":206},[172,4334,179],{"class":178},[172,4336,183],{"class":182},[172,4338,213],{"class":186},[172,4340,190],{"class":182},[172,4342,193],{"class":178},[172,4344,196],{"class":182},[172,4346,222],{"class":199},[172,4348,225],{"class":182},[172,4350,229],{"class":228},[172,4352,4353],{"class":174,"line":232},[172,4354,236],{"emptyLinePlaceholder":235},[172,4356,4357,4359,4361,4363,4365],{"class":174,"line":239},[172,4358,242],{"class":178},[172,4360,245],{"class":178},[172,4362,213],{"class":248},[172,4364,251],{"class":186},[172,4366,254],{"class":182},[172,4368,4369,4371,4373,4375,4378,4380],{"class":174,"line":257},[172,4370,261],{"class":260},[172,4372,264],{"class":182},[172,4374,196],{"class":182},[172,4376,4377],{"class":199},"safe-divide",[172,4379,225],{"class":182},[172,4381,274],{"class":182},[172,4383,4384,4386,4388],{"class":174,"line":277},[172,4385,297],{"class":260},[172,4387,264],{"class":182},[172,4389,302],{"class":182},[172,4391,4392,4394,4396,4398,4400,4402,4404],{"class":174,"line":294},[172,4393,1278],{"class":260},[172,4395,264],{"class":182},[172,4397,187],{"class":186},[172,4399,315],{"class":182},[172,4401,1287],{"class":248},[172,4403,321],{"class":186},[172,4405,274],{"class":182},[172,4407,4408,4410,4412,4414,4416,4418,4420],{"class":174,"line":305},[172,4409,1311],{"class":260},[172,4411,264],{"class":182},[172,4413,187],{"class":186},[172,4415,315],{"class":182},[172,4417,1287],{"class":248},[172,4419,321],{"class":186},[172,4421,274],{"class":182},[172,4423,4424],{"class":174,"line":343},[172,4425,346],{"class":182},[172,4427,4428,4430,4432,4434,4436,4438,4440,4442,4444,4446],{"class":174,"line":349},[172,4429,352],{"class":248},[172,4431,264],{"class":182},[172,4433,358],{"class":357},[172,4435,361],{"class":182},[172,4437,1525],{"class":364},[172,4439,707],{"class":182},[172,4441,1530],{"class":364},[172,4443,368],{"class":182},[172,4445,371],{"class":357},[172,4447,302],{"class":182},[172,4449,4450,4452,4454,4457,4460,4463,4465],{"class":174,"line":376},[172,4451,2012],{"class":178},[172,4453,738],{"class":260},[172,4455,4456],{"class":186},"b",[172,4458,4459],{"class":182}," ===",[172,4461,4462],{"class":2023}," 0",[172,4464,2027],{"class":260},[172,4466,254],{"class":182},[172,4468,4469,4472],{"class":174,"line":384},[172,4470,4471],{"class":178},"      return",[172,4473,302],{"class":182},[172,4475,4476,4479,4481,4483],{"class":174,"line":397},[172,4477,4478],{"class":260},"        content",[172,4480,264],{"class":182},[172,4482,392],{"class":260},[172,4484,254],{"class":182},[172,4486,4487,4490,4492,4494,4496,4498],{"class":174,"line":414},[172,4488,4489],{"class":260},"          type",[172,4491,264],{"class":182},[172,4493,196],{"class":182},[172,4495,407],{"class":199},[172,4497,225],{"class":182},[172,4499,274],{"class":182},[172,4501,4502,4505,4507,4509,4512,4514],{"class":174,"line":439},[172,4503,4504],{"class":260},"          text",[172,4506,264],{"class":182},[172,4508,196],{"class":182},[172,4510,4511],{"class":199},"Error: Division by zero",[172,4513,225],{"class":182},[172,4515,274],{"class":182},[172,4517,4518,4521,4523],{"class":174,"line":450},[172,4519,4520],{"class":182},"        }",[172,4522,445],{"class":260},[172,4524,274],{"class":182},[172,4526,4527,4530,4532,4534],{"class":174,"line":456},[172,4528,4529],{"class":260},"        isError",[172,4531,264],{"class":182},[172,4533,3562],{"class":3546},[172,4535,274],{"class":182},[172,4537,4538],{"class":174,"line":461},[172,4539,4540],{"class":182},"      }\n",[172,4542,4543],{"class":174,"line":1451},[172,4544,453],{"class":182},[172,4546,4547],{"class":174,"line":1456},[172,4548,236],{"emptyLinePlaceholder":235},[172,4550,4551,4553,4556,4558,4560,4562],{"class":174,"line":1462},[172,4552,1967],{"class":357},[172,4554,4555],{"class":186}," result",[172,4557,1973],{"class":182},[172,4559,1525],{"class":186},[172,4561,1978],{"class":182},[172,4563,4564],{"class":186}," b\n",[172,4566,4567,4569],{"class":174,"line":1504},[172,4568,379],{"class":178},[172,4570,302],{"class":182},[172,4572,4573,4575,4577,4579],{"class":174,"line":1509},[172,4574,387],{"class":260},[172,4576,264],{"class":182},[172,4578,392],{"class":260},[172,4580,254],{"class":182},[172,4582,4583,4585,4587,4589,4591,4593],{"class":174,"line":1554},[172,4584,400],{"class":260},[172,4586,264],{"class":182},[172,4588,196],{"class":182},[172,4590,407],{"class":199},[172,4592,225],{"class":182},[172,4594,274],{"class":182},[172,4596,4597,4599,4601,4603,4606,4608,4611,4613],{"class":174,"line":1560},[172,4598,417],{"class":260},[172,4600,264],{"class":182},[172,4602,422],{"class":182},[172,4604,4605],{"class":199},"Result: ",[172,4607,428],{"class":182},[172,4609,4610],{"class":186},"result",[172,4612,434],{"class":182},[172,4614,274],{"class":182},[172,4616,4617,4619,4621],{"class":174,"line":1565},[172,4618,442],{"class":182},[172,4620,445],{"class":260},[172,4622,274],{"class":182},[172,4624,4625],{"class":174,"line":2187},[172,4626,453],{"class":182},[172,4628,4629],{"class":174,"line":2197},[172,4630,346],{"class":182},[172,4632,4633,4635],{"class":174,"line":2231},[172,4634,464],{"class":182},[172,4636,467],{"class":186},[145,4638,4640],{"id":4639},"response-caching","Response Caching",[150,4642,4643,4644,4647],{},"You can cache tool responses using Nitro's caching system. The ",[169,4645,4646],{},"cache"," option accepts three formats:",[1571,4649,4651],{"id":4650},"simple-duration","Simple Duration",[150,4653,4654,4655,4664],{},"Use a string duration (parsed by ",[4656,4657,4661],"a",{"href":4658,"rel":4659},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fms",[4660],"nofollow",[169,4662,4663],{},"ms",") or a number in milliseconds:",[161,4666,4669],{"className":163,"code":4667,"filename":4668,"language":166,"meta":167,"style":167},"import { z } from 'zod'\nimport { defineMcpTool } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver' \u002F\u002F optional\n\nexport default defineMcpTool({\n  description: 'Fetch data with 1 hour cache',\n  inputSchema: {\n    id: z.string(),\n  },\n  cache: '1h', \u002F\u002F or '30m', '2 days', 3600000, etc.\n  handler: async ({ id }) => {\n    const data = await fetchExpensiveData(id)\n    return {\n      content: [{ type: 'text', text: JSON.stringify(data) }],\n    }\n  },\n})\n","server\u002Fmcp\u002Ftools\u002Fcached-data.ts",[169,4670,4671,4689,4709,4713,4725,4740,4748,4765,4769,4788,4806,4825,4831,4879,4883,4887],{"__ignoreMap":167},[172,4672,4673,4675,4677,4679,4681,4683,4685,4687],{"class":174,"line":175},[172,4674,179],{"class":178},[172,4676,183],{"class":182},[172,4678,187],{"class":186},[172,4680,190],{"class":182},[172,4682,193],{"class":178},[172,4684,196],{"class":182},[172,4686,200],{"class":199},[172,4688,203],{"class":182},[172,4690,4691,4693,4695,4697,4699,4701,4703,4705,4707],{"class":174,"line":206},[172,4692,179],{"class":178},[172,4694,183],{"class":182},[172,4696,213],{"class":186},[172,4698,190],{"class":182},[172,4700,193],{"class":178},[172,4702,196],{"class":182},[172,4704,222],{"class":199},[172,4706,225],{"class":182},[172,4708,229],{"class":228},[172,4710,4711],{"class":174,"line":232},[172,4712,236],{"emptyLinePlaceholder":235},[172,4714,4715,4717,4719,4721,4723],{"class":174,"line":239},[172,4716,242],{"class":178},[172,4718,245],{"class":178},[172,4720,213],{"class":248},[172,4722,251],{"class":186},[172,4724,254],{"class":182},[172,4726,4727,4729,4731,4733,4736,4738],{"class":174,"line":257},[172,4728,280],{"class":260},[172,4730,264],{"class":182},[172,4732,196],{"class":182},[172,4734,4735],{"class":199},"Fetch data with 1 hour cache",[172,4737,225],{"class":182},[172,4739,274],{"class":182},[172,4741,4742,4744,4746],{"class":174,"line":277},[172,4743,297],{"class":260},[172,4745,264],{"class":182},[172,4747,302],{"class":182},[172,4749,4750,4753,4755,4757,4759,4761,4763],{"class":174,"line":294},[172,4751,4752],{"class":260},"    id",[172,4754,264],{"class":182},[172,4756,187],{"class":186},[172,4758,315],{"class":182},[172,4760,318],{"class":248},[172,4762,321],{"class":186},[172,4764,274],{"class":182},[172,4766,4767],{"class":174,"line":305},[172,4768,346],{"class":182},[172,4770,4771,4774,4776,4778,4781,4783,4785],{"class":174,"line":343},[172,4772,4773],{"class":260},"  cache",[172,4775,264],{"class":182},[172,4777,196],{"class":182},[172,4779,4780],{"class":199},"1h",[172,4782,225],{"class":182},[172,4784,707],{"class":182},[172,4786,4787],{"class":228}," \u002F\u002F or '30m', '2 days', 3600000, etc.\n",[172,4789,4790,4792,4794,4796,4798,4800,4802,4804],{"class":174,"line":349},[172,4791,352],{"class":248},[172,4793,264],{"class":182},[172,4795,358],{"class":357},[172,4797,361],{"class":182},[172,4799,2884],{"class":364},[172,4801,368],{"class":182},[172,4803,371],{"class":357},[172,4805,302],{"class":182},[172,4807,4808,4810,4812,4814,4816,4819,4821,4823],{"class":174,"line":376},[172,4809,1967],{"class":357},[172,4811,3223],{"class":186},[172,4813,1973],{"class":182},[172,4815,2926],{"class":178},[172,4817,4818],{"class":248}," fetchExpensiveData",[172,4820,251],{"class":260},[172,4822,2934],{"class":186},[172,4824,467],{"class":260},[172,4826,4827,4829],{"class":174,"line":384},[172,4828,379],{"class":178},[172,4830,302],{"class":182},[172,4832,4833,4835,4837,4839,4841,4844,4846,4848,4850,4852,4854,4857,4859,4862,4864,4867,4869,4871,4873,4875,4877],{"class":174,"line":397},[172,4834,387],{"class":260},[172,4836,264],{"class":182},[172,4838,392],{"class":260},[172,4840,937],{"class":182},[172,4842,4843],{"class":260}," type",[172,4845,264],{"class":182},[172,4847,196],{"class":182},[172,4849,407],{"class":199},[172,4851,225],{"class":182},[172,4853,707],{"class":182},[172,4855,4856],{"class":260}," text",[172,4858,264],{"class":182},[172,4860,4861],{"class":186}," JSON",[172,4863,315],{"class":182},[172,4865,4866],{"class":248},"stringify",[172,4868,251],{"class":260},[172,4870,3279],{"class":186},[172,4872,2027],{"class":260},[172,4874,464],{"class":182},[172,4876,445],{"class":260},[172,4878,274],{"class":182},[172,4880,4881],{"class":174,"line":414},[172,4882,453],{"class":182},[172,4884,4885],{"class":174,"line":439},[172,4886,346],{"class":182},[172,4888,4889,4891],{"class":174,"line":450},[172,4890,464],{"class":182},[172,4892,467],{"class":186},[1571,4894,4896],{"id":4895},"full-cache-options","Full Cache Options",[150,4898,4899],{},"For more control, use an object with all Nitro cache options:",[161,4901,4904],{"className":163,"code":4902,"filename":4903,"language":166,"meta":167,"style":167},"import { z } from 'zod'\nimport { defineMcpTool } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver' \u002F\u002F optional\n\nexport default defineMcpTool({\n  description: 'Get page with custom cache key',\n  inputSchema: {\n    path: z.string(),\n  },\n  cache: {\n    maxAge: '1h',\n    getKey: args => `page-${args.path}`,\n    swr: true, \u002F\u002F stale-while-revalidate\n  },\n  handler: async ({ path }) => {\n    \u002F\u002F ...\n  },\n})\n","server\u002Fmcp\u002Ftools\u002Fcached-pages.ts",[169,4905,4906,4924,4944,4948,4960,4975,4983,5000,5004,5012,5027,5057,5071,5075,5094,5098,5102],{"__ignoreMap":167},[172,4907,4908,4910,4912,4914,4916,4918,4920,4922],{"class":174,"line":175},[172,4909,179],{"class":178},[172,4911,183],{"class":182},[172,4913,187],{"class":186},[172,4915,190],{"class":182},[172,4917,193],{"class":178},[172,4919,196],{"class":182},[172,4921,200],{"class":199},[172,4923,203],{"class":182},[172,4925,4926,4928,4930,4932,4934,4936,4938,4940,4942],{"class":174,"line":206},[172,4927,179],{"class":178},[172,4929,183],{"class":182},[172,4931,213],{"class":186},[172,4933,190],{"class":182},[172,4935,193],{"class":178},[172,4937,196],{"class":182},[172,4939,222],{"class":199},[172,4941,225],{"class":182},[172,4943,229],{"class":228},[172,4945,4946],{"class":174,"line":232},[172,4947,236],{"emptyLinePlaceholder":235},[172,4949,4950,4952,4954,4956,4958],{"class":174,"line":239},[172,4951,242],{"class":178},[172,4953,245],{"class":178},[172,4955,213],{"class":248},[172,4957,251],{"class":186},[172,4959,254],{"class":182},[172,4961,4962,4964,4966,4968,4971,4973],{"class":174,"line":257},[172,4963,280],{"class":260},[172,4965,264],{"class":182},[172,4967,196],{"class":182},[172,4969,4970],{"class":199},"Get page with custom cache key",[172,4972,225],{"class":182},[172,4974,274],{"class":182},[172,4976,4977,4979,4981],{"class":174,"line":277},[172,4978,297],{"class":260},[172,4980,264],{"class":182},[172,4982,302],{"class":182},[172,4984,4985,4988,4990,4992,4994,4996,4998],{"class":174,"line":294},[172,4986,4987],{"class":260},"    path",[172,4989,264],{"class":182},[172,4991,187],{"class":186},[172,4993,315],{"class":182},[172,4995,318],{"class":248},[172,4997,321],{"class":186},[172,4999,274],{"class":182},[172,5001,5002],{"class":174,"line":305},[172,5003,346],{"class":182},[172,5005,5006,5008,5010],{"class":174,"line":343},[172,5007,4773],{"class":260},[172,5009,264],{"class":182},[172,5011,302],{"class":182},[172,5013,5014,5017,5019,5021,5023,5025],{"class":174,"line":349},[172,5015,5016],{"class":260},"    maxAge",[172,5018,264],{"class":182},[172,5020,196],{"class":182},[172,5022,4780],{"class":199},[172,5024,225],{"class":182},[172,5026,274],{"class":182},[172,5028,5029,5032,5034,5037,5039,5041,5044,5046,5048,5050,5053,5055],{"class":174,"line":376},[172,5030,5031],{"class":248},"    getKey",[172,5033,264],{"class":182},[172,5035,5036],{"class":364}," args",[172,5038,371],{"class":357},[172,5040,422],{"class":182},[172,5042,5043],{"class":199},"page-",[172,5045,428],{"class":182},[172,5047,741],{"class":186},[172,5049,315],{"class":182},[172,5051,5052],{"class":186},"path",[172,5054,434],{"class":182},[172,5056,274],{"class":182},[172,5058,5059,5062,5064,5066,5068],{"class":174,"line":384},[172,5060,5061],{"class":260},"    swr",[172,5063,264],{"class":182},[172,5065,3562],{"class":3546},[172,5067,707],{"class":182},[172,5069,5070],{"class":228}," \u002F\u002F stale-while-revalidate\n",[172,5072,5073],{"class":174,"line":397},[172,5074,346],{"class":182},[172,5076,5077,5079,5081,5083,5085,5088,5090,5092],{"class":174,"line":414},[172,5078,352],{"class":248},[172,5080,264],{"class":182},[172,5082,358],{"class":357},[172,5084,361],{"class":182},[172,5086,5087],{"class":364}," path",[172,5089,368],{"class":182},[172,5091,371],{"class":357},[172,5093,302],{"class":182},[172,5095,5096],{"class":174,"line":439},[172,5097,592],{"class":228},[172,5099,5100],{"class":174,"line":450},[172,5101,346],{"class":182},[172,5103,5104,5106],{"class":174,"line":456},[172,5105,464],{"class":182},[172,5107,467],{"class":186},[1571,5109,5111],{"id":5110},"cache-options-reference","Cache Options Reference",[1576,5113,5114,5128],{},[1579,5115,5116],{},[1582,5117,5118,5121,5123,5126],{},[1585,5119,5120],{},"Option",[1585,5122,3648],{},[1585,5124,5125],{},"Required",[1585,5127,1593],{},[1595,5129,5130,5154,5172,5188,5204,5219],{},[1582,5131,5132,5137,5142,5145],{},[1600,5133,5134],{},[169,5135,5136],{},"maxAge",[1600,5138,5139],{},[169,5140,5141],{},"string | number",[1600,5143,5144],{},"Yes",[1600,5146,5147,5148,3359,5151,338],{},"Cache duration (e.g., ",[169,5149,5150],{},"'1h'",[169,5152,5153],{},"3600000",[1582,5155,5156,5161,5166,5169],{},[1600,5157,5158],{},[169,5159,5160],{},"getKey",[1600,5162,5163],{},[169,5164,5165],{},"(args) => string",[1600,5167,5168],{},"No",[1600,5170,5171],{},"Custom cache key generator",[1582,5173,5174,5179,5183,5185],{},[1600,5175,5176],{},[169,5177,5178],{},"staleMaxAge",[1600,5180,5181],{},[169,5182,1287],{},[1600,5184,5168],{},[1600,5186,5187],{},"Duration for stale-while-revalidate",[1582,5189,5190,5195,5199,5201],{},[1600,5191,5192],{},[169,5193,5194],{},"swr",[1600,5196,5197],{},[169,5198,3667],{},[1600,5200,5168],{},[1600,5202,5203],{},"Enable stale-while-revalidate",[1582,5205,5206,5210,5214,5216],{},[1600,5207,5208],{},[169,5209,477],{},[1600,5211,5212],{},[169,5213,318],{},[1600,5215,5168],{},[1600,5217,5218],{},"Cache name (auto-generated from tool name)",[1582,5220,5221,5226,5230,5232],{},[1600,5222,5223],{},[169,5224,5225],{},"group",[1600,5227,5228],{},[169,5229,318],{},[1600,5231,5168],{},[1600,5233,5234,5235,338],{},"Cache group (default: ",[169,5236,5237],{},"'mcp'",[4004,5239,5240,5241,5246],{"color":4006,"icon":4007},"See the ",[4656,5242,5245],{"href":5243,"rel":5244},"https:\u002F\u002Fnitro.build\u002Fguide\u002Fcache#options",[4660],"Nitro Cache documentation"," for all available options.",[145,5248,5250],{"id":5249},"advanced-examples","Advanced Examples",[1571,5252,5254],{"id":5253},"tool-with-error-handling","Tool with Error Handling",[150,5256,5257],{},"Here's an example showing proper error handling:",[161,5259,5262],{"className":163,"code":5260,"filename":5261,"language":166,"meta":167,"style":167},"import { z } from 'zod'\nimport { defineMcpTool } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver' \u002F\u002F optional\n\nexport default defineMcpTool({\n  name: 'safe-operation',\n  description: 'Perform an operation with error handling',\n  inputSchema: {\n    value: z.string().describe('Input value'),\n  },\n  handler: async ({ value }) => {\n    try {\n      \u002F\u002F Your operation here\n      const result = value.toUpperCase()\n\n      return {\n        content: [{\n          type: 'text',\n          text: `Result: ${result}`,\n        }],\n      }\n    }\n    catch (error) {\n      return {\n        content: [{\n          type: 'text',\n          text: `Error: ${error instanceof Error ? error.message : String(error)}`,\n        }],\n        isError: true,\n      }\n    }\n  },\n})\n","server\u002Fmcp\u002Ftools\u002Fsafe-operation.ts",[169,5263,5264,5282,5302,5306,5318,5333,5348,5356,5388,5392,5411,5418,5423,5442,5446,5452,5462,5476,5494,5502,5506,5510,5524,5530,5540,5554,5599,5607,5617,5621,5625,5629],{"__ignoreMap":167},[172,5265,5266,5268,5270,5272,5274,5276,5278,5280],{"class":174,"line":175},[172,5267,179],{"class":178},[172,5269,183],{"class":182},[172,5271,187],{"class":186},[172,5273,190],{"class":182},[172,5275,193],{"class":178},[172,5277,196],{"class":182},[172,5279,200],{"class":199},[172,5281,203],{"class":182},[172,5283,5284,5286,5288,5290,5292,5294,5296,5298,5300],{"class":174,"line":206},[172,5285,179],{"class":178},[172,5287,183],{"class":182},[172,5289,213],{"class":186},[172,5291,190],{"class":182},[172,5293,193],{"class":178},[172,5295,196],{"class":182},[172,5297,222],{"class":199},[172,5299,225],{"class":182},[172,5301,229],{"class":228},[172,5303,5304],{"class":174,"line":232},[172,5305,236],{"emptyLinePlaceholder":235},[172,5307,5308,5310,5312,5314,5316],{"class":174,"line":239},[172,5309,242],{"class":178},[172,5311,245],{"class":178},[172,5313,213],{"class":248},[172,5315,251],{"class":186},[172,5317,254],{"class":182},[172,5319,5320,5322,5324,5326,5329,5331],{"class":174,"line":257},[172,5321,261],{"class":260},[172,5323,264],{"class":182},[172,5325,196],{"class":182},[172,5327,5328],{"class":199},"safe-operation",[172,5330,225],{"class":182},[172,5332,274],{"class":182},[172,5334,5335,5337,5339,5341,5344,5346],{"class":174,"line":277},[172,5336,280],{"class":260},[172,5338,264],{"class":182},[172,5340,196],{"class":182},[172,5342,5343],{"class":199},"Perform an operation with error handling",[172,5345,225],{"class":182},[172,5347,274],{"class":182},[172,5349,5350,5352,5354],{"class":174,"line":294},[172,5351,297],{"class":260},[172,5353,264],{"class":182},[172,5355,302],{"class":182},[172,5357,5358,5361,5363,5365,5367,5369,5371,5373,5375,5377,5379,5382,5384,5386],{"class":174,"line":305},[172,5359,5360],{"class":260},"    value",[172,5362,264],{"class":182},[172,5364,187],{"class":186},[172,5366,315],{"class":182},[172,5368,318],{"class":248},[172,5370,321],{"class":186},[172,5372,315],{"class":182},[172,5374,326],{"class":248},[172,5376,251],{"class":186},[172,5378,225],{"class":182},[172,5380,5381],{"class":199},"Input value",[172,5383,225],{"class":182},[172,5385,338],{"class":186},[172,5387,274],{"class":182},[172,5389,5390],{"class":174,"line":343},[172,5391,346],{"class":182},[172,5393,5394,5396,5398,5400,5402,5405,5407,5409],{"class":174,"line":349},[172,5395,352],{"class":248},[172,5397,264],{"class":182},[172,5399,358],{"class":357},[172,5401,361],{"class":182},[172,5403,5404],{"class":364}," value",[172,5406,368],{"class":182},[172,5408,371],{"class":357},[172,5410,302],{"class":182},[172,5412,5413,5416],{"class":174,"line":376},[172,5414,5415],{"class":178},"    try",[172,5417,302],{"class":182},[172,5419,5420],{"class":174,"line":384},[172,5421,5422],{"class":228},"      \u002F\u002F Your operation here\n",[172,5424,5425,5428,5430,5432,5434,5436,5439],{"class":174,"line":397},[172,5426,5427],{"class":357},"      const",[172,5429,4555],{"class":186},[172,5431,1973],{"class":182},[172,5433,5404],{"class":186},[172,5435,315],{"class":182},[172,5437,5438],{"class":248},"toUpperCase",[172,5440,5441],{"class":260},"()\n",[172,5443,5444],{"class":174,"line":414},[172,5445,236],{"emptyLinePlaceholder":235},[172,5447,5448,5450],{"class":174,"line":439},[172,5449,4471],{"class":178},[172,5451,302],{"class":182},[172,5453,5454,5456,5458,5460],{"class":174,"line":450},[172,5455,4478],{"class":260},[172,5457,264],{"class":182},[172,5459,392],{"class":260},[172,5461,254],{"class":182},[172,5463,5464,5466,5468,5470,5472,5474],{"class":174,"line":456},[172,5465,4489],{"class":260},[172,5467,264],{"class":182},[172,5469,196],{"class":182},[172,5471,407],{"class":199},[172,5473,225],{"class":182},[172,5475,274],{"class":182},[172,5477,5478,5480,5482,5484,5486,5488,5490,5492],{"class":174,"line":461},[172,5479,4504],{"class":260},[172,5481,264],{"class":182},[172,5483,422],{"class":182},[172,5485,4605],{"class":199},[172,5487,428],{"class":182},[172,5489,4610],{"class":186},[172,5491,434],{"class":182},[172,5493,274],{"class":182},[172,5495,5496,5498,5500],{"class":174,"line":1451},[172,5497,4520],{"class":182},[172,5499,445],{"class":260},[172,5501,274],{"class":182},[172,5503,5504],{"class":174,"line":1456},[172,5505,4540],{"class":182},[172,5507,5508],{"class":174,"line":1462},[172,5509,453],{"class":182},[172,5511,5512,5515,5517,5520,5522],{"class":174,"line":1504},[172,5513,5514],{"class":178},"    catch",[172,5516,738],{"class":260},[172,5518,5519],{"class":186},"error",[172,5521,2027],{"class":260},[172,5523,254],{"class":182},[172,5525,5526,5528],{"class":174,"line":1509},[172,5527,4471],{"class":178},[172,5529,302],{"class":182},[172,5531,5532,5534,5536,5538],{"class":174,"line":1554},[172,5533,4478],{"class":260},[172,5535,264],{"class":182},[172,5537,392],{"class":260},[172,5539,254],{"class":182},[172,5541,5542,5544,5546,5548,5550,5552],{"class":174,"line":1560},[172,5543,4489],{"class":260},[172,5545,264],{"class":182},[172,5547,196],{"class":182},[172,5549,407],{"class":199},[172,5551,225],{"class":182},[172,5553,274],{"class":182},[172,5555,5556,5558,5560,5562,5565,5567,5570,5573,5576,5579,5582,5584,5587,5589,5592,5595,5597],{"class":174,"line":1565},[172,5557,4504],{"class":260},[172,5559,264],{"class":182},[172,5561,422],{"class":182},[172,5563,5564],{"class":199},"Error: ",[172,5566,428],{"class":182},[172,5568,5569],{"class":186},"error ",[172,5571,5572],{"class":182},"instanceof",[172,5574,5575],{"class":2285}," Error",[172,5577,5578],{"class":182}," ?",[172,5580,5581],{"class":186}," error",[172,5583,315],{"class":182},[172,5585,5586],{"class":186},"message ",[172,5588,264],{"class":182},[172,5590,5591],{"class":248}," String",[172,5593,5594],{"class":186},"(error)",[172,5596,434],{"class":182},[172,5598,274],{"class":182},[172,5600,5601,5603,5605],{"class":174,"line":2187},[172,5602,4520],{"class":182},[172,5604,445],{"class":260},[172,5606,274],{"class":182},[172,5608,5609,5611,5613,5615],{"class":174,"line":2197},[172,5610,4529],{"class":260},[172,5612,264],{"class":182},[172,5614,3562],{"class":3546},[172,5616,274],{"class":182},[172,5618,5619],{"class":174,"line":2231},[172,5620,4540],{"class":182},[172,5622,5623],{"class":174,"line":2239},[172,5624,453],{"class":182},[172,5626,5627],{"class":174,"line":2245},[172,5628,346],{"class":182},[172,5630,5631,5633],{"class":174,"line":2250},[172,5632,464],{"class":182},[172,5634,467],{"class":186},[145,5636,5638],{"id":5637},"file-organization","File Organization",[150,5640,5641,5642,5645],{},"Organize your tools in the ",[169,5643,5644],{},"server\u002Fmcp\u002Ftools\u002F"," directory:",[161,5647,5651],{"className":5648,"code":5650,"language":407},[5649],"language-text","server\u002F\n└── mcp\u002F\n    └── tools\u002F\n        ├── echo.ts\n        ├── calculator.ts\n        ├── bmi.ts\n        └── text-processor.ts\n",[169,5652,5650],{"__ignoreMap":167},[150,5654,5655],{},"Each file should export a default tool definition.",[145,5657,5659],{"id":5658},"type-safety","Type Safety",[150,5661,5662],{},"The module provides full TypeScript type inference:",[161,5664,5666],{"className":163,"code":5665,"language":166,"meta":167,"style":167},"\u002F\u002F Input types are inferred from inputSchema\nhandler: async ({ message }) => {\n  \u002F\u002F message is typed as string\n}\n\n\u002F\u002F Output types are inferred from outputSchema\nconst result = {\n  structuredContent: {\n    bmi: 25.5,      \u002F\u002F number\n    category: '...', \u002F\u002F string\n  },\n}\n",[169,5667,5668,5673,5691,5696,5700,5704,5709,5722,5731,5745,5762,5766],{"__ignoreMap":167},[172,5669,5670],{"class":174,"line":175},[172,5671,5672],{"class":228},"\u002F\u002F Input types are inferred from inputSchema\n",[172,5674,5675,5677,5679,5681,5683,5685,5687,5689],{"class":174,"line":206},[172,5676,2286],{"class":2285},[172,5678,264],{"class":182},[172,5680,358],{"class":357},[172,5682,361],{"class":182},[172,5684,365],{"class":364},[172,5686,368],{"class":182},[172,5688,371],{"class":357},[172,5690,302],{"class":182},[172,5692,5693],{"class":174,"line":232},[172,5694,5695],{"class":228},"  \u002F\u002F message is typed as string\n",[172,5697,5698],{"class":174,"line":239},[172,5699,772],{"class":182},[172,5701,5702],{"class":174,"line":257},[172,5703,236],{"emptyLinePlaceholder":235},[172,5705,5706],{"class":174,"line":277},[172,5707,5708],{"class":228},"\u002F\u002F Output types are inferred from outputSchema\n",[172,5710,5711,5714,5717,5720],{"class":174,"line":294},[172,5712,5713],{"class":357},"const",[172,5715,5716],{"class":186}," result ",[172,5718,5719],{"class":182},"=",[172,5721,302],{"class":182},[172,5723,5724,5727,5729],{"class":174,"line":305},[172,5725,5726],{"class":260},"  structuredContent",[172,5728,264],{"class":182},[172,5730,302],{"class":182},[172,5732,5733,5735,5737,5740,5742],{"class":174,"line":343},[172,5734,1905],{"class":260},[172,5736,264],{"class":182},[172,5738,5739],{"class":2023}," 25.5",[172,5741,707],{"class":182},[172,5743,5744],{"class":228},"      \u002F\u002F number\n",[172,5746,5747,5749,5751,5753,5755,5757,5759],{"class":174,"line":349},[172,5748,1922],{"class":260},[172,5750,264],{"class":182},[172,5752,196],{"class":182},[172,5754,766],{"class":199},[172,5756,225],{"class":182},[172,5758,707],{"class":182},[172,5760,5761],{"class":228}," \u002F\u002F string\n",[172,5763,5764],{"class":174,"line":376},[172,5765,346],{"class":182},[172,5767,5768],{"class":174,"line":384},[172,5769,772],{"class":182},[145,5771,5773],{"id":5772},"conditional-registration","Conditional Registration",[150,5775,5776,5777,5780],{},"You can control whether a tool is visible to clients using the ",[169,5778,5779],{},"enabled"," guard:",[161,5782,5785],{"className":163,"code":5783,"filename":5784,"language":166,"meta":167,"style":167},"export default defineMcpTool({\n  name: 'admin-tool',\n  description: 'Admin-only tool',\n  enabled: event => event.context.user?.role === 'admin',\n  handler: async () => {\n    \u002F\u002F ...\n  },\n})\n","server\u002Fmcp\u002Ftools\u002Fadmin-tool.ts",[169,5786,5787,5799,5814,5829,5870,5884,5888,5892],{"__ignoreMap":167},[172,5788,5789,5791,5793,5795,5797],{"class":174,"line":175},[172,5790,242],{"class":178},[172,5792,245],{"class":178},[172,5794,213],{"class":248},[172,5796,251],{"class":186},[172,5798,254],{"class":182},[172,5800,5801,5803,5805,5807,5810,5812],{"class":174,"line":206},[172,5802,261],{"class":260},[172,5804,264],{"class":182},[172,5806,196],{"class":182},[172,5808,5809],{"class":199},"admin-tool",[172,5811,225],{"class":182},[172,5813,274],{"class":182},[172,5815,5816,5818,5820,5822,5825,5827],{"class":174,"line":232},[172,5817,280],{"class":260},[172,5819,264],{"class":182},[172,5821,196],{"class":182},[172,5823,5824],{"class":199},"Admin-only tool",[172,5826,225],{"class":182},[172,5828,274],{"class":182},[172,5830,5831,5834,5836,5839,5841,5843,5845,5848,5850,5852,5855,5858,5861,5863,5866,5868],{"class":174,"line":239},[172,5832,5833],{"class":248},"  enabled",[172,5835,264],{"class":182},[172,5837,5838],{"class":364}," event",[172,5840,371],{"class":357},[172,5842,5838],{"class":186},[172,5844,315],{"class":182},[172,5846,5847],{"class":186},"context",[172,5849,315],{"class":182},[172,5851,2947],{"class":186},[172,5853,5854],{"class":182},"?.",[172,5856,5857],{"class":186},"role ",[172,5859,5860],{"class":182},"===",[172,5862,196],{"class":182},[172,5864,5865],{"class":199},"admin",[172,5867,225],{"class":182},[172,5869,274],{"class":182},[172,5871,5872,5874,5876,5878,5880,5882],{"class":174,"line":257},[172,5873,352],{"class":248},[172,5875,264],{"class":182},[172,5877,358],{"class":357},[172,5879,583],{"class":182},[172,5881,371],{"class":357},[172,5883,302],{"class":182},[172,5885,5886],{"class":174,"line":277},[172,5887,592],{"class":228},[172,5889,5890],{"class":174,"line":294},[172,5891,346],{"class":182},[172,5893,5894,5896],{"class":174,"line":305},[172,5895,464],{"class":182},[172,5897,467],{"class":186},[150,5899,5900,5901,5903,5904,5906,5907,5910],{},"When ",[169,5902,5779],{}," returns ",[169,5905,3672],{},", the tool is hidden from ",[169,5908,5909],{},"tools\u002Flist"," and cannot be called.",[4004,5912,5240,5914,5916],{"color":5913,"icon":13},"primary",[4656,5915,101],{"href":102}," guide for detailed documentation on auth-based filtering.",[145,5918,5920],{"id":5919},"next-steps","Next Steps",[611,5922,5923,5928,5933,5938,5943,5948],{},[614,5924,5925,5927],{},[4656,5926,51],{"href":52}," - Create resources to expose data",[614,5929,5930,5932],{},[4656,5931,56],{"href":57}," - Create reusable prompts",[614,5934,5935,5937],{},[4656,5936,61],{"href":62}," - Create custom MCP endpoints",[614,5939,5940,5942],{},[4656,5941,106],{"href":107}," - Let LLMs orchestrate tools with JavaScript",[614,5944,5945,5947],{},[4656,5946,101],{"href":102}," - Conditionally register definitions",[614,5949,5950,5952],{},[4656,5951,111],{"href":127}," - See more tool examples",[5954,5955,5956],"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 .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .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 .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":167,"searchDepth":206,"depth":206,"links":5958},[5959,5960,5961,5962,5963,5966,5967,5971,5974,5975,5976,5981,5984,5985,5986,5987],{"id":147,"depth":206,"text":148},{"id":155,"depth":206,"text":156},{"id":470,"depth":206,"text":471},{"id":642,"depth":206,"text":643},{"id":980,"depth":206,"text":981,"children":5964},[5965],{"id":1573,"depth":232,"text":1574},{"id":1719,"depth":206,"text":1720},{"id":2271,"depth":206,"text":2272,"children":5968},[5969,5970],{"id":2405,"depth":232,"text":2406},{"id":2669,"depth":232,"text":2670},{"id":3405,"depth":206,"text":3406,"children":5972},[5973],{"id":3635,"depth":232,"text":3636},{"id":4016,"depth":206,"text":4017},{"id":4302,"depth":206,"text":4303},{"id":4639,"depth":206,"text":4640,"children":5977},[5978,5979,5980],{"id":4650,"depth":232,"text":4651},{"id":4895,"depth":232,"text":4896},{"id":5110,"depth":232,"text":5111},{"id":5249,"depth":206,"text":5250,"children":5982},[5983],{"id":5253,"depth":232,"text":5254},{"id":5637,"depth":206,"text":5638},{"id":5658,"depth":206,"text":5659},{"id":5772,"depth":206,"text":5773},{"id":5919,"depth":206,"text":5920},"Create MCP tools with Zod validation and type safety.","md",null,{},{"icon":49},{"title":46,"description":5994},"Create MCP tools with Zod validation and full TypeScript support.","e3p0muYGU3990jGlUyGG6iMmZJPZ0qgUVfJRcZ-L2tY",[5997,5999],{"title":35,"path":36,"stem":37,"description":5998,"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":6000,"icon":54,"children":-1},"Expose read-only data sources as MCP resources to provide context to AI models.",1773932610218]