@mastra/mcp-docs-server 1.1.5 → 1.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (556) hide show
  1. package/.docs/docs/agents/adding-voice.md +349 -0
  2. package/.docs/docs/agents/agent-approval.md +558 -0
  3. package/.docs/docs/agents/agent-memory.md +209 -0
  4. package/.docs/docs/agents/guardrails.md +374 -0
  5. package/.docs/docs/agents/network-approval.md +275 -0
  6. package/.docs/docs/agents/networks.md +299 -0
  7. package/.docs/docs/agents/overview.md +304 -0
  8. package/.docs/docs/agents/processors.md +622 -0
  9. package/.docs/docs/agents/structured-output.md +273 -0
  10. package/.docs/docs/agents/supervisor-agents.md +304 -0
  11. package/.docs/docs/agents/using-tools.md +214 -0
  12. package/.docs/docs/build-with-ai/mcp-docs-server.md +238 -0
  13. package/.docs/docs/build-with-ai/skills.md +35 -0
  14. package/.docs/docs/community/contributing-templates.md +3 -0
  15. package/.docs/docs/community/discord.md +9 -0
  16. package/.docs/docs/community/licensing.md +66 -0
  17. package/.docs/docs/deployment/cloud-providers.md +15 -0
  18. package/.docs/docs/deployment/mastra-server.md +122 -0
  19. package/.docs/docs/deployment/monorepo.md +142 -0
  20. package/.docs/docs/deployment/overview.md +62 -0
  21. package/.docs/docs/deployment/studio.md +239 -0
  22. package/.docs/docs/deployment/web-framework.md +52 -0
  23. package/.docs/docs/deployment/workflow-runners.md +9 -0
  24. package/.docs/docs/evals/built-in-scorers.md +47 -0
  25. package/.docs/docs/evals/custom-scorers.md +519 -0
  26. package/.docs/docs/evals/overview.md +141 -0
  27. package/.docs/docs/evals/running-in-ci.md +124 -0
  28. package/.docs/docs/getting-started/build-with-ai.md +68 -0
  29. package/.docs/docs/getting-started/manual-install.md +226 -0
  30. package/.docs/docs/getting-started/project-structure.md +60 -0
  31. package/.docs/docs/getting-started/start.md +28 -0
  32. package/.docs/docs/getting-started/studio.md +101 -0
  33. package/.docs/docs/index.md +43 -0
  34. package/.docs/docs/mastra-cloud/deployment.md +77 -0
  35. package/.docs/docs/mastra-cloud/observability.md +38 -0
  36. package/.docs/docs/mastra-cloud/overview.md +23 -0
  37. package/.docs/docs/mastra-cloud/setup.md +42 -0
  38. package/.docs/docs/mastra-cloud/studio.md +24 -0
  39. package/.docs/docs/mastra-code/configuration.md +299 -0
  40. package/.docs/docs/mastra-code/customization.md +228 -0
  41. package/.docs/docs/mastra-code/modes.md +104 -0
  42. package/.docs/docs/mastra-code/overview.md +135 -0
  43. package/.docs/docs/mastra-code/tools.md +229 -0
  44. package/.docs/docs/mcp/overview.md +373 -0
  45. package/.docs/docs/mcp/publishing-mcp-server.md +95 -0
  46. package/.docs/docs/memory/memory-processors.md +314 -0
  47. package/.docs/docs/memory/message-history.md +260 -0
  48. package/.docs/docs/memory/observational-memory.md +248 -0
  49. package/.docs/docs/memory/overview.md +45 -0
  50. package/.docs/docs/memory/semantic-recall.md +272 -0
  51. package/.docs/docs/memory/storage.md +261 -0
  52. package/.docs/docs/memory/working-memory.md +400 -0
  53. package/.docs/docs/observability/datasets/overview.md +198 -0
  54. package/.docs/docs/observability/datasets/running-experiments.md +274 -0
  55. package/.docs/docs/observability/logging.md +99 -0
  56. package/.docs/docs/observability/overview.md +70 -0
  57. package/.docs/docs/observability/tracing/bridges/otel.md +209 -0
  58. package/.docs/docs/observability/tracing/exporters/arize.md +272 -0
  59. package/.docs/docs/observability/tracing/exporters/braintrust.md +111 -0
  60. package/.docs/docs/observability/tracing/exporters/cloud.md +127 -0
  61. package/.docs/docs/observability/tracing/exporters/datadog.md +187 -0
  62. package/.docs/docs/observability/tracing/exporters/default.md +209 -0
  63. package/.docs/docs/observability/tracing/exporters/laminar.md +100 -0
  64. package/.docs/docs/observability/tracing/exporters/langfuse.md +213 -0
  65. package/.docs/docs/observability/tracing/exporters/langsmith.md +198 -0
  66. package/.docs/docs/observability/tracing/exporters/otel.md +476 -0
  67. package/.docs/docs/observability/tracing/exporters/posthog.md +148 -0
  68. package/.docs/docs/observability/tracing/exporters/sentry.md +208 -0
  69. package/.docs/docs/observability/tracing/overview.md +1112 -0
  70. package/.docs/docs/observability/tracing/processors/sensitive-data-filter.md +300 -0
  71. package/.docs/docs/rag/chunking-and-embedding.md +183 -0
  72. package/.docs/docs/rag/graph-rag.md +215 -0
  73. package/.docs/docs/rag/overview.md +72 -0
  74. package/.docs/docs/rag/retrieval.md +515 -0
  75. package/.docs/docs/rag/vector-databases.md +645 -0
  76. package/.docs/docs/server/auth/auth0.md +220 -0
  77. package/.docs/docs/server/auth/better-auth.md +203 -0
  78. package/.docs/docs/server/auth/clerk.md +132 -0
  79. package/.docs/docs/server/auth/composite-auth.md +234 -0
  80. package/.docs/docs/server/auth/custom-auth-provider.md +513 -0
  81. package/.docs/docs/server/auth/firebase.md +272 -0
  82. package/.docs/docs/server/auth/jwt.md +110 -0
  83. package/.docs/docs/server/auth/simple-auth.md +180 -0
  84. package/.docs/docs/server/auth/supabase.md +117 -0
  85. package/.docs/docs/server/auth/workos.md +186 -0
  86. package/.docs/docs/server/auth.md +38 -0
  87. package/.docs/docs/server/custom-adapters.md +378 -0
  88. package/.docs/docs/server/custom-api-routes.md +267 -0
  89. package/.docs/docs/server/mastra-client.md +243 -0
  90. package/.docs/docs/server/mastra-server.md +71 -0
  91. package/.docs/docs/server/middleware.md +225 -0
  92. package/.docs/docs/server/request-context.md +471 -0
  93. package/.docs/docs/server/server-adapters.md +547 -0
  94. package/.docs/docs/streaming/events.md +237 -0
  95. package/.docs/docs/streaming/overview.md +175 -0
  96. package/.docs/docs/streaming/tool-streaming.md +175 -0
  97. package/.docs/docs/streaming/workflow-streaming.md +109 -0
  98. package/.docs/docs/voice/overview.md +959 -0
  99. package/.docs/docs/voice/speech-to-speech.md +102 -0
  100. package/.docs/docs/voice/speech-to-text.md +79 -0
  101. package/.docs/docs/voice/text-to-speech.md +83 -0
  102. package/.docs/docs/workflows/agents-and-tools.md +166 -0
  103. package/.docs/docs/workflows/control-flow.md +822 -0
  104. package/.docs/docs/workflows/error-handling.md +360 -0
  105. package/.docs/docs/workflows/human-in-the-loop.md +215 -0
  106. package/.docs/docs/workflows/overview.md +370 -0
  107. package/.docs/docs/workflows/snapshots.md +238 -0
  108. package/.docs/docs/workflows/suspend-and-resume.md +205 -0
  109. package/.docs/docs/workflows/time-travel.md +309 -0
  110. package/.docs/docs/workflows/workflow-state.md +181 -0
  111. package/.docs/docs/workspace/filesystem.md +164 -0
  112. package/.docs/docs/workspace/overview.md +239 -0
  113. package/.docs/docs/workspace/sandbox.md +63 -0
  114. package/.docs/docs/workspace/search.md +243 -0
  115. package/.docs/docs/workspace/skills.md +169 -0
  116. package/.docs/guides/agent-frameworks/ai-sdk.md +140 -0
  117. package/.docs/guides/build-your-ui/ai-sdk-ui.md +1499 -0
  118. package/.docs/guides/build-your-ui/assistant-ui.md +156 -0
  119. package/.docs/guides/build-your-ui/copilotkit.md +289 -0
  120. package/.docs/guides/deployment/amazon-ec2.md +130 -0
  121. package/.docs/guides/deployment/aws-lambda.md +248 -0
  122. package/.docs/guides/deployment/azure-app-services.md +114 -0
  123. package/.docs/guides/deployment/cloudflare.md +99 -0
  124. package/.docs/guides/deployment/digital-ocean.md +168 -0
  125. package/.docs/guides/deployment/inngest.md +682 -0
  126. package/.docs/guides/deployment/netlify.md +77 -0
  127. package/.docs/guides/deployment/vercel.md +101 -0
  128. package/.docs/guides/getting-started/astro.md +398 -0
  129. package/.docs/guides/getting-started/electron.md +504 -0
  130. package/.docs/guides/getting-started/express.md +251 -0
  131. package/.docs/guides/getting-started/hono.md +190 -0
  132. package/.docs/guides/getting-started/next-js.md +347 -0
  133. package/.docs/guides/getting-started/nuxt.md +497 -0
  134. package/.docs/guides/getting-started/quickstart.md +67 -0
  135. package/.docs/guides/getting-started/sveltekit.md +296 -0
  136. package/.docs/guides/getting-started/vite-react.md +425 -0
  137. package/.docs/guides/guide/ai-recruiter.md +226 -0
  138. package/.docs/guides/guide/chef-michel.md +211 -0
  139. package/.docs/guides/guide/code-review-bot.md +226 -0
  140. package/.docs/guides/guide/dev-assistant.md +307 -0
  141. package/.docs/guides/guide/docs-manager.md +238 -0
  142. package/.docs/guides/guide/github-actions-pr-description.md +236 -0
  143. package/.docs/guides/guide/notes-mcp-server.md +416 -0
  144. package/.docs/guides/guide/research-assistant.md +348 -0
  145. package/.docs/guides/guide/research-coordinator.md +416 -0
  146. package/.docs/guides/guide/stock-agent.md +132 -0
  147. package/.docs/guides/guide/web-search.md +320 -0
  148. package/.docs/guides/guide/whatsapp-chat-bot.md +405 -0
  149. package/.docs/guides/index.md +3 -0
  150. package/.docs/guides/migrations/agentnetwork.md +97 -0
  151. package/.docs/guides/migrations/ai-sdk-v4-to-v5.md +112 -0
  152. package/.docs/guides/migrations/network-to-supervisor.md +261 -0
  153. package/.docs/guides/migrations/upgrade-to-v1/agent.md +404 -0
  154. package/.docs/guides/migrations/upgrade-to-v1/cli.md +57 -0
  155. package/.docs/guides/migrations/upgrade-to-v1/client.md +337 -0
  156. package/.docs/guides/migrations/upgrade-to-v1/deployment.md +37 -0
  157. package/.docs/guides/migrations/upgrade-to-v1/evals.md +239 -0
  158. package/.docs/guides/migrations/upgrade-to-v1/mastra.md +143 -0
  159. package/.docs/guides/migrations/upgrade-to-v1/mcp.md +97 -0
  160. package/.docs/guides/migrations/upgrade-to-v1/memory.md +285 -0
  161. package/.docs/guides/migrations/upgrade-to-v1/overview.md +119 -0
  162. package/.docs/guides/migrations/upgrade-to-v1/processors.md +68 -0
  163. package/.docs/guides/migrations/upgrade-to-v1/rag.md +42 -0
  164. package/.docs/guides/migrations/upgrade-to-v1/storage.md +553 -0
  165. package/.docs/guides/migrations/upgrade-to-v1/tools.md +180 -0
  166. package/.docs/guides/migrations/upgrade-to-v1/tracing.md +412 -0
  167. package/.docs/guides/migrations/upgrade-to-v1/vectors.md +87 -0
  168. package/.docs/guides/migrations/upgrade-to-v1/voice.md +30 -0
  169. package/.docs/guides/migrations/upgrade-to-v1/workflows.md +341 -0
  170. package/.docs/guides/migrations/vnext-to-standard-apis.md +362 -0
  171. package/.docs/models/embeddings.md +161 -0
  172. package/.docs/models/gateways/azure-openai.md +128 -0
  173. package/.docs/models/gateways/custom-gateways.md +545 -0
  174. package/.docs/models/gateways/netlify.md +88 -0
  175. package/.docs/models/gateways/openrouter.md +219 -0
  176. package/.docs/models/gateways/vercel.md +225 -0
  177. package/.docs/models/gateways.md +14 -0
  178. package/.docs/models/index.md +286 -0
  179. package/.docs/models/providers/302ai.md +134 -0
  180. package/.docs/models/providers/abacus.md +125 -0
  181. package/.docs/models/providers/agentrouter.md +90 -0
  182. package/.docs/models/providers/aihubmix.md +107 -0
  183. package/.docs/models/providers/alibaba-cn.md +135 -0
  184. package/.docs/models/providers/alibaba.md +111 -0
  185. package/.docs/models/providers/amazon-bedrock.md +33 -0
  186. package/.docs/models/providers/anthropic.md +153 -0
  187. package/.docs/models/providers/azure.md +33 -0
  188. package/.docs/models/providers/bailing.md +72 -0
  189. package/.docs/models/providers/baseten.md +77 -0
  190. package/.docs/models/providers/berget.md +78 -0
  191. package/.docs/models/providers/cerebras.md +101 -0
  192. package/.docs/models/providers/chutes.md +136 -0
  193. package/.docs/models/providers/cloudflare-ai-gateway.md +33 -0
  194. package/.docs/models/providers/cloudflare-workers-ai.md +109 -0
  195. package/.docs/models/providers/cohere.md +33 -0
  196. package/.docs/models/providers/cortecs.md +91 -0
  197. package/.docs/models/providers/deepinfra.md +112 -0
  198. package/.docs/models/providers/deepseek.md +88 -0
  199. package/.docs/models/providers/fastrouter.md +84 -0
  200. package/.docs/models/providers/fireworks-ai.md +89 -0
  201. package/.docs/models/providers/firmware.md +85 -0
  202. package/.docs/models/providers/friendli.md +78 -0
  203. package/.docs/models/providers/github-models.md +125 -0
  204. package/.docs/models/providers/google-vertex.md +33 -0
  205. package/.docs/models/providers/google.md +159 -0
  206. package/.docs/models/providers/groq.md +107 -0
  207. package/.docs/models/providers/helicone.md +161 -0
  208. package/.docs/models/providers/huggingface.md +90 -0
  209. package/.docs/models/providers/iflowcn.md +84 -0
  210. package/.docs/models/providers/inception.md +72 -0
  211. package/.docs/models/providers/inference.md +79 -0
  212. package/.docs/models/providers/io-intelligence.md +87 -0
  213. package/.docs/models/providers/io-net.md +87 -0
  214. package/.docs/models/providers/jiekou.md +131 -0
  215. package/.docs/models/providers/kilo.md +333 -0
  216. package/.docs/models/providers/kimi-for-coding.md +100 -0
  217. package/.docs/models/providers/kuae-cloud-coding-plan.md +71 -0
  218. package/.docs/models/providers/llama.md +77 -0
  219. package/.docs/models/providers/lmstudio.md +73 -0
  220. package/.docs/models/providers/lucidquery.md +72 -0
  221. package/.docs/models/providers/minimax-cn-coding-plan.md +102 -0
  222. package/.docs/models/providers/minimax-cn.md +102 -0
  223. package/.docs/models/providers/minimax-coding-plan.md +102 -0
  224. package/.docs/models/providers/minimax.md +104 -0
  225. package/.docs/models/providers/mistral.md +124 -0
  226. package/.docs/models/providers/moark.md +72 -0
  227. package/.docs/models/providers/modelscope.md +77 -0
  228. package/.docs/models/providers/moonshotai-cn.md +76 -0
  229. package/.docs/models/providers/moonshotai.md +76 -0
  230. package/.docs/models/providers/morph.md +73 -0
  231. package/.docs/models/providers/nano-gpt.md +103 -0
  232. package/.docs/models/providers/nebius.md +116 -0
  233. package/.docs/models/providers/nova.md +72 -0
  234. package/.docs/models/providers/novita-ai.md +154 -0
  235. package/.docs/models/providers/nvidia.md +141 -0
  236. package/.docs/models/providers/ollama-cloud.md +103 -0
  237. package/.docs/models/providers/ollama.md +33 -0
  238. package/.docs/models/providers/openai.md +193 -0
  239. package/.docs/models/providers/opencode.md +100 -0
  240. package/.docs/models/providers/ovhcloud.md +83 -0
  241. package/.docs/models/providers/perplexity.md +100 -0
  242. package/.docs/models/providers/poe.md +183 -0
  243. package/.docs/models/providers/privatemode-ai.md +75 -0
  244. package/.docs/models/providers/requesty.md +90 -0
  245. package/.docs/models/providers/scaleway.md +84 -0
  246. package/.docs/models/providers/siliconflow-cn.md +138 -0
  247. package/.docs/models/providers/siliconflow.md +140 -0
  248. package/.docs/models/providers/stackit.md +78 -0
  249. package/.docs/models/providers/stepfun.md +73 -0
  250. package/.docs/models/providers/submodel.md +79 -0
  251. package/.docs/models/providers/synthetic.md +96 -0
  252. package/.docs/models/providers/togetherai.md +115 -0
  253. package/.docs/models/providers/upstage.md +73 -0
  254. package/.docs/models/providers/venice.md +95 -0
  255. package/.docs/models/providers/vivgrid.md +106 -0
  256. package/.docs/models/providers/vultr.md +75 -0
  257. package/.docs/models/providers/wandb.md +80 -0
  258. package/.docs/models/providers/xai.md +141 -0
  259. package/.docs/models/providers/xiaomi.md +71 -0
  260. package/.docs/models/providers/zai-coding-plan.md +80 -0
  261. package/.docs/models/providers/zai.md +79 -0
  262. package/.docs/models/providers/zenmux.md +161 -0
  263. package/.docs/models/providers/zhipuai-coding-plan.md +79 -0
  264. package/.docs/models/providers/zhipuai.md +79 -0
  265. package/.docs/models/providers.md +81 -0
  266. package/.docs/reference/agents/agent.md +141 -0
  267. package/.docs/reference/agents/generate.md +186 -0
  268. package/.docs/reference/agents/generateLegacy.md +173 -0
  269. package/.docs/reference/agents/getDefaultGenerateOptions.md +36 -0
  270. package/.docs/reference/agents/getDefaultOptions.md +34 -0
  271. package/.docs/reference/agents/getDefaultStreamOptions.md +36 -0
  272. package/.docs/reference/agents/getDescription.md +21 -0
  273. package/.docs/reference/agents/getInstructions.md +34 -0
  274. package/.docs/reference/agents/getLLM.md +37 -0
  275. package/.docs/reference/agents/getMemory.md +34 -0
  276. package/.docs/reference/agents/getModel.md +34 -0
  277. package/.docs/reference/agents/getTools.md +29 -0
  278. package/.docs/reference/agents/getVoice.md +34 -0
  279. package/.docs/reference/agents/listAgents.md +35 -0
  280. package/.docs/reference/agents/listScorers.md +34 -0
  281. package/.docs/reference/agents/listTools.md +34 -0
  282. package/.docs/reference/agents/listWorkflows.md +34 -0
  283. package/.docs/reference/agents/network.md +133 -0
  284. package/.docs/reference/ai-sdk/chat-route.md +82 -0
  285. package/.docs/reference/ai-sdk/handle-chat-stream.md +53 -0
  286. package/.docs/reference/ai-sdk/handle-network-stream.md +37 -0
  287. package/.docs/reference/ai-sdk/handle-workflow-stream.md +55 -0
  288. package/.docs/reference/ai-sdk/network-route.md +74 -0
  289. package/.docs/reference/ai-sdk/to-ai-sdk-stream.md +231 -0
  290. package/.docs/reference/ai-sdk/to-ai-sdk-v4-messages.md +79 -0
  291. package/.docs/reference/ai-sdk/to-ai-sdk-v5-messages.md +76 -0
  292. package/.docs/reference/ai-sdk/with-mastra.md +59 -0
  293. package/.docs/reference/ai-sdk/workflow-route.md +79 -0
  294. package/.docs/reference/auth/auth0.md +73 -0
  295. package/.docs/reference/auth/better-auth.md +71 -0
  296. package/.docs/reference/auth/clerk.md +36 -0
  297. package/.docs/reference/auth/firebase.md +80 -0
  298. package/.docs/reference/auth/jwt.md +26 -0
  299. package/.docs/reference/auth/supabase.md +33 -0
  300. package/.docs/reference/auth/workos.md +84 -0
  301. package/.docs/reference/cli/create-mastra.md +137 -0
  302. package/.docs/reference/cli/mastra.md +336 -0
  303. package/.docs/reference/client-js/agents.md +437 -0
  304. package/.docs/reference/client-js/error-handling.md +16 -0
  305. package/.docs/reference/client-js/logs.md +24 -0
  306. package/.docs/reference/client-js/mastra-client.md +63 -0
  307. package/.docs/reference/client-js/memory.md +221 -0
  308. package/.docs/reference/client-js/observability.md +72 -0
  309. package/.docs/reference/client-js/telemetry.md +20 -0
  310. package/.docs/reference/client-js/tools.md +44 -0
  311. package/.docs/reference/client-js/vectors.md +79 -0
  312. package/.docs/reference/client-js/workflows.md +199 -0
  313. package/.docs/reference/configuration.md +752 -0
  314. package/.docs/reference/core/addGateway.md +42 -0
  315. package/.docs/reference/core/getAgent.md +21 -0
  316. package/.docs/reference/core/getAgentById.md +21 -0
  317. package/.docs/reference/core/getDeployer.md +22 -0
  318. package/.docs/reference/core/getGateway.md +38 -0
  319. package/.docs/reference/core/getGatewayById.md +41 -0
  320. package/.docs/reference/core/getLogger.md +22 -0
  321. package/.docs/reference/core/getMCPServer.md +47 -0
  322. package/.docs/reference/core/getMCPServerById.md +55 -0
  323. package/.docs/reference/core/getMemory.md +50 -0
  324. package/.docs/reference/core/getScorer.md +54 -0
  325. package/.docs/reference/core/getScorerById.md +54 -0
  326. package/.docs/reference/core/getServer.md +22 -0
  327. package/.docs/reference/core/getStorage.md +22 -0
  328. package/.docs/reference/core/getStoredAgentById.md +89 -0
  329. package/.docs/reference/core/getTelemetry.md +22 -0
  330. package/.docs/reference/core/getVector.md +22 -0
  331. package/.docs/reference/core/getWorkflow.md +42 -0
  332. package/.docs/reference/core/listAgents.md +21 -0
  333. package/.docs/reference/core/listGateways.md +40 -0
  334. package/.docs/reference/core/listLogs.md +38 -0
  335. package/.docs/reference/core/listLogsByRunId.md +36 -0
  336. package/.docs/reference/core/listMCPServers.md +55 -0
  337. package/.docs/reference/core/listMemory.md +56 -0
  338. package/.docs/reference/core/listScorers.md +29 -0
  339. package/.docs/reference/core/listStoredAgents.md +93 -0
  340. package/.docs/reference/core/listVectors.md +22 -0
  341. package/.docs/reference/core/listWorkflows.md +21 -0
  342. package/.docs/reference/core/mastra-class.md +66 -0
  343. package/.docs/reference/core/mastra-model-gateway.md +153 -0
  344. package/.docs/reference/core/setLogger.md +26 -0
  345. package/.docs/reference/core/setStorage.md +27 -0
  346. package/.docs/reference/datasets/addItem.md +37 -0
  347. package/.docs/reference/datasets/addItems.md +35 -0
  348. package/.docs/reference/datasets/compareExperiments.md +52 -0
  349. package/.docs/reference/datasets/create.md +51 -0
  350. package/.docs/reference/datasets/dataset.md +82 -0
  351. package/.docs/reference/datasets/datasets-manager.md +94 -0
  352. package/.docs/reference/datasets/delete.md +25 -0
  353. package/.docs/reference/datasets/deleteExperiment.md +27 -0
  354. package/.docs/reference/datasets/deleteItem.md +27 -0
  355. package/.docs/reference/datasets/deleteItems.md +29 -0
  356. package/.docs/reference/datasets/get.md +31 -0
  357. package/.docs/reference/datasets/getDetails.md +47 -0
  358. package/.docs/reference/datasets/getExperiment.md +30 -0
  359. package/.docs/reference/datasets/getItem.md +33 -0
  360. package/.docs/reference/datasets/getItemHistory.md +31 -0
  361. package/.docs/reference/datasets/list.md +31 -0
  362. package/.docs/reference/datasets/listExperimentResults.md +39 -0
  363. package/.docs/reference/datasets/listExperiments.md +33 -0
  364. package/.docs/reference/datasets/listItems.md +46 -0
  365. package/.docs/reference/datasets/listVersions.md +33 -0
  366. package/.docs/reference/datasets/startExperiment.md +62 -0
  367. package/.docs/reference/datasets/startExperimentAsync.md +43 -0
  368. package/.docs/reference/datasets/update.md +48 -0
  369. package/.docs/reference/datasets/updateItem.md +38 -0
  370. package/.docs/reference/deployer/cloudflare.md +79 -0
  371. package/.docs/reference/deployer/netlify.md +80 -0
  372. package/.docs/reference/deployer/vercel.md +91 -0
  373. package/.docs/reference/deployer.md +100 -0
  374. package/.docs/reference/evals/answer-relevancy.md +105 -0
  375. package/.docs/reference/evals/answer-similarity.md +99 -0
  376. package/.docs/reference/evals/bias.md +120 -0
  377. package/.docs/reference/evals/completeness.md +136 -0
  378. package/.docs/reference/evals/content-similarity.md +101 -0
  379. package/.docs/reference/evals/context-precision.md +196 -0
  380. package/.docs/reference/evals/context-relevance.md +531 -0
  381. package/.docs/reference/evals/create-scorer.md +270 -0
  382. package/.docs/reference/evals/faithfulness.md +114 -0
  383. package/.docs/reference/evals/hallucination.md +213 -0
  384. package/.docs/reference/evals/keyword-coverage.md +128 -0
  385. package/.docs/reference/evals/mastra-scorer.md +123 -0
  386. package/.docs/reference/evals/noise-sensitivity.md +675 -0
  387. package/.docs/reference/evals/prompt-alignment.md +614 -0
  388. package/.docs/reference/evals/run-evals.md +179 -0
  389. package/.docs/reference/evals/scorer-utils.md +326 -0
  390. package/.docs/reference/evals/textual-difference.md +113 -0
  391. package/.docs/reference/evals/tone-consistency.md +119 -0
  392. package/.docs/reference/evals/tool-call-accuracy.md +533 -0
  393. package/.docs/reference/evals/toxicity.md +123 -0
  394. package/.docs/reference/harness/harness-class.md +708 -0
  395. package/.docs/reference/index.md +277 -0
  396. package/.docs/reference/logging/pino-logger.md +117 -0
  397. package/.docs/reference/mastra-code/createMastraCode.md +108 -0
  398. package/.docs/reference/memory/clone-utilities.md +199 -0
  399. package/.docs/reference/memory/cloneThread.md +130 -0
  400. package/.docs/reference/memory/createThread.md +68 -0
  401. package/.docs/reference/memory/deleteMessages.md +38 -0
  402. package/.docs/reference/memory/getThreadById.md +24 -0
  403. package/.docs/reference/memory/listThreads.md +145 -0
  404. package/.docs/reference/memory/memory-class.md +147 -0
  405. package/.docs/reference/memory/observational-memory.md +565 -0
  406. package/.docs/reference/memory/recall.md +91 -0
  407. package/.docs/reference/observability/tracing/bridges/otel.md +131 -0
  408. package/.docs/reference/observability/tracing/configuration.md +178 -0
  409. package/.docs/reference/observability/tracing/exporters/arize.md +141 -0
  410. package/.docs/reference/observability/tracing/exporters/braintrust.md +93 -0
  411. package/.docs/reference/observability/tracing/exporters/cloud-exporter.md +163 -0
  412. package/.docs/reference/observability/tracing/exporters/console-exporter.md +138 -0
  413. package/.docs/reference/observability/tracing/exporters/datadog.md +116 -0
  414. package/.docs/reference/observability/tracing/exporters/default-exporter.md +174 -0
  415. package/.docs/reference/observability/tracing/exporters/laminar.md +78 -0
  416. package/.docs/reference/observability/tracing/exporters/langfuse.md +134 -0
  417. package/.docs/reference/observability/tracing/exporters/langsmith.md +108 -0
  418. package/.docs/reference/observability/tracing/exporters/otel.md +199 -0
  419. package/.docs/reference/observability/tracing/exporters/posthog.md +92 -0
  420. package/.docs/reference/observability/tracing/exporters/sentry.md +184 -0
  421. package/.docs/reference/observability/tracing/instances.md +107 -0
  422. package/.docs/reference/observability/tracing/interfaces.md +743 -0
  423. package/.docs/reference/observability/tracing/processors/sensitive-data-filter.md +144 -0
  424. package/.docs/reference/observability/tracing/spans.md +224 -0
  425. package/.docs/reference/processors/batch-parts-processor.md +61 -0
  426. package/.docs/reference/processors/language-detector.md +82 -0
  427. package/.docs/reference/processors/message-history-processor.md +85 -0
  428. package/.docs/reference/processors/moderation-processor.md +104 -0
  429. package/.docs/reference/processors/pii-detector.md +108 -0
  430. package/.docs/reference/processors/processor-interface.md +521 -0
  431. package/.docs/reference/processors/prompt-injection-detector.md +72 -0
  432. package/.docs/reference/processors/semantic-recall-processor.md +117 -0
  433. package/.docs/reference/processors/system-prompt-scrubber.md +80 -0
  434. package/.docs/reference/processors/token-limiter-processor.md +115 -0
  435. package/.docs/reference/processors/tool-call-filter.md +85 -0
  436. package/.docs/reference/processors/tool-search-processor.md +111 -0
  437. package/.docs/reference/processors/unicode-normalizer.md +62 -0
  438. package/.docs/reference/processors/working-memory-processor.md +152 -0
  439. package/.docs/reference/rag/chunk.md +221 -0
  440. package/.docs/reference/rag/database-config.md +261 -0
  441. package/.docs/reference/rag/document.md +114 -0
  442. package/.docs/reference/rag/embeddings.md +92 -0
  443. package/.docs/reference/rag/extract-params.md +168 -0
  444. package/.docs/reference/rag/graph-rag.md +111 -0
  445. package/.docs/reference/rag/metadata-filters.md +216 -0
  446. package/.docs/reference/rag/rerank.md +75 -0
  447. package/.docs/reference/rag/rerankWithScorer.md +80 -0
  448. package/.docs/reference/server/create-route.md +262 -0
  449. package/.docs/reference/server/express-adapter.md +176 -0
  450. package/.docs/reference/server/fastify-adapter.md +90 -0
  451. package/.docs/reference/server/hono-adapter.md +162 -0
  452. package/.docs/reference/server/koa-adapter.md +127 -0
  453. package/.docs/reference/server/mastra-server.md +298 -0
  454. package/.docs/reference/server/register-api-route.md +249 -0
  455. package/.docs/reference/server/routes.md +306 -0
  456. package/.docs/reference/storage/cloudflare-d1.md +218 -0
  457. package/.docs/reference/storage/cloudflare.md +88 -0
  458. package/.docs/reference/storage/composite.md +235 -0
  459. package/.docs/reference/storage/convex.md +161 -0
  460. package/.docs/reference/storage/dynamodb.md +282 -0
  461. package/.docs/reference/storage/lance.md +131 -0
  462. package/.docs/reference/storage/libsql.md +135 -0
  463. package/.docs/reference/storage/mongodb.md +262 -0
  464. package/.docs/reference/storage/mssql.md +157 -0
  465. package/.docs/reference/storage/overview.md +121 -0
  466. package/.docs/reference/storage/postgresql.md +526 -0
  467. package/.docs/reference/storage/upstash.md +160 -0
  468. package/.docs/reference/streaming/ChunkType.md +292 -0
  469. package/.docs/reference/streaming/agents/MastraModelOutput.md +182 -0
  470. package/.docs/reference/streaming/agents/stream.md +221 -0
  471. package/.docs/reference/streaming/agents/streamLegacy.md +142 -0
  472. package/.docs/reference/streaming/workflows/observeStream.md +42 -0
  473. package/.docs/reference/streaming/workflows/resumeStream.md +61 -0
  474. package/.docs/reference/streaming/workflows/stream.md +88 -0
  475. package/.docs/reference/streaming/workflows/timeTravelStream.md +142 -0
  476. package/.docs/reference/templates/overview.md +194 -0
  477. package/.docs/reference/tools/create-tool.md +237 -0
  478. package/.docs/reference/tools/document-chunker-tool.md +89 -0
  479. package/.docs/reference/tools/graph-rag-tool.md +182 -0
  480. package/.docs/reference/tools/mcp-client.md +954 -0
  481. package/.docs/reference/tools/mcp-server.md +1271 -0
  482. package/.docs/reference/tools/vector-query-tool.md +459 -0
  483. package/.docs/reference/vectors/astra.md +121 -0
  484. package/.docs/reference/vectors/chroma.md +264 -0
  485. package/.docs/reference/vectors/convex.md +300 -0
  486. package/.docs/reference/vectors/couchbase.md +226 -0
  487. package/.docs/reference/vectors/duckdb.md +318 -0
  488. package/.docs/reference/vectors/elasticsearch.md +189 -0
  489. package/.docs/reference/vectors/lance.md +220 -0
  490. package/.docs/reference/vectors/libsql.md +305 -0
  491. package/.docs/reference/vectors/mongodb.md +295 -0
  492. package/.docs/reference/vectors/opensearch.md +99 -0
  493. package/.docs/reference/vectors/pg.md +408 -0
  494. package/.docs/reference/vectors/pinecone.md +168 -0
  495. package/.docs/reference/vectors/qdrant.md +222 -0
  496. package/.docs/reference/vectors/s3vectors.md +277 -0
  497. package/.docs/reference/vectors/turbopuffer.md +157 -0
  498. package/.docs/reference/vectors/upstash.md +294 -0
  499. package/.docs/reference/vectors/vectorize.md +147 -0
  500. package/.docs/reference/voice/azure.md +148 -0
  501. package/.docs/reference/voice/cloudflare.md +83 -0
  502. package/.docs/reference/voice/composite-voice.md +121 -0
  503. package/.docs/reference/voice/deepgram.md +79 -0
  504. package/.docs/reference/voice/elevenlabs.md +98 -0
  505. package/.docs/reference/voice/google-gemini-live.md +378 -0
  506. package/.docs/reference/voice/google.md +228 -0
  507. package/.docs/reference/voice/mastra-voice.md +311 -0
  508. package/.docs/reference/voice/murf.md +122 -0
  509. package/.docs/reference/voice/openai-realtime.md +203 -0
  510. package/.docs/reference/voice/openai.md +88 -0
  511. package/.docs/reference/voice/playai.md +80 -0
  512. package/.docs/reference/voice/sarvam.md +126 -0
  513. package/.docs/reference/voice/speechify.md +75 -0
  514. package/.docs/reference/voice/voice.addInstructions.md +55 -0
  515. package/.docs/reference/voice/voice.addTools.md +67 -0
  516. package/.docs/reference/voice/voice.answer.md +54 -0
  517. package/.docs/reference/voice/voice.close.md +51 -0
  518. package/.docs/reference/voice/voice.connect.md +94 -0
  519. package/.docs/reference/voice/voice.events.md +37 -0
  520. package/.docs/reference/voice/voice.getSpeakers.md +129 -0
  521. package/.docs/reference/voice/voice.listen.md +164 -0
  522. package/.docs/reference/voice/voice.off.md +54 -0
  523. package/.docs/reference/voice/voice.on.md +111 -0
  524. package/.docs/reference/voice/voice.send.md +65 -0
  525. package/.docs/reference/voice/voice.speak.md +157 -0
  526. package/.docs/reference/voice/voice.updateConfig.md +60 -0
  527. package/.docs/reference/workflows/run-methods/cancel.md +86 -0
  528. package/.docs/reference/workflows/run-methods/restart.md +33 -0
  529. package/.docs/reference/workflows/run-methods/resume.md +59 -0
  530. package/.docs/reference/workflows/run-methods/start.md +58 -0
  531. package/.docs/reference/workflows/run-methods/startAsync.md +67 -0
  532. package/.docs/reference/workflows/run-methods/timeTravel.md +142 -0
  533. package/.docs/reference/workflows/run.md +59 -0
  534. package/.docs/reference/workflows/step.md +119 -0
  535. package/.docs/reference/workflows/workflow-methods/branch.md +25 -0
  536. package/.docs/reference/workflows/workflow-methods/commit.md +17 -0
  537. package/.docs/reference/workflows/workflow-methods/create-run.md +63 -0
  538. package/.docs/reference/workflows/workflow-methods/dountil.md +25 -0
  539. package/.docs/reference/workflows/workflow-methods/dowhile.md +25 -0
  540. package/.docs/reference/workflows/workflow-methods/foreach.md +118 -0
  541. package/.docs/reference/workflows/workflow-methods/map.md +93 -0
  542. package/.docs/reference/workflows/workflow-methods/parallel.md +21 -0
  543. package/.docs/reference/workflows/workflow-methods/sleep.md +35 -0
  544. package/.docs/reference/workflows/workflow-methods/sleepUntil.md +35 -0
  545. package/.docs/reference/workflows/workflow-methods/then.md +21 -0
  546. package/.docs/reference/workflows/workflow.md +157 -0
  547. package/.docs/reference/workspace/e2b-sandbox.md +289 -0
  548. package/.docs/reference/workspace/filesystem.md +255 -0
  549. package/.docs/reference/workspace/gcs-filesystem.md +174 -0
  550. package/.docs/reference/workspace/local-filesystem.md +343 -0
  551. package/.docs/reference/workspace/local-sandbox.md +301 -0
  552. package/.docs/reference/workspace/s3-filesystem.md +175 -0
  553. package/.docs/reference/workspace/sandbox.md +87 -0
  554. package/.docs/reference/workspace/workspace-class.md +244 -0
  555. package/CHANGELOG.md +16 -0
  556. package/package.json +6 -6
