[{"data":1,"prerenderedAt":1540},["ShallowReactive",2],{"navigation_docs":3,"-tools-errors-caching":272,"-tools-errors-caching-surround":1535},[4,40,70,99,122,151,184,243],{"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},"Tools","\u002Ftools","2.tools",[45,50,55,60,65],{"title":46,"path":47,"stem":48,"icon":49},"Overview","\u002Ftools\u002Foverview","2.tools\u002F0.overview","i-lucide-wrench",{"title":51,"path":52,"stem":53,"icon":54},"Schema, handler & returns","\u002Ftools\u002Fschema-handler","2.tools\u002F1.schema-handler","i-lucide-braces",{"title":56,"path":57,"stem":58,"icon":59},"Annotations & input examples","\u002Ftools\u002Fannotations","2.tools\u002F2.annotations","i-lucide-badge-info",{"title":61,"path":62,"stem":63,"icon":64},"Errors & caching","\u002Ftools\u002Ferrors-caching","2.tools\u002F3.errors-caching","i-lucide-shield",{"title":66,"path":67,"stem":68,"icon":69},"Groups, files & dynamic registration","\u002Ftools\u002Fgroups-organization","2.tools\u002F4.groups-organization","i-lucide-tags",{"title":71,"path":72,"stem":73,"children":74,"page":39},"Resources","\u002Fresources","3.resources",[75,79,84,89,94],{"title":46,"path":76,"stem":77,"icon":78},"\u002Fresources\u002Foverview","3.resources\u002F0.overview","i-lucide-package",{"title":80,"path":81,"stem":82,"icon":83},"Static resources & structure","\u002Fresources\u002Fstatic-and-structure","3.resources\u002F1.static-and-structure","i-lucide-file-stack",{"title":85,"path":86,"stem":87,"icon":88},"Templates & handlers","\u002Fresources\u002Ftemplates-and-handlers","3.resources\u002F2.templates-and-handlers","i-lucide-git-branch",{"title":90,"path":91,"stem":92,"icon":93},"Metadata, content & errors","\u002Fresources\u002Fcontent-metadata-errors","3.resources\u002F3.content-metadata-errors","i-lucide-layers",{"title":95,"path":96,"stem":97,"icon":98},"Groups & organization","\u002Fresources\u002Forganization","3.resources\u002F4.organization","i-lucide-folder-tree",{"title":100,"path":101,"stem":102,"children":103,"page":39},"Prompts","\u002Fprompts","4.prompts",[104,108,113,117],{"title":46,"path":105,"stem":106,"icon":107},"\u002Fprompts\u002Foverview","4.prompts\u002F0.overview","i-lucide-message-square",{"title":109,"path":110,"stem":111,"icon":112},"Authoring & structure","\u002Fprompts\u002Fauthoring","4.prompts\u002F1.authoring","i-lucide-pen-line",{"title":114,"path":115,"stem":116,"icon":93},"Input, handler & messages","\u002Fprompts\u002Finput-handler-messages","4.prompts\u002F2.input-handler-messages",{"title":118,"path":119,"stem":120,"icon":121},"Patterns & advanced","\u002Fprompts\u002Fpatterns-advanced","4.prompts\u002F3.patterns-advanced","i-lucide-line-chart",{"title":123,"path":124,"stem":125,"children":126,"page":39},"Handlers","\u002Fhandlers","5.handlers",[127,131,136,141,146],{"title":46,"path":128,"stem":129,"icon":130},"\u002Fhandlers\u002Foverview","5.handlers\u002F0.overview","i-lucide-server",{"title":132,"path":133,"stem":134,"icon":135},"Default & custom handlers","\u002Fhandlers\u002Fdefault-and-custom","5.handlers\u002F1.default-and-custom","i-lucide-toggle-left",{"title":137,"path":138,"stem":139,"icon":140},"Structure & options","\u002Fhandlers\u002Fstructure-and-options","5.handlers\u002F2.structure-and-options","i-lucide-sliders-horizontal",{"title":142,"path":143,"stem":144,"icon":145},"Examples & routing","\u002Fhandlers\u002Fexamples-routing","5.handlers\u002F3.examples-routing","i-lucide-route",{"title":147,"path":148,"stem":149,"icon":150},"Sharing & practices","\u002Fhandlers\u002Fsharing-practices","5.handlers\u002F4.sharing-practices","i-lucide-share-2",{"title":152,"path":153,"stem":154,"children":155,"page":39},"Apps","\u002Fapps","6.apps",[156,160,165,170,174,179],{"title":46,"path":157,"stem":158,"icon":159},"\u002Fapps\u002Foverview","6.apps\u002F0.overview","i-lucide-app-window",{"title":161,"path":162,"stem":163,"icon":164},"Authoring & defineMcpApp","\u002Fapps\u002Fauthoring","6.apps\u002F1.authoring","i-lucide-code-2",{"title":166,"path":167,"stem":168,"icon":169},"useMcpApp() bridge","\u002Fapps\u002Fuse-mcp-app","6.apps\u002F2.use-mcp-app","i-lucide-message-circle",{"title":171,"path":172,"stem":173,"icon":64},"CSP & build pipeline","\u002Fapps\u002Fcsp-and-wiring","6.apps\u002F3.csp-and-wiring",{"title":175,"path":176,"stem":177,"icon":178},"Testing & publishing","\u002Fapps\u002Ftesting-publishing","6.apps\u002F4.testing-publishing","i-lucide-rocket",{"title":180,"path":181,"stem":182,"icon":183},"Patterns & limits","\u002Fapps\u002Fpatterns-reference","6.apps\u002F5.patterns-reference","i-lucide-book-marked",{"title":185,"path":186,"stem":187,"children":188,"page":39},"Advanced Topics","\u002Fadvanced","7.advanced",[189,194,199,204,208,213,218,223,228,233,238],{"title":190,"path":191,"stem":192,"icon":193},"Custom Paths","\u002Fadvanced\u002Fcustom-paths","7.advanced\u002F1.custom-paths","i-lucide-folder",{"title":195,"path":196,"stem":197,"icon":198},"Logging","\u002Fadvanced\u002Flogging","7.advanced\u002F10.logging","i-lucide-scroll-text",{"title":200,"path":201,"stem":202,"icon":203},"MCP Apps Internals","\u002Fadvanced\u002Fmcp-apps-internals","7.advanced\u002F11.mcp-apps-internals","i-lucide-cog",{"title":205,"path":206,"stem":207,"icon":64},"Middleware","\u002Fadvanced\u002Fmiddleware","7.advanced\u002F2.middleware",{"title":209,"path":210,"stem":211,"icon":212},"TypeScript","\u002Fadvanced\u002Ftypescript","7.advanced\u002F3.typescript","i-lucide-type",{"title":214,"path":215,"stem":216,"icon":217},"Hooks","\u002Fadvanced\u002Fhooks","7.advanced\u002F4.hooks","i-lucide-webhook",{"title":219,"path":220,"stem":221,"icon":222},"MCP Evals","\u002Fadvanced\u002Fevals","7.advanced\u002F5.evals","i-lucide-flask-conical",{"title":224,"path":225,"stem":226,"icon":227},"Sessions","\u002Fadvanced\u002Fsessions","7.advanced\u002F6.sessions","i-lucide-database",{"title":229,"path":230,"stem":231,"icon":232},"Dynamic Definitions","\u002Fadvanced\u002Fdynamic-definitions","7.advanced\u002F7.dynamic-definitions","i-lucide-toggle-right",{"title":234,"path":235,"stem":236,"icon":237},"Code Mode","\u002Fadvanced\u002Fcode-mode","7.advanced\u002F8.code-mode","i-lucide-code",{"title":239,"path":240,"stem":241,"icon":242},"Elicitation","\u002Fadvanced\u002Felicitation","7.advanced\u002F9.elicitation","i-lucide-message-square-quote",{"title":244,"path":245,"stem":246,"children":247,"page":39},"Examples","\u002Fexamples","8.examples",[248,253,258,263,268],{"title":249,"path":250,"stem":251,"icon":252},"Authentication","\u002Fexamples\u002Fauthentication","8.examples\u002F1.authentication","i-lucide-shield-check",{"title":254,"path":255,"stem":256,"icon":257},"API Integration","\u002Fexamples\u002Fapi-integration","8.examples\u002F2.api-integration","i-lucide-globe",{"title":259,"path":260,"stem":261,"icon":262},"Common Patterns","\u002Fexamples\u002Fcommon-patterns","8.examples\u002F3.common-patterns","i-lucide-lightbulb",{"title":264,"path":265,"stem":266,"icon":267},"File Operations","\u002Fexamples\u002Ffile-operations","8.examples\u002F4.file-operations","i-lucide-file",{"title":269,"path":270,"stem":271,"icon":107},"Prompt Examples","\u002Fexamples\u002Fprompt-examples","8.examples\u002F5.prompt-examples",{"id":273,"title":61,"body":274,"description":1526,"extension":1527,"links":1528,"meta":1529,"navigation":1530,"path":62,"seo":1531,"stem":63,"__hash__":1534},"docs\u002F2.tools\u002F3.errors-caching.md",{"type":275,"value":276,"toc":1515},"minimark",[277,282,291,296,303,637,640,734,738,745,947,951,958,962,975,1138,1142,1145,1358,1362,1499,1511],[278,279,281],"h2",{"id":280},"error-handling","Error Handling",[283,284,285,286,290],"p",{},"Throw errors directly from your handlers — just like in Nitro event handlers. Thrown errors are automatically caught and converted into MCP-compliant ",[287,288,289],"code",{},"isError"," results.",[292,293,295],"h3",{"id":294},"h3-errors-recommended","H3 Errors (Recommended)",[283,297,298,299,302],{},"Use ",[287,300,301],{},"createError()"," from H3 for errors with status codes:",[304,305,311],"pre",{"className":306,"code":307,"filename":308,"language":309,"meta":310,"style":310},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { z } from 'zod'\nimport { createError } from 'h3'\nimport { defineMcpTool } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\nexport default defineMcpTool({\n  name: 'get-user',\n  description: 'Get a user by ID',\n  inputSchema: {\n    id: z.string(),\n  },\n  handler: async ({ id }) => {\n    const user = await findUser(id)\n    if (!user) {\n      throw createError({ statusCode: 404, message: 'User not found' })\n    }\n    return user\n  },\n})\n\u002F\u002F Error result: { isError: true, content: [{ type: 'text', text: '[404] User not found' }] }\n","server\u002Fmcp\u002Ftools\u002Fget-user.ts","typescript","",[287,312,313,346,366,387,394,412,433,450,461,482,488,515,541,561,602,608,617,622,630],{"__ignoreMap":310},[314,315,318,322,326,330,333,336,339,343],"span",{"class":316,"line":317},"line",1,[314,319,321],{"class":320},"s7zQu","import",[314,323,325],{"class":324},"sMK4o"," {",[314,327,329],{"class":328},"sTEyZ"," z",[314,331,332],{"class":324}," }",[314,334,335],{"class":320}," from",[314,337,338],{"class":324}," '",[314,340,342],{"class":341},"sfazB","zod",[314,344,345],{"class":324},"'\n",[314,347,349,351,353,356,358,360,362,364],{"class":316,"line":348},2,[314,350,321],{"class":320},[314,352,325],{"class":324},[314,354,355],{"class":328}," createError",[314,357,332],{"class":324},[314,359,335],{"class":320},[314,361,338],{"class":324},[314,363,292],{"class":341},[314,365,345],{"class":324},[314,367,369,371,373,376,378,380,382,385],{"class":316,"line":368},3,[314,370,321],{"class":320},[314,372,325],{"class":324},[314,374,375],{"class":328}," defineMcpTool",[314,377,332],{"class":324},[314,379,335],{"class":320},[314,381,338],{"class":324},[314,383,384],{"class":341},"@nuxtjs\u002Fmcp-toolkit\u002Fserver",[314,386,345],{"class":324},[314,388,390],{"class":316,"line":389},4,[314,391,393],{"emptyLinePlaceholder":392},true,"\n",[314,395,397,400,403,406,409],{"class":316,"line":396},5,[314,398,399],{"class":320},"export",[314,401,402],{"class":320}," default",[314,404,375],{"class":405},"s2Zo4",[314,407,408],{"class":328},"(",[314,410,411],{"class":324},"{\n",[314,413,415,419,422,424,427,430],{"class":316,"line":414},6,[314,416,418],{"class":417},"swJcz","  name",[314,420,421],{"class":324},":",[314,423,338],{"class":324},[314,425,426],{"class":341},"get-user",[314,428,429],{"class":324},"'",[314,431,432],{"class":324},",\n",[314,434,436,439,441,443,446,448],{"class":316,"line":435},7,[314,437,438],{"class":417},"  description",[314,440,421],{"class":324},[314,442,338],{"class":324},[314,444,445],{"class":341},"Get a user by ID",[314,447,429],{"class":324},[314,449,432],{"class":324},[314,451,453,456,458],{"class":316,"line":452},8,[314,454,455],{"class":417},"  inputSchema",[314,457,421],{"class":324},[314,459,460],{"class":324}," {\n",[314,462,464,467,469,471,474,477,480],{"class":316,"line":463},9,[314,465,466],{"class":417},"    id",[314,468,421],{"class":324},[314,470,329],{"class":328},[314,472,473],{"class":324},".",[314,475,476],{"class":405},"string",[314,478,479],{"class":328},"()",[314,481,432],{"class":324},[314,483,485],{"class":316,"line":484},10,[314,486,487],{"class":324},"  },\n",[314,489,491,494,496,500,503,507,510,513],{"class":316,"line":490},11,[314,492,493],{"class":405},"  handler",[314,495,421],{"class":324},[314,497,499],{"class":498},"spNyl"," async",[314,501,502],{"class":324}," ({",[314,504,506],{"class":505},"sHdIc"," id",[314,508,509],{"class":324}," })",[314,511,512],{"class":498}," =>",[314,514,460],{"class":324},[314,516,518,521,524,527,530,533,535,538],{"class":316,"line":517},12,[314,519,520],{"class":498},"    const",[314,522,523],{"class":328}," user",[314,525,526],{"class":324}," =",[314,528,529],{"class":320}," await",[314,531,532],{"class":405}," findUser",[314,534,408],{"class":417},[314,536,537],{"class":328},"id",[314,539,540],{"class":417},")\n",[314,542,544,547,550,553,556,559],{"class":316,"line":543},13,[314,545,546],{"class":320},"    if",[314,548,549],{"class":417}," (",[314,551,552],{"class":324},"!",[314,554,555],{"class":328},"user",[314,557,558],{"class":417},") ",[314,560,411],{"class":324},[314,562,564,567,569,571,574,577,579,583,586,589,591,593,596,598,600],{"class":316,"line":563},14,[314,565,566],{"class":320},"      throw",[314,568,355],{"class":405},[314,570,408],{"class":417},[314,572,573],{"class":324},"{",[314,575,576],{"class":417}," statusCode",[314,578,421],{"class":324},[314,580,582],{"class":581},"sbssI"," 404",[314,584,585],{"class":324},",",[314,587,588],{"class":417}," message",[314,590,421],{"class":324},[314,592,338],{"class":324},[314,594,595],{"class":341},"User not found",[314,597,429],{"class":324},[314,599,332],{"class":324},[314,601,540],{"class":417},[314,603,605],{"class":316,"line":604},15,[314,606,607],{"class":324},"    }\n",[314,609,611,614],{"class":316,"line":610},16,[314,612,613],{"class":320},"    return",[314,615,616],{"class":328}," user\n",[314,618,620],{"class":316,"line":619},17,[314,621,487],{"class":324},[314,623,625,628],{"class":316,"line":624},18,[314,626,627],{"class":324},"}",[314,629,540],{"class":328},[314,631,633],{"class":316,"line":632},19,[314,634,636],{"class":635},"sHwdD","\u002F\u002F Error result: { isError: true, content: [{ type: 'text', text: '[404] User not found' }] }\n",[283,638,639],{},"H3 errors can also include structured data:",[304,641,643],{"className":306,"code":642,"language":309,"meta":310,"style":310},"throw createError({\n  statusCode: 400,\n  message: 'Validation failed',\n  data: { fields: ['name', 'email'] },\n})\n\u002F\u002F Error text: '[400] Validation failed\\n{ \"fields\": [\"name\", \"email\"] }'\n",[287,644,645,656,668,684,723,729],{"__ignoreMap":310},[314,646,647,650,652,654],{"class":316,"line":317},[314,648,649],{"class":320},"throw",[314,651,355],{"class":405},[314,653,408],{"class":328},[314,655,411],{"class":324},[314,657,658,661,663,666],{"class":316,"line":348},[314,659,660],{"class":417},"  statusCode",[314,662,421],{"class":324},[314,664,665],{"class":581}," 400",[314,667,432],{"class":324},[314,669,670,673,675,677,680,682],{"class":316,"line":368},[314,671,672],{"class":417},"  message",[314,674,421],{"class":324},[314,676,338],{"class":324},[314,678,679],{"class":341},"Validation failed",[314,681,429],{"class":324},[314,683,432],{"class":324},[314,685,686,689,691,693,696,698,701,703,706,708,710,712,715,717,720],{"class":316,"line":389},[314,687,688],{"class":417},"  data",[314,690,421],{"class":324},[314,692,325],{"class":324},[314,694,695],{"class":417}," fields",[314,697,421],{"class":324},[314,699,700],{"class":328}," [",[314,702,429],{"class":324},[314,704,705],{"class":341},"name",[314,707,429],{"class":324},[314,709,585],{"class":324},[314,711,338],{"class":324},[314,713,714],{"class":341},"email",[314,716,429],{"class":324},[314,718,719],{"class":328},"] ",[314,721,722],{"class":324},"},\n",[314,724,725,727],{"class":316,"line":396},[314,726,627],{"class":324},[314,728,540],{"class":328},[314,730,731],{"class":316,"line":414},[314,732,733],{"class":635},"\u002F\u002F Error text: '[400] Validation failed\\n{ \"fields\": [\"name\", \"email\"] }'\n",[292,735,737],{"id":736},"plain-errors","Plain Errors",[283,739,740,741,744],{},"Regular ",[287,742,743],{},"Error"," instances work too:",[304,746,749],{"className":306,"code":747,"filename":748,"language":309,"meta":310,"style":310},"import { z } from 'zod'\nimport { defineMcpTool } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\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) throw new Error('Division by zero')\n    return a \u002F b\n  },\n})\n","server\u002Fmcp\u002Ftools\u002Fsafe-divide.ts",[287,750,751,769,787,791,803,818,826,844,861,865,889,925,937,941],{"__ignoreMap":310},[314,752,753,755,757,759,761,763,765,767],{"class":316,"line":317},[314,754,321],{"class":320},[314,756,325],{"class":324},[314,758,329],{"class":328},[314,760,332],{"class":324},[314,762,335],{"class":320},[314,764,338],{"class":324},[314,766,342],{"class":341},[314,768,345],{"class":324},[314,770,771,773,775,777,779,781,783,785],{"class":316,"line":348},[314,772,321],{"class":320},[314,774,325],{"class":324},[314,776,375],{"class":328},[314,778,332],{"class":324},[314,780,335],{"class":320},[314,782,338],{"class":324},[314,784,384],{"class":341},[314,786,345],{"class":324},[314,788,789],{"class":316,"line":368},[314,790,393],{"emptyLinePlaceholder":392},[314,792,793,795,797,799,801],{"class":316,"line":389},[314,794,399],{"class":320},[314,796,402],{"class":320},[314,798,375],{"class":405},[314,800,408],{"class":328},[314,802,411],{"class":324},[314,804,805,807,809,811,814,816],{"class":316,"line":396},[314,806,418],{"class":417},[314,808,421],{"class":324},[314,810,338],{"class":324},[314,812,813],{"class":341},"safe-divide",[314,815,429],{"class":324},[314,817,432],{"class":324},[314,819,820,822,824],{"class":316,"line":414},[314,821,455],{"class":417},[314,823,421],{"class":324},[314,825,460],{"class":324},[314,827,828,831,833,835,837,840,842],{"class":316,"line":435},[314,829,830],{"class":417},"    a",[314,832,421],{"class":324},[314,834,329],{"class":328},[314,836,473],{"class":324},[314,838,839],{"class":405},"number",[314,841,479],{"class":328},[314,843,432],{"class":324},[314,845,846,849,851,853,855,857,859],{"class":316,"line":452},[314,847,848],{"class":417},"    b",[314,850,421],{"class":324},[314,852,329],{"class":328},[314,854,473],{"class":324},[314,856,839],{"class":405},[314,858,479],{"class":328},[314,860,432],{"class":324},[314,862,863],{"class":316,"line":463},[314,864,487],{"class":324},[314,866,867,869,871,873,875,878,880,883,885,887],{"class":316,"line":484},[314,868,493],{"class":405},[314,870,421],{"class":324},[314,872,499],{"class":498},[314,874,502],{"class":324},[314,876,877],{"class":505}," a",[314,879,585],{"class":324},[314,881,882],{"class":505}," b",[314,884,509],{"class":324},[314,886,512],{"class":498},[314,888,460],{"class":324},[314,890,891,893,895,898,901,904,906,908,911,914,916,918,921,923],{"class":316,"line":490},[314,892,546],{"class":320},[314,894,549],{"class":417},[314,896,897],{"class":328},"b",[314,899,900],{"class":324}," ===",[314,902,903],{"class":581}," 0",[314,905,558],{"class":417},[314,907,649],{"class":320},[314,909,910],{"class":324}," new",[314,912,913],{"class":405}," Error",[314,915,408],{"class":417},[314,917,429],{"class":324},[314,919,920],{"class":341},"Division by zero",[314,922,429],{"class":324},[314,924,540],{"class":417},[314,926,927,929,931,934],{"class":316,"line":517},[314,928,613],{"class":320},[314,930,877],{"class":328},[314,932,933],{"class":324}," \u002F",[314,935,936],{"class":328}," b\n",[314,938,939],{"class":316,"line":543},[314,940,487],{"class":324},[314,942,943,945],{"class":316,"line":563},[314,944,627],{"class":324},[314,946,540],{"class":328},[278,948,950],{"id":949},"response-caching","Response Caching",[283,952,953,954,957],{},"You can cache tool responses using Nitro's caching system. The ",[287,955,956],{},"cache"," option accepts three formats:",[292,959,961],{"id":960},"simple-duration","Simple Duration",[283,963,964,965,974],{},"Use a string duration (parsed by ",[966,967,971],"a",{"href":968,"rel":969},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fms",[970],"nofollow",[287,972,973],{},"ms",") or a number in milliseconds:",[304,976,979],{"className":306,"code":977,"filename":978,"language":309,"meta":310,"style":310},"import { z } from 'zod'\nimport { defineMcpTool } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\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    return await fetchExpensiveData(id)\n  },\n})\n","server\u002Fmcp\u002Ftools\u002Fcached-data.ts",[287,980,981,999,1017,1021,1033,1048,1056,1072,1076,1095,1113,1128,1132],{"__ignoreMap":310},[314,982,983,985,987,989,991,993,995,997],{"class":316,"line":317},[314,984,321],{"class":320},[314,986,325],{"class":324},[314,988,329],{"class":328},[314,990,332],{"class":324},[314,992,335],{"class":320},[314,994,338],{"class":324},[314,996,342],{"class":341},[314,998,345],{"class":324},[314,1000,1001,1003,1005,1007,1009,1011,1013,1015],{"class":316,"line":348},[314,1002,321],{"class":320},[314,1004,325],{"class":324},[314,1006,375],{"class":328},[314,1008,332],{"class":324},[314,1010,335],{"class":320},[314,1012,338],{"class":324},[314,1014,384],{"class":341},[314,1016,345],{"class":324},[314,1018,1019],{"class":316,"line":368},[314,1020,393],{"emptyLinePlaceholder":392},[314,1022,1023,1025,1027,1029,1031],{"class":316,"line":389},[314,1024,399],{"class":320},[314,1026,402],{"class":320},[314,1028,375],{"class":405},[314,1030,408],{"class":328},[314,1032,411],{"class":324},[314,1034,1035,1037,1039,1041,1044,1046],{"class":316,"line":396},[314,1036,438],{"class":417},[314,1038,421],{"class":324},[314,1040,338],{"class":324},[314,1042,1043],{"class":341},"Fetch data with 1 hour cache",[314,1045,429],{"class":324},[314,1047,432],{"class":324},[314,1049,1050,1052,1054],{"class":316,"line":414},[314,1051,455],{"class":417},[314,1053,421],{"class":324},[314,1055,460],{"class":324},[314,1057,1058,1060,1062,1064,1066,1068,1070],{"class":316,"line":435},[314,1059,466],{"class":417},[314,1061,421],{"class":324},[314,1063,329],{"class":328},[314,1065,473],{"class":324},[314,1067,476],{"class":405},[314,1069,479],{"class":328},[314,1071,432],{"class":324},[314,1073,1074],{"class":316,"line":452},[314,1075,487],{"class":324},[314,1077,1078,1081,1083,1085,1088,1090,1092],{"class":316,"line":463},[314,1079,1080],{"class":417},"  cache",[314,1082,421],{"class":324},[314,1084,338],{"class":324},[314,1086,1087],{"class":341},"1h",[314,1089,429],{"class":324},[314,1091,585],{"class":324},[314,1093,1094],{"class":635}," \u002F\u002F or '30m', '2 days', 3600000, etc.\n",[314,1096,1097,1099,1101,1103,1105,1107,1109,1111],{"class":316,"line":484},[314,1098,493],{"class":405},[314,1100,421],{"class":324},[314,1102,499],{"class":498},[314,1104,502],{"class":324},[314,1106,506],{"class":505},[314,1108,509],{"class":324},[314,1110,512],{"class":498},[314,1112,460],{"class":324},[314,1114,1115,1117,1119,1122,1124,1126],{"class":316,"line":490},[314,1116,613],{"class":320},[314,1118,529],{"class":320},[314,1120,1121],{"class":405}," fetchExpensiveData",[314,1123,408],{"class":417},[314,1125,537],{"class":328},[314,1127,540],{"class":417},[314,1129,1130],{"class":316,"line":517},[314,1131,487],{"class":324},[314,1133,1134,1136],{"class":316,"line":543},[314,1135,627],{"class":324},[314,1137,540],{"class":328},[292,1139,1141],{"id":1140},"full-cache-options","Full Cache Options",[283,1143,1144],{},"For more control, use an object with all Nitro cache options:",[304,1146,1149],{"className":306,"code":1147,"filename":1148,"language":309,"meta":310,"style":310},"import { z } from 'zod'\nimport { defineMcpTool } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\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",[287,1150,1151,1169,1187,1191,1203,1218,1226,1243,1247,1255,1270,1304,1320,1324,1343,1348,1352],{"__ignoreMap":310},[314,1152,1153,1155,1157,1159,1161,1163,1165,1167],{"class":316,"line":317},[314,1154,321],{"class":320},[314,1156,325],{"class":324},[314,1158,329],{"class":328},[314,1160,332],{"class":324},[314,1162,335],{"class":320},[314,1164,338],{"class":324},[314,1166,342],{"class":341},[314,1168,345],{"class":324},[314,1170,1171,1173,1175,1177,1179,1181,1183,1185],{"class":316,"line":348},[314,1172,321],{"class":320},[314,1174,325],{"class":324},[314,1176,375],{"class":328},[314,1178,332],{"class":324},[314,1180,335],{"class":320},[314,1182,338],{"class":324},[314,1184,384],{"class":341},[314,1186,345],{"class":324},[314,1188,1189],{"class":316,"line":368},[314,1190,393],{"emptyLinePlaceholder":392},[314,1192,1193,1195,1197,1199,1201],{"class":316,"line":389},[314,1194,399],{"class":320},[314,1196,402],{"class":320},[314,1198,375],{"class":405},[314,1200,408],{"class":328},[314,1202,411],{"class":324},[314,1204,1205,1207,1209,1211,1214,1216],{"class":316,"line":396},[314,1206,438],{"class":417},[314,1208,421],{"class":324},[314,1210,338],{"class":324},[314,1212,1213],{"class":341},"Get page with custom cache key",[314,1215,429],{"class":324},[314,1217,432],{"class":324},[314,1219,1220,1222,1224],{"class":316,"line":414},[314,1221,455],{"class":417},[314,1223,421],{"class":324},[314,1225,460],{"class":324},[314,1227,1228,1231,1233,1235,1237,1239,1241],{"class":316,"line":435},[314,1229,1230],{"class":417},"    path",[314,1232,421],{"class":324},[314,1234,329],{"class":328},[314,1236,473],{"class":324},[314,1238,476],{"class":405},[314,1240,479],{"class":328},[314,1242,432],{"class":324},[314,1244,1245],{"class":316,"line":452},[314,1246,487],{"class":324},[314,1248,1249,1251,1253],{"class":316,"line":463},[314,1250,1080],{"class":417},[314,1252,421],{"class":324},[314,1254,460],{"class":324},[314,1256,1257,1260,1262,1264,1266,1268],{"class":316,"line":484},[314,1258,1259],{"class":417},"    maxAge",[314,1261,421],{"class":324},[314,1263,338],{"class":324},[314,1265,1087],{"class":341},[314,1267,429],{"class":324},[314,1269,432],{"class":324},[314,1271,1272,1275,1277,1280,1282,1285,1288,1291,1294,1296,1299,1302],{"class":316,"line":490},[314,1273,1274],{"class":405},"    getKey",[314,1276,421],{"class":324},[314,1278,1279],{"class":505}," args",[314,1281,512],{"class":498},[314,1283,1284],{"class":324}," `",[314,1286,1287],{"class":341},"page-",[314,1289,1290],{"class":324},"${",[314,1292,1293],{"class":328},"args",[314,1295,473],{"class":324},[314,1297,1298],{"class":328},"path",[314,1300,1301],{"class":324},"}`",[314,1303,432],{"class":324},[314,1305,1306,1309,1311,1315,1317],{"class":316,"line":517},[314,1307,1308],{"class":417},"    swr",[314,1310,421],{"class":324},[314,1312,1314],{"class":1313},"sfNiH"," true",[314,1316,585],{"class":324},[314,1318,1319],{"class":635}," \u002F\u002F stale-while-revalidate\n",[314,1321,1322],{"class":316,"line":543},[314,1323,487],{"class":324},[314,1325,1326,1328,1330,1332,1334,1337,1339,1341],{"class":316,"line":563},[314,1327,493],{"class":405},[314,1329,421],{"class":324},[314,1331,499],{"class":498},[314,1333,502],{"class":324},[314,1335,1336],{"class":505}," path",[314,1338,509],{"class":324},[314,1340,512],{"class":498},[314,1342,460],{"class":324},[314,1344,1345],{"class":316,"line":604},[314,1346,1347],{"class":635},"    \u002F\u002F ...\n",[314,1349,1350],{"class":316,"line":610},[314,1351,487],{"class":324},[314,1353,1354,1356],{"class":316,"line":619},[314,1355,627],{"class":324},[314,1357,540],{"class":328},[292,1359,1361],{"id":1360},"cache-options-reference","Cache Options Reference",[1363,1364,1365,1384],"table",{},[1366,1367,1368],"thead",{},[1369,1370,1371,1375,1378,1381],"tr",{},[1372,1373,1374],"th",{},"Option",[1372,1376,1377],{},"Type",[1372,1379,1380],{},"Required",[1372,1382,1383],{},"Description",[1385,1386,1387,1414,1432,1448,1465,1480],"tbody",{},[1369,1388,1389,1395,1400,1403],{},[1390,1391,1392],"td",{},[287,1393,1394],{},"maxAge",[1390,1396,1397],{},[287,1398,1399],{},"string | number",[1390,1401,1402],{},"Yes",[1390,1404,1405,1406,1409,1410,1413],{},"Cache duration (e.g., ",[287,1407,1408],{},"'1h'",", ",[287,1411,1412],{},"3600000",")",[1369,1415,1416,1421,1426,1429],{},[1390,1417,1418],{},[287,1419,1420],{},"getKey",[1390,1422,1423],{},[287,1424,1425],{},"(args) => string",[1390,1427,1428],{},"No",[1390,1430,1431],{},"Custom cache key generator",[1369,1433,1434,1439,1443,1445],{},[1390,1435,1436],{},[287,1437,1438],{},"staleMaxAge",[1390,1440,1441],{},[287,1442,839],{},[1390,1444,1428],{},[1390,1446,1447],{},"Duration for stale-while-revalidate",[1369,1449,1450,1455,1460,1462],{},[1390,1451,1452],{},[287,1453,1454],{},"swr",[1390,1456,1457],{},[287,1458,1459],{},"boolean",[1390,1461,1428],{},[1390,1463,1464],{},"Enable stale-while-revalidate",[1369,1466,1467,1471,1475,1477],{},[1390,1468,1469],{},[287,1470,705],{},[1390,1472,1473],{},[287,1474,476],{},[1390,1476,1428],{},[1390,1478,1479],{},"Cache name (auto-generated from tool name)",[1369,1481,1482,1487,1491,1493],{},[1390,1483,1484],{},[287,1485,1486],{},"group",[1390,1488,1489],{},[287,1490,476],{},[1390,1492,1428],{},[1390,1494,1495,1496,1413],{},"Cache group (default: ",[287,1497,1498],{},"'mcp'",[1500,1501,1504,1505,1510],"callout",{"color":1502,"icon":1503},"info","i-lucide-info","See the ",[966,1506,1509],{"href":1507,"rel":1508},"https:\u002F\u002Fnitro.build\u002Fguide\u002Fcache#options",[970],"Nitro Cache documentation"," for all available options.",[1512,1513,1514],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}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 .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":310,"searchDepth":348,"depth":348,"links":1516},[1517,1521],{"id":280,"depth":348,"text":281,"children":1518},[1519,1520],{"id":294,"depth":368,"text":295},{"id":736,"depth":368,"text":737},{"id":949,"depth":348,"text":950,"children":1522},[1523,1524,1525],{"id":960,"depth":368,"text":961},{"id":1140,"depth":368,"text":1141},{"id":1360,"depth":368,"text":1361},"H3 and plain errors in tool handlers, and Nitro-backed response caching.","md",null,{},{"icon":64},{"title":1532,"description":1533},"Tool errors & response caching","createError from h3, plain Error throws, and cache options for MCP tools in Nuxt.","414MQ1cDOUB1rvyTVuyDW_Q6ARJSn-LgVfzD_BoVWHI",[1536,1538],{"title":56,"path":57,"stem":58,"description":1537,"icon":59,"children":-1},"Behavioral hints for MCP clients and concrete inputExamples for complex tools.",{"title":66,"path":67,"stem":68,"description":1539,"icon":69,"children":-1},"group and tags, directory layout, type safety, and enabled guards for tools.",1777306539873]