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