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