[{"data":1,"prerenderedAt":2414},["ShallowReactive",2],{"navigation_docs":3,"-tools-schema-handler":272,"-tools-schema-handler-surround":2409},[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":51,"body":274,"description":2400,"extension":2401,"links":2402,"meta":2403,"navigation":2404,"path":52,"seo":2405,"stem":53,"__hash__":2408},"docs\u002F2.tools\u002F1.schema-handler.md",{"type":275,"value":276,"toc":2389},"minimark",[277,282,294,436,439,888,893,1035,1039,1045,1500,1509,1513,1520,1524,1536,1725,1734,1738,1744,1999,2003,2014,2197,2366,2385],[278,279,281],"h2",{"id":280},"input-schema","Input Schema",[283,284,285,286,290,291,293],"p",{},"The ",[287,288,289],"code",{},"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 ",[287,292,289],{}," entirely:",[295,296,302],"pre",{"className":297,"code":298,"filename":299,"language":300,"meta":301,"style":301},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { defineMcpTool } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\nexport default defineMcpTool({\n  name: 'echo',\n  description: 'Echo back a message',\n  handler: async () => 'Echo: test',\n})\n","server\u002Fmcp\u002Ftools\u002Fecho.ts","typescript","",[287,303,304,337,344,362,383,400,427],{"__ignoreMap":301},[305,306,309,313,317,321,324,327,330,334],"span",{"class":307,"line":308},"line",1,[305,310,312],{"class":311},"s7zQu","import",[305,314,316],{"class":315},"sMK4o"," {",[305,318,320],{"class":319},"sTEyZ"," defineMcpTool",[305,322,323],{"class":315}," }",[305,325,326],{"class":311}," from",[305,328,329],{"class":315}," '",[305,331,333],{"class":332},"sfazB","@nuxtjs\u002Fmcp-toolkit\u002Fserver",[305,335,336],{"class":315},"'\n",[305,338,340],{"class":307,"line":339},2,[305,341,343],{"emptyLinePlaceholder":342},true,"\n",[305,345,347,350,353,356,359],{"class":307,"line":346},3,[305,348,349],{"class":311},"export",[305,351,352],{"class":311}," default",[305,354,320],{"class":355},"s2Zo4",[305,357,358],{"class":319},"(",[305,360,361],{"class":315},"{\n",[305,363,365,369,372,374,377,380],{"class":307,"line":364},4,[305,366,368],{"class":367},"swJcz","  name",[305,370,371],{"class":315},":",[305,373,329],{"class":315},[305,375,376],{"class":332},"echo",[305,378,379],{"class":315},"'",[305,381,382],{"class":315},",\n",[305,384,386,389,391,393,396,398],{"class":307,"line":385},5,[305,387,388],{"class":367},"  description",[305,390,371],{"class":315},[305,392,329],{"class":315},[305,394,395],{"class":332},"Echo back a message",[305,397,379],{"class":315},[305,399,382],{"class":315},[305,401,403,406,408,412,415,418,420,423,425],{"class":307,"line":402},6,[305,404,405],{"class":355},"  handler",[305,407,371],{"class":315},[305,409,411],{"class":410},"spNyl"," async",[305,413,414],{"class":315}," ()",[305,416,417],{"class":410}," =>",[305,419,329],{"class":315},[305,421,422],{"class":332},"Echo: test",[305,424,379],{"class":315},[305,426,382],{"class":315},[305,428,430,433],{"class":307,"line":429},7,[305,431,432],{"class":315},"}",[305,434,435],{"class":319},")\n",[283,437,438],{},"For tools with parameters, define them using Zod schemas:",[295,440,443],{"className":297,"code":441,"filename":442,"language":300,"meta":301,"style":301},"import { z } from 'zod'\nimport { defineMcpTool } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\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",[287,444,445,465,483,487,499,514,524,530,568,573,579,613,646,651,657,697,702,708,763,768,774,816,822,870,876,881],{"__ignoreMap":301},[305,446,447,449,451,454,456,458,460,463],{"class":307,"line":308},[305,448,312],{"class":311},[305,450,316],{"class":315},[305,452,453],{"class":319}," z",[305,455,323],{"class":315},[305,457,326],{"class":311},[305,459,329],{"class":315},[305,461,462],{"class":332},"zod",[305,464,336],{"class":315},[305,466,467,469,471,473,475,477,479,481],{"class":307,"line":339},[305,468,312],{"class":311},[305,470,316],{"class":315},[305,472,320],{"class":319},[305,474,323],{"class":315},[305,476,326],{"class":311},[305,478,329],{"class":315},[305,480,333],{"class":332},[305,482,336],{"class":315},[305,484,485],{"class":307,"line":346},[305,486,343],{"emptyLinePlaceholder":342},[305,488,489,491,493,495,497],{"class":307,"line":364},[305,490,349],{"class":311},[305,492,352],{"class":311},[305,494,320],{"class":355},[305,496,358],{"class":319},[305,498,361],{"class":315},[305,500,501,503,505,507,510,512],{"class":307,"line":385},[305,502,368],{"class":367},[305,504,371],{"class":315},[305,506,329],{"class":315},[305,508,509],{"class":332},"calculator",[305,511,379],{"class":315},[305,513,382],{"class":315},[305,515,516,519,521],{"class":307,"line":402},[305,517,518],{"class":367},"  inputSchema",[305,520,371],{"class":315},[305,522,523],{"class":315}," {\n",[305,525,526],{"class":307,"line":429},[305,527,529],{"class":528},"sHwdD","    \u002F\u002F String input\n",[305,531,533,536,538,540,543,546,549,551,554,556,558,561,563,566],{"class":307,"line":532},8,[305,534,535],{"class":367},"    operation",[305,537,371],{"class":315},[305,539,453],{"class":319},[305,541,542],{"class":315},".",[305,544,545],{"class":355},"string",[305,547,548],{"class":319},"()",[305,550,542],{"class":315},[305,552,553],{"class":355},"describe",[305,555,358],{"class":319},[305,557,379],{"class":315},[305,559,560],{"class":332},"Operation to perform",[305,562,379],{"class":315},[305,564,565],{"class":319},")",[305,567,382],{"class":315},[305,569,571],{"class":307,"line":570},9,[305,572,343],{"emptyLinePlaceholder":342},[305,574,576],{"class":307,"line":575},10,[305,577,578],{"class":528},"    \u002F\u002F Number input\n",[305,580,582,585,587,589,591,594,596,598,600,602,604,607,609,611],{"class":307,"line":581},11,[305,583,584],{"class":367},"    a",[305,586,371],{"class":315},[305,588,453],{"class":319},[305,590,542],{"class":315},[305,592,593],{"class":355},"number",[305,595,548],{"class":319},[305,597,542],{"class":315},[305,599,553],{"class":355},[305,601,358],{"class":319},[305,603,379],{"class":315},[305,605,606],{"class":332},"First number",[305,608,379],{"class":315},[305,610,565],{"class":319},[305,612,382],{"class":315},[305,614,616,619,621,623,625,627,629,631,633,635,637,640,642,644],{"class":307,"line":615},12,[305,617,618],{"class":367},"    b",[305,620,371],{"class":315},[305,622,453],{"class":319},[305,624,542],{"class":315},[305,626,593],{"class":355},[305,628,548],{"class":319},[305,630,542],{"class":315},[305,632,553],{"class":355},[305,634,358],{"class":319},[305,636,379],{"class":315},[305,638,639],{"class":332},"Second number",[305,641,379],{"class":315},[305,643,565],{"class":319},[305,645,382],{"class":315},[305,647,649],{"class":307,"line":648},13,[305,650,343],{"emptyLinePlaceholder":342},[305,652,654],{"class":307,"line":653},14,[305,655,656],{"class":528},"    \u002F\u002F Optional field\n",[305,658,660,663,665,667,669,671,673,675,678,680,682,684,686,688,691,693,695],{"class":307,"line":659},15,[305,661,662],{"class":367},"    precision",[305,664,371],{"class":315},[305,666,453],{"class":319},[305,668,542],{"class":315},[305,670,593],{"class":355},[305,672,548],{"class":319},[305,674,542],{"class":315},[305,676,677],{"class":355},"optional",[305,679,548],{"class":319},[305,681,542],{"class":315},[305,683,553],{"class":355},[305,685,358],{"class":319},[305,687,379],{"class":315},[305,689,690],{"class":332},"Decimal precision",[305,692,379],{"class":315},[305,694,565],{"class":319},[305,696,382],{"class":315},[305,698,700],{"class":307,"line":699},16,[305,701,343],{"emptyLinePlaceholder":342},[305,703,705],{"class":307,"line":704},17,[305,706,707],{"class":528},"    \u002F\u002F Enum input\n",[305,709,711,714,716,718,720,723,726,728,731,733,736,738,741,743,746,748,750,752,754,757,759,761],{"class":307,"line":710},18,[305,712,713],{"class":367},"    format",[305,715,371],{"class":315},[305,717,453],{"class":319},[305,719,542],{"class":315},[305,721,722],{"class":355},"enum",[305,724,725],{"class":319},"([",[305,727,379],{"class":315},[305,729,730],{"class":332},"decimal",[305,732,379],{"class":315},[305,734,735],{"class":315},",",[305,737,329],{"class":315},[305,739,740],{"class":332},"fraction",[305,742,379],{"class":315},[305,744,745],{"class":319},"])",[305,747,542],{"class":315},[305,749,553],{"class":355},[305,751,358],{"class":319},[305,753,379],{"class":315},[305,755,756],{"class":332},"Output format",[305,758,379],{"class":315},[305,760,565],{"class":319},[305,762,382],{"class":315},[305,764,766],{"class":307,"line":765},19,[305,767,343],{"emptyLinePlaceholder":342},[305,769,771],{"class":307,"line":770},20,[305,772,773],{"class":528},"    \u002F\u002F Array input\n",[305,775,777,780,782,784,786,789,792,794,796,799,801,803,805,807,810,812,814],{"class":307,"line":776},21,[305,778,779],{"class":367},"    numbers",[305,781,371],{"class":315},[305,783,453],{"class":319},[305,785,542],{"class":315},[305,787,788],{"class":355},"array",[305,790,791],{"class":319},"(z",[305,793,542],{"class":315},[305,795,593],{"class":355},[305,797,798],{"class":319},"())",[305,800,542],{"class":315},[305,802,553],{"class":355},[305,804,358],{"class":319},[305,806,379],{"class":315},[305,808,809],{"class":332},"List of numbers",[305,811,379],{"class":315},[305,813,565],{"class":319},[305,815,382],{"class":315},[305,817,819],{"class":307,"line":818},22,[305,820,821],{"class":315},"  },\n",[305,823,825,827,829,831,834,838,840,843,845,848,850,853,855,858,860,863,866,868],{"class":307,"line":824},23,[305,826,405],{"class":355},[305,828,371],{"class":315},[305,830,411],{"class":410},[305,832,833],{"class":315}," ({",[305,835,837],{"class":836},"sHdIc"," operation",[305,839,735],{"class":315},[305,841,842],{"class":836}," a",[305,844,735],{"class":315},[305,846,847],{"class":836}," b",[305,849,735],{"class":315},[305,851,852],{"class":836}," precision",[305,854,735],{"class":315},[305,856,857],{"class":836}," format",[305,859,735],{"class":315},[305,861,862],{"class":836}," numbers",[305,864,865],{"class":315}," })",[305,867,417],{"class":410},[305,869,523],{"class":315},[305,871,873],{"class":307,"line":872},24,[305,874,875],{"class":528},"    \u002F\u002F Handler implementation\n",[305,877,879],{"class":307,"line":878},25,[305,880,821],{"class":315},[305,882,884,886],{"class":307,"line":883},26,[305,885,432],{"class":315},[305,887,435],{"class":319},[889,890,892],"h3",{"id":891},"common-zod-types","Common Zod Types",[894,895,896,912],"table",{},[897,898,899],"thead",{},[900,901,902,906,909],"tr",{},[903,904,905],"th",{},"Zod Type",[903,907,908],{},"Example",[903,910,911],{},"Description",[913,914,915,931,946,960,975,990,1005,1020],"tbody",{},[900,916,917,923,928],{},[918,919,920],"td",{},[287,921,922],{},"z.string()",[918,924,925],{},[287,926,927],{},"z.string().min(1).max(100)",[918,929,930],{},"String with validation",[900,932,933,938,943],{},[918,934,935],{},[287,936,937],{},"z.number()",[918,939,940],{},[287,941,942],{},"z.number().min(0).max(100)",[918,944,945],{},"Number with validation",[900,947,948,953,957],{},[918,949,950],{},[287,951,952],{},"z.boolean()",[918,954,955],{},[287,956,952],{},[918,958,959],{},"Boolean value",[900,961,962,967,972],{},[918,963,964],{},[287,965,966],{},"z.array()",[918,968,969],{},[287,970,971],{},"z.array(z.string())",[918,973,974],{},"Array of values",[900,976,977,982,987],{},[918,978,979],{},[287,980,981],{},"z.object()",[918,983,984],{},[287,985,986],{},"z.object({ ... })",[918,988,989],{},"Nested object",[900,991,992,997,1002],{},[918,993,994],{},[287,995,996],{},"z.enum()",[918,998,999],{},[287,1000,1001],{},"z.enum(['a', 'b'])",[918,1003,1004],{},"Enumeration",[900,1006,1007,1012,1017],{},[918,1008,1009],{},[287,1010,1011],{},"z.optional()",[918,1013,1014],{},[287,1015,1016],{},"z.string().optional()",[918,1018,1019],{},"Optional field",[900,1021,1022,1027,1032],{},[918,1023,1024],{},[287,1025,1026],{},"z.default()",[918,1028,1029],{},[287,1030,1031],{},"z.string().default('value')",[918,1033,1034],{},"Field with default",[278,1036,1038],{"id":1037},"output-schema","Output Schema",[283,1040,1041,1042,371],{},"Define structured output using ",[287,1043,1044],{},"outputSchema",[295,1046,1049],{"className":297,"code":1047,"filename":1048,"language":300,"meta":301,"style":301},"import { z } from 'zod'\nimport { defineMcpTool } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\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      structuredContent: {\n        bmi: Math.round(bmi * 100) \u002F 100,\n        category,\n      },\n    }\n  },\n})\n","server\u002Fmcp\u002Ftools\u002Fbmi.ts",[287,1050,1051,1069,1087,1091,1103,1118,1133,1141,1173,1205,1209,1218,1235,1252,1256,1280,1309,1326,1358,1389,1417,1421,1428,1437,1470,1477,1482,1488,1493],{"__ignoreMap":301},[305,1052,1053,1055,1057,1059,1061,1063,1065,1067],{"class":307,"line":308},[305,1054,312],{"class":311},[305,1056,316],{"class":315},[305,1058,453],{"class":319},[305,1060,323],{"class":315},[305,1062,326],{"class":311},[305,1064,329],{"class":315},[305,1066,462],{"class":332},[305,1068,336],{"class":315},[305,1070,1071,1073,1075,1077,1079,1081,1083,1085],{"class":307,"line":339},[305,1072,312],{"class":311},[305,1074,316],{"class":315},[305,1076,320],{"class":319},[305,1078,323],{"class":315},[305,1080,326],{"class":311},[305,1082,329],{"class":315},[305,1084,333],{"class":332},[305,1086,336],{"class":315},[305,1088,1089],{"class":307,"line":346},[305,1090,343],{"emptyLinePlaceholder":342},[305,1092,1093,1095,1097,1099,1101],{"class":307,"line":364},[305,1094,349],{"class":311},[305,1096,352],{"class":311},[305,1098,320],{"class":355},[305,1100,358],{"class":319},[305,1102,361],{"class":315},[305,1104,1105,1107,1109,1111,1114,1116],{"class":307,"line":385},[305,1106,368],{"class":367},[305,1108,371],{"class":315},[305,1110,329],{"class":315},[305,1112,1113],{"class":332},"calculate-bmi",[305,1115,379],{"class":315},[305,1117,382],{"class":315},[305,1119,1120,1122,1124,1126,1129,1131],{"class":307,"line":402},[305,1121,388],{"class":367},[305,1123,371],{"class":315},[305,1125,329],{"class":315},[305,1127,1128],{"class":332},"Calculate Body Mass Index",[305,1130,379],{"class":315},[305,1132,382],{"class":315},[305,1134,1135,1137,1139],{"class":307,"line":429},[305,1136,518],{"class":367},[305,1138,371],{"class":315},[305,1140,523],{"class":315},[305,1142,1143,1146,1148,1150,1152,1154,1156,1158,1160,1162,1164,1167,1169,1171],{"class":307,"line":532},[305,1144,1145],{"class":367},"    weightKg",[305,1147,371],{"class":315},[305,1149,453],{"class":319},[305,1151,542],{"class":315},[305,1153,593],{"class":355},[305,1155,548],{"class":319},[305,1157,542],{"class":315},[305,1159,553],{"class":355},[305,1161,358],{"class":319},[305,1163,379],{"class":315},[305,1165,1166],{"class":332},"Weight in kilograms",[305,1168,379],{"class":315},[305,1170,565],{"class":319},[305,1172,382],{"class":315},[305,1174,1175,1178,1180,1182,1184,1186,1188,1190,1192,1194,1196,1199,1201,1203],{"class":307,"line":570},[305,1176,1177],{"class":367},"    heightM",[305,1179,371],{"class":315},[305,1181,453],{"class":319},[305,1183,542],{"class":315},[305,1185,593],{"class":355},[305,1187,548],{"class":319},[305,1189,542],{"class":315},[305,1191,553],{"class":355},[305,1193,358],{"class":319},[305,1195,379],{"class":315},[305,1197,1198],{"class":332},"Height in meters",[305,1200,379],{"class":315},[305,1202,565],{"class":319},[305,1204,382],{"class":315},[305,1206,1207],{"class":307,"line":575},[305,1208,821],{"class":315},[305,1210,1211,1214,1216],{"class":307,"line":581},[305,1212,1213],{"class":367},"  outputSchema",[305,1215,371],{"class":315},[305,1217,523],{"class":315},[305,1219,1220,1223,1225,1227,1229,1231,1233],{"class":307,"line":615},[305,1221,1222],{"class":367},"    bmi",[305,1224,371],{"class":315},[305,1226,453],{"class":319},[305,1228,542],{"class":315},[305,1230,593],{"class":355},[305,1232,548],{"class":319},[305,1234,382],{"class":315},[305,1236,1237,1240,1242,1244,1246,1248,1250],{"class":307,"line":648},[305,1238,1239],{"class":367},"    category",[305,1241,371],{"class":315},[305,1243,453],{"class":319},[305,1245,542],{"class":315},[305,1247,545],{"class":355},[305,1249,548],{"class":319},[305,1251,382],{"class":315},[305,1253,1254],{"class":307,"line":653},[305,1255,821],{"class":315},[305,1257,1258,1260,1262,1264,1266,1269,1271,1274,1276,1278],{"class":307,"line":659},[305,1259,405],{"class":355},[305,1261,371],{"class":315},[305,1263,411],{"class":410},[305,1265,833],{"class":315},[305,1267,1268],{"class":836}," weightKg",[305,1270,735],{"class":315},[305,1272,1273],{"class":836}," heightM",[305,1275,865],{"class":315},[305,1277,417],{"class":410},[305,1279,523],{"class":315},[305,1281,1282,1285,1288,1291,1293,1296,1299,1302,1305,1307],{"class":307,"line":699},[305,1283,1284],{"class":410},"    const",[305,1286,1287],{"class":319}," bmi",[305,1289,1290],{"class":315}," =",[305,1292,1268],{"class":319},[305,1294,1295],{"class":315}," \u002F",[305,1297,1298],{"class":367}," (",[305,1300,1301],{"class":319},"heightM",[305,1303,1304],{"class":315}," *",[305,1306,1273],{"class":319},[305,1308,435],{"class":367},[305,1310,1311,1314,1317,1319,1321,1324],{"class":307,"line":704},[305,1312,1313],{"class":410},"    let",[305,1315,1316],{"class":319}," category",[305,1318,1290],{"class":315},[305,1320,329],{"class":315},[305,1322,1323],{"class":332},"Normal",[305,1325,336],{"class":315},[305,1327,1328,1331,1333,1336,1339,1343,1346,1349,1351,1353,1356],{"class":307,"line":710},[305,1329,1330],{"class":311},"    if",[305,1332,1298],{"class":367},[305,1334,1335],{"class":319},"bmi",[305,1337,1338],{"class":315}," \u003C",[305,1340,1342],{"class":1341},"sbssI"," 18.5",[305,1344,1345],{"class":367},") ",[305,1347,1348],{"class":319},"category",[305,1350,1290],{"class":315},[305,1352,329],{"class":315},[305,1354,1355],{"class":332},"Underweight",[305,1357,336],{"class":315},[305,1359,1360,1363,1366,1368,1370,1373,1376,1378,1380,1382,1384,1387],{"class":307,"line":765},[305,1361,1362],{"class":311},"    else",[305,1364,1365],{"class":311}," if",[305,1367,1298],{"class":367},[305,1369,1335],{"class":319},[305,1371,1372],{"class":315}," >=",[305,1374,1375],{"class":1341}," 25",[305,1377,1345],{"class":367},[305,1379,1348],{"class":319},[305,1381,1290],{"class":315},[305,1383,329],{"class":315},[305,1385,1386],{"class":332},"Overweight",[305,1388,336],{"class":315},[305,1390,1391,1393,1395,1397,1399,1401,1404,1406,1408,1410,1412,1415],{"class":307,"line":770},[305,1392,1362],{"class":311},[305,1394,1365],{"class":311},[305,1396,1298],{"class":367},[305,1398,1335],{"class":319},[305,1400,1372],{"class":315},[305,1402,1403],{"class":1341}," 30",[305,1405,1345],{"class":367},[305,1407,1348],{"class":319},[305,1409,1290],{"class":315},[305,1411,329],{"class":315},[305,1413,1414],{"class":332},"Obese",[305,1416,336],{"class":315},[305,1418,1419],{"class":307,"line":776},[305,1420,343],{"emptyLinePlaceholder":342},[305,1422,1423,1426],{"class":307,"line":818},[305,1424,1425],{"class":311},"    return",[305,1427,523],{"class":315},[305,1429,1430,1433,1435],{"class":307,"line":824},[305,1431,1432],{"class":367},"      structuredContent",[305,1434,371],{"class":315},[305,1436,523],{"class":315},[305,1438,1439,1442,1444,1447,1449,1452,1454,1456,1458,1461,1463,1466,1468],{"class":307,"line":872},[305,1440,1441],{"class":367},"        bmi",[305,1443,371],{"class":315},[305,1445,1446],{"class":319}," Math",[305,1448,542],{"class":315},[305,1450,1451],{"class":355},"round",[305,1453,358],{"class":367},[305,1455,1335],{"class":319},[305,1457,1304],{"class":315},[305,1459,1460],{"class":1341}," 100",[305,1462,1345],{"class":367},[305,1464,1465],{"class":315},"\u002F",[305,1467,1460],{"class":1341},[305,1469,382],{"class":315},[305,1471,1472,1475],{"class":307,"line":878},[305,1473,1474],{"class":319},"        category",[305,1476,382],{"class":315},[305,1478,1479],{"class":307,"line":883},[305,1480,1481],{"class":315},"      },\n",[305,1483,1485],{"class":307,"line":1484},27,[305,1486,1487],{"class":315},"    }\n",[305,1489,1491],{"class":307,"line":1490},28,[305,1492,821],{"class":315},[305,1494,1496,1498],{"class":307,"line":1495},29,[305,1497,432],{"class":315},[305,1499,435],{"class":319},[283,1501,285,1502,1505,1506,1508],{},[287,1503,1504],{},"structuredContent"," field provides structured data that matches your ",[287,1507,1044],{},", making it easier for AI assistants to work with the results.",[278,1510,1512],{"id":1511},"handler-function","Handler Function",[283,1514,1515,1516,1519],{},"The handler is an async function that receives validated input and returns results. You can return simplified values directly — they are automatically wrapped into the MCP ",[287,1517,1518],{},"CallToolResult"," format.",[889,1521,1523],{"id":1522},"simplified-returns","Simplified Returns",[283,1525,1526,1527,1529,1530,1529,1532,1535],{},"Return a ",[287,1528,545],{},", ",[287,1531,593],{},[287,1533,1534],{},"boolean",", object, or array directly from your handler:",[1537,1538,1539,1584,1624,1690],"code-group",{},[295,1540,1543],{"className":297,"code":1541,"filename":1542,"language":300,"meta":301,"style":301},"handler: async ({ name }) => `Hello ${name}`\n\u002F\u002F → { content: [{ type: 'text', text: 'Hello World' }] }\n","String",[287,1544,1545,1579],{"__ignoreMap":301},[305,1546,1547,1551,1553,1555,1557,1560,1562,1564,1567,1570,1573,1576],{"class":307,"line":308},[305,1548,1550],{"class":1549},"sBMFI","handler",[305,1552,371],{"class":315},[305,1554,411],{"class":410},[305,1556,833],{"class":315},[305,1558,1559],{"class":836}," name",[305,1561,865],{"class":315},[305,1563,417],{"class":410},[305,1565,1566],{"class":315}," `",[305,1568,1569],{"class":332},"Hello ",[305,1571,1572],{"class":315},"${",[305,1574,1575],{"class":319},"name",[305,1577,1578],{"class":315},"}`\n",[305,1580,1581],{"class":307,"line":339},[305,1582,1583],{"class":528},"\u002F\u002F → { content: [{ type: 'text', text: 'Hello World' }] }\n",[295,1585,1588],{"className":297,"code":1586,"filename":1587,"language":300,"meta":301,"style":301},"handler: async ({ a, b }) => a + b\n\u002F\u002F → { content: [{ type: 'text', text: '10' }] }\n","Number",[287,1589,1590,1619],{"__ignoreMap":301},[305,1591,1592,1594,1596,1598,1600,1602,1604,1606,1608,1610,1613,1616],{"class":307,"line":308},[305,1593,1550],{"class":1549},[305,1595,371],{"class":315},[305,1597,411],{"class":410},[305,1599,833],{"class":315},[305,1601,842],{"class":836},[305,1603,735],{"class":315},[305,1605,847],{"class":836},[305,1607,865],{"class":315},[305,1609,417],{"class":410},[305,1611,1612],{"class":319}," a ",[305,1614,1615],{"class":315},"+",[305,1617,1618],{"class":319}," b\n",[305,1620,1621],{"class":307,"line":339},[305,1622,1623],{"class":528},"\u002F\u002F → { content: [{ type: 'text', text: '10' }] }\n",[295,1625,1628],{"className":297,"code":1626,"filename":1627,"language":300,"meta":301,"style":301},"handler: async ({ id }) => {\n  const user = await getUser(id)\n  return user\n}\n\u002F\u002F → { content: [{ type: 'text', text: '{ \"id\": ... }' }] }\n","Object \u002F Array",[287,1629,1630,1649,1672,1680,1685],{"__ignoreMap":301},[305,1631,1632,1634,1636,1638,1640,1643,1645,1647],{"class":307,"line":308},[305,1633,1550],{"class":1549},[305,1635,371],{"class":315},[305,1637,411],{"class":410},[305,1639,833],{"class":315},[305,1641,1642],{"class":836}," id",[305,1644,865],{"class":315},[305,1646,417],{"class":410},[305,1648,523],{"class":315},[305,1650,1651,1654,1657,1659,1662,1665,1667,1670],{"class":307,"line":339},[305,1652,1653],{"class":410},"  const",[305,1655,1656],{"class":319}," user",[305,1658,1290],{"class":315},[305,1660,1661],{"class":311}," await",[305,1663,1664],{"class":355}," getUser",[305,1666,358],{"class":367},[305,1668,1669],{"class":319},"id",[305,1671,435],{"class":367},[305,1673,1674,1677],{"class":307,"line":346},[305,1675,1676],{"class":311},"  return",[305,1678,1679],{"class":319}," user\n",[305,1681,1682],{"class":307,"line":364},[305,1683,1684],{"class":315},"}\n",[305,1686,1687],{"class":307,"line":385},[305,1688,1689],{"class":528},"\u002F\u002F → { content: [{ type: 'text', text: '{ \"id\": ... }' }] }\n",[295,1691,1694],{"className":297,"code":1692,"filename":1693,"language":300,"meta":301,"style":301},"handler: async ({ id }) => await exists(id)\n\u002F\u002F → { content: [{ type: 'text', text: 'true' }] }\n","Boolean",[287,1695,1696,1720],{"__ignoreMap":301},[305,1697,1698,1700,1702,1704,1706,1708,1710,1712,1714,1717],{"class":307,"line":308},[305,1699,1550],{"class":1549},[305,1701,371],{"class":315},[305,1703,411],{"class":410},[305,1705,833],{"class":315},[305,1707,1642],{"class":836},[305,1709,865],{"class":315},[305,1711,417],{"class":410},[305,1713,1661],{"class":311},[305,1715,1716],{"class":355}," exists",[305,1718,1719],{"class":319},"(id)\n",[305,1721,1722],{"class":307,"line":339},[305,1723,1724],{"class":528},"\u002F\u002F → { content: [{ type: 'text', text: 'true' }] }\n",[283,1726,1727,1728,1730,1731,1733],{},"You can also return the full ",[287,1729,1518],{}," format when you need more control (e.g., images, multiple content items, ",[287,1732,1504],{},").",[889,1735,1737],{"id":1736},"content-types","Content Types",[283,1739,1740,1741,1743],{},"For advanced use cases, return a full ",[287,1742,1518],{}," with typed content:",[1537,1745,1746,1829,1888],{},[295,1747,1750],{"className":297,"code":1748,"filename":1749,"language":300,"meta":301,"style":301},"return {\n  content: [{\n    type: 'image',\n    data: base64ImageData,\n    mimeType: 'image\u002Fpng',\n  }],\n}\n","Image Content",[287,1751,1752,1759,1771,1787,1799,1815,1825],{"__ignoreMap":301},[305,1753,1754,1757],{"class":307,"line":308},[305,1755,1756],{"class":311},"return",[305,1758,523],{"class":315},[305,1760,1761,1764,1766,1769],{"class":307,"line":339},[305,1762,1763],{"class":367},"  content",[305,1765,371],{"class":315},[305,1767,1768],{"class":319}," [",[305,1770,361],{"class":315},[305,1772,1773,1776,1778,1780,1783,1785],{"class":307,"line":346},[305,1774,1775],{"class":367},"    type",[305,1777,371],{"class":315},[305,1779,329],{"class":315},[305,1781,1782],{"class":332},"image",[305,1784,379],{"class":315},[305,1786,382],{"class":315},[305,1788,1789,1792,1794,1797],{"class":307,"line":364},[305,1790,1791],{"class":367},"    data",[305,1793,371],{"class":315},[305,1795,1796],{"class":319}," base64ImageData",[305,1798,382],{"class":315},[305,1800,1801,1804,1806,1808,1811,1813],{"class":307,"line":385},[305,1802,1803],{"class":367},"    mimeType",[305,1805,371],{"class":315},[305,1807,329],{"class":315},[305,1809,1810],{"class":332},"image\u002Fpng",[305,1812,379],{"class":315},[305,1814,382],{"class":315},[305,1816,1817,1820,1823],{"class":307,"line":402},[305,1818,1819],{"class":315},"  }",[305,1821,1822],{"class":319},"]",[305,1824,382],{"class":315},[305,1826,1827],{"class":307,"line":429},[305,1828,1684],{"class":315},[295,1830,1833],{"className":297,"code":1831,"filename":1832,"language":300,"meta":301,"style":301},"return {\n  structuredContent: {\n    bmi: 25.5,\n    category: 'Normal',\n  },\n}\n\u002F\u002F text content is auto-generated as fallback for older clients\n","Structured Content",[287,1834,1835,1841,1850,1861,1875,1879,1883],{"__ignoreMap":301},[305,1836,1837,1839],{"class":307,"line":308},[305,1838,1756],{"class":311},[305,1840,523],{"class":315},[305,1842,1843,1846,1848],{"class":307,"line":339},[305,1844,1845],{"class":367},"  structuredContent",[305,1847,371],{"class":315},[305,1849,523],{"class":315},[305,1851,1852,1854,1856,1859],{"class":307,"line":346},[305,1853,1222],{"class":367},[305,1855,371],{"class":315},[305,1857,1858],{"class":1341}," 25.5",[305,1860,382],{"class":315},[305,1862,1863,1865,1867,1869,1871,1873],{"class":307,"line":364},[305,1864,1239],{"class":367},[305,1866,371],{"class":315},[305,1868,329],{"class":315},[305,1870,1323],{"class":332},[305,1872,379],{"class":315},[305,1874,382],{"class":315},[305,1876,1877],{"class":307,"line":385},[305,1878,821],{"class":315},[305,1880,1881],{"class":307,"line":402},[305,1882,1684],{"class":315},[305,1884,1885],{"class":307,"line":429},[305,1886,1887],{"class":528},"\u002F\u002F text content is auto-generated as fallback for older clients\n",[295,1889,1892],{"className":297,"code":1890,"filename":1891,"language":300,"meta":301,"style":301},"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",[287,1893,1894,1900,1910,1925,1934,1950,1966,1982,1987,1995],{"__ignoreMap":301},[305,1895,1896,1898],{"class":307,"line":308},[305,1897,1756],{"class":311},[305,1899,523],{"class":315},[305,1901,1902,1904,1906,1908],{"class":307,"line":339},[305,1903,1763],{"class":367},[305,1905,371],{"class":315},[305,1907,1768],{"class":319},[305,1909,361],{"class":315},[305,1911,1912,1914,1916,1918,1921,1923],{"class":307,"line":346},[305,1913,1775],{"class":367},[305,1915,371],{"class":315},[305,1917,329],{"class":315},[305,1919,1920],{"class":332},"resource",[305,1922,379],{"class":315},[305,1924,382],{"class":315},[305,1926,1927,1930,1932],{"class":307,"line":364},[305,1928,1929],{"class":367},"    resource",[305,1931,371],{"class":315},[305,1933,523],{"class":315},[305,1935,1936,1939,1941,1943,1946,1948],{"class":307,"line":385},[305,1937,1938],{"class":367},"      uri",[305,1940,371],{"class":315},[305,1942,329],{"class":315},[305,1944,1945],{"class":332},"file:\u002F\u002F\u002Fpath\u002Fto\u002Ffile",[305,1947,379],{"class":315},[305,1949,382],{"class":315},[305,1951,1952,1955,1957,1959,1962,1964],{"class":307,"line":402},[305,1953,1954],{"class":367},"      text",[305,1956,371],{"class":315},[305,1958,329],{"class":315},[305,1960,1961],{"class":332},"File content",[305,1963,379],{"class":315},[305,1965,382],{"class":315},[305,1967,1968,1971,1973,1975,1978,1980],{"class":307,"line":429},[305,1969,1970],{"class":367},"      mimeType",[305,1972,371],{"class":315},[305,1974,329],{"class":315},[305,1976,1977],{"class":332},"text\u002Fplain",[305,1979,379],{"class":315},[305,1981,382],{"class":315},[305,1983,1984],{"class":307,"line":532},[305,1985,1986],{"class":315},"    },\n",[305,1988,1989,1991,1993],{"class":307,"line":570},[305,1990,1819],{"class":315},[305,1992,1822],{"class":319},[305,1994,382],{"class":315},[305,1996,1997],{"class":307,"line":575},[305,1998,1684],{"class":315},[889,2000,2002],{"id":2001},"result-helpers","Result Helpers",[283,2004,2005,2006,2009,2010,2013],{},"The module provides ",[287,2007,2008],{},"imageResult"," and ",[287,2011,2012],{},"audioResult"," helpers for binary media in tool responses (base64-encoded data plus MIME type):",[295,2015,2017],{"className":297,"code":2016,"language":300,"meta":301,"style":301},"import { z } from 'zod'\nimport { defineMcpTool, imageResult, audioResult } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\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",[287,2018,2019,2037,2065,2069,2081,2096,2127,2145,2166,2187,2191],{"__ignoreMap":301},[305,2020,2021,2023,2025,2027,2029,2031,2033,2035],{"class":307,"line":308},[305,2022,312],{"class":311},[305,2024,316],{"class":315},[305,2026,453],{"class":319},[305,2028,323],{"class":315},[305,2030,326],{"class":311},[305,2032,329],{"class":315},[305,2034,462],{"class":332},[305,2036,336],{"class":315},[305,2038,2039,2041,2043,2045,2047,2050,2052,2055,2057,2059,2061,2063],{"class":307,"line":339},[305,2040,312],{"class":311},[305,2042,316],{"class":315},[305,2044,320],{"class":319},[305,2046,735],{"class":315},[305,2048,2049],{"class":319}," imageResult",[305,2051,735],{"class":315},[305,2053,2054],{"class":319}," audioResult",[305,2056,323],{"class":315},[305,2058,326],{"class":311},[305,2060,329],{"class":315},[305,2062,333],{"class":332},[305,2064,336],{"class":315},[305,2066,2067],{"class":307,"line":346},[305,2068,343],{"emptyLinePlaceholder":342},[305,2070,2071,2073,2075,2077,2079],{"class":307,"line":364},[305,2072,349],{"class":311},[305,2074,352],{"class":311},[305,2076,320],{"class":355},[305,2078,358],{"class":319},[305,2080,361],{"class":315},[305,2082,2083,2085,2087,2089,2092,2094],{"class":307,"line":385},[305,2084,388],{"class":367},[305,2086,371],{"class":315},[305,2088,329],{"class":315},[305,2090,2091],{"class":332},"Generate chart",[305,2093,379],{"class":315},[305,2095,382],{"class":315},[305,2097,2098,2100,2102,2104,2107,2109,2111,2113,2115,2117,2119,2121,2124],{"class":307,"line":402},[305,2099,518],{"class":367},[305,2101,371],{"class":315},[305,2103,316],{"class":315},[305,2105,2106],{"class":367}," data",[305,2108,371],{"class":315},[305,2110,453],{"class":319},[305,2112,542],{"class":315},[305,2114,788],{"class":355},[305,2116,791],{"class":319},[305,2118,542],{"class":315},[305,2120,593],{"class":355},[305,2122,2123],{"class":319},"()) ",[305,2125,2126],{"class":315},"},\n",[305,2128,2129,2131,2133,2135,2137,2139,2141,2143],{"class":307,"line":429},[305,2130,405],{"class":355},[305,2132,371],{"class":315},[305,2134,411],{"class":410},[305,2136,833],{"class":315},[305,2138,2106],{"class":836},[305,2140,865],{"class":315},[305,2142,417],{"class":410},[305,2144,523],{"class":315},[305,2146,2147,2149,2152,2154,2156,2159,2161,2164],{"class":307,"line":532},[305,2148,1284],{"class":410},[305,2150,2151],{"class":319}," base64",[305,2153,1290],{"class":315},[305,2155,1661],{"class":311},[305,2157,2158],{"class":355}," generateChart",[305,2160,358],{"class":367},[305,2162,2163],{"class":319},"data",[305,2165,435],{"class":367},[305,2167,2168,2170,2172,2174,2177,2179,2181,2183,2185],{"class":307,"line":570},[305,2169,1425],{"class":311},[305,2171,2049],{"class":355},[305,2173,358],{"class":367},[305,2175,2176],{"class":319},"base64",[305,2178,735],{"class":315},[305,2180,329],{"class":315},[305,2182,1810],{"class":332},[305,2184,379],{"class":315},[305,2186,435],{"class":367},[305,2188,2189],{"class":307,"line":575},[305,2190,821],{"class":315},[305,2192,2193,2195],{"class":307,"line":581},[305,2194,432],{"class":315},[305,2196,435],{"class":319},[295,2198,2200],{"className":297,"code":2199,"language":300,"meta":301,"style":301},"import { z } from 'zod'\nimport { defineMcpTool, audioResult } from '@nuxtjs\u002Fmcp-toolkit\u002Fserver'\n\nexport default defineMcpTool({\n  description: 'Text to speech',\n  inputSchema: { text: z.string() },\n  handler: async ({ text }) => {\n    const base64 = await synthesizeSpeech(text)\n    return audioResult(base64, 'audio\u002Fmp3')\n  },\n})\n",[287,2201,2202,2220,2242,2246,2258,2273,2297,2315,2335,2356,2360],{"__ignoreMap":301},[305,2203,2204,2206,2208,2210,2212,2214,2216,2218],{"class":307,"line":308},[305,2205,312],{"class":311},[305,2207,316],{"class":315},[305,2209,453],{"class":319},[305,2211,323],{"class":315},[305,2213,326],{"class":311},[305,2215,329],{"class":315},[305,2217,462],{"class":332},[305,2219,336],{"class":315},[305,2221,2222,2224,2226,2228,2230,2232,2234,2236,2238,2240],{"class":307,"line":339},[305,2223,312],{"class":311},[305,2225,316],{"class":315},[305,2227,320],{"class":319},[305,2229,735],{"class":315},[305,2231,2054],{"class":319},[305,2233,323],{"class":315},[305,2235,326],{"class":311},[305,2237,329],{"class":315},[305,2239,333],{"class":332},[305,2241,336],{"class":315},[305,2243,2244],{"class":307,"line":346},[305,2245,343],{"emptyLinePlaceholder":342},[305,2247,2248,2250,2252,2254,2256],{"class":307,"line":364},[305,2249,349],{"class":311},[305,2251,352],{"class":311},[305,2253,320],{"class":355},[305,2255,358],{"class":319},[305,2257,361],{"class":315},[305,2259,2260,2262,2264,2266,2269,2271],{"class":307,"line":385},[305,2261,388],{"class":367},[305,2263,371],{"class":315},[305,2265,329],{"class":315},[305,2267,2268],{"class":332},"Text to speech",[305,2270,379],{"class":315},[305,2272,382],{"class":315},[305,2274,2275,2277,2279,2281,2284,2286,2288,2290,2292,2295],{"class":307,"line":402},[305,2276,518],{"class":367},[305,2278,371],{"class":315},[305,2280,316],{"class":315},[305,2282,2283],{"class":367}," text",[305,2285,371],{"class":315},[305,2287,453],{"class":319},[305,2289,542],{"class":315},[305,2291,545],{"class":355},[305,2293,2294],{"class":319},"() ",[305,2296,2126],{"class":315},[305,2298,2299,2301,2303,2305,2307,2309,2311,2313],{"class":307,"line":429},[305,2300,405],{"class":355},[305,2302,371],{"class":315},[305,2304,411],{"class":410},[305,2306,833],{"class":315},[305,2308,2283],{"class":836},[305,2310,865],{"class":315},[305,2312,417],{"class":410},[305,2314,523],{"class":315},[305,2316,2317,2319,2321,2323,2325,2328,2330,2333],{"class":307,"line":532},[305,2318,1284],{"class":410},[305,2320,2151],{"class":319},[305,2322,1290],{"class":315},[305,2324,1661],{"class":311},[305,2326,2327],{"class":355}," synthesizeSpeech",[305,2329,358],{"class":367},[305,2331,2332],{"class":319},"text",[305,2334,435],{"class":367},[305,2336,2337,2339,2341,2343,2345,2347,2349,2352,2354],{"class":307,"line":570},[305,2338,1425],{"class":311},[305,2340,2054],{"class":355},[305,2342,358],{"class":367},[305,2344,2176],{"class":319},[305,2346,735],{"class":315},[305,2348,329],{"class":315},[305,2350,2351],{"class":332},"audio\u002Fmp3",[305,2353,379],{"class":315},[305,2355,435],{"class":367},[305,2357,2358],{"class":307,"line":575},[305,2359,821],{"class":315},[305,2361,2362,2364],{"class":307,"line":581},[305,2363,432],{"class":315},[305,2365,435],{"class":319},[2367,2368,285,2371,1529,2374,2377,2378,2381,2382,1733],"callout",{"color":2369,"icon":2370},"info","i-lucide-info",[287,2372,2373],{},"textResult",[287,2375,2376],{},"jsonResult",", and ",[287,2379,2380],{},"errorResult"," helpers are deprecated. Return values directly from your handler instead, and throw errors for error cases (see ",[2383,2384,61],"a",{"href":62},[2386,2387,2388],"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 .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":301,"searchDepth":339,"depth":339,"links":2390},[2391,2394,2395],{"id":280,"depth":339,"text":281,"children":2392},[2393],{"id":891,"depth":346,"text":892},{"id":1037,"depth":339,"text":1038},{"id":1511,"depth":339,"text":1512,"children":2396},[2397,2398,2399],{"id":1522,"depth":346,"text":1523},{"id":1736,"depth":346,"text":1737},{"id":2001,"depth":346,"text":2002},"Define tool inputs and outputs with Zod, and return text, structured data, or media from handlers.","md",null,{},{"icon":54},{"title":2406,"description":2407},"Tool schema & handler","Zod input and output schemas, handler return types, image and audio helpers for MCP tools.","y_J0oF3WTxvfe1sgWGZPALkLKDwWK8Q3QuCqhBDF7qg",[2410,2412],{"title":46,"path":47,"stem":48,"description":2411,"icon":49,"children":-1},"Create MCP tools with Zod validation and type safety.",{"title":56,"path":57,"stem":58,"description":2413,"icon":59,"children":-1},"Behavioral hints for MCP clients and concrete inputExamples for complex tools.",1777306543926]