[{"data":1,"prerenderedAt":2390},["ShallowReactive",2],{"navigation_docs":3,"-advanced-evals":127,"-advanced-evals-surround":2385},[4,40,68,98],{"title":5,"path":6,"stem":7,"children":8,"page":39},"Getting Started","/getting-started","1.getting-started",[9,14,19,24,29,34],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","/getting-started/introduction","1.getting-started/1.introduction","i-lucide-book-open",{"title":15,"path":16,"stem":17,"icon":18},"Installation","/getting-started/installation","1.getting-started/2.installation","i-lucide-download",{"title":20,"path":21,"stem":22,"icon":23},"Configuration","/getting-started/configuration","1.getting-started/3.configuration","i-lucide-settings",{"title":25,"path":26,"stem":27,"icon":28},"MCP Inspector","/getting-started/inspector","1.getting-started/4.inspector","i-lucide-circuit-board",{"title":30,"path":31,"stem":32,"icon":33},"Connection","/getting-started/connection","1.getting-started/5.connection","i-lucide-plug",{"title":35,"path":36,"stem":37,"icon":38},"Agent Skills","/getting-started/agent-skills","1.getting-started/6.agent-skills","i-lucide-sparkles",false,{"title":41,"path":42,"stem":43,"children":44,"page":39},"Core Concepts","/core-concepts","2.core-concepts",[45,48,53,58,63],{"title":20,"path":46,"stem":47,"icon":23},"/core-concepts/configuration","2.core-concepts/1.configuration",{"title":49,"path":50,"stem":51,"icon":52},"Tools","/core-concepts/tools","2.core-concepts/2.tools","i-lucide-wrench",{"title":54,"path":55,"stem":56,"icon":57},"Resources","/core-concepts/resources","2.core-concepts/3.resources","i-lucide-package",{"title":59,"path":60,"stem":61,"icon":62},"Prompts","/core-concepts/prompts","2.core-concepts/4.prompts","i-lucide-message-square",{"title":64,"path":65,"stem":66,"icon":67},"Handlers","/core-concepts/handlers","2.core-concepts/5.handlers","i-lucide-server",{"title":69,"path":70,"stem":71,"children":72,"page":39},"Advanced Topics","/advanced","3.advanced",[73,78,83,88,93],{"title":74,"path":75,"stem":76,"icon":77},"Custom Paths","/advanced/custom-paths","3.advanced/1.custom-paths","i-lucide-folder",{"title":79,"path":80,"stem":81,"icon":82},"Middleware","/advanced/middleware","3.advanced/2.middleware","i-lucide-shield",{"title":84,"path":85,"stem":86,"icon":87},"TypeScript","/advanced/typescript","3.advanced/3.typescript","i-lucide-type",{"title":89,"path":90,"stem":91,"icon":92},"Hooks","/advanced/hooks","3.advanced/4.hooks","i-lucide-webhook",{"title":94,"path":95,"stem":96,"icon":97},"MCP Evals","/advanced/evals","3.advanced/5.evals","i-lucide-flask-conical",{"title":99,"path":100,"stem":101,"children":102,"page":39},"Examples","/examples","4.examples",[103,108,113,118,123],{"title":104,"path":105,"stem":106,"icon":107},"Authentication","/examples/authentication","4.examples/1.authentication","i-lucide-shield-check",{"title":109,"path":110,"stem":111,"icon":112},"API Integration","/examples/api-integration","4.examples/2.api-integration","i-lucide-globe",{"title":114,"path":115,"stem":116,"icon":117},"Common Patterns","/examples/common-patterns","4.examples/3.common-patterns","i-lucide-lightbulb",{"title":119,"path":120,"stem":121,"icon":122},"File Operations","/examples/file-operations","4.examples/4.file-operations","i-lucide-file",{"title":124,"path":125,"stem":126,"icon":62},"Prompt Examples","/examples/prompt-examples","4.examples/5.prompt-examples",{"id":128,"title":94,"body":129,"description":2378,"extension":2379,"links":2380,"meta":2381,"navigation":2382,"path":95,"seo":2383,"stem":96,"__hash__":2384},"docs/3.advanced/5.evals.md",{"type":130,"value":131,"toc":2360},"minimark",[132,137,149,152,163,167,182,186,1057,1061,1064,1114,1117,1166,1169,1218,1225,1229,1235,1243,1252,1256,1260,1263,1648,1652,1658,2029,2033,2036,2319,2323,2356],[133,134,136],"h2",{"id":135},"overview","Overview",[138,139,140,141,148],"p",{},"Evals help you verify that your MCP tools are called correctly by an LLM. This guide shows how to run tool-call evaluations with ",[142,143,147],"a",{"href":144,"rel":145},"https://www.evalite.dev/",[146],"nofollow","Evalite"," using the AI SDK MCP client.",[138,150,151],{},"The approach stays library-agnostic, Evalite is just the example runner. You can adapt the patterns to other evaluation frameworks.",[153,154,156,157,162],"callout",{"color":155,"icon":117},"primary","For a real-world example, check out the ",[142,158,161],{"href":159,"rel":160},"https://github.com/nuxt/nuxt.com/blob/main/test/mcp.eval.ts",[146],"nuxt.com MCP evals",".",[133,164,166],{"id":165},"prerequisites","Prerequisites",[168,169,170,179],"ul",{},[171,172,173,174,178],"li",{},"An MCP server running locally (e.g., ",[175,176,177],"code",{},"pnpm dev"," with the module enabled)",[171,180,181],{},"A model provider API key (AI Gateway, OpenAI, etc.)",[133,183,185],{"id":184},"setup","Setup",[187,188,189,194,197,304,308,315,402,406,413,457,461,468],"steps",{},[190,191,193],"h3",{"id":192},"install-dependencies","Install dependencies",[138,195,196],{},"Install Evalite, Vitest, and the AI SDK packages:",[198,199,200,237,260,282],"code-group",{},[201,202,208],"pre",{"className":203,"code":204,"filename":205,"language":206,"meta":207,"style":207},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pnpm add -D evalite vitest @ai-sdk/mcp ai\n","pnpm","bash","",[175,209,210],{"__ignoreMap":207},[211,212,215,218,222,225,228,231,234],"span",{"class":213,"line":214},"line",1,[211,216,205],{"class":217},"sBMFI",[211,219,221],{"class":220},"sfazB"," add",[211,223,224],{"class":220}," -D",[211,226,227],{"class":220}," evalite",[211,229,230],{"class":220}," vitest",[211,232,233],{"class":220}," @ai-sdk/mcp",[211,235,236],{"class":220}," ai\n",[201,238,241],{"className":203,"code":239,"filename":240,"language":206,"meta":207,"style":207},"npm install -D evalite vitest @ai-sdk/mcp ai\n","npm",[175,242,243],{"__ignoreMap":207},[211,244,245,247,250,252,254,256,258],{"class":213,"line":214},[211,246,240],{"class":217},[211,248,249],{"class":220}," install",[211,251,224],{"class":220},[211,253,227],{"class":220},[211,255,230],{"class":220},[211,257,233],{"class":220},[211,259,236],{"class":220},[201,261,264],{"className":203,"code":262,"filename":263,"language":206,"meta":207,"style":207},"yarn add -D evalite vitest @ai-sdk/mcp ai\n","yarn",[175,265,266],{"__ignoreMap":207},[211,267,268,270,272,274,276,278,280],{"class":213,"line":214},[211,269,263],{"class":217},[211,271,221],{"class":220},[211,273,224],{"class":220},[211,275,227],{"class":220},[211,277,230],{"class":220},[211,279,233],{"class":220},[211,281,236],{"class":220},[201,283,286],{"className":203,"code":284,"filename":285,"language":206,"meta":207,"style":207},"bun add -D evalite vitest @ai-sdk/mcp ai\n","bun",[175,287,288],{"__ignoreMap":207},[211,289,290,292,294,296,298,300,302],{"class":213,"line":214},[211,291,285],{"class":217},[211,293,221],{"class":220},[211,295,224],{"class":220},[211,297,227],{"class":220},[211,299,230],{"class":220},[211,301,233],{"class":220},[211,303,236],{"class":220},[190,305,307],{"id":306},"add-eval-scripts","Add eval scripts",[138,309,310,311,314],{},"Add the following scripts to your ",[175,312,313],{},"package.json",":",[201,316,320],{"className":317,"code":318,"filename":313,"language":319,"meta":207,"style":207},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"scripts\": {\n    \"eval\": \"evalite\",\n    \"eval:ui\": \"evalite watch\"\n  }\n}\n","json",[175,321,322,328,346,370,390,396],{"__ignoreMap":207},[211,323,324],{"class":213,"line":214},[211,325,327],{"class":326},"sMK4o","{\n",[211,329,331,334,338,341,343],{"class":213,"line":330},2,[211,332,333],{"class":326},"  \"",[211,335,337],{"class":336},"spNyl","scripts",[211,339,340],{"class":326},"\"",[211,342,314],{"class":326},[211,344,345],{"class":326}," {\n",[211,347,349,352,355,357,359,362,365,367],{"class":213,"line":348},3,[211,350,351],{"class":326},"    \"",[211,353,354],{"class":217},"eval",[211,356,340],{"class":326},[211,358,314],{"class":326},[211,360,361],{"class":326}," \"",[211,363,364],{"class":220},"evalite",[211,366,340],{"class":326},[211,368,369],{"class":326},",\n",[211,371,373,375,378,380,382,384,387],{"class":213,"line":372},4,[211,374,351],{"class":326},[211,376,377],{"class":217},"eval:ui",[211,379,340],{"class":326},[211,381,314],{"class":326},[211,383,361],{"class":326},[211,385,386],{"class":220},"evalite watch",[211,388,389],{"class":326},"\"\n",[211,391,393],{"class":213,"line":392},5,[211,394,395],{"class":326},"  }\n",[211,397,399],{"class":213,"line":398},6,[211,400,401],{"class":326},"}\n",[190,403,405],{"id":404},"configure-environment-variables","Configure environment variables",[138,407,408,409,412],{},"Create a ",[175,410,411],{},".env"," file with your AI provider key and MCP endpoint:",[201,414,416],{"className":203,"code":415,"filename":411,"language":206,"meta":207,"style":207},"# AI provider (AI Gateway example)\nAI_GATEWAY_API_KEY=your_key\n\n# MCP endpoint exposed by your dev server\nMCP_URL=http://localhost:3000/mcp\n",[175,417,418,424,436,442,447],{"__ignoreMap":207},[211,419,420],{"class":213,"line":214},[211,421,423],{"class":422},"sHwdD","# AI provider (AI Gateway example)\n",[211,425,426,430,433],{"class":213,"line":330},[211,427,429],{"class":428},"sTEyZ","AI_GATEWAY_API_KEY",[211,431,432],{"class":326},"=",[211,434,435],{"class":220},"your_key\n",[211,437,438],{"class":213,"line":348},[211,439,441],{"emptyLinePlaceholder":440},true,"\n",[211,443,444],{"class":213,"line":372},[211,445,446],{"class":422},"# MCP endpoint exposed by your dev server\n",[211,448,449,452,454],{"class":213,"line":392},[211,450,451],{"class":428},"MCP_URL",[211,453,432],{"class":326},[211,455,456],{"class":220},"http://localhost:3000/mcp\n",[190,458,460],{"id":459},"write-your-first-eval","Write your first eval",[138,462,463,464,467],{},"Create an eval file in your ",[175,465,466],{},"test/"," directory:",[201,469,474],{"className":470,"code":471,"filename":472,"language":473,"meta":207,"style":207},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { experimental_createMCPClient as createMCPClient } from '@ai-sdk/mcp'\nimport { generateText } from 'ai'\nimport { evalite } from 'evalite'\nimport { toolCallAccuracy } from 'evalite/scorers'\n\n// AI Gateway model format: provider/model-name\nconst model = 'openai/gpt-4o-mini'\nconst MCP_URL = process.env.MCP_URL ?? 'http://localhost:3000/mcp'\n\nevalite('BMI Calculator', {\n  data: async () => [\n    {\n      input: 'Calculate BMI for someone who weighs 70kg and is 1.75m tall',\n      expected: [{ toolName: 'calculate-bmi', input: { weightKg: 70, heightM: 1.75 } }],\n    },\n  ],\n  task: async (input) => {\n    const mcp = await createMCPClient({ transport: { type: 'http', url: MCP_URL } })\n    try {\n      const result = await generateText({\n        model,\n        prompt: input,\n        tools: await mcp.tools(),\n      })\n      return result.toolCalls ?? []\n    }\n    finally {\n      await mcp.close()\n    }\n  },\n  scorers: [({ output, expected }) => toolCallAccuracy({ actualCalls: output, expectedCalls: expected })],\n})\n","test/mcp.eval.ts","typescript",[175,475,476,509,529,547,567,571,576,594,627,632,654,674,680,698,761,767,775,799,856,864,883,891,903,925,933,952,958,966,982,987,993,1050],{"__ignoreMap":207},[211,477,478,482,485,488,491,494,497,500,503,506],{"class":213,"line":214},[211,479,481],{"class":480},"s7zQu","import",[211,483,484],{"class":326}," {",[211,486,487],{"class":428}," experimental_createMCPClient",[211,489,490],{"class":480}," as",[211,492,493],{"class":428}," createMCPClient",[211,495,496],{"class":326}," }",[211,498,499],{"class":480}," from",[211,501,502],{"class":326}," '",[211,504,505],{"class":220},"@ai-sdk/mcp",[211,507,508],{"class":326},"'\n",[211,510,511,513,515,518,520,522,524,527],{"class":213,"line":330},[211,512,481],{"class":480},[211,514,484],{"class":326},[211,516,517],{"class":428}," generateText",[211,519,496],{"class":326},[211,521,499],{"class":480},[211,523,502],{"class":326},[211,525,526],{"class":220},"ai",[211,528,508],{"class":326},[211,530,531,533,535,537,539,541,543,545],{"class":213,"line":348},[211,532,481],{"class":480},[211,534,484],{"class":326},[211,536,227],{"class":428},[211,538,496],{"class":326},[211,540,499],{"class":480},[211,542,502],{"class":326},[211,544,364],{"class":220},[211,546,508],{"class":326},[211,548,549,551,553,556,558,560,562,565],{"class":213,"line":372},[211,550,481],{"class":480},[211,552,484],{"class":326},[211,554,555],{"class":428}," toolCallAccuracy",[211,557,496],{"class":326},[211,559,499],{"class":480},[211,561,502],{"class":326},[211,563,564],{"class":220},"evalite/scorers",[211,566,508],{"class":326},[211,568,569],{"class":213,"line":392},[211,570,441],{"emptyLinePlaceholder":440},[211,572,573],{"class":213,"line":398},[211,574,575],{"class":422},"// AI Gateway model format: provider/model-name\n",[211,577,579,582,585,587,589,592],{"class":213,"line":578},7,[211,580,581],{"class":336},"const",[211,583,584],{"class":428}," model ",[211,586,432],{"class":326},[211,588,502],{"class":326},[211,590,591],{"class":220},"openai/gpt-4o-mini",[211,593,508],{"class":326},[211,595,597,599,602,604,607,609,612,614,617,620,622,625],{"class":213,"line":596},8,[211,598,581],{"class":336},[211,600,601],{"class":428}," MCP_URL ",[211,603,432],{"class":326},[211,605,606],{"class":428}," process",[211,608,162],{"class":326},[211,610,611],{"class":428},"env",[211,613,162],{"class":326},[211,615,616],{"class":428},"MCP_URL ",[211,618,619],{"class":326},"??",[211,621,502],{"class":326},[211,623,624],{"class":220},"http://localhost:3000/mcp",[211,626,508],{"class":326},[211,628,630],{"class":213,"line":629},9,[211,631,441],{"emptyLinePlaceholder":440},[211,633,635,638,641,644,647,649,652],{"class":213,"line":634},10,[211,636,364],{"class":637},"s2Zo4",[211,639,640],{"class":428},"(",[211,642,643],{"class":326},"'",[211,645,646],{"class":220},"BMI Calculator",[211,648,643],{"class":326},[211,650,651],{"class":326},",",[211,653,345],{"class":326},[211,655,657,660,662,665,668,671],{"class":213,"line":656},11,[211,658,659],{"class":637},"  data",[211,661,314],{"class":326},[211,663,664],{"class":336}," async",[211,666,667],{"class":326}," ()",[211,669,670],{"class":336}," =>",[211,672,673],{"class":428}," [\n",[211,675,677],{"class":213,"line":676},12,[211,678,679],{"class":326},"    {\n",[211,681,683,687,689,691,694,696],{"class":213,"line":682},13,[211,684,686],{"class":685},"swJcz","      input",[211,688,314],{"class":326},[211,690,502],{"class":326},[211,692,693],{"class":220},"Calculate BMI for someone who weighs 70kg and is 1.75m tall",[211,695,643],{"class":326},[211,697,369],{"class":326},[211,699,701,704,706,709,712,715,717,719,722,724,726,729,731,733,736,738,742,744,747,749,752,754,756,759],{"class":213,"line":700},14,[211,702,703],{"class":685},"      expected",[211,705,314],{"class":326},[211,707,708],{"class":428}," [",[211,710,711],{"class":326},"{",[211,713,714],{"class":685}," toolName",[211,716,314],{"class":326},[211,718,502],{"class":326},[211,720,721],{"class":220},"calculate-bmi",[211,723,643],{"class":326},[211,725,651],{"class":326},[211,727,728],{"class":685}," input",[211,730,314],{"class":326},[211,732,484],{"class":326},[211,734,735],{"class":685}," weightKg",[211,737,314],{"class":326},[211,739,741],{"class":740},"sbssI"," 70",[211,743,651],{"class":326},[211,745,746],{"class":685}," heightM",[211,748,314],{"class":326},[211,750,751],{"class":740}," 1.75",[211,753,496],{"class":326},[211,755,496],{"class":326},[211,757,758],{"class":428},"]",[211,760,369],{"class":326},[211,762,764],{"class":213,"line":763},15,[211,765,766],{"class":326},"    },\n",[211,768,770,773],{"class":213,"line":769},16,[211,771,772],{"class":428},"  ]",[211,774,369],{"class":326},[211,776,778,781,783,785,788,792,795,797],{"class":213,"line":777},17,[211,779,780],{"class":637},"  task",[211,782,314],{"class":326},[211,784,664],{"class":336},[211,786,787],{"class":326}," (",[211,789,791],{"class":790},"sHdIc","input",[211,793,794],{"class":326},")",[211,796,670],{"class":336},[211,798,345],{"class":326},[211,800,802,805,808,811,814,816,818,820,823,825,827,830,832,834,837,839,841,844,846,849,851,853],{"class":213,"line":801},18,[211,803,804],{"class":336},"    const",[211,806,807],{"class":428}," mcp",[211,809,810],{"class":326}," =",[211,812,813],{"class":480}," await",[211,815,493],{"class":637},[211,817,640],{"class":685},[211,819,711],{"class":326},[211,821,822],{"class":685}," transport",[211,824,314],{"class":326},[211,826,484],{"class":326},[211,828,829],{"class":685}," type",[211,831,314],{"class":326},[211,833,502],{"class":326},[211,835,836],{"class":220},"http",[211,838,643],{"class":326},[211,840,651],{"class":326},[211,842,843],{"class":685}," url",[211,845,314],{"class":326},[211,847,848],{"class":428}," MCP_URL",[211,850,496],{"class":326},[211,852,496],{"class":326},[211,854,855],{"class":685},")\n",[211,857,859,862],{"class":213,"line":858},19,[211,860,861],{"class":480},"    try",[211,863,345],{"class":326},[211,865,867,870,873,875,877,879,881],{"class":213,"line":866},20,[211,868,869],{"class":336},"      const",[211,871,872],{"class":428}," result",[211,874,810],{"class":326},[211,876,813],{"class":480},[211,878,517],{"class":637},[211,880,640],{"class":685},[211,882,327],{"class":326},[211,884,886,889],{"class":213,"line":885},21,[211,887,888],{"class":428},"        model",[211,890,369],{"class":326},[211,892,894,897,899,901],{"class":213,"line":893},22,[211,895,896],{"class":685},"        prompt",[211,898,314],{"class":326},[211,900,728],{"class":428},[211,902,369],{"class":326},[211,904,906,909,911,913,915,917,920,923],{"class":213,"line":905},23,[211,907,908],{"class":685},"        tools",[211,910,314],{"class":326},[211,912,813],{"class":480},[211,914,807],{"class":428},[211,916,162],{"class":326},[211,918,919],{"class":637},"tools",[211,921,922],{"class":685},"()",[211,924,369],{"class":326},[211,926,928,931],{"class":213,"line":927},24,[211,929,930],{"class":326},"      }",[211,932,855],{"class":685},[211,934,936,939,941,943,946,949],{"class":213,"line":935},25,[211,937,938],{"class":480},"      return",[211,940,872],{"class":428},[211,942,162],{"class":326},[211,944,945],{"class":428},"toolCalls",[211,947,948],{"class":326}," ??",[211,950,951],{"class":685}," []\n",[211,953,955],{"class":213,"line":954},26,[211,956,957],{"class":326},"    }\n",[211,959,961,964],{"class":213,"line":960},27,[211,962,963],{"class":480},"    finally",[211,965,345],{"class":326},[211,967,969,972,974,976,979],{"class":213,"line":968},28,[211,970,971],{"class":480},"      await",[211,973,807],{"class":428},[211,975,162],{"class":326},[211,977,978],{"class":637},"close",[211,980,981],{"class":685},"()\n",[211,983,985],{"class":213,"line":984},29,[211,986,957],{"class":326},[211,988,990],{"class":213,"line":989},30,[211,991,992],{"class":326},"  },\n",[211,994,996,999,1001,1003,1006,1009,1011,1014,1017,1019,1021,1023,1025,1028,1030,1032,1034,1037,1039,1042,1045,1048],{"class":213,"line":995},31,[211,997,998],{"class":685},"  scorers",[211,1000,314],{"class":326},[211,1002,708],{"class":428},[211,1004,1005],{"class":326},"({",[211,1007,1008],{"class":790}," output",[211,1010,651],{"class":326},[211,1012,1013],{"class":790}," expected",[211,1015,1016],{"class":326}," })",[211,1018,670],{"class":336},[211,1020,555],{"class":637},[211,1022,640],{"class":428},[211,1024,711],{"class":326},[211,1026,1027],{"class":685}," actualCalls",[211,1029,314],{"class":326},[211,1031,1008],{"class":428},[211,1033,651],{"class":326},[211,1035,1036],{"class":685}," expectedCalls",[211,1038,314],{"class":326},[211,1040,1041],{"class":428}," expected ",[211,1043,1044],{"class":326},"}",[211,1046,1047],{"class":428},")]",[211,1049,369],{"class":326},[211,1051,1053,1055],{"class":213,"line":1052},32,[211,1054,1044],{"class":326},[211,1056,855],{"class":428},[133,1058,1060],{"id":1059},"running-evals","Running Evals",[138,1062,1063],{},"Make sure your MCP server is running first:",[198,1065,1066,1078,1092,1103],{},[201,1067,1069],{"className":203,"code":1068,"filename":205,"language":206,"meta":207,"style":207},"pnpm dev\n",[175,1070,1071],{"__ignoreMap":207},[211,1072,1073,1075],{"class":213,"line":214},[211,1074,205],{"class":217},[211,1076,1077],{"class":220}," dev\n",[201,1079,1081],{"className":203,"code":1080,"filename":240,"language":206,"meta":207,"style":207},"npm run dev\n",[175,1082,1083],{"__ignoreMap":207},[211,1084,1085,1087,1090],{"class":213,"line":214},[211,1086,240],{"class":217},[211,1088,1089],{"class":220}," run",[211,1091,1077],{"class":220},[201,1093,1095],{"className":203,"code":1094,"filename":263,"language":206,"meta":207,"style":207},"yarn dev\n",[175,1096,1097],{"__ignoreMap":207},[211,1098,1099,1101],{"class":213,"line":214},[211,1100,263],{"class":217},[211,1102,1077],{"class":220},[201,1104,1106],{"className":203,"code":1105,"filename":285,"language":206,"meta":207,"style":207},"bun dev\n",[175,1107,1108],{"__ignoreMap":207},[211,1109,1110,1112],{"class":213,"line":214},[211,1111,285],{"class":217},[211,1113,1077],{"class":220},[138,1115,1116],{},"Then run your evals in a separate terminal:",[198,1118,1119,1131,1144,1155],{},[201,1120,1122],{"className":203,"code":1121,"filename":205,"language":206,"meta":207,"style":207},"pnpm eval\n",[175,1123,1124],{"__ignoreMap":207},[211,1125,1126,1128],{"class":213,"line":214},[211,1127,205],{"class":217},[211,1129,1130],{"class":220}," eval\n",[201,1132,1134],{"className":203,"code":1133,"filename":240,"language":206,"meta":207,"style":207},"npm run eval\n",[175,1135,1136],{"__ignoreMap":207},[211,1137,1138,1140,1142],{"class":213,"line":214},[211,1139,240],{"class":217},[211,1141,1089],{"class":220},[211,1143,1130],{"class":220},[201,1145,1147],{"className":203,"code":1146,"filename":263,"language":206,"meta":207,"style":207},"yarn eval\n",[175,1148,1149],{"__ignoreMap":207},[211,1150,1151,1153],{"class":213,"line":214},[211,1152,263],{"class":217},[211,1154,1130],{"class":220},[201,1156,1158],{"className":203,"code":1157,"filename":285,"language":206,"meta":207,"style":207},"bun eval\n",[175,1159,1160],{"__ignoreMap":207},[211,1161,1162,1164],{"class":213,"line":214},[211,1163,285],{"class":217},[211,1165,1130],{"class":220},[138,1167,1168],{},"Or launch the Evalite UI for a visual interface:",[198,1170,1171,1183,1196,1207],{},[201,1172,1174],{"className":203,"code":1173,"filename":205,"language":206,"meta":207,"style":207},"pnpm eval:ui\n",[175,1175,1176],{"__ignoreMap":207},[211,1177,1178,1180],{"class":213,"line":214},[211,1179,205],{"class":217},[211,1181,1182],{"class":220}," eval:ui\n",[201,1184,1186],{"className":203,"code":1185,"filename":240,"language":206,"meta":207,"style":207},"npm run eval:ui\n",[175,1187,1188],{"__ignoreMap":207},[211,1189,1190,1192,1194],{"class":213,"line":214},[211,1191,240],{"class":217},[211,1193,1089],{"class":220},[211,1195,1182],{"class":220},[201,1197,1199],{"className":203,"code":1198,"filename":263,"language":206,"meta":207,"style":207},"yarn eval:ui\n",[175,1200,1201],{"__ignoreMap":207},[211,1202,1203,1205],{"class":213,"line":214},[211,1204,263],{"class":217},[211,1206,1182],{"class":220},[201,1208,1210],{"className":203,"code":1209,"filename":285,"language":206,"meta":207,"style":207},"bun eval:ui\n",[175,1211,1212],{"__ignoreMap":207},[211,1213,1214,1216],{"class":213,"line":214},[211,1215,285],{"class":217},[211,1217,1182],{"class":220},[138,1219,1220,1221,1224],{},"The UI is available at ",[175,1222,1223],{},"http://localhost:3006"," and shows traces, scores, inputs, and outputs for each eval.",[133,1226,1228],{"id":1227},"project-structure","Project Structure",[138,1230,1231,1232,1234],{},"We recommend placing eval files in a ",[175,1233,466],{}," directory at your project root:",[201,1236,1241],{"className":1237,"code":1239,"language":1240},[1238],"language-text","your-project/\n├── server/\n│   └── mcp/\n│       ├── tools/\n│       │   └── calculate-bmi.ts\n│       ├── resources/\n│       └── prompts/\n├── test/\n│   └── mcp.eval.ts          # Your MCP eval tests\n├── nuxt.config.ts\n└── package.json\n","text",[175,1242,1239],{"__ignoreMap":207},[153,1244,1247,1248,1251],{"color":1245,"icon":1246},"neutral","i-lucide-info","Evalite looks for files with the ",[175,1249,1250],{},".eval.ts"," extension by default.",[133,1253,1255],{"id":1254},"writing-effective-evals","Writing Effective Evals",[190,1257,1259],{"id":1258},"testing-tool-selection","Testing Tool Selection",[138,1261,1262],{},"Verify the model picks the correct tool:",[201,1264,1266],{"className":470,"code":1265,"filename":472,"language":473,"meta":207,"style":207},"evalite('Tool Selection', {\n  data: async () => [\n    {\n      input: 'List all available documentation pages',\n      expected: [{ toolName: 'list-pages' }],\n    },\n    {\n      input: 'Show me the installation guide',\n      expected: [{ toolName: 'get-page', input: { path: '/getting-started/installation' } }],\n    },\n  ],\n  task: async (input) => {\n    const mcp = await createMCPClient({ transport: { type: 'http', url: MCP_URL } })\n    try {\n      const result = await generateText({\n        model,\n        prompt: input,\n        tools: await mcp.tools(),\n      })\n      return result.toolCalls ?? []\n    }\n    finally {\n      await mcp.close()\n    }\n  },\n  scorers: [({ output, expected }) => toolCallAccuracy({ actualCalls: output, expectedCalls: expected })],\n})\n",[175,1267,1268,1285,1299,1303,1318,1345,1349,1353,1368,1416,1420,1426,1444,1490,1496,1512,1518,1528,1546,1552,1566,1570,1576,1588,1592,1596,1642],{"__ignoreMap":207},[211,1269,1270,1272,1274,1276,1279,1281,1283],{"class":213,"line":214},[211,1271,364],{"class":637},[211,1273,640],{"class":428},[211,1275,643],{"class":326},[211,1277,1278],{"class":220},"Tool Selection",[211,1280,643],{"class":326},[211,1282,651],{"class":326},[211,1284,345],{"class":326},[211,1286,1287,1289,1291,1293,1295,1297],{"class":213,"line":330},[211,1288,659],{"class":637},[211,1290,314],{"class":326},[211,1292,664],{"class":336},[211,1294,667],{"class":326},[211,1296,670],{"class":336},[211,1298,673],{"class":428},[211,1300,1301],{"class":213,"line":348},[211,1302,679],{"class":326},[211,1304,1305,1307,1309,1311,1314,1316],{"class":213,"line":372},[211,1306,686],{"class":685},[211,1308,314],{"class":326},[211,1310,502],{"class":326},[211,1312,1313],{"class":220},"List all available documentation pages",[211,1315,643],{"class":326},[211,1317,369],{"class":326},[211,1319,1320,1322,1324,1326,1328,1330,1332,1334,1337,1339,1341,1343],{"class":213,"line":392},[211,1321,703],{"class":685},[211,1323,314],{"class":326},[211,1325,708],{"class":428},[211,1327,711],{"class":326},[211,1329,714],{"class":685},[211,1331,314],{"class":326},[211,1333,502],{"class":326},[211,1335,1336],{"class":220},"list-pages",[211,1338,643],{"class":326},[211,1340,496],{"class":326},[211,1342,758],{"class":428},[211,1344,369],{"class":326},[211,1346,1347],{"class":213,"line":398},[211,1348,766],{"class":326},[211,1350,1351],{"class":213,"line":578},[211,1352,679],{"class":326},[211,1354,1355,1357,1359,1361,1364,1366],{"class":213,"line":596},[211,1356,686],{"class":685},[211,1358,314],{"class":326},[211,1360,502],{"class":326},[211,1362,1363],{"class":220},"Show me the installation guide",[211,1365,643],{"class":326},[211,1367,369],{"class":326},[211,1369,1370,1372,1374,1376,1378,1380,1382,1384,1387,1389,1391,1393,1395,1397,1400,1402,1404,1406,1408,1410,1412,1414],{"class":213,"line":629},[211,1371,703],{"class":685},[211,1373,314],{"class":326},[211,1375,708],{"class":428},[211,1377,711],{"class":326},[211,1379,714],{"class":685},[211,1381,314],{"class":326},[211,1383,502],{"class":326},[211,1385,1386],{"class":220},"get-page",[211,1388,643],{"class":326},[211,1390,651],{"class":326},[211,1392,728],{"class":685},[211,1394,314],{"class":326},[211,1396,484],{"class":326},[211,1398,1399],{"class":685}," path",[211,1401,314],{"class":326},[211,1403,502],{"class":326},[211,1405,16],{"class":220},[211,1407,643],{"class":326},[211,1409,496],{"class":326},[211,1411,496],{"class":326},[211,1413,758],{"class":428},[211,1415,369],{"class":326},[211,1417,1418],{"class":213,"line":634},[211,1419,766],{"class":326},[211,1421,1422,1424],{"class":213,"line":656},[211,1423,772],{"class":428},[211,1425,369],{"class":326},[211,1427,1428,1430,1432,1434,1436,1438,1440,1442],{"class":213,"line":676},[211,1429,780],{"class":637},[211,1431,314],{"class":326},[211,1433,664],{"class":336},[211,1435,787],{"class":326},[211,1437,791],{"class":790},[211,1439,794],{"class":326},[211,1441,670],{"class":336},[211,1443,345],{"class":326},[211,1445,1446,1448,1450,1452,1454,1456,1458,1460,1462,1464,1466,1468,1470,1472,1474,1476,1478,1480,1482,1484,1486,1488],{"class":213,"line":682},[211,1447,804],{"class":336},[211,1449,807],{"class":428},[211,1451,810],{"class":326},[211,1453,813],{"class":480},[211,1455,493],{"class":637},[211,1457,640],{"class":685},[211,1459,711],{"class":326},[211,1461,822],{"class":685},[211,1463,314],{"class":326},[211,1465,484],{"class":326},[211,1467,829],{"class":685},[211,1469,314],{"class":326},[211,1471,502],{"class":326},[211,1473,836],{"class":220},[211,1475,643],{"class":326},[211,1477,651],{"class":326},[211,1479,843],{"class":685},[211,1481,314],{"class":326},[211,1483,848],{"class":428},[211,1485,496],{"class":326},[211,1487,496],{"class":326},[211,1489,855],{"class":685},[211,1491,1492,1494],{"class":213,"line":700},[211,1493,861],{"class":480},[211,1495,345],{"class":326},[211,1497,1498,1500,1502,1504,1506,1508,1510],{"class":213,"line":763},[211,1499,869],{"class":336},[211,1501,872],{"class":428},[211,1503,810],{"class":326},[211,1505,813],{"class":480},[211,1507,517],{"class":637},[211,1509,640],{"class":685},[211,1511,327],{"class":326},[211,1513,1514,1516],{"class":213,"line":769},[211,1515,888],{"class":428},[211,1517,369],{"class":326},[211,1519,1520,1522,1524,1526],{"class":213,"line":777},[211,1521,896],{"class":685},[211,1523,314],{"class":326},[211,1525,728],{"class":428},[211,1527,369],{"class":326},[211,1529,1530,1532,1534,1536,1538,1540,1542,1544],{"class":213,"line":801},[211,1531,908],{"class":685},[211,1533,314],{"class":326},[211,1535,813],{"class":480},[211,1537,807],{"class":428},[211,1539,162],{"class":326},[211,1541,919],{"class":637},[211,1543,922],{"class":685},[211,1545,369],{"class":326},[211,1547,1548,1550],{"class":213,"line":858},[211,1549,930],{"class":326},[211,1551,855],{"class":685},[211,1553,1554,1556,1558,1560,1562,1564],{"class":213,"line":866},[211,1555,938],{"class":480},[211,1557,872],{"class":428},[211,1559,162],{"class":326},[211,1561,945],{"class":428},[211,1563,948],{"class":326},[211,1565,951],{"class":685},[211,1567,1568],{"class":213,"line":885},[211,1569,957],{"class":326},[211,1571,1572,1574],{"class":213,"line":893},[211,1573,963],{"class":480},[211,1575,345],{"class":326},[211,1577,1578,1580,1582,1584,1586],{"class":213,"line":905},[211,1579,971],{"class":480},[211,1581,807],{"class":428},[211,1583,162],{"class":326},[211,1585,978],{"class":637},[211,1587,981],{"class":685},[211,1589,1590],{"class":213,"line":927},[211,1591,957],{"class":326},[211,1593,1594],{"class":213,"line":935},[211,1595,992],{"class":326},[211,1597,1598,1600,1602,1604,1606,1608,1610,1612,1614,1616,1618,1620,1622,1624,1626,1628,1630,1632,1634,1636,1638,1640],{"class":213,"line":954},[211,1599,998],{"class":685},[211,1601,314],{"class":326},[211,1603,708],{"class":428},[211,1605,1005],{"class":326},[211,1607,1008],{"class":790},[211,1609,651],{"class":326},[211,1611,1013],{"class":790},[211,1613,1016],{"class":326},[211,1615,670],{"class":336},[211,1617,555],{"class":637},[211,1619,640],{"class":428},[211,1621,711],{"class":326},[211,1623,1027],{"class":685},[211,1625,314],{"class":326},[211,1627,1008],{"class":428},[211,1629,651],{"class":326},[211,1631,1036],{"class":685},[211,1633,314],{"class":326},[211,1635,1041],{"class":428},[211,1637,1044],{"class":326},[211,1639,1047],{"class":428},[211,1641,369],{"class":326},[211,1643,1644,1646],{"class":213,"line":960},[211,1645,1044],{"class":326},[211,1647,855],{"class":428},[190,1649,1651],{"id":1650},"testing-multi-step-workflows","Testing Multi-Step Workflows",[138,1653,1654,1655,314],{},"For workflows that require multiple tool calls, increase ",[175,1656,1657],{},"maxSteps",[201,1659,1661],{"className":470,"code":1660,"filename":472,"language":473,"meta":207,"style":207},"evalite('Multi-Step Workflows', {\n  data: async () => [\n    {\n      input: 'Find the installation page and show me its content',\n      expected: [\n        { toolName: 'list-pages' },\n        { toolName: 'get-page', input: { path: '/getting-started/installation' } },\n      ],\n    },\n  ],\n  task: async (input) => {\n    const mcp = await createMCPClient({ transport: { type: 'http', url: MCP_URL } })\n    try {\n      const result = await generateText({\n        model,\n        prompt: input,\n        tools: await mcp.tools(),\n        maxSteps: 5, // Allow multiple tool calls\n      })\n      return result.toolCalls ?? []\n    }\n    finally {\n      await mcp.close()\n    }\n  },\n  scorers: [({ output, expected }) => toolCallAccuracy({ actualCalls: output, expectedCalls: expected })],\n})\n",[175,1662,1663,1680,1694,1698,1713,1721,1739,1775,1782,1786,1792,1810,1856,1862,1878,1884,1894,1912,1927,1933,1947,1951,1957,1969,1973,1977,2023],{"__ignoreMap":207},[211,1664,1665,1667,1669,1671,1674,1676,1678],{"class":213,"line":214},[211,1666,364],{"class":637},[211,1668,640],{"class":428},[211,1670,643],{"class":326},[211,1672,1673],{"class":220},"Multi-Step Workflows",[211,1675,643],{"class":326},[211,1677,651],{"class":326},[211,1679,345],{"class":326},[211,1681,1682,1684,1686,1688,1690,1692],{"class":213,"line":330},[211,1683,659],{"class":637},[211,1685,314],{"class":326},[211,1687,664],{"class":336},[211,1689,667],{"class":326},[211,1691,670],{"class":336},[211,1693,673],{"class":428},[211,1695,1696],{"class":213,"line":348},[211,1697,679],{"class":326},[211,1699,1700,1702,1704,1706,1709,1711],{"class":213,"line":372},[211,1701,686],{"class":685},[211,1703,314],{"class":326},[211,1705,502],{"class":326},[211,1707,1708],{"class":220},"Find the installation page and show me its content",[211,1710,643],{"class":326},[211,1712,369],{"class":326},[211,1714,1715,1717,1719],{"class":213,"line":392},[211,1716,703],{"class":685},[211,1718,314],{"class":326},[211,1720,673],{"class":428},[211,1722,1723,1726,1728,1730,1732,1734,1736],{"class":213,"line":398},[211,1724,1725],{"class":326},"        {",[211,1727,714],{"class":685},[211,1729,314],{"class":326},[211,1731,502],{"class":326},[211,1733,1336],{"class":220},[211,1735,643],{"class":326},[211,1737,1738],{"class":326}," },\n",[211,1740,1741,1743,1745,1747,1749,1751,1753,1755,1757,1759,1761,1763,1765,1767,1769,1771,1773],{"class":213,"line":578},[211,1742,1725],{"class":326},[211,1744,714],{"class":685},[211,1746,314],{"class":326},[211,1748,502],{"class":326},[211,1750,1386],{"class":220},[211,1752,643],{"class":326},[211,1754,651],{"class":326},[211,1756,728],{"class":685},[211,1758,314],{"class":326},[211,1760,484],{"class":326},[211,1762,1399],{"class":685},[211,1764,314],{"class":326},[211,1766,502],{"class":326},[211,1768,16],{"class":220},[211,1770,643],{"class":326},[211,1772,496],{"class":326},[211,1774,1738],{"class":326},[211,1776,1777,1780],{"class":213,"line":596},[211,1778,1779],{"class":428},"      ]",[211,1781,369],{"class":326},[211,1783,1784],{"class":213,"line":629},[211,1785,766],{"class":326},[211,1787,1788,1790],{"class":213,"line":634},[211,1789,772],{"class":428},[211,1791,369],{"class":326},[211,1793,1794,1796,1798,1800,1802,1804,1806,1808],{"class":213,"line":656},[211,1795,780],{"class":637},[211,1797,314],{"class":326},[211,1799,664],{"class":336},[211,1801,787],{"class":326},[211,1803,791],{"class":790},[211,1805,794],{"class":326},[211,1807,670],{"class":336},[211,1809,345],{"class":326},[211,1811,1812,1814,1816,1818,1820,1822,1824,1826,1828,1830,1832,1834,1836,1838,1840,1842,1844,1846,1848,1850,1852,1854],{"class":213,"line":676},[211,1813,804],{"class":336},[211,1815,807],{"class":428},[211,1817,810],{"class":326},[211,1819,813],{"class":480},[211,1821,493],{"class":637},[211,1823,640],{"class":685},[211,1825,711],{"class":326},[211,1827,822],{"class":685},[211,1829,314],{"class":326},[211,1831,484],{"class":326},[211,1833,829],{"class":685},[211,1835,314],{"class":326},[211,1837,502],{"class":326},[211,1839,836],{"class":220},[211,1841,643],{"class":326},[211,1843,651],{"class":326},[211,1845,843],{"class":685},[211,1847,314],{"class":326},[211,1849,848],{"class":428},[211,1851,496],{"class":326},[211,1853,496],{"class":326},[211,1855,855],{"class":685},[211,1857,1858,1860],{"class":213,"line":682},[211,1859,861],{"class":480},[211,1861,345],{"class":326},[211,1863,1864,1866,1868,1870,1872,1874,1876],{"class":213,"line":700},[211,1865,869],{"class":336},[211,1867,872],{"class":428},[211,1869,810],{"class":326},[211,1871,813],{"class":480},[211,1873,517],{"class":637},[211,1875,640],{"class":685},[211,1877,327],{"class":326},[211,1879,1880,1882],{"class":213,"line":763},[211,1881,888],{"class":428},[211,1883,369],{"class":326},[211,1885,1886,1888,1890,1892],{"class":213,"line":769},[211,1887,896],{"class":685},[211,1889,314],{"class":326},[211,1891,728],{"class":428},[211,1893,369],{"class":326},[211,1895,1896,1898,1900,1902,1904,1906,1908,1910],{"class":213,"line":777},[211,1897,908],{"class":685},[211,1899,314],{"class":326},[211,1901,813],{"class":480},[211,1903,807],{"class":428},[211,1905,162],{"class":326},[211,1907,919],{"class":637},[211,1909,922],{"class":685},[211,1911,369],{"class":326},[211,1913,1914,1917,1919,1922,1924],{"class":213,"line":801},[211,1915,1916],{"class":685},"        maxSteps",[211,1918,314],{"class":326},[211,1920,1921],{"class":740}," 5",[211,1923,651],{"class":326},[211,1925,1926],{"class":422}," // Allow multiple tool calls\n",[211,1928,1929,1931],{"class":213,"line":858},[211,1930,930],{"class":326},[211,1932,855],{"class":685},[211,1934,1935,1937,1939,1941,1943,1945],{"class":213,"line":866},[211,1936,938],{"class":480},[211,1938,872],{"class":428},[211,1940,162],{"class":326},[211,1942,945],{"class":428},[211,1944,948],{"class":326},[211,1946,951],{"class":685},[211,1948,1949],{"class":213,"line":885},[211,1950,957],{"class":326},[211,1952,1953,1955],{"class":213,"line":893},[211,1954,963],{"class":480},[211,1956,345],{"class":326},[211,1958,1959,1961,1963,1965,1967],{"class":213,"line":905},[211,1960,971],{"class":480},[211,1962,807],{"class":428},[211,1964,162],{"class":326},[211,1966,978],{"class":637},[211,1968,981],{"class":685},[211,1970,1971],{"class":213,"line":927},[211,1972,957],{"class":326},[211,1974,1975],{"class":213,"line":935},[211,1976,992],{"class":326},[211,1978,1979,1981,1983,1985,1987,1989,1991,1993,1995,1997,1999,2001,2003,2005,2007,2009,2011,2013,2015,2017,2019,2021],{"class":213,"line":954},[211,1980,998],{"class":685},[211,1982,314],{"class":326},[211,1984,708],{"class":428},[211,1986,1005],{"class":326},[211,1988,1008],{"class":790},[211,1990,651],{"class":326},[211,1992,1013],{"class":790},[211,1994,1016],{"class":326},[211,1996,670],{"class":336},[211,1998,555],{"class":637},[211,2000,640],{"class":428},[211,2002,711],{"class":326},[211,2004,1027],{"class":685},[211,2006,314],{"class":326},[211,2008,1008],{"class":428},[211,2010,651],{"class":326},[211,2012,1036],{"class":685},[211,2014,314],{"class":326},[211,2016,1041],{"class":428},[211,2018,1044],{"class":326},[211,2020,1047],{"class":428},[211,2022,369],{"class":326},[211,2024,2025,2027],{"class":213,"line":960},[211,2026,1044],{"class":326},[211,2028,855],{"class":428},[190,2030,2032],{"id":2031},"grouping-related-evals","Grouping Related Evals",[138,2034,2035],{},"Organize evals by feature or tool category:",[201,2037,2039],{"className":470,"code":2038,"filename":472,"language":473,"meta":207,"style":207},"// Documentation tools\nevalite('Documentation Tools', {\n  data: async () => [\n    { input: 'List all docs', expected: [{ toolName: 'list-pages' }] },\n    { input: 'Get the intro page', expected: [{ toolName: 'get-page' }] },\n  ],\n  // ...\n})\n\n// API tools\nevalite('API Tools', {\n  data: async () => [\n    { input: 'Fetch user data', expected: [{ toolName: 'get-user' }] },\n    { input: 'Create a new post', expected: [{ toolName: 'create-post' }] },\n  ],\n  // ...\n})\n",[175,2040,2041,2046,2063,2077,2121,2162,2168,2173,2179,2183,2188,2205,2219,2261,2303,2309,2313],{"__ignoreMap":207},[211,2042,2043],{"class":213,"line":214},[211,2044,2045],{"class":422},"// Documentation tools\n",[211,2047,2048,2050,2052,2054,2057,2059,2061],{"class":213,"line":330},[211,2049,364],{"class":637},[211,2051,640],{"class":428},[211,2053,643],{"class":326},[211,2055,2056],{"class":220},"Documentation Tools",[211,2058,643],{"class":326},[211,2060,651],{"class":326},[211,2062,345],{"class":326},[211,2064,2065,2067,2069,2071,2073,2075],{"class":213,"line":348},[211,2066,659],{"class":637},[211,2068,314],{"class":326},[211,2070,664],{"class":336},[211,2072,667],{"class":326},[211,2074,670],{"class":336},[211,2076,673],{"class":428},[211,2078,2079,2082,2084,2086,2088,2091,2093,2095,2097,2099,2101,2103,2105,2107,2109,2111,2113,2115,2118],{"class":213,"line":372},[211,2080,2081],{"class":326},"    {",[211,2083,728],{"class":685},[211,2085,314],{"class":326},[211,2087,502],{"class":326},[211,2089,2090],{"class":220},"List all docs",[211,2092,643],{"class":326},[211,2094,651],{"class":326},[211,2096,1013],{"class":685},[211,2098,314],{"class":326},[211,2100,708],{"class":428},[211,2102,711],{"class":326},[211,2104,714],{"class":685},[211,2106,314],{"class":326},[211,2108,502],{"class":326},[211,2110,1336],{"class":220},[211,2112,643],{"class":326},[211,2114,496],{"class":326},[211,2116,2117],{"class":428},"] ",[211,2119,2120],{"class":326},"},\n",[211,2122,2123,2125,2127,2129,2131,2134,2136,2138,2140,2142,2144,2146,2148,2150,2152,2154,2156,2158,2160],{"class":213,"line":392},[211,2124,2081],{"class":326},[211,2126,728],{"class":685},[211,2128,314],{"class":326},[211,2130,502],{"class":326},[211,2132,2133],{"class":220},"Get the intro page",[211,2135,643],{"class":326},[211,2137,651],{"class":326},[211,2139,1013],{"class":685},[211,2141,314],{"class":326},[211,2143,708],{"class":428},[211,2145,711],{"class":326},[211,2147,714],{"class":685},[211,2149,314],{"class":326},[211,2151,502],{"class":326},[211,2153,1386],{"class":220},[211,2155,643],{"class":326},[211,2157,496],{"class":326},[211,2159,2117],{"class":428},[211,2161,2120],{"class":326},[211,2163,2164,2166],{"class":213,"line":398},[211,2165,772],{"class":428},[211,2167,369],{"class":326},[211,2169,2170],{"class":213,"line":578},[211,2171,2172],{"class":422},"  // ...\n",[211,2174,2175,2177],{"class":213,"line":596},[211,2176,1044],{"class":326},[211,2178,855],{"class":428},[211,2180,2181],{"class":213,"line":629},[211,2182,441],{"emptyLinePlaceholder":440},[211,2184,2185],{"class":213,"line":634},[211,2186,2187],{"class":422},"// API tools\n",[211,2189,2190,2192,2194,2196,2199,2201,2203],{"class":213,"line":656},[211,2191,364],{"class":637},[211,2193,640],{"class":428},[211,2195,643],{"class":326},[211,2197,2198],{"class":220},"API Tools",[211,2200,643],{"class":326},[211,2202,651],{"class":326},[211,2204,345],{"class":326},[211,2206,2207,2209,2211,2213,2215,2217],{"class":213,"line":676},[211,2208,659],{"class":637},[211,2210,314],{"class":326},[211,2212,664],{"class":336},[211,2214,667],{"class":326},[211,2216,670],{"class":336},[211,2218,673],{"class":428},[211,2220,2221,2223,2225,2227,2229,2232,2234,2236,2238,2240,2242,2244,2246,2248,2250,2253,2255,2257,2259],{"class":213,"line":682},[211,2222,2081],{"class":326},[211,2224,728],{"class":685},[211,2226,314],{"class":326},[211,2228,502],{"class":326},[211,2230,2231],{"class":220},"Fetch user data",[211,2233,643],{"class":326},[211,2235,651],{"class":326},[211,2237,1013],{"class":685},[211,2239,314],{"class":326},[211,2241,708],{"class":428},[211,2243,711],{"class":326},[211,2245,714],{"class":685},[211,2247,314],{"class":326},[211,2249,502],{"class":326},[211,2251,2252],{"class":220},"get-user",[211,2254,643],{"class":326},[211,2256,496],{"class":326},[211,2258,2117],{"class":428},[211,2260,2120],{"class":326},[211,2262,2263,2265,2267,2269,2271,2274,2276,2278,2280,2282,2284,2286,2288,2290,2292,2295,2297,2299,2301],{"class":213,"line":700},[211,2264,2081],{"class":326},[211,2266,728],{"class":685},[211,2268,314],{"class":326},[211,2270,502],{"class":326},[211,2272,2273],{"class":220},"Create a new post",[211,2275,643],{"class":326},[211,2277,651],{"class":326},[211,2279,1013],{"class":685},[211,2281,314],{"class":326},[211,2283,708],{"class":428},[211,2285,711],{"class":326},[211,2287,714],{"class":685},[211,2289,314],{"class":326},[211,2291,502],{"class":326},[211,2293,2294],{"class":220},"create-post",[211,2296,643],{"class":326},[211,2298,496],{"class":326},[211,2300,2117],{"class":428},[211,2302,2120],{"class":326},[211,2304,2305,2307],{"class":213,"line":763},[211,2306,772],{"class":428},[211,2308,369],{"class":326},[211,2310,2311],{"class":213,"line":769},[211,2312,2172],{"class":422},[211,2314,2315,2317],{"class":213,"line":777},[211,2316,1044],{"class":326},[211,2318,855],{"class":428},[133,2320,2322],{"id":2321},"tips","Tips",[168,2324,2325,2332,2338,2344,2350],{},[171,2326,2327,2331],{},[2328,2329,2330],"strong",{},"Keep prompts specific"," so the model chooses the intended tool",[171,2333,2334,2337],{},[2328,2335,2336],{},"Use realistic inputs"," that match how users phrase requests",[171,2339,2340,2343],{},[2328,2341,2342],{},"Start with happy-path cases"," before adding edge cases",[171,2345,2346,2349],{},[2328,2347,2348],{},"Test parameter extraction"," by including specific values in your prompts",[171,2351,2352,2355],{},[2328,2353,2354],{},"Run evals before deploying"," to catch regressions in tool behavior",[2357,2358,2359],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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 .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}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 .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}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 .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 .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}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}",{"title":207,"searchDepth":330,"depth":330,"links":2361},[2362,2363,2364,2370,2371,2372,2377],{"id":135,"depth":330,"text":136},{"id":165,"depth":330,"text":166},{"id":184,"depth":330,"text":185,"children":2365},[2366,2367,2368,2369],{"id":192,"depth":348,"text":193},{"id":306,"depth":348,"text":307},{"id":404,"depth":348,"text":405},{"id":459,"depth":348,"text":460},{"id":1059,"depth":330,"text":1060},{"id":1227,"depth":330,"text":1228},{"id":1254,"depth":330,"text":1255,"children":2373},[2374,2375,2376],{"id":1258,"depth":348,"text":1259},{"id":1650,"depth":348,"text":1651},{"id":2031,"depth":348,"text":2032},{"id":2321,"depth":330,"text":2322},"Evaluate MCP tools and workflows with Evalite and the AI SDK MCP client.","md",null,{},{"icon":97},{"title":94,"description":2378},"ttpYq7YTR4uFBTWFI5eyA7zcKpgEyZVJls0h7xkjKE8",[2386,2388],{"title":89,"path":90,"stem":91,"description":2387,"icon":92,"children":-1},"Use Nuxt hooks to extend and customize the MCP module.",{"title":104,"path":105,"stem":106,"description":2389,"icon":107,"children":-1},"Secure your MCP endpoints with Bearer token authentication.",1770606002773]