@@ -0,0 +1,416 @@
1
+ # Building a Research Coordinator with Supervisor Pattern
2
+
3
+ In this guide, you'll build a research coordinator that orchestrates multiple specialized agents using the supervisor pattern. The coordinator will delegate research tasks to a research agent and writing tasks to a writing agent, then synthesize the results into a comprehensive report.
4
+
5
+ You'll learn how to set up subagents with clear roles, configure a supervisor agent to coordinate them, use delegation hooks to control execution, and validate task completion with scorers.
6
+
7
+ ## Prerequisites
8
+
9
+ - Node.js `v22.13.0` or later installed
10
+ - An API key from a supported [Model Provider](https://mastra.ai/models)
11
+ - An existing Mastra project (Follow the [installation guide](https://mastra.ai/guides/getting-started/quickstart) to set up a new project)
12
+
13
+ ## Create the research agent
14
+
15
+ The research agent specializes in gathering factual information on any topic. It returns concise bullet-point summaries with key facts and sources.
16
+
17
+ Create a new file `src/mastra/agents/research-agent.ts`:
18
+
19
+ ```typescript
20
+ import { Agent } from '@mastra/core/agent'
21
+
22
+ export const researchAgent = new Agent({
23
+ id: 'research-agent',
24
+ name: 'Research Specialist',
25
+ description:
26
+ 'Specializes in gathering factual information and data on any topic. ' +
27
+ 'Returns concise bullet-point summaries with key facts and sources. ' +
28
+ 'Does not write full articles or narrative content.',
29
+ instructions:
30
+ 'You are a research specialist. When given a topic, gather key facts, ' +
31
+ 'statistics, and information. Present findings as clear bullet points. ' +
32
+ 'Include sources when possible. Focus on accuracy and completeness.',
33
+ model: 'openai/gpt-5-mini',
34
+ })
35
+ ```
36
+
37
+ The `description` field is critical - it helps the supervisor understand when to delegate to this agent. Clear descriptions improve delegation accuracy.
38
+
39
+ ## Create the writing agent
40
+
41
+ The writing agent transforms research into well-structured articles with complete paragraphs and proper flow.
42
+
43
+ Create a new file `src/mastra/agents/writing-agent.ts`:
44
+
45
+ ```typescript
46
+ import { Agent } from '@mastra/core/agent'
47
+
48
+ export const writingAgent = new Agent({
49
+ id: 'writing-agent',
50
+ name: 'Writing Specialist',
51
+ description:
52
+ 'Transforms research material into well-structured written content. ' +
53
+ 'Produces full paragraphs and complete articles with proper flow. ' +
54
+ 'Best used after research has been gathered.',
55
+ instructions:
56
+ 'You are a writing specialist. Transform research and information into ' +
57
+ 'well-written articles. Use complete paragraphs, clear structure, and ' +
58
+ 'engaging language. Maintain a professional yet accessible tone. ' +
59
+ 'Ensure the content flows naturally from introduction to conclusion.',
60
+ model: 'openai/gpt-5-mini',
61
+ })
62
+ ```
63
+
64
+ ## Create the supervisor agent
65
+
66
+ The supervisor coordinates research and writing tasks. Its instructions define the delegation strategy - when to use each subagent and how to synthesize results. Memory is configured directly on the agent.
67
+
68
+ Create a new file `src/mastra/agents/supervisor-agent.ts`:
69
+
70
+ ```typescript
71
+ import { Agent } from '@mastra/core/agent'
72
+ import { Memory } from '@mastra/memory'
73
+ import { LibSQLStore } from '@mastra/libsql'
74
+ import { researchAgent } from './research-agent'
75
+ import { writingAgent } from './writing-agent'
76
+
77
+ export const supervisorAgent = new Agent({
78
+ id: 'supervisor-agent',
79
+ name: 'Research Coordinator',
80
+ instructions: `You coordinate research and writing tasks using specialized agents.
81
+
82
+ Available resources:
83
+ - research-agent: Gathers factual data and sources (returns bullet points)
84
+ - writing-agent: Transforms research into well-structured articles (returns full paragraphs)
85
+
86
+ Delegation strategy:
87
+ 1. For research requests: Delegate to research-agent first to gather facts
88
+ 2. For writing requests: Delegate to writing-agent with any available research context
89
+ 3. For comprehensive reports: Delegate to research-agent first, then writing-agent
90
+ 4. Always ensure you have gathered sufficient information before producing final output
91
+
92
+ Success criteria:
93
+ - All aspects of the user's request are addressed
94
+ - Information is accurate and well-sourced
95
+ - Final output is well-formatted and complete
96
+ - If anything is missing or uncertain, continue gathering information`,
97
+ model: 'openai/gpt-5.1',
98
+ agents: {
99
+ researchAgent,
100
+ writingAgent,
101
+ },
102
+ memory: new Memory({
103
+ storage: new LibSQLStore({
104
+ id: 'mastra-storage',
105
+ url: 'file:mastra.db',
106
+ }),
107
+ }),
108
+ defaultOptions: {
109
+ maxSteps: 10,
110
+
111
+ // Monitor progress after each iteration
112
+ onIterationComplete: async context => {
113
+ console.log(`\n✓ Iteration ${context.iteration} complete`)
114
+ console.log(` Finish reason: ${context.finishReason}`)
115
+ console.log(` Response length: ${context.text.length} chars\n`)
116
+
117
+ // Continue until task is complete
118
+ return { continue: true }
119
+ },
120
+
121
+ // Control delegations
122
+ delegation: {
123
+ onDelegationStart: async context => {
124
+ console.log(`→ Delegating to: ${context.primitiveId}`)
125
+
126
+ // Add context for specific agents
127
+ if (context.primitiveId === 'research-agent') {
128
+ return {
129
+ proceed: true,
130
+ modifiedPrompt: `${context.prompt}\n\nFocus on recent developments (2024-2025) and include statistics.`,
131
+ }
132
+ }
133
+
134
+ return { proceed: true }
135
+ },
136
+
137
+ onDelegationComplete: async context => {
138
+ console.log(`✓ Completed: ${context.primitiveId}\n`)
139
+
140
+ // Handle errors: bail to stop execution and provide feedback
141
+ if (context.error) {
142
+ console.error('Delegation failed:', context.error)
143
+ context.bail() // Stop further delegations
144
+ return {
145
+ feedback: `Delegation to ${context.primitiveId} failed: ${context.error}. Try a different approach.`,
146
+ }
147
+ }
148
+ },
149
+
150
+ // Only pass last 10 messages to subagents
151
+ messageFilter: ({ messages }) => {
152
+ return messages.slice(-10)
153
+ },
154
+ },
155
+ },
156
+ })
157
+ ```
158
+
159
+ Register the supervisor with Mastra in `src/mastra/index.ts`:
160
+
161
+ ```typescript
162
+ import { Mastra } from '@mastra/core'
163
+ import { supervisorAgent } from './agents/supervisor-agent'
164
+
165
+ export const mastra = new Mastra({
166
+ agents: { supervisorAgent },
167
+ })
168
+ ```
169
+
170
+ The `defaultOptions` on the supervisor agent configure delegation hooks and iteration monitoring:
171
+
172
+ - `onDelegationStart` modifies the research agent's prompt to request recent data
173
+ - `onDelegationComplete` logs completion, bails on errors, and provides feedback
174
+ - `messageFilter` limits context to the last 10 messages for efficiency
175
+ - `onIterationComplete` monitors progress after each iteration
176
+
177
+ ## Test the basic supervisor
178
+
179
+ Create a file to interact with the supervisor in `src/index.ts`:
180
+
181
+ ```typescript
182
+ import { supervisorAgent } from './mastra/agents/supervisor-agent'
183
+
184
+ async function main() {
185
+ const topic = 'artificial intelligence in education'
186
+ console.log(`\nTopic: ${topic}\n`)
187
+
188
+ const stream = await supervisorAgent.stream(
189
+ `Research ${topic} and write a comprehensive article about it`,
190
+ )
191
+
192
+ // Stream the response
193
+ console.log('📝 Final Report:\n')
194
+ for await (const chunk of stream.textStream) {
195
+ process.stdout.write(chunk)
196
+ }
197
+ console.log('\n')
198
+ }
199
+
200
+ main()
201
+ ```
202
+
203
+ The supervisor uses the delegation hooks and iteration monitoring configured in `defaultOptions`.
204
+
205
+ ## Add task completion scoring
206
+
207
+ Task completion scorers automatically validate whether the task is complete. They prevent the supervisor from finishing prematurely.
208
+
209
+ Create a scorer in `src/mastra/scorers/task-complete-scorer.ts`:
210
+
211
+ ```typescript
212
+ import { createScorer } from '@mastra/core/evals'
213
+
214
+ export const taskCompleteScorer = createScorer({
215
+ id: 'task-complete',
216
+ name: 'Task Completeness',
217
+ description: 'Checks if the research and writing task has been fully completed',
218
+ }).generateScore(async context => {
219
+ const text = (context.run.output || '').toString()
220
+
221
+ // Check if response contains required elements
222
+ const hasSubstantialContent = text.length > 500
223
+ const hasStructure = text.includes('\n\n') // Multiple paragraphs
224
+ const hasContext = /\d{4}/.test(text) // Contains years/dates
225
+
226
+ // Return 1 if complete, 0 if not
227
+ if (hasSubstantialContent && hasStructure && hasContext) {
228
+ return 1
229
+ }
230
+
231
+ return 0
232
+ })
233
+ ```
234
+
235
+ Install the evals package:
236
+
237
+ **npm**:
238
+
239
+ ```bash
240
+ npm install @mastra/evals
241
+ ```
242
+
243
+ **pnpm**:
244
+
245
+ ```bash
246
+ pnpm add @mastra/evals
247
+ ```
248
+
249
+ **Yarn**:
250
+
251
+ ```bash
252
+ yarn add @mastra/evals
253
+ ```
254
+
255
+ **Bun**:
256
+
257
+ ```bash
258
+ bun add @mastra/evals
259
+ ```
260
+
261
+ Update the supervisor agent to include task completion scoring in `defaultOptions` in `src/mastra/agents/supervisor-agent.ts`:
262
+
263
+ ```typescript
264
+ import { Agent } from '@mastra/core/agent'
265
+ import { Memory } from '@mastra/memory'
266
+ import { LibSQLStore } from '@mastra/libsql'
267
+ import { researchAgent } from './research-agent'
268
+ import { writingAgent } from './writing-agent'
269
+ import { taskCompleteScorer } from '../scorers/task-complete-scorer'
270
+
271
+ export const supervisorAgent = new Agent({
272
+ id: 'supervisor-agent',
273
+ name: 'Research Coordinator',
274
+ instructions: `You coordinate research and writing tasks using specialized agents.
275
+
276
+ Available resources:
277
+ - research-agent: Gathers factual data and sources (returns bullet points)
278
+ - writing-agent: Transforms research into well-structured articles (returns full paragraphs)
279
+
280
+ Delegation strategy:
281
+ 1. For research requests: Delegate to research-agent first to gather facts
282
+ 2. For writing requests: Delegate to writing-agent with any available research context
283
+ 3. For comprehensive reports: Delegate to research-agent first, then writing-agent
284
+ 4. Always ensure you have gathered sufficient information before producing final output
285
+
286
+ Success criteria:
287
+ - All aspects of the user's request are addressed
288
+ - Information is accurate and well-sourced
289
+ - Final output is well-formatted and complete
290
+ - If anything is missing or uncertain, continue gathering information`,
291
+ model: 'openai/gpt-5.1',
292
+ agents: {
293
+ researchAgent,
294
+ writingAgent,
295
+ },
296
+ memory: new Memory({
297
+ storage: new LibSQLStore({
298
+ id: 'mastra-storage',
299
+ url: 'file:mastra.db',
300
+ }),
301
+ }),
302
+ defaultOptions: {
303
+ maxSteps: 10,
304
+
305
+ onIterationComplete: async context => {
306
+ console.log(`\n✓ Iteration ${context.iteration} complete`)
307
+ console.log(` Finish reason: ${context.finishReason}`)
308
+ console.log(` Response length: ${context.text.length} chars\n`)
309
+ return { continue: true }
310
+ },
311
+
312
+ delegation: {
313
+ onDelegationStart: async context => {
314
+ console.log(`→ Delegating to: ${context.primitiveId}`)
315
+
316
+ if (context.primitiveId === 'research-agent') {
317
+ return {
318
+ proceed: true,
319
+ modifiedPrompt: `${context.prompt}\n\nFocus on recent developments (2024-2025) and include statistics.`,
320
+ }
321
+ }
322
+
323
+ return { proceed: true }
324
+ },
325
+
326
+ onDelegationComplete: async context => {
327
+ console.log(`✓ Completed: ${context.primitiveId}\n`)
328
+
329
+ if (context.error) {
330
+ console.error('Delegation failed:', context.error)
331
+ context.bail() // Stop further delegations
332
+ return {
333
+ feedback: `Delegation to ${context.primitiveId} failed: ${context.error}. Try a different approach.`,
334
+ }
335
+ }
336
+ },
337
+
338
+ messageFilter: ({ messages }) => {
339
+ return messages.slice(-10)
340
+ },
341
+ },
342
+
343
+ // Validate task completion
344
+ isTaskComplete: {
345
+ scorers: [taskCompleteScorer],
346
+ strategy: 'all',
347
+ onComplete: async result => {
348
+ console.log('\n🎯 Completion Check:')
349
+ console.log(` Complete: ${result.complete}`)
350
+ console.log(` Score: ${result.scorers[0]?.score}\n`)
351
+ },
352
+ },
353
+ },
354
+ })
355
+ ```
356
+
357
+ The scorer checks for substantial content, proper structure, and contextual information. If the task isn't complete, the supervisor will continue iterating. Now all hooks and task completion scoring are configured in the agent's `defaultOptions`, making them apply to every call automatically.
358
+
359
+ ## Test the research coordinator
360
+
361
+ Run the coordinator to see it in action:
362
+
363
+ ```bash
364
+ npx tsx src/index.ts
365
+ ```
366
+
367
+ You'll see the supervisor delegate to the research agent first, then to the writing agent, with logs showing the delegation flow:
368
+
369
+ ```text
370
+ Topic: artificial intelligence in education
371
+
372
+ → Delegating to: research-agent
373
+ ✓ Iteration 1 complete
374
+ Finish reason: tool-calls
375
+ Response length: 0 chars
376
+
377
+ ✓ Completed: research-agent
378
+
379
+ → Delegating to: writing-agent
380
+ ✓ Iteration 2 complete
381
+ Finish reason: tool-calls
382
+ Response length: 0 chars
383
+
384
+ ✓ Completed: writing-agent
385
+
386
+ 🎯 Completion Check:
387
+ Complete: true
388
+ Score: 1
389
+
390
+ ✓ Iteration 3 complete
391
+ Finish reason: stop
392
+ Response length: 1247 chars
393
+
394
+ 📝 Final Report:
395
+
396
+ Artificial Intelligence in Education: Transforming Learning in 2024-2025
397
+
398
+ [The coordinator will produce a comprehensive article combining research findings with well-structured writing...]
399
+ ```
400
+
401
+ Since agent responses are non-deterministic, your output may vary, but the delegation pattern will be the same.
402
+
403
+ ## Next steps
404
+
405
+ You can extend this research coordinator to:
406
+
407
+ - Add more specialized agents (fact-checker, editor, citation-formatter)
408
+ - Implement custom scorers for quality metrics (readability, source quality)
409
+ - Add tools for web search or database access
410
+ - Create workflows for complex multi-step research processes
411
+ - Use structured output to generate reports in specific formats
412
+
413
+ Learn more:
414
+
415
+ - [Supervisor Agents](https://mastra.ai/docs/agents/supervisor-agents)
416
+ - [Agent.stream() Reference](https://mastra.ai/reference/streaming/agents/stream)
@@ -0,0 +1,132 @@
1
+ # Building an AI Stock Agent
2
+
3
+ In this guide, you're going to create a simple agent that fetches the last day's closing stock price for a given symbol. You'll learn how to create a tool, add it to an agent, and use the agent to fetch stock prices.
4
+
5
+ [YouTube video player](https://www.youtube-nocookie.com/embed/rIaZ4l7y9wo)
6
+
7
+ ## Prerequisites
8
+
9
+ - Node.js `v22.13.0` or later installed
10
+ - An API key from a supported [Model Provider](https://mastra.ai/models)
11
+ - An existing Mastra project (Follow the [installation guide](https://mastra.ai/guides/getting-started/quickstart) to set up a new project)
12
+
13
+ ## Creating the Agent
14
+
15
+ To create an agent in Mastra use the `Agent` class to define it and then register it with Mastra.
16
+
17
+ 1. Create a new file `src/mastra/agents/stockAgent.ts` and define your agent:
18
+
19
+ ```ts
20
+ import { Agent } from '@mastra/core/agent'
21
+
22
+ export const stockAgent = new Agent({
23
+ id: 'stock-agent',
24
+ name: 'Stock Agent',
25
+ instructions:
26
+ 'You are a helpful assistant that provides current stock prices. When asked about a stock, use the stock price tool to fetch the stock price.',
27
+ model: 'openai/gpt-5.1',
28
+ })
29
+ ```
30
+
31
+ 2. In your `src/mastra/index.ts` file, register the agent:
32
+
33
+ ```ts
34
+ import { Mastra } from '@mastra/core'
35
+ import { stockAgent } from './agents/stockAgent'
36
+
37
+ export const mastra = new Mastra({
38
+ agents: { stockAgent },
39
+ })
40
+ ```
41
+
42
+ ## Creating the Stock Price Tool
43
+
44
+ So far the Stock Agent doesn't know anything about the current stock prices. To change this, create a tool and add it to the agent.
45
+
46
+ 1. Create a new file `src/mastra/tools/stockPrices.ts`. Inside, add a `stockPrices` tool that will fetch the last day's closing stock price for a given symbol:
47
+
48
+ ```ts
49
+ import { createTool } from '@mastra/core/tools'
50
+ import { z } from 'zod'
51
+
52
+ const getStockPrice = async (symbol: string) => {
53
+ const data = await fetch(
54
+ `https://mastra-stock-data.vercel.app/api/stock-data?symbol=${symbol}`,
55
+ ).then(r => r.json())
56
+ return data.prices['4. close']
57
+ }
58
+
59
+ export const stockPrices = createTool({
60
+ id: 'Get Stock Price',
61
+ inputSchema: z.object({
62
+ symbol: z.string(),
63
+ }),
64
+ description: `Fetches the last day's closing stock price for a given symbol`,
65
+ execute: async inputData => {
66
+ console.log('Using tool to fetch stock price for', inputData.symbol)
67
+ return {
68
+ symbol: inputData.symbol,
69
+ currentPrice: await getStockPrice(inputData.symbol),
70
+ }
71
+ },
72
+ })
73
+ ```
74
+
75
+ 2. Inside `src/mastra/agents/stockAgent.ts` import your newly created `stockPrices` tool and add it to the agent.
76
+
77
+ ```ts
78
+ import { Agent } from '@mastra/core/agent'
79
+ import { stockPrices } from '../tools/stockPrices'
80
+
81
+ export const stockAgent = new Agent({
82
+ id: 'stock-agent',
83
+ name: 'Stock Agent',
84
+ instructions:
85
+ 'You are a helpful assistant that provides current stock prices. When asked about a stock, use the stock price tool to fetch the stock price.',
86
+ model: 'openai/gpt-5.1',
87
+ tools: {
88
+ stockPrices,
89
+ },
90
+ })
91
+ ```
92
+
93
+ ## Running the Agent Server
94
+
95
+ Learn how to interact with your agent through Mastra's API.
96
+
97
+ 1. You can run your agent as a service using the `mastra dev` command:
98
+
99
+ ```bash
100
+ mastra dev
101
+ ```
102
+
103
+ This will start a server exposing endpoints to interact with your registered agents. Within [Studio](https://mastra.ai/docs/getting-started/studio) you can test your `stockAgent` and `stockPrices` tool through a UI.
104
+
105
+ 2. By default, `mastra dev` runs on `http://localhost:4111`. Your Stock agent will be available at:
106
+
107
+ ```text
108
+ POST http://localhost:4111/api/agents/stockAgent/generate
109
+ ```
110
+
111
+ 3. You can interact with the agent using `curl` from the command line:
112
+
113
+ ```bash
114
+ curl -X POST http://localhost:4111/api/agents/stockAgent/generate \
115
+ -H "Content-Type: application/json" \
116
+ -d '{
117
+ "messages": [
118
+ { "role": "user", "content": "What is the current stock price of Apple (AAPL)?" }
119
+ ]
120
+ }'
121
+ ```
122
+
123
+ You should receive a JSON response similar to:
124
+
125
+ ```json
126
+ {
127
+ "text": "The current price of Apple (AAPL) is $174.55.",
128
+ "agent": "Stock Agent"
129
+ }
130
+ ```
131
+
132
+ This indicates that your agent successfully processed the request, used the `stockPrices` tool to fetch the stock price, and returned the result.