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