[{"data":1,"prerenderedAt":763},["ShallowReactive",2],{"navigation":3,"-utils-mcp":189,"-utils-mcp-surround":758},[4,91,138,166,173],{"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],{"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},"Sessions","/examples/handle-session","4.examples/handle-session",{"title":155,"path":156,"stem":157,"icon":149},"Static Assets","/examples/serve-static-assets","4.examples/serve-static-assets",{"title":159,"path":160,"stem":161,"icon":149},"Stream Response","/examples/stream-response","4.examples/stream-response",{"title":163,"path":164,"stem":165,"icon":149},"Validate Data","/examples/validate-data","4.examples/validate-data",{"title":167,"path":168,"stem":169,"children":170,"icon":172},"Migration","/migration","5.migration/0.index",[171],{"title":167,"path":168,"stem":169,"icon":172},"icons8:up-round",{"title":174,"path":175,"stem":176,"children":177},"Blog","/blog","99.blog",[178,181,185],{"title":174,"path":175,"stem":179,"icon":180},"99.blog/index","i-lucide-file-text",{"title":182,"path":183,"stem":184,"icon":180},"H3 1.8 - Towards the Edge of the Web","/blog/v1.8","99.blog/1.v1.8",{"title":186,"path":187,"stem":188,"icon":180},"H3 v2 beta","/blog/v2-beta","99.blog/2.v2-beta",{"id":190,"title":124,"body":191,"description":751,"extension":752,"meta":753,"navigation":755,"path":125,"seo":756,"stem":126,"__hash__":757},"content/2.utils/6.mcp.md",{"type":192,"value":193,"toc":747,"icon":127},"minimark",[194,202,206,212,407,413,416,419,423,567,571,743],[195,196,198],"h3",{"id":197},"definejsonrpchandler",[199,200,201],"code",{},"defineJsonRpcHandler()",[203,204,205],"p",{},"Creates an H3 event handler that implements the JSON-RPC 2.0 specification.",[203,207,208],{},[209,210,211],"strong",{},"Example:",[213,214,219],"pre",{"className":215,"code":216,"language":217,"meta":218,"style":218},"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","",[199,220,221,237,247,256,262,291,344,350,370,384,389,395,401],{"__ignoreMap":218},[222,223,226,230,234],"span",{"class":224,"line":225},"line",1,[222,227,229],{"class":228},"slsVL","app.",[222,231,233],{"class":232},"shcOC","post",[222,235,236],{"class":228},"(\n",[222,238,240,244],{"class":224,"line":239},2,[222,241,243],{"class":242},"sfrk1","  \"/rpc\"",[222,245,246],{"class":228},",\n",[222,248,250,253],{"class":224,"line":249},3,[222,251,252],{"class":232},"  defineJsonRpcHandler",[222,254,255],{"class":228},"({\n",[222,257,259],{"class":224,"line":258},4,[222,260,261],{"class":228},"    methods: {\n",[222,263,265,268,271,275,278,281,284,288],{"class":224,"line":264},5,[222,266,267],{"class":232},"      echo",[222,269,270],{"class":228},": ({ ",[222,272,274],{"class":273},"sQHwn","params",[222,276,277],{"class":228}," }, ",[222,279,280],{"class":273},"event",[222,282,283],{"class":228},") ",[222,285,287],{"class":286},"so5gQ","=>",[222,289,290],{"class":228}," {\n",[222,292,294,297,300,304,307,309,312,314,317,319,321,323,326,329,331,334,336,338,341],{"class":224,"line":293},6,[222,295,296],{"class":286},"        return",[222,298,299],{"class":242}," `Received ",[222,301,303],{"class":302},"suiK_","\\`",[222,305,306],{"class":242},"${",[222,308,274],{"class":228},[222,310,311],{"class":242},"}",[222,313,303],{"class":302},[222,315,316],{"class":242}," on path ",[222,318,303],{"class":302},[222,320,306],{"class":242},[222,322,280],{"class":228},[222,324,325],{"class":242},".",[222,327,328],{"class":228},"url",[222,330,325],{"class":242},[222,332,333],{"class":228},"pathname",[222,335,311],{"class":242},[222,337,303],{"class":302},[222,339,340],{"class":242},"`",[222,342,343],{"class":228},";\n",[222,345,347],{"class":224,"line":346},7,[222,348,349],{"class":228},"      },\n",[222,351,353,356,358,360,362,364,366,368],{"class":224,"line":352},8,[222,354,355],{"class":232},"      sum",[222,357,270],{"class":228},[222,359,274],{"class":273},[222,361,277],{"class":228},[222,363,280],{"class":273},[222,365,283],{"class":228},[222,367,287],{"class":286},[222,369,290],{"class":228},[222,371,373,375,378,381],{"class":224,"line":372},9,[222,374,296],{"class":286},[222,376,377],{"class":228}," params.a ",[222,379,380],{"class":286},"+",[222,382,383],{"class":228}," params.b;\n",[222,385,387],{"class":224,"line":386},10,[222,388,349],{"class":228},[222,390,392],{"class":224,"line":391},11,[222,393,394],{"class":228},"    },\n",[222,396,398],{"class":224,"line":397},12,[222,399,400],{"class":228},"  }),\n",[222,402,404],{"class":224,"line":403},13,[222,405,406],{"class":228},");\n",[195,408,410],{"id":409},"definejsonrpcwebsockethandler",[199,411,412],{},"defineJsonRpcWebSocketHandler()",[203,414,415],{},"Creates an H3 event handler that implements JSON-RPC 2.0 over WebSocket.",[203,417,418],{},"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.",[203,420,421],{},[209,422,211],{},[213,424,426],{"className":215,"code":425,"language":217,"meta":218,"style":218},"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",[199,427,428,437,444,451,455,470,523,527,541,551,555,559,563],{"__ignoreMap":218},[222,429,430,432,435],{"class":224,"line":225},[222,431,229],{"class":228},[222,433,434],{"class":232},"get",[222,436,236],{"class":228},[222,438,439,442],{"class":224,"line":239},[222,440,441],{"class":242},"  \"/rpc/ws\"",[222,443,246],{"class":228},[222,445,446,449],{"class":224,"line":249},[222,447,448],{"class":232},"  defineJsonRpcWebSocketHandler",[222,450,255],{"class":228},[222,452,453],{"class":224,"line":258},[222,454,261],{"class":228},[222,456,457,459,461,463,466,468],{"class":224,"line":264},[222,458,267],{"class":232},[222,460,270],{"class":228},[222,462,274],{"class":273},[222,464,465],{"class":228}," }) ",[222,467,287],{"class":286},[222,469,290],{"class":228},[222,471,472,474,477,480,482,485,488,490,492,495,498,501,504,507,510,512,515,518,521],{"class":224,"line":293},[222,473,296],{"class":286},[222,475,476],{"class":242}," `Received: ${",[222,478,479],{"class":228},"Array",[222,481,325],{"class":242},[222,483,484],{"class":232},"isArray",[222,486,487],{"class":242},"(",[222,489,274],{"class":228},[222,491,283],{"class":242},[222,493,494],{"class":286},"?",[222,496,497],{"class":228}," params",[222,499,500],{"class":242},"[",[222,502,503],{"class":302},"0",[222,505,506],{"class":242},"] ",[222,508,509],{"class":286},":",[222,511,497],{"class":228},[222,513,514],{"class":242},"?.",[222,516,517],{"class":228},"message",[222,519,520],{"class":242},"}`",[222,522,343],{"class":228},[222,524,525],{"class":224,"line":346},[222,526,349],{"class":228},[222,528,529,531,533,535,537,539],{"class":224,"line":352},[222,530,355],{"class":232},[222,532,270],{"class":228},[222,534,274],{"class":273},[222,536,465],{"class":228},[222,538,287],{"class":286},[222,540,290],{"class":228},[222,542,543,545,547,549],{"class":224,"line":372},[222,544,296],{"class":286},[222,546,377],{"class":228},[222,548,380],{"class":286},[222,550,383],{"class":228},[222,552,553],{"class":224,"line":386},[222,554,349],{"class":228},[222,556,557],{"class":224,"line":391},[222,558,394],{"class":228},[222,560,561],{"class":224,"line":397},[222,562,400],{"class":228},[222,564,565],{"class":224,"line":403},[222,566,406],{"class":228},[203,568,569],{},[209,570,211],{},[213,572,574],{"className":215,"code":573,"language":217,"meta":218,"style":218},"// 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",[199,575,576,582,590,596,602,606,634,638,643,656,680,684,701,723,728,733,738],{"__ignoreMap":218},[222,577,578],{"class":224,"line":225},[222,579,581],{"class":580},"sCsY4","// With additional WebSocket hooks\n",[222,583,584,586,588],{"class":224,"line":239},[222,585,229],{"class":228},[222,587,434],{"class":232},[222,589,236],{"class":228},[222,591,592,594],{"class":224,"line":249},[222,593,441],{"class":242},[222,595,246],{"class":228},[222,597,598,600],{"class":224,"line":258},[222,599,448],{"class":232},[222,601,255],{"class":228},[222,603,604],{"class":224,"line":264},[222,605,261],{"class":228},[222,607,608,611,613,615,617,619,622,624,626,629,632],{"class":224,"line":293},[222,609,610],{"class":232},"      greet",[222,612,270],{"class":228},[222,614,274],{"class":273},[222,616,465],{"class":228},[222,618,287],{"class":286},[222,620,621],{"class":242}," `Hello, ${",[222,623,274],{"class":228},[222,625,325],{"class":242},[222,627,628],{"class":228},"name",[222,630,631],{"class":242},"}!`",[222,633,246],{"class":228},[222,635,636],{"class":224,"line":346},[222,637,394],{"class":228},[222,639,640],{"class":224,"line":352},[222,641,642],{"class":228},"    hooks: {\n",[222,644,645,648,650,653],{"class":224,"line":372},[222,646,647],{"class":232},"      open",[222,649,487],{"class":228},[222,651,652],{"class":273},"peer",[222,654,655],{"class":228},") {\n",[222,657,658,661,664,666,669,671,673,676,678],{"class":224,"line":386},[222,659,660],{"class":228},"        console.",[222,662,663],{"class":232},"log",[222,665,487],{"class":228},[222,667,668],{"class":242},"`Peer connected: ${",[222,670,652],{"class":228},[222,672,325],{"class":242},[222,674,675],{"class":228},"id",[222,677,520],{"class":242},[222,679,406],{"class":228},[222,681,682],{"class":224,"line":391},[222,683,349],{"class":228},[222,685,686,689,691,693,696,699],{"class":224,"line":397},[222,687,688],{"class":232},"      close",[222,690,487],{"class":228},[222,692,652],{"class":273},[222,694,695],{"class":228},", ",[222,697,698],{"class":273},"details",[222,700,655],{"class":228},[222,702,703,705,707,709,712,714,716,718,720],{"class":224,"line":403},[222,704,660],{"class":228},[222,706,663],{"class":232},[222,708,487],{"class":228},[222,710,711],{"class":242},"`Peer disconnected: ${",[222,713,652],{"class":228},[222,715,325],{"class":242},[222,717,675],{"class":228},[222,719,520],{"class":242},[222,721,722],{"class":228},", details);\n",[222,724,726],{"class":224,"line":725},14,[222,727,349],{"class":228},[222,729,731],{"class":224,"line":730},15,[222,732,394],{"class":228},[222,734,736],{"class":224,"line":735},16,[222,737,400],{"class":228},[222,739,741],{"class":224,"line":740},17,[222,742,406],{"class":228},[744,745,746],"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":218,"searchDepth":239,"depth":239,"links":748},[749,750],{"id":197,"depth":249,"text":201},{"id":409,"depth":249,"text":412},"H3 MCP related utils.","md",{"automd":754,"icon":127},true,{"icon":127},{"title":124,"description":751},"qCklmUxYN01UMqp0SPpUjqAuInDIHMn5QE65S8GXQ74",[759,761],{"title":119,"path":120,"stem":121,"description":760,"icon":122,"children":-1},"H3 proxy utilities.",{"title":129,"path":130,"stem":131,"description":762,"icon":132,"children":-1},"More H3 utilities.",1775063410809]