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