[{"data":1,"prerenderedAt":767},["ShallowReactive",2],{"navigation":3,"-utils-mcp":193,"-utils-mcp-surround":762},[4,91,138,170,177],{"title":5,"path":6,"stem":7,"children":8,"icon":90},"Guide","/guide","1.guide/0.index",[9,12,53,69],{"title":10,"path":6,"stem":7,"icon":11},"Getting Started","pixel:play",{"title":5,"icon":13,"path":14,"stem":15,"children":16,"page":52},"ph:book-open-duotone","/guide/basics","1.guide/1.basics",[17,22,27,32,37,42,47],{"title":18,"path":19,"stem":20,"icon":21},"Request Lifecycle","/guide/basics/lifecycle","1.guide/1.basics/1.lifecycle","icon-park-outline:handle-round",{"title":23,"path":24,"stem":25,"icon":26},"Routing","/guide/basics/routing","1.guide/1.basics/2.routing","solar:routing-bold",{"title":28,"path":29,"stem":30,"icon":31},"Middleware","/guide/basics/middleware","1.guide/1.basics/3.middleware","mdi:middleware-outline",{"title":33,"path":34,"stem":35,"icon":36},"Event Handlers","/guide/basics/handler","1.guide/1.basics/4.handler","mdi:function",{"title":38,"path":39,"stem":40,"icon":41},"Sending Response","/guide/basics/response","1.guide/1.basics/5.response","tabler:json",{"title":43,"path":44,"stem":45,"icon":46},"Error Handling","/guide/basics/error","1.guide/1.basics/6.error","tabler:error-404",{"title":48,"path":49,"stem":50,"icon":51},"Nested Apps","/guide/basics/nested-apps","1.guide/1.basics/7.nested-apps","material-symbols-light:layers-outline",false,{"title":54,"icon":55,"path":56,"stem":57,"children":58,"page":52},"API","material-symbols-light:api-rounded","/guide/api","1.guide/900.api",[59,64],{"title":60,"path":61,"stem":62,"icon":63},"H3","/guide/api/h3","1.guide/900.api/1.h3","material-symbols:bolt-rounded",{"title":65,"path":66,"stem":67,"icon":68},"H3Event","/guide/api/h3event","1.guide/900.api/2.h3event","material-symbols:data-object-rounded",{"title":70,"icon":71,"path":72,"stem":73,"children":74,"page":52},"Advanced","hugeicons:more-01","/guide/advanced","1.guide/901.advanced",[75,80,85],{"title":76,"path":77,"stem":78,"icon":79},"Plugins","/guide/advanced/plugins","1.guide/901.advanced/1.plugins","clarity:plugin-line",{"title":81,"path":82,"stem":83,"icon":84},"WebSockets","/guide/advanced/websocket","1.guide/901.advanced/2.websocket","hugeicons:live-streaming-02",{"title":86,"path":87,"stem":88,"icon":89},"Nightly Builds","/guide/advanced/nightly","1.guide/901.advanced/9.nightly","game-icons:barn-owl","i-ph:book-open-duotone",{"title":92,"path":93,"stem":94,"children":95,"icon":97},"Utils","/utils","2.utils/0.index",[96,98,103,108,113,118,123,128,133],{"title":92,"path":93,"stem":94,"icon":97},"ph:function-bold",{"title":99,"path":100,"stem":101,"icon":102},"Request","/utils/request","2.utils/1.request","material-symbols-light:input",{"title":104,"path":105,"stem":106,"icon":107},"Response","/utils/response","2.utils/2.response","material-symbols-light:output",{"title":109,"path":110,"stem":111,"icon":112},"Cookie","/utils/cookie","2.utils/3.cookie","material-symbols:cookie-outline",{"title":114,"path":115,"stem":116,"icon":117},"Security","/utils/security","2.utils/4.security","wpf:key-security",{"title":119,"path":120,"stem":121,"icon":122},"Proxy","/utils/proxy","2.utils/5.proxy","arcticons:super-proxy",{"title":124,"path":125,"stem":126,"icon":127},"MCP","/utils/mcp","2.utils/6.mcp","material-symbols:swap-calls",{"title":129,"path":130,"stem":131,"icon":132},"More utils","/utils/more","2.utils/9.more","mingcute:plus-line",{"title":134,"path":135,"stem":136,"icon":137},"Community","/utils/community","2.utils/99.community","lets-icons:external",{"title":139,"path":140,"stem":141,"children":142,"icon":144},"Examples","/examples","4.examples/0.index",[143,145,150,154,158,162,166],{"title":139,"path":140,"stem":141,"icon":144},"ph:code",{"title":146,"path":147,"stem":148,"icon":149},"Cookies","/examples/handle-cookie","4.examples/handle-cookie","ph:arrow-right",{"title":151,"path":152,"stem":153,"icon":149},"HTTP QUERY Method","/examples/handle-query","4.examples/handle-query",{"title":155,"path":156,"stem":157,"icon":149},"Sessions","/examples/handle-session","4.examples/handle-session",{"title":159,"path":160,"stem":161,"icon":149},"Static Assets","/examples/serve-static-assets","4.examples/serve-static-assets",{"title":163,"path":164,"stem":165,"icon":149},"Stream Response","/examples/stream-response","4.examples/stream-response",{"title":167,"path":168,"stem":169,"icon":149},"Validate Data","/examples/validate-data","4.examples/validate-data",{"title":171,"path":172,"stem":173,"children":174,"icon":176},"Migration","/migration","5.migration/0.index",[175],{"title":171,"path":172,"stem":173,"icon":176},"icons8:up-round",{"title":178,"path":179,"stem":180,"children":181},"Blog","/blog","99.blog",[182,185,189],{"title":178,"path":179,"stem":183,"icon":184},"99.blog/index","i-lucide-file-text",{"title":186,"path":187,"stem":188,"icon":184},"H3 1.8 - Towards the Edge of the Web","/blog/v1.8","99.blog/1.v1.8",{"title":190,"path":191,"stem":192,"icon":184},"H3 v2 beta","/blog/v2-beta","99.blog/2.v2-beta",{"id":194,"title":124,"body":195,"description":755,"extension":756,"meta":757,"navigation":759,"path":125,"seo":760,"stem":126,"__hash__":761},"content/2.utils/6.mcp.md",{"type":196,"value":197,"toc":751,"icon":127},"minimark",[198,206,210,216,411,417,420,423,427,571,575,747],[199,200,202],"h3",{"id":201},"definejsonrpchandler",[203,204,205],"code",{},"defineJsonRpcHandler()",[207,208,209],"p",{},"Creates an H3 event handler that implements the JSON-RPC 2.0 specification.",[207,211,212],{},[213,214,215],"strong",{},"Example:",[217,218,223],"pre",{"className":219,"code":220,"language":221,"meta":222,"style":222},"language-ts shiki shiki-themes github-light github-dark github-dark","app.post(\n  \"/rpc\",\n  defineJsonRpcHandler({\n    methods: {\n      echo: ({ params }, event) => {\n        return `Received \\`${params}\\` on path \\`${event.url.pathname}\\``;\n      },\n      sum: ({ params }, event) => {\n        return params.a + params.b;\n      },\n    },\n  }),\n);\n","ts","",[203,224,225,241,251,260,266,295,348,354,374,388,393,399,405],{"__ignoreMap":222},[226,227,230,234,238],"span",{"class":228,"line":229},"line",1,[226,231,233],{"class":232},"slsVL","app.",[226,235,237],{"class":236},"shcOC","post",[226,239,240],{"class":232},"(\n",[226,242,244,248],{"class":228,"line":243},2,[226,245,247],{"class":246},"sfrk1","  \"/rpc\"",[226,249,250],{"class":232},",\n",[226,252,254,257],{"class":228,"line":253},3,[226,255,256],{"class":236},"  defineJsonRpcHandler",[226,258,259],{"class":232},"({\n",[226,261,263],{"class":228,"line":262},4,[226,264,265],{"class":232},"    methods: {\n",[226,267,269,272,275,279,282,285,288,292],{"class":228,"line":268},5,[226,270,271],{"class":236},"      echo",[226,273,274],{"class":232},": ({ ",[226,276,278],{"class":277},"sQHwn","params",[226,280,281],{"class":232}," }, ",[226,283,284],{"class":277},"event",[226,286,287],{"class":232},") ",[226,289,291],{"class":290},"so5gQ","=>",[226,293,294],{"class":232}," {\n",[226,296,298,301,304,308,311,313,316,318,321,323,325,327,330,333,335,338,340,342,345],{"class":228,"line":297},6,[226,299,300],{"class":290},"        return",[226,302,303],{"class":246}," `Received ",[226,305,307],{"class":306},"suiK_","\\`",[226,309,310],{"class":246},"${",[226,312,278],{"class":232},[226,314,315],{"class":246},"}",[226,317,307],{"class":306},[226,319,320],{"class":246}," on path ",[226,322,307],{"class":306},[226,324,310],{"class":246},[226,326,284],{"class":232},[226,328,329],{"class":246},".",[226,331,332],{"class":232},"url",[226,334,329],{"class":246},[226,336,337],{"class":232},"pathname",[226,339,315],{"class":246},[226,341,307],{"class":306},[226,343,344],{"class":246},"`",[226,346,347],{"class":232},";\n",[226,349,351],{"class":228,"line":350},7,[226,352,353],{"class":232},"      },\n",[226,355,357,360,362,364,366,368,370,372],{"class":228,"line":356},8,[226,358,359],{"class":236},"      sum",[226,361,274],{"class":232},[226,363,278],{"class":277},[226,365,281],{"class":232},[226,367,284],{"class":277},[226,369,287],{"class":232},[226,371,291],{"class":290},[226,373,294],{"class":232},[226,375,377,379,382,385],{"class":228,"line":376},9,[226,378,300],{"class":290},[226,380,381],{"class":232}," params.a ",[226,383,384],{"class":290},"+",[226,386,387],{"class":232}," params.b;\n",[226,389,391],{"class":228,"line":390},10,[226,392,353],{"class":232},[226,394,396],{"class":228,"line":395},11,[226,397,398],{"class":232},"    },\n",[226,400,402],{"class":228,"line":401},12,[226,403,404],{"class":232},"  }),\n",[226,406,408],{"class":228,"line":407},13,[226,409,410],{"class":232},");\n",[199,412,414],{"id":413},"definejsonrpcwebsockethandler",[203,415,416],{},"defineJsonRpcWebSocketHandler()",[207,418,419],{},"Creates an H3 event handler that implements JSON-RPC 2.0 over WebSocket.",[207,421,422],{},"This is an opt-in feature that allows JSON-RPC communication over WebSocket connections for bi-directional messaging. Each incoming WebSocket text message is processed as a JSON-RPC request, and responses are sent back to the peer.",[207,424,425],{},[213,426,215],{},[217,428,430],{"className":219,"code":429,"language":221,"meta":222,"style":222},"app.get(\n  \"/rpc/ws\",\n  defineJsonRpcWebSocketHandler({\n    methods: {\n      echo: ({ params }) => {\n        return `Received: ${Array.isArray(params) ? params[0] : params?.message}`;\n      },\n      sum: ({ params }) => {\n        return params.a + params.b;\n      },\n    },\n  }),\n);\n",[203,431,432,441,448,455,459,474,527,531,545,555,559,563,567],{"__ignoreMap":222},[226,433,434,436,439],{"class":228,"line":229},[226,435,233],{"class":232},[226,437,438],{"class":236},"get",[226,440,240],{"class":232},[226,442,443,446],{"class":228,"line":243},[226,444,445],{"class":246},"  \"/rpc/ws\"",[226,447,250],{"class":232},[226,449,450,453],{"class":228,"line":253},[226,451,452],{"class":236},"  defineJsonRpcWebSocketHandler",[226,454,259],{"class":232},[226,456,457],{"class":228,"line":262},[226,458,265],{"class":232},[226,460,461,463,465,467,470,472],{"class":228,"line":268},[226,462,271],{"class":236},[226,464,274],{"class":232},[226,466,278],{"class":277},[226,468,469],{"class":232}," }) ",[226,471,291],{"class":290},[226,473,294],{"class":232},[226,475,476,478,481,484,486,489,492,494,496,499,502,505,508,511,514,516,519,522,525],{"class":228,"line":297},[226,477,300],{"class":290},[226,479,480],{"class":246}," `Received: ${",[226,482,483],{"class":232},"Array",[226,485,329],{"class":246},[226,487,488],{"class":236},"isArray",[226,490,491],{"class":246},"(",[226,493,278],{"class":232},[226,495,287],{"class":246},[226,497,498],{"class":290},"?",[226,500,501],{"class":232}," params",[226,503,504],{"class":246},"[",[226,506,507],{"class":306},"0",[226,509,510],{"class":246},"] ",[226,512,513],{"class":290},":",[226,515,501],{"class":232},[226,517,518],{"class":246},"?.",[226,520,521],{"class":232},"message",[226,523,524],{"class":246},"}`",[226,526,347],{"class":232},[226,528,529],{"class":228,"line":350},[226,530,353],{"class":232},[226,532,533,535,537,539,541,543],{"class":228,"line":356},[226,534,359],{"class":236},[226,536,274],{"class":232},[226,538,278],{"class":277},[226,540,469],{"class":232},[226,542,291],{"class":290},[226,544,294],{"class":232},[226,546,547,549,551,553],{"class":228,"line":376},[226,548,300],{"class":290},[226,550,381],{"class":232},[226,552,384],{"class":290},[226,554,387],{"class":232},[226,556,557],{"class":228,"line":390},[226,558,353],{"class":232},[226,560,561],{"class":228,"line":395},[226,562,398],{"class":232},[226,564,565],{"class":228,"line":401},[226,566,404],{"class":232},[226,568,569],{"class":228,"line":407},[226,570,410],{"class":232},[207,572,573],{},[213,574,215],{},[217,576,578],{"className":219,"code":577,"language":221,"meta":222,"style":222},"// With additional WebSocket hooks\napp.get(\n  \"/rpc/ws\",\n  defineJsonRpcWebSocketHandler({\n    methods: {\n      greet: ({ params }) => `Hello, ${params.name}!`,\n    },\n    hooks: {\n      open(peer) {\n        console.log(`Peer connected: ${peer.id}`);\n      },\n      close(peer, details) {\n        console.log(`Peer disconnected: ${peer.id}`, details);\n      },\n    },\n  }),\n);\n",[203,579,580,586,594,600,606,610,638,642,647,660,684,688,705,727,732,737,742],{"__ignoreMap":222},[226,581,582],{"class":228,"line":229},[226,583,585],{"class":584},"sCsY4","// With additional WebSocket hooks\n",[226,587,588,590,592],{"class":228,"line":243},[226,589,233],{"class":232},[226,591,438],{"class":236},[226,593,240],{"class":232},[226,595,596,598],{"class":228,"line":253},[226,597,445],{"class":246},[226,599,250],{"class":232},[226,601,602,604],{"class":228,"line":262},[226,603,452],{"class":236},[226,605,259],{"class":232},[226,607,608],{"class":228,"line":268},[226,609,265],{"class":232},[226,611,612,615,617,619,621,623,626,628,630,633,636],{"class":228,"line":297},[226,613,614],{"class":236},"      greet",[226,616,274],{"class":232},[226,618,278],{"class":277},[226,620,469],{"class":232},[226,622,291],{"class":290},[226,624,625],{"class":246}," `Hello, ${",[226,627,278],{"class":232},[226,629,329],{"class":246},[226,631,632],{"class":232},"name",[226,634,635],{"class":246},"}!`",[226,637,250],{"class":232},[226,639,640],{"class":228,"line":350},[226,641,398],{"class":232},[226,643,644],{"class":228,"line":356},[226,645,646],{"class":232},"    hooks: {\n",[226,648,649,652,654,657],{"class":228,"line":376},[226,650,651],{"class":236},"      open",[226,653,491],{"class":232},[226,655,656],{"class":277},"peer",[226,658,659],{"class":232},") {\n",[226,661,662,665,668,670,673,675,677,680,682],{"class":228,"line":390},[226,663,664],{"class":232},"        console.",[226,666,667],{"class":236},"log",[226,669,491],{"class":232},[226,671,672],{"class":246},"`Peer connected: ${",[226,674,656],{"class":232},[226,676,329],{"class":246},[226,678,679],{"class":232},"id",[226,681,524],{"class":246},[226,683,410],{"class":232},[226,685,686],{"class":228,"line":395},[226,687,353],{"class":232},[226,689,690,693,695,697,700,703],{"class":228,"line":401},[226,691,692],{"class":236},"      close",[226,694,491],{"class":232},[226,696,656],{"class":277},[226,698,699],{"class":232},", ",[226,701,702],{"class":277},"details",[226,704,659],{"class":232},[226,706,707,709,711,713,716,718,720,722,724],{"class":228,"line":407},[226,708,664],{"class":232},[226,710,667],{"class":236},[226,712,491],{"class":232},[226,714,715],{"class":246},"`Peer disconnected: ${",[226,717,656],{"class":232},[226,719,329],{"class":246},[226,721,679],{"class":232},[226,723,524],{"class":246},[226,725,726],{"class":232},", details);\n",[226,728,730],{"class":228,"line":729},14,[226,731,353],{"class":232},[226,733,735],{"class":228,"line":734},15,[226,736,398],{"class":232},[226,738,740],{"class":228,"line":739},16,[226,741,404],{"class":232},[226,743,745],{"class":228,"line":744},17,[226,746,410],{"class":232},[748,749,750],"style",{},"html pre.shiki code .slsVL, html code.shiki .slsVL{--shiki-light:#24292E;--shiki-default:#E1E4E8;--shiki-dark:#E1E4E8}html pre.shiki code .shcOC, html code.shiki .shcOC{--shiki-light:#6F42C1;--shiki-default:#B392F0;--shiki-dark:#B392F0}html pre.shiki code .sfrk1, html code.shiki .sfrk1{--shiki-light:#032F62;--shiki-default:#9ECBFF;--shiki-dark:#9ECBFF}html pre.shiki code .sQHwn, html code.shiki .sQHwn{--shiki-light:#E36209;--shiki-default:#FFAB70;--shiki-dark:#FFAB70}html pre.shiki code .so5gQ, html code.shiki .so5gQ{--shiki-light:#D73A49;--shiki-default:#F97583;--shiki-dark:#F97583}html pre.shiki code .suiK_, html code.shiki .suiK_{--shiki-light:#005CC5;--shiki-default:#79B8FF;--shiki-dark:#79B8FF}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 .sCsY4, html code.shiki .sCsY4{--shiki-light:#6A737D;--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":222,"searchDepth":243,"depth":243,"links":752},[753,754],{"id":201,"depth":253,"text":205},{"id":413,"depth":253,"text":416},"H3 MCP related utils.","md",{"automd":758,"icon":127},true,{"icon":127},{"title":124,"description":755},"qCklmUxYN01UMqp0SPpUjqAuInDIHMn5QE65S8GXQ74",[763,765],{"title":119,"path":120,"stem":121,"description":764,"icon":122,"children":-1},"H3 proxy utilities.",{"title":129,"path":130,"stem":131,"description":766,"icon":132,"children":-1},"More H3 utilities.",1783690730161]