@mastra/mcp-docs-server 1.1.4 → 1.1.5

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 (547) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/package.json +5 -5
  3. package/.docs/docs/agents/adding-voice.md +0 -353
  4. package/.docs/docs/agents/agent-approval.md +0 -377
  5. package/.docs/docs/agents/agent-memory.md +0 -212
  6. package/.docs/docs/agents/guardrails.md +0 -382
  7. package/.docs/docs/agents/network-approval.md +0 -275
  8. package/.docs/docs/agents/networks.md +0 -290
  9. package/.docs/docs/agents/overview.md +0 -309
  10. package/.docs/docs/agents/processors.md +0 -632
  11. package/.docs/docs/agents/structured-output.md +0 -271
  12. package/.docs/docs/agents/using-tools.md +0 -214
  13. package/.docs/docs/build-with-ai/mcp-docs-server.md +0 -241
  14. package/.docs/docs/build-with-ai/skills.md +0 -35
  15. package/.docs/docs/community/contributing-templates.md +0 -3
  16. package/.docs/docs/community/discord.md +0 -9
  17. package/.docs/docs/community/licensing.md +0 -66
  18. package/.docs/docs/deployment/cloud-providers.md +0 -15
  19. package/.docs/docs/deployment/mastra-server.md +0 -122
  20. package/.docs/docs/deployment/monorepo.md +0 -142
  21. package/.docs/docs/deployment/overview.md +0 -62
  22. package/.docs/docs/deployment/studio.md +0 -234
  23. package/.docs/docs/deployment/web-framework.md +0 -52
  24. package/.docs/docs/deployment/workflow-runners.md +0 -9
  25. package/.docs/docs/evals/built-in-scorers.md +0 -47
  26. package/.docs/docs/evals/custom-scorers.md +0 -519
  27. package/.docs/docs/evals/overview.md +0 -146
  28. package/.docs/docs/evals/running-in-ci.md +0 -106
  29. package/.docs/docs/getting-started/build-with-ai.md +0 -68
  30. package/.docs/docs/getting-started/manual-install.md +0 -226
  31. package/.docs/docs/getting-started/project-structure.md +0 -60
  32. package/.docs/docs/getting-started/start.md +0 -28
  33. package/.docs/docs/getting-started/studio.md +0 -101
  34. package/.docs/docs/index.md +0 -43
  35. package/.docs/docs/mastra-cloud/deployment.md +0 -77
  36. package/.docs/docs/mastra-cloud/observability.md +0 -38
  37. package/.docs/docs/mastra-cloud/overview.md +0 -23
  38. package/.docs/docs/mastra-cloud/setup.md +0 -42
  39. package/.docs/docs/mastra-cloud/studio.md +0 -24
  40. package/.docs/docs/mcp/overview.md +0 -370
  41. package/.docs/docs/mcp/publishing-mcp-server.md +0 -95
  42. package/.docs/docs/memory/memory-processors.md +0 -316
  43. package/.docs/docs/memory/message-history.md +0 -260
  44. package/.docs/docs/memory/observational-memory.md +0 -246
  45. package/.docs/docs/memory/overview.md +0 -45
  46. package/.docs/docs/memory/semantic-recall.md +0 -272
  47. package/.docs/docs/memory/storage.md +0 -261
  48. package/.docs/docs/memory/working-memory.md +0 -400
  49. package/.docs/docs/observability/datasets/overview.md +0 -188
  50. package/.docs/docs/observability/datasets/running-experiments.md +0 -266
  51. package/.docs/docs/observability/logging.md +0 -99
  52. package/.docs/docs/observability/overview.md +0 -70
  53. package/.docs/docs/observability/tracing/bridges/otel.md +0 -209
  54. package/.docs/docs/observability/tracing/exporters/arize.md +0 -274
  55. package/.docs/docs/observability/tracing/exporters/braintrust.md +0 -111
  56. package/.docs/docs/observability/tracing/exporters/cloud.md +0 -129
  57. package/.docs/docs/observability/tracing/exporters/datadog.md +0 -187
  58. package/.docs/docs/observability/tracing/exporters/default.md +0 -211
  59. package/.docs/docs/observability/tracing/exporters/laminar.md +0 -100
  60. package/.docs/docs/observability/tracing/exporters/langfuse.md +0 -217
  61. package/.docs/docs/observability/tracing/exporters/langsmith.md +0 -202
  62. package/.docs/docs/observability/tracing/exporters/otel.md +0 -479
  63. package/.docs/docs/observability/tracing/exporters/posthog.md +0 -148
  64. package/.docs/docs/observability/tracing/exporters/sentry.md +0 -208
  65. package/.docs/docs/observability/tracing/overview.md +0 -1114
  66. package/.docs/docs/observability/tracing/processors/sensitive-data-filter.md +0 -303
  67. package/.docs/docs/rag/chunking-and-embedding.md +0 -183
  68. package/.docs/docs/rag/graph-rag.md +0 -215
  69. package/.docs/docs/rag/overview.md +0 -72
  70. package/.docs/docs/rag/retrieval.md +0 -521
  71. package/.docs/docs/rag/vector-databases.md +0 -648
  72. package/.docs/docs/server/auth/auth0.md +0 -222
  73. package/.docs/docs/server/auth/better-auth.md +0 -203
  74. package/.docs/docs/server/auth/clerk.md +0 -132
  75. package/.docs/docs/server/auth/composite-auth.md +0 -234
  76. package/.docs/docs/server/auth/custom-auth-provider.md +0 -513
  77. package/.docs/docs/server/auth/firebase.md +0 -272
  78. package/.docs/docs/server/auth/jwt.md +0 -110
  79. package/.docs/docs/server/auth/simple-auth.md +0 -178
  80. package/.docs/docs/server/auth/supabase.md +0 -117
  81. package/.docs/docs/server/auth/workos.md +0 -190
  82. package/.docs/docs/server/auth.md +0 -38
  83. package/.docs/docs/server/custom-adapters.md +0 -374
  84. package/.docs/docs/server/custom-api-routes.md +0 -267
  85. package/.docs/docs/server/mastra-client.md +0 -243
  86. package/.docs/docs/server/mastra-server.md +0 -71
  87. package/.docs/docs/server/middleware.md +0 -228
  88. package/.docs/docs/server/request-context.md +0 -478
  89. package/.docs/docs/server/server-adapters.md +0 -547
  90. package/.docs/docs/streaming/events.md +0 -247
  91. package/.docs/docs/streaming/overview.md +0 -181
  92. package/.docs/docs/streaming/tool-streaming.md +0 -178
  93. package/.docs/docs/streaming/workflow-streaming.md +0 -109
  94. package/.docs/docs/voice/overview.md +0 -979
  95. package/.docs/docs/voice/speech-to-speech.md +0 -103
  96. package/.docs/docs/voice/speech-to-text.md +0 -80
  97. package/.docs/docs/voice/text-to-speech.md +0 -84
  98. package/.docs/docs/workflows/agents-and-tools.md +0 -170
  99. package/.docs/docs/workflows/control-flow.md +0 -823
  100. package/.docs/docs/workflows/error-handling.md +0 -360
  101. package/.docs/docs/workflows/human-in-the-loop.md +0 -213
  102. package/.docs/docs/workflows/overview.md +0 -372
  103. package/.docs/docs/workflows/snapshots.md +0 -238
  104. package/.docs/docs/workflows/suspend-and-resume.md +0 -205
  105. package/.docs/docs/workflows/time-travel.md +0 -309
  106. package/.docs/docs/workflows/workflow-state.md +0 -181
  107. package/.docs/docs/workspace/filesystem.md +0 -162
  108. package/.docs/docs/workspace/overview.md +0 -239
  109. package/.docs/docs/workspace/sandbox.md +0 -63
  110. package/.docs/docs/workspace/search.md +0 -219
  111. package/.docs/docs/workspace/skills.md +0 -126
  112. package/.docs/guides/agent-frameworks/ai-sdk.md +0 -140
  113. package/.docs/guides/build-your-ui/ai-sdk-ui.md +0 -1463
  114. package/.docs/guides/build-your-ui/assistant-ui.md +0 -156
  115. package/.docs/guides/build-your-ui/copilotkit.md +0 -292
  116. package/.docs/guides/deployment/amazon-ec2.md +0 -130
  117. package/.docs/guides/deployment/aws-lambda.md +0 -248
  118. package/.docs/guides/deployment/azure-app-services.md +0 -114
  119. package/.docs/guides/deployment/cloudflare.md +0 -99
  120. package/.docs/guides/deployment/digital-ocean.md +0 -168
  121. package/.docs/guides/deployment/inngest.md +0 -685
  122. package/.docs/guides/deployment/netlify.md +0 -77
  123. package/.docs/guides/deployment/vercel.md +0 -101
  124. package/.docs/guides/getting-started/astro.md +0 -408
  125. package/.docs/guides/getting-started/electron.md +0 -504
  126. package/.docs/guides/getting-started/express.md +0 -251
  127. package/.docs/guides/getting-started/hono.md +0 -191
  128. package/.docs/guides/getting-started/next-js.md +0 -355
  129. package/.docs/guides/getting-started/nuxt.md +0 -476
  130. package/.docs/guides/getting-started/quickstart.md +0 -67
  131. package/.docs/guides/getting-started/sveltekit.md +0 -300
  132. package/.docs/guides/getting-started/vite-react.md +0 -439
  133. package/.docs/guides/guide/ai-recruiter.md +0 -227
  134. package/.docs/guides/guide/chef-michel.md +0 -215
  135. package/.docs/guides/guide/code-review-bot.md +0 -221
  136. package/.docs/guides/guide/dev-assistant.md +0 -304
  137. package/.docs/guides/guide/docs-manager.md +0 -238
  138. package/.docs/guides/guide/github-actions-pr-description.md +0 -236
  139. package/.docs/guides/guide/notes-mcp-server.md +0 -425
  140. package/.docs/guides/guide/research-assistant.md +0 -349
  141. package/.docs/guides/guide/stock-agent.md +0 -134
  142. package/.docs/guides/guide/web-search.md +0 -326
  143. package/.docs/guides/guide/whatsapp-chat-bot.md +0 -416
  144. package/.docs/guides/index.md +0 -3
  145. package/.docs/guides/migrations/agentnetwork.md +0 -101
  146. package/.docs/guides/migrations/ai-sdk-v4-to-v5.md +0 -112
  147. package/.docs/guides/migrations/upgrade-to-v1/agent.md +0 -404
  148. package/.docs/guides/migrations/upgrade-to-v1/cli.md +0 -57
  149. package/.docs/guides/migrations/upgrade-to-v1/client.md +0 -337
  150. package/.docs/guides/migrations/upgrade-to-v1/deployment.md +0 -37
  151. package/.docs/guides/migrations/upgrade-to-v1/evals.md +0 -239
  152. package/.docs/guides/migrations/upgrade-to-v1/mastra.md +0 -143
  153. package/.docs/guides/migrations/upgrade-to-v1/mcp.md +0 -97
  154. package/.docs/guides/migrations/upgrade-to-v1/memory.md +0 -285
  155. package/.docs/guides/migrations/upgrade-to-v1/overview.md +0 -119
  156. package/.docs/guides/migrations/upgrade-to-v1/processors.md +0 -68
  157. package/.docs/guides/migrations/upgrade-to-v1/rag.md +0 -42
  158. package/.docs/guides/migrations/upgrade-to-v1/storage.md +0 -553
  159. package/.docs/guides/migrations/upgrade-to-v1/tools.md +0 -180
  160. package/.docs/guides/migrations/upgrade-to-v1/tracing.md +0 -417
  161. package/.docs/guides/migrations/upgrade-to-v1/vectors.md +0 -87
  162. package/.docs/guides/migrations/upgrade-to-v1/voice.md +0 -30
  163. package/.docs/guides/migrations/upgrade-to-v1/workflows.md +0 -341
  164. package/.docs/guides/migrations/vnext-to-standard-apis.md +0 -364
  165. package/.docs/models/embeddings.md +0 -161
  166. package/.docs/models/gateways/azure-openai.md +0 -128
  167. package/.docs/models/gateways/custom-gateways.md +0 -545
  168. package/.docs/models/gateways/netlify.md +0 -88
  169. package/.docs/models/gateways/openrouter.md +0 -219
  170. package/.docs/models/gateways/vercel.md +0 -225
  171. package/.docs/models/gateways.md +0 -14
  172. package/.docs/models/index.md +0 -286
  173. package/.docs/models/providers/302ai.md +0 -134
  174. package/.docs/models/providers/abacus.md +0 -125
  175. package/.docs/models/providers/agentrouter.md +0 -90
  176. package/.docs/models/providers/aihubmix.md +0 -107
  177. package/.docs/models/providers/alibaba-cn.md +0 -135
  178. package/.docs/models/providers/alibaba.md +0 -111
  179. package/.docs/models/providers/amazon-bedrock.md +0 -33
  180. package/.docs/models/providers/anthropic.md +0 -153
  181. package/.docs/models/providers/azure.md +0 -33
  182. package/.docs/models/providers/bailing.md +0 -72
  183. package/.docs/models/providers/baseten.md +0 -77
  184. package/.docs/models/providers/berget.md +0 -78
  185. package/.docs/models/providers/cerebras.md +0 -101
  186. package/.docs/models/providers/chutes.md +0 -136
  187. package/.docs/models/providers/cloudflare-ai-gateway.md +0 -33
  188. package/.docs/models/providers/cloudflare-workers-ai.md +0 -109
  189. package/.docs/models/providers/cohere.md +0 -33
  190. package/.docs/models/providers/cortecs.md +0 -91
  191. package/.docs/models/providers/deepinfra.md +0 -112
  192. package/.docs/models/providers/deepseek.md +0 -88
  193. package/.docs/models/providers/fastrouter.md +0 -84
  194. package/.docs/models/providers/fireworks-ai.md +0 -89
  195. package/.docs/models/providers/firmware.md +0 -85
  196. package/.docs/models/providers/friendli.md +0 -78
  197. package/.docs/models/providers/github-models.md +0 -125
  198. package/.docs/models/providers/google-vertex.md +0 -33
  199. package/.docs/models/providers/google.md +0 -159
  200. package/.docs/models/providers/groq.md +0 -107
  201. package/.docs/models/providers/helicone.md +0 -161
  202. package/.docs/models/providers/huggingface.md +0 -90
  203. package/.docs/models/providers/iflowcn.md +0 -84
  204. package/.docs/models/providers/inception.md +0 -72
  205. package/.docs/models/providers/inference.md +0 -79
  206. package/.docs/models/providers/io-intelligence.md +0 -87
  207. package/.docs/models/providers/io-net.md +0 -87
  208. package/.docs/models/providers/jiekou.md +0 -131
  209. package/.docs/models/providers/kilo.md +0 -333
  210. package/.docs/models/providers/kimi-for-coding.md +0 -100
  211. package/.docs/models/providers/kuae-cloud-coding-plan.md +0 -71
  212. package/.docs/models/providers/llama.md +0 -77
  213. package/.docs/models/providers/lmstudio.md +0 -73
  214. package/.docs/models/providers/lucidquery.md +0 -72
  215. package/.docs/models/providers/minimax-cn-coding-plan.md +0 -102
  216. package/.docs/models/providers/minimax-cn.md +0 -102
  217. package/.docs/models/providers/minimax-coding-plan.md +0 -102
  218. package/.docs/models/providers/minimax.md +0 -104
  219. package/.docs/models/providers/mistral.md +0 -124
  220. package/.docs/models/providers/moark.md +0 -72
  221. package/.docs/models/providers/modelscope.md +0 -77
  222. package/.docs/models/providers/moonshotai-cn.md +0 -76
  223. package/.docs/models/providers/moonshotai.md +0 -76
  224. package/.docs/models/providers/morph.md +0 -73
  225. package/.docs/models/providers/nano-gpt.md +0 -103
  226. package/.docs/models/providers/nebius.md +0 -116
  227. package/.docs/models/providers/nova.md +0 -72
  228. package/.docs/models/providers/novita-ai.md +0 -154
  229. package/.docs/models/providers/nvidia.md +0 -141
  230. package/.docs/models/providers/ollama-cloud.md +0 -103
  231. package/.docs/models/providers/ollama.md +0 -33
  232. package/.docs/models/providers/openai.md +0 -193
  233. package/.docs/models/providers/opencode.md +0 -100
  234. package/.docs/models/providers/ovhcloud.md +0 -83
  235. package/.docs/models/providers/perplexity.md +0 -100
  236. package/.docs/models/providers/poe.md +0 -183
  237. package/.docs/models/providers/privatemode-ai.md +0 -75
  238. package/.docs/models/providers/requesty.md +0 -90
  239. package/.docs/models/providers/scaleway.md +0 -84
  240. package/.docs/models/providers/siliconflow-cn.md +0 -138
  241. package/.docs/models/providers/siliconflow.md +0 -140
  242. package/.docs/models/providers/stackit.md +0 -78
  243. package/.docs/models/providers/stepfun.md +0 -73
  244. package/.docs/models/providers/submodel.md +0 -79
  245. package/.docs/models/providers/synthetic.md +0 -96
  246. package/.docs/models/providers/togetherai.md +0 -115
  247. package/.docs/models/providers/upstage.md +0 -73
  248. package/.docs/models/providers/venice.md +0 -95
  249. package/.docs/models/providers/vivgrid.md +0 -106
  250. package/.docs/models/providers/vultr.md +0 -75
  251. package/.docs/models/providers/wandb.md +0 -80
  252. package/.docs/models/providers/xai.md +0 -141
  253. package/.docs/models/providers/xiaomi.md +0 -71
  254. package/.docs/models/providers/zai-coding-plan.md +0 -80
  255. package/.docs/models/providers/zai.md +0 -79
  256. package/.docs/models/providers/zenmux.md +0 -161
  257. package/.docs/models/providers/zhipuai-coding-plan.md +0 -79
  258. package/.docs/models/providers/zhipuai.md +0 -79
  259. package/.docs/models/providers.md +0 -81
  260. package/.docs/reference/agents/agent.md +0 -142
  261. package/.docs/reference/agents/generate.md +0 -174
  262. package/.docs/reference/agents/generateLegacy.md +0 -176
  263. package/.docs/reference/agents/getDefaultGenerateOptions.md +0 -36
  264. package/.docs/reference/agents/getDefaultOptions.md +0 -34
  265. package/.docs/reference/agents/getDefaultStreamOptions.md +0 -36
  266. package/.docs/reference/agents/getDescription.md +0 -21
  267. package/.docs/reference/agents/getInstructions.md +0 -34
  268. package/.docs/reference/agents/getLLM.md +0 -37
  269. package/.docs/reference/agents/getMemory.md +0 -34
  270. package/.docs/reference/agents/getModel.md +0 -34
  271. package/.docs/reference/agents/getTools.md +0 -29
  272. package/.docs/reference/agents/getVoice.md +0 -34
  273. package/.docs/reference/agents/listAgents.md +0 -35
  274. package/.docs/reference/agents/listScorers.md +0 -34
  275. package/.docs/reference/agents/listTools.md +0 -34
  276. package/.docs/reference/agents/listWorkflows.md +0 -34
  277. package/.docs/reference/agents/network.md +0 -134
  278. package/.docs/reference/ai-sdk/chat-route.md +0 -82
  279. package/.docs/reference/ai-sdk/handle-chat-stream.md +0 -53
  280. package/.docs/reference/ai-sdk/handle-network-stream.md +0 -37
  281. package/.docs/reference/ai-sdk/handle-workflow-stream.md +0 -55
  282. package/.docs/reference/ai-sdk/network-route.md +0 -74
  283. package/.docs/reference/ai-sdk/to-ai-sdk-stream.md +0 -232
  284. package/.docs/reference/ai-sdk/to-ai-sdk-v4-messages.md +0 -79
  285. package/.docs/reference/ai-sdk/to-ai-sdk-v5-messages.md +0 -73
  286. package/.docs/reference/ai-sdk/with-mastra.md +0 -59
  287. package/.docs/reference/ai-sdk/workflow-route.md +0 -79
  288. package/.docs/reference/auth/auth0.md +0 -73
  289. package/.docs/reference/auth/better-auth.md +0 -71
  290. package/.docs/reference/auth/clerk.md +0 -36
  291. package/.docs/reference/auth/firebase.md +0 -80
  292. package/.docs/reference/auth/jwt.md +0 -26
  293. package/.docs/reference/auth/supabase.md +0 -33
  294. package/.docs/reference/auth/workos.md +0 -84
  295. package/.docs/reference/cli/create-mastra.md +0 -137
  296. package/.docs/reference/cli/mastra.md +0 -336
  297. package/.docs/reference/client-js/agents.md +0 -438
  298. package/.docs/reference/client-js/error-handling.md +0 -16
  299. package/.docs/reference/client-js/logs.md +0 -24
  300. package/.docs/reference/client-js/mastra-client.md +0 -63
  301. package/.docs/reference/client-js/memory.md +0 -225
  302. package/.docs/reference/client-js/observability.md +0 -72
  303. package/.docs/reference/client-js/telemetry.md +0 -20
  304. package/.docs/reference/client-js/tools.md +0 -44
  305. package/.docs/reference/client-js/vectors.md +0 -79
  306. package/.docs/reference/client-js/workflows.md +0 -199
  307. package/.docs/reference/configuration.md +0 -749
  308. package/.docs/reference/core/addGateway.md +0 -42
  309. package/.docs/reference/core/getAgent.md +0 -21
  310. package/.docs/reference/core/getAgentById.md +0 -21
  311. package/.docs/reference/core/getDeployer.md +0 -22
  312. package/.docs/reference/core/getGateway.md +0 -38
  313. package/.docs/reference/core/getGatewayById.md +0 -41
  314. package/.docs/reference/core/getLogger.md +0 -22
  315. package/.docs/reference/core/getMCPServer.md +0 -45
  316. package/.docs/reference/core/getMCPServerById.md +0 -53
  317. package/.docs/reference/core/getMemory.md +0 -50
  318. package/.docs/reference/core/getScorer.md +0 -54
  319. package/.docs/reference/core/getScorerById.md +0 -54
  320. package/.docs/reference/core/getServer.md +0 -22
  321. package/.docs/reference/core/getStorage.md +0 -22
  322. package/.docs/reference/core/getStoredAgentById.md +0 -89
  323. package/.docs/reference/core/getTelemetry.md +0 -22
  324. package/.docs/reference/core/getVector.md +0 -22
  325. package/.docs/reference/core/getWorkflow.md +0 -40
  326. package/.docs/reference/core/listAgents.md +0 -21
  327. package/.docs/reference/core/listGateways.md +0 -40
  328. package/.docs/reference/core/listLogs.md +0 -38
  329. package/.docs/reference/core/listLogsByRunId.md +0 -36
  330. package/.docs/reference/core/listMCPServers.md +0 -51
  331. package/.docs/reference/core/listMemory.md +0 -56
  332. package/.docs/reference/core/listScorers.md +0 -29
  333. package/.docs/reference/core/listStoredAgents.md +0 -93
  334. package/.docs/reference/core/listVectors.md +0 -22
  335. package/.docs/reference/core/listWorkflows.md +0 -21
  336. package/.docs/reference/core/mastra-class.md +0 -66
  337. package/.docs/reference/core/mastra-model-gateway.md +0 -153
  338. package/.docs/reference/core/setLogger.md +0 -26
  339. package/.docs/reference/core/setStorage.md +0 -27
  340. package/.docs/reference/datasets/addItem.md +0 -35
  341. package/.docs/reference/datasets/addItems.md +0 -33
  342. package/.docs/reference/datasets/compareExperiments.md +0 -48
  343. package/.docs/reference/datasets/create.md +0 -49
  344. package/.docs/reference/datasets/dataset.md +0 -78
  345. package/.docs/reference/datasets/datasets-manager.md +0 -84
  346. package/.docs/reference/datasets/delete.md +0 -23
  347. package/.docs/reference/datasets/deleteExperiment.md +0 -25
  348. package/.docs/reference/datasets/deleteItem.md +0 -25
  349. package/.docs/reference/datasets/deleteItems.md +0 -27
  350. package/.docs/reference/datasets/get.md +0 -29
  351. package/.docs/reference/datasets/getDetails.md +0 -45
  352. package/.docs/reference/datasets/getExperiment.md +0 -28
  353. package/.docs/reference/datasets/getItem.md +0 -31
  354. package/.docs/reference/datasets/getItemHistory.md +0 -29
  355. package/.docs/reference/datasets/list.md +0 -29
  356. package/.docs/reference/datasets/listExperimentResults.md +0 -37
  357. package/.docs/reference/datasets/listExperiments.md +0 -31
  358. package/.docs/reference/datasets/listItems.md +0 -44
  359. package/.docs/reference/datasets/listVersions.md +0 -31
  360. package/.docs/reference/datasets/startExperiment.md +0 -60
  361. package/.docs/reference/datasets/startExperimentAsync.md +0 -41
  362. package/.docs/reference/datasets/update.md +0 -46
  363. package/.docs/reference/datasets/updateItem.md +0 -36
  364. package/.docs/reference/deployer/cloudflare.md +0 -79
  365. package/.docs/reference/deployer/netlify.md +0 -82
  366. package/.docs/reference/deployer/vercel.md +0 -91
  367. package/.docs/reference/deployer.md +0 -100
  368. package/.docs/reference/evals/answer-relevancy.md +0 -105
  369. package/.docs/reference/evals/answer-similarity.md +0 -99
  370. package/.docs/reference/evals/bias.md +0 -120
  371. package/.docs/reference/evals/completeness.md +0 -137
  372. package/.docs/reference/evals/content-similarity.md +0 -101
  373. package/.docs/reference/evals/context-precision.md +0 -196
  374. package/.docs/reference/evals/context-relevance.md +0 -536
  375. package/.docs/reference/evals/create-scorer.md +0 -270
  376. package/.docs/reference/evals/faithfulness.md +0 -114
  377. package/.docs/reference/evals/hallucination.md +0 -220
  378. package/.docs/reference/evals/keyword-coverage.md +0 -128
  379. package/.docs/reference/evals/mastra-scorer.md +0 -123
  380. package/.docs/reference/evals/noise-sensitivity.md +0 -685
  381. package/.docs/reference/evals/prompt-alignment.md +0 -619
  382. package/.docs/reference/evals/run-evals.md +0 -138
  383. package/.docs/reference/evals/scorer-utils.md +0 -330
  384. package/.docs/reference/evals/textual-difference.md +0 -113
  385. package/.docs/reference/evals/tone-consistency.md +0 -119
  386. package/.docs/reference/evals/tool-call-accuracy.md +0 -533
  387. package/.docs/reference/evals/toxicity.md +0 -123
  388. package/.docs/reference/harness/harness-class.md +0 -645
  389. package/.docs/reference/index.md +0 -276
  390. package/.docs/reference/logging/pino-logger.md +0 -117
  391. package/.docs/reference/memory/clone-utilities.md +0 -199
  392. package/.docs/reference/memory/cloneThread.md +0 -130
  393. package/.docs/reference/memory/createThread.md +0 -68
  394. package/.docs/reference/memory/deleteMessages.md +0 -40
  395. package/.docs/reference/memory/getThreadById.md +0 -24
  396. package/.docs/reference/memory/listThreads.md +0 -145
  397. package/.docs/reference/memory/memory-class.md +0 -147
  398. package/.docs/reference/memory/observational-memory.md +0 -565
  399. package/.docs/reference/memory/recall.md +0 -91
  400. package/.docs/reference/observability/tracing/bridges/otel.md +0 -131
  401. package/.docs/reference/observability/tracing/configuration.md +0 -178
  402. package/.docs/reference/observability/tracing/exporters/arize.md +0 -141
  403. package/.docs/reference/observability/tracing/exporters/braintrust.md +0 -93
  404. package/.docs/reference/observability/tracing/exporters/cloud-exporter.md +0 -163
  405. package/.docs/reference/observability/tracing/exporters/console-exporter.md +0 -138
  406. package/.docs/reference/observability/tracing/exporters/datadog.md +0 -116
  407. package/.docs/reference/observability/tracing/exporters/default-exporter.md +0 -174
  408. package/.docs/reference/observability/tracing/exporters/laminar.md +0 -78
  409. package/.docs/reference/observability/tracing/exporters/langfuse.md +0 -134
  410. package/.docs/reference/observability/tracing/exporters/langsmith.md +0 -110
  411. package/.docs/reference/observability/tracing/exporters/otel.md +0 -199
  412. package/.docs/reference/observability/tracing/exporters/posthog.md +0 -92
  413. package/.docs/reference/observability/tracing/exporters/sentry.md +0 -184
  414. package/.docs/reference/observability/tracing/instances.md +0 -109
  415. package/.docs/reference/observability/tracing/interfaces.md +0 -749
  416. package/.docs/reference/observability/tracing/processors/sensitive-data-filter.md +0 -144
  417. package/.docs/reference/observability/tracing/spans.md +0 -224
  418. package/.docs/reference/processors/batch-parts-processor.md +0 -61
  419. package/.docs/reference/processors/language-detector.md +0 -81
  420. package/.docs/reference/processors/message-history-processor.md +0 -85
  421. package/.docs/reference/processors/moderation-processor.md +0 -104
  422. package/.docs/reference/processors/pii-detector.md +0 -107
  423. package/.docs/reference/processors/processor-interface.md +0 -525
  424. package/.docs/reference/processors/prompt-injection-detector.md +0 -71
  425. package/.docs/reference/processors/semantic-recall-processor.md +0 -123
  426. package/.docs/reference/processors/system-prompt-scrubber.md +0 -80
  427. package/.docs/reference/processors/token-limiter-processor.md +0 -113
  428. package/.docs/reference/processors/tool-call-filter.md +0 -85
  429. package/.docs/reference/processors/tool-search-processor.md +0 -113
  430. package/.docs/reference/processors/unicode-normalizer.md +0 -62
  431. package/.docs/reference/processors/working-memory-processor.md +0 -154
  432. package/.docs/reference/rag/chunk.md +0 -221
  433. package/.docs/reference/rag/database-config.md +0 -264
  434. package/.docs/reference/rag/document.md +0 -114
  435. package/.docs/reference/rag/embeddings.md +0 -92
  436. package/.docs/reference/rag/extract-params.md +0 -168
  437. package/.docs/reference/rag/graph-rag.md +0 -111
  438. package/.docs/reference/rag/metadata-filters.md +0 -216
  439. package/.docs/reference/rag/rerank.md +0 -80
  440. package/.docs/reference/rag/rerankWithScorer.md +0 -80
  441. package/.docs/reference/server/create-route.md +0 -260
  442. package/.docs/reference/server/express-adapter.md +0 -176
  443. package/.docs/reference/server/fastify-adapter.md +0 -90
  444. package/.docs/reference/server/hono-adapter.md +0 -162
  445. package/.docs/reference/server/koa-adapter.md +0 -127
  446. package/.docs/reference/server/mastra-server.md +0 -298
  447. package/.docs/reference/server/register-api-route.md +0 -249
  448. package/.docs/reference/server/routes.md +0 -306
  449. package/.docs/reference/storage/cloudflare-d1.md +0 -218
  450. package/.docs/reference/storage/cloudflare.md +0 -88
  451. package/.docs/reference/storage/composite.md +0 -235
  452. package/.docs/reference/storage/convex.md +0 -161
  453. package/.docs/reference/storage/dynamodb.md +0 -282
  454. package/.docs/reference/storage/lance.md +0 -131
  455. package/.docs/reference/storage/libsql.md +0 -135
  456. package/.docs/reference/storage/mongodb.md +0 -262
  457. package/.docs/reference/storage/mssql.md +0 -155
  458. package/.docs/reference/storage/overview.md +0 -121
  459. package/.docs/reference/storage/postgresql.md +0 -529
  460. package/.docs/reference/storage/upstash.md +0 -160
  461. package/.docs/reference/streaming/ChunkType.md +0 -292
  462. package/.docs/reference/streaming/agents/MastraModelOutput.md +0 -182
  463. package/.docs/reference/streaming/agents/stream.md +0 -212
  464. package/.docs/reference/streaming/agents/streamLegacy.md +0 -142
  465. package/.docs/reference/streaming/workflows/observeStream.md +0 -42
  466. package/.docs/reference/streaming/workflows/resumeStream.md +0 -61
  467. package/.docs/reference/streaming/workflows/stream.md +0 -88
  468. package/.docs/reference/streaming/workflows/timeTravelStream.md +0 -142
  469. package/.docs/reference/templates/overview.md +0 -194
  470. package/.docs/reference/tools/create-tool.md +0 -237
  471. package/.docs/reference/tools/document-chunker-tool.md +0 -89
  472. package/.docs/reference/tools/graph-rag-tool.md +0 -185
  473. package/.docs/reference/tools/mcp-client.md +0 -962
  474. package/.docs/reference/tools/mcp-server.md +0 -1275
  475. package/.docs/reference/tools/vector-query-tool.md +0 -459
  476. package/.docs/reference/vectors/astra.md +0 -121
  477. package/.docs/reference/vectors/chroma.md +0 -267
  478. package/.docs/reference/vectors/convex.md +0 -303
  479. package/.docs/reference/vectors/couchbase.md +0 -226
  480. package/.docs/reference/vectors/duckdb.md +0 -318
  481. package/.docs/reference/vectors/elasticsearch.md +0 -189
  482. package/.docs/reference/vectors/lance.md +0 -220
  483. package/.docs/reference/vectors/libsql.md +0 -305
  484. package/.docs/reference/vectors/mongodb.md +0 -295
  485. package/.docs/reference/vectors/opensearch.md +0 -99
  486. package/.docs/reference/vectors/pg.md +0 -408
  487. package/.docs/reference/vectors/pinecone.md +0 -168
  488. package/.docs/reference/vectors/qdrant.md +0 -222
  489. package/.docs/reference/vectors/s3vectors.md +0 -277
  490. package/.docs/reference/vectors/turbopuffer.md +0 -157
  491. package/.docs/reference/vectors/upstash.md +0 -294
  492. package/.docs/reference/vectors/vectorize.md +0 -147
  493. package/.docs/reference/voice/azure.md +0 -148
  494. package/.docs/reference/voice/cloudflare.md +0 -83
  495. package/.docs/reference/voice/composite-voice.md +0 -121
  496. package/.docs/reference/voice/deepgram.md +0 -79
  497. package/.docs/reference/voice/elevenlabs.md +0 -98
  498. package/.docs/reference/voice/google-gemini-live.md +0 -378
  499. package/.docs/reference/voice/google.md +0 -228
  500. package/.docs/reference/voice/mastra-voice.md +0 -313
  501. package/.docs/reference/voice/murf.md +0 -122
  502. package/.docs/reference/voice/openai-realtime.md +0 -203
  503. package/.docs/reference/voice/openai.md +0 -88
  504. package/.docs/reference/voice/playai.md +0 -80
  505. package/.docs/reference/voice/sarvam.md +0 -126
  506. package/.docs/reference/voice/speechify.md +0 -75
  507. package/.docs/reference/voice/voice.addInstructions.md +0 -56
  508. package/.docs/reference/voice/voice.addTools.md +0 -67
  509. package/.docs/reference/voice/voice.answer.md +0 -54
  510. package/.docs/reference/voice/voice.close.md +0 -51
  511. package/.docs/reference/voice/voice.connect.md +0 -94
  512. package/.docs/reference/voice/voice.events.md +0 -37
  513. package/.docs/reference/voice/voice.getSpeakers.md +0 -129
  514. package/.docs/reference/voice/voice.listen.md +0 -164
  515. package/.docs/reference/voice/voice.off.md +0 -54
  516. package/.docs/reference/voice/voice.on.md +0 -111
  517. package/.docs/reference/voice/voice.send.md +0 -65
  518. package/.docs/reference/voice/voice.speak.md +0 -157
  519. package/.docs/reference/voice/voice.updateConfig.md +0 -60
  520. package/.docs/reference/workflows/run-methods/cancel.md +0 -86
  521. package/.docs/reference/workflows/run-methods/restart.md +0 -33
  522. package/.docs/reference/workflows/run-methods/resume.md +0 -59
  523. package/.docs/reference/workflows/run-methods/start.md +0 -58
  524. package/.docs/reference/workflows/run-methods/startAsync.md +0 -67
  525. package/.docs/reference/workflows/run-methods/timeTravel.md +0 -142
  526. package/.docs/reference/workflows/run.md +0 -59
  527. package/.docs/reference/workflows/step.md +0 -119
  528. package/.docs/reference/workflows/workflow-methods/branch.md +0 -25
  529. package/.docs/reference/workflows/workflow-methods/commit.md +0 -17
  530. package/.docs/reference/workflows/workflow-methods/create-run.md +0 -63
  531. package/.docs/reference/workflows/workflow-methods/dountil.md +0 -25
  532. package/.docs/reference/workflows/workflow-methods/dowhile.md +0 -25
  533. package/.docs/reference/workflows/workflow-methods/foreach.md +0 -118
  534. package/.docs/reference/workflows/workflow-methods/map.md +0 -93
  535. package/.docs/reference/workflows/workflow-methods/parallel.md +0 -21
  536. package/.docs/reference/workflows/workflow-methods/sleep.md +0 -35
  537. package/.docs/reference/workflows/workflow-methods/sleepUntil.md +0 -35
  538. package/.docs/reference/workflows/workflow-methods/then.md +0 -21
  539. package/.docs/reference/workflows/workflow.md +0 -157
  540. package/.docs/reference/workspace/e2b-sandbox.md +0 -288
  541. package/.docs/reference/workspace/filesystem.md +0 -202
  542. package/.docs/reference/workspace/gcs-filesystem.md +0 -170
  543. package/.docs/reference/workspace/local-filesystem.md +0 -327
  544. package/.docs/reference/workspace/local-sandbox.md +0 -285
  545. package/.docs/reference/workspace/s3-filesystem.md +0 -169
  546. package/.docs/reference/workspace/sandbox.md +0 -81
  547. package/.docs/reference/workspace/workspace-class.md +0 -226
@@ -1,1114 +0,0 @@
1
- # Tracing
2
-
3
- Tracing provides specialized monitoring and debugging for the AI-related operations in your application. When enabled, Mastra automatically creates traces for agent runs, LLM generations, tool calls, and workflow steps with AI-specific context and metadata.
4
-
5
- Unlike traditional application tracing, Tracing focuses specifically on understanding your AI pipeline — capturing token usage, model parameters, tool execution details, and conversation flows. This makes it easier to debug issues, optimize performance, and understand how your AI systems behave in production.
6
-
7
- ## How It Works
8
-
9
- Traces are created by:
10
-
11
- - **Configure exporters** → send trace data to observability platforms
12
- - **Set sampling strategies** → control which traces are collected
13
- - **Run agents and workflows** → Mastra auto-instruments them with Tracing
14
-
15
- ## Configuration
16
-
17
- ### Basic Config
18
-
19
- ```ts
20
- import { Mastra } from "@mastra/core";
21
- import {
22
- Observability,
23
- DefaultExporter,
24
- CloudExporter,
25
- SensitiveDataFilter,
26
- } from "@mastra/observability";
27
-
28
- export const mastra = new Mastra({
29
- observability: new Observability({
30
- configs: {
31
- default: {
32
- serviceName: "mastra",
33
- exporters: [
34
- new DefaultExporter(), // Persists traces to storage for Mastra Studio
35
- new CloudExporter(), // Sends traces to Mastra Cloud (if MASTRA_CLOUD_ACCESS_TOKEN is set)
36
- ],
37
- spanOutputProcessors: [
38
- new SensitiveDataFilter(), // Redacts sensitive data like passwords, tokens, keys
39
- ],
40
- },
41
- },
42
- }),
43
- storage: new LibSQLStore({
44
- id: 'mastra-storage',
45
- url: "file:./mastra.db", // Storage is required for tracing
46
- }),
47
- });
48
- ```
49
-
50
- This configuration includes:
51
-
52
- - **Service Name**: `"mastra"` - identifies your service in traces
53
-
54
- - **Sampling**: `"always"` by default (100% of traces)
55
-
56
- - **Exporters**:
57
-
58
- - `DefaultExporter` - Persists traces to your configured storage for Mastra Studio
59
- - `CloudExporter` - Sends traces to Mastra Cloud (requires `MASTRA_CLOUD_ACCESS_TOKEN`)
60
-
61
- - **Span Output Processors**: `SensitiveDataFilter` - Redacts sensitive fields
62
-
63
- ## Exporters
64
-
65
- Exporters determine where your trace data is sent and how it's stored. They integrate with your existing observability stack, support data residency requirements, and can be optimized for cost and performance. You can use multiple exporters simultaneously to send the same trace data to different destinations — for example, storing detailed traces locally for debugging while sending sampled data to a cloud provider for production monitoring.
66
-
67
- ### Internal Exporters
68
-
69
- Mastra provides two built-in exporters:
70
-
71
- - **[Default](https://mastra.ai/docs/observability/tracing/exporters/default)** - Persists traces to local storage for viewing in Studio
72
- - **[Cloud](https://mastra.ai/docs/observability/tracing/exporters/cloud)** - Sends traces to Mastra Cloud for production monitoring and collaboration
73
-
74
- ### External Exporters
75
-
76
- In addition to the internal exporters, Mastra supports integration with popular observability platforms. These exporters allow you to leverage your existing monitoring infrastructure and take advantage of platform-specific features like alerting, dashboards, and correlation with other application metrics.
77
-
78
- - **[Arize](https://mastra.ai/docs/observability/tracing/exporters/arize)** - Exports traces to Arize Phoenix or Arize AX using OpenInference semantic conventions
79
- - **[Braintrust](https://mastra.ai/docs/observability/tracing/exporters/braintrust)** - Exports traces to Braintrust's eval and observability platform
80
- - **[Datadog](https://mastra.ai/docs/observability/tracing/exporters/datadog)** - Sends traces to Datadog APM via OTLP for full-stack observability with AI tracing
81
- - **[Laminar](https://mastra.ai/docs/observability/tracing/exporters/laminar)** - Sends traces to Laminar via OTLP/HTTP (protobuf) with Laminar-native span attributes + scorer support
82
- - **[Langfuse](https://mastra.ai/docs/observability/tracing/exporters/langfuse)** - Sends traces to the Langfuse open-source LLM engineering platform
83
- - **[LangSmith](https://mastra.ai/docs/observability/tracing/exporters/langsmith)** - Pushes traces into LangSmith's observability and evaluation toolkit
84
- - **[PostHog](https://mastra.ai/docs/observability/tracing/exporters/posthog)** - Sends traces to PostHog for AI analytics and product insights
85
- - **[Sentry](https://mastra.ai/docs/observability/tracing/exporters/sentry)** - Sends traces to Sentry for AI tracing and monitoring using OpenTelemetry semantic conventions
86
- - **[OpenTelemetry](https://mastra.ai/docs/observability/tracing/exporters/otel)** - Deliver traces to any OpenTelemetry-compatible observability system
87
- - Supports: Dash0, MLflow, New Relic, SigNoz, Traceloop, Zipkin, and others!
88
-
89
- ## Bridges
90
-
91
- Bridges provide bidirectional integration with external tracing systems. Unlike exporters that send trace data to external platforms, bridges create native spans in external systems and inherit context from them. This enables Mastra operations to participate in existing distributed traces.
92
-
93
- - **[OpenTelemetry Bridge](https://mastra.ai/docs/observability/tracing/bridges/otel)** - Integrate with existing OpenTelemetry infrastructure
94
-
95
- ### Bridges vs Exporters
96
-
97
- | Feature | Bridges | Exporters |
98
- | ---------------------------------------- | ---------------------------- | ------------------------- |
99
- | Creates native spans in external systems | Yes | No |
100
- | Inherits context from external systems | Yes | No |
101
- | Sends data to backends | Via external SDK | Directly |
102
- | Use case | Existing distributed tracing | Standalone Mastra tracing |
103
-
104
- You can use both together — a bridge for context propagation and exporters to send traces to additional destinations.
105
-
106
- ## Sampling Strategies
107
-
108
- Sampling allows you to control which traces are collected, helping you balance between observability needs and resource costs. In production environments with high traffic, collecting every trace can be expensive and unnecessary. Sampling strategies let you capture a representative subset of traces while ensuring you don't miss critical information about errors or important operations.
109
-
110
- Mastra supports four sampling strategies:
111
-
112
- ### Always Sample
113
-
114
- Collects 100% of traces. Best for development, debugging, or low-traffic scenarios where you need complete visibility.
115
-
116
- ```ts
117
- sampling: {
118
- type: "always";
119
- }
120
- ```
121
-
122
- ### Never Sample
123
-
124
- Disables tracing entirely. Useful for specific environments where tracing adds no value or when you need to temporarily disable tracing without removing configuration.
125
-
126
- ```ts
127
- sampling: {
128
- type: "never";
129
- }
130
- ```
131
-
132
- ### Ratio-Based Sampling
133
-
134
- Randomly samples a percentage of traces. Ideal for production environments where you want statistical insights without the cost of full tracing. The probability value ranges from 0 (no traces) to 1 (all traces).
135
-
136
- ```ts
137
- sampling: {
138
- type: 'ratio',
139
- probability: 0.1 // Sample 10% of traces
140
- }
141
- ```
142
-
143
- ### Custom Sampling
144
-
145
- Implements your own sampling logic based on request context, metadata, or business rules. Perfect for complex scenarios like sampling based on user tier, request type, or error conditions.
146
-
147
- ```ts
148
- sampling: {
149
- type: 'custom',
150
- sampler: (options) => {
151
- // Sample premium users at higher rate
152
- if (options?.metadata?.userTier === 'premium') {
153
- return Math.random() < 0.5; // 50% sampling
154
- }
155
-
156
- // Default 1% sampling for others
157
- return Math.random() < 0.01;
158
- }
159
- }
160
- ```
161
-
162
- ### Complete Example
163
-
164
- ```ts
165
- export const mastra = new Mastra({
166
- observability: new Observability({
167
- configs: {
168
- "10_percent": {
169
- serviceName: "my-service",
170
- // Sample 10% of traces
171
- sampling: {
172
- type: "ratio",
173
- probability: 0.1,
174
- },
175
- exporters: [new DefaultExporter()],
176
- },
177
- },
178
- }),
179
- });
180
- ```
181
-
182
- ## Multi-Config Setup
183
-
184
- Complex applications often require different tracing configurations for different scenarios. You might want detailed traces with full sampling during development, sampled traces sent to external providers in production, and specialized configurations for specific features or customer segments. The `configSelector` function enables dynamic configuration selection at runtime, allowing you to route traces based on request context, environment variables, feature flags, or any custom logic.
185
-
186
- This approach is particularly valuable when:
187
-
188
- - Running A/B tests with different observability requirements
189
- - Providing enhanced debugging for specific customers or support cases
190
- - Gradually rolling out new tracing providers without affecting existing monitoring
191
- - Optimizing costs by using different sampling rates for different request types
192
- - Maintaining separate trace streams for compliance or data residency requirements
193
-
194
- > **Info:** Note that only a single config can be used for a specific execution. But a single config can send data to multiple exporters simultaneously.
195
-
196
- ### Dynamic Configuration Selection
197
-
198
- Use `configSelector` to choose the appropriate tracing configuration based on request context:
199
-
200
- ```ts
201
- export const mastra = new Mastra({
202
- observability: new Observability({
203
- configs: {
204
- langfuse: {
205
- serviceName: "langfuse-service",
206
- exporters: [langfuseExporter],
207
- },
208
- braintrust: {
209
- serviceName: "braintrust-service",
210
- exporters: [braintrustExporter],
211
- },
212
- debug: {
213
- serviceName: "debug-service",
214
- sampling: { type: "always" },
215
- exporters: [new DefaultExporter()],
216
- },
217
- },
218
- configSelector: (context, availableTracers) => {
219
- // Use debug config for support requests
220
- if (context.requestContext?.get("supportMode")) {
221
- return "debug";
222
- }
223
-
224
- // Route specific customers to different providers
225
- const customerId = context.requestContext?.get("customerId");
226
- if (customerId && premiumCustomers.includes(customerId)) {
227
- return "braintrust";
228
- }
229
-
230
- // Route specific requests to langfuse
231
- if (context.requestContext?.get("useExternalTracing")) {
232
- return "langfuse";
233
- }
234
-
235
- throw new Error('no config found')
236
- },
237
- }),
238
- });
239
- ```
240
-
241
- ### Environment-Based Configuration
242
-
243
- A common pattern is to select configurations based on deployment environment:
244
-
245
- ```ts
246
- export const mastra = new Mastra({
247
- observability: new Observability({
248
- configs: {
249
- development: {
250
- serviceName: "my-service-dev",
251
- sampling: { type: "always" },
252
- exporters: [new DefaultExporter()],
253
- },
254
- staging: {
255
- serviceName: "my-service-staging",
256
- sampling: { type: "ratio", probability: 0.5 },
257
- exporters: [langfuseExporter],
258
- },
259
- production: {
260
- serviceName: "my-service-prod",
261
- sampling: { type: "ratio", probability: 0.01 },
262
- exporters: [cloudExporter, langfuseExporter],
263
- },
264
- },
265
- configSelector: (context, availableTracers) => {
266
- const env = process.env.NODE_ENV || "development";
267
- return env;
268
- },
269
- }),
270
- });
271
- ```
272
-
273
- ### Common Configuration Patterns & Troubleshooting
274
-
275
- #### Maintaining Studio and Cloud Access
276
-
277
- When adding external exporters, include `DefaultExporter` and `CloudExporter` to maintain access to Studio and Mastra Cloud:
278
-
279
- ```ts
280
- import {
281
- Observability,
282
- DefaultExporter,
283
- CloudExporter,
284
- SensitiveDataFilter,
285
- } from "@mastra/observability";
286
- import { ArizeExporter } from "@mastra/arize";
287
-
288
- export const mastra = new Mastra({
289
- observability: new Observability({
290
- configs: {
291
- production: {
292
- serviceName: "my-service",
293
- exporters: [
294
- new ArizeExporter({
295
- endpoint: process.env.PHOENIX_ENDPOINT,
296
- apiKey: process.env.PHOENIX_API_KEY,
297
- }),
298
- new DefaultExporter(), // Keep Studio access
299
- new CloudExporter(), // Keep Cloud access
300
- ],
301
- spanOutputProcessors: [
302
- new SensitiveDataFilter(),
303
- ],
304
- },
305
- },
306
- }),
307
- });
308
- ```
309
-
310
- This configuration sends traces to all three destinations simultaneously:
311
-
312
- - **Arize Phoenix/AX** for external observability
313
- - **DefaultExporter** for Studio
314
- - **CloudExporter** for Mastra Cloud dashboard
315
-
316
- > **Info:** Remember: A single trace can be sent to multiple exporters. You don't need separate configs for each exporter unless you want different sampling rates or processors.
317
-
318
- ## Adding Custom Metadata
319
-
320
- Custom metadata allows you to attach additional context to your traces, making it easier to debug issues and understand system behavior in production. Metadata can include business logic details, performance metrics, user context, or any information that helps you understand what happened during execution.
321
-
322
- You can add metadata to any span using the tracing context:
323
-
324
- ```ts
325
- execute: async (inputData, context) => {
326
- const startTime = Date.now();
327
- const response = await fetch(inputData.endpoint);
328
-
329
- // Add custom metadata to the current span
330
- context?.tracingContext.currentSpan?.update({
331
- metadata: {
332
- apiStatusCode: response.status,
333
- endpoint: inputData.endpoint,
334
- responseTimeMs: Date.now() - startTime,
335
- userTier: inputData.userTier,
336
- region: process.env.AWS_REGION,
337
- },
338
- });
339
-
340
- return await response.json();
341
- };
342
- ```
343
-
344
- Metadata set here will be shown in all configured exporters.
345
-
346
- ### Automatic Metadata from RequestContext
347
-
348
- Instead of manually adding metadata to each span, you can configure Mastra to automatically extract values from RequestContext and attach them as metadata to all spans in a trace. This is useful for consistently tracking user identifiers, environment information, feature flags, or any request-scoped data across your entire trace.
349
-
350
- #### Configuration-Level Extraction
351
-
352
- Define which RequestContext keys to extract in your tracing configuration. These keys will be automatically included as metadata for all spans created with this configuration:
353
-
354
- ```ts
355
- export const mastra = new Mastra({
356
- observability: new Observability({
357
- configs: {
358
- default: {
359
- serviceName: "my-service",
360
- requestContextKeys: ["userId", "environment", "tenantId"],
361
- exporters: [new DefaultExporter()],
362
- },
363
- },
364
- }),
365
- });
366
- ```
367
-
368
- Now when you execute agents or workflows with a RequestContext, these values are automatically extracted:
369
-
370
- ```ts
371
- const requestContext = new RequestContext();
372
- requestContext.set("userId", "user-123");
373
- requestContext.set("environment", "production");
374
- requestContext.set("tenantId", "tenant-456");
375
-
376
- // All spans in this trace automatically get userId, environment, and tenantId metadata
377
- const result = await agent.generate("Hello", {
378
- requestContext,
379
- });
380
- ```
381
-
382
- #### Per-Request Additions
383
-
384
- You can add trace-specific keys using `tracingOptions.requestContextKeys`. These are merged with the configuration-level keys:
385
-
386
- ```ts
387
- const requestContext = new RequestContext();
388
- requestContext.set("userId", "user-123");
389
- requestContext.set("environment", "production");
390
- requestContext.set("experimentId", "exp-789");
391
-
392
- const result = await agent.generate("Hello", {
393
- requestContext,
394
- tracingOptions: {
395
- requestContextKeys: ["experimentId"], // Adds to configured keys
396
- },
397
- });
398
-
399
- // All spans now have: userId, environment, AND experimentId
400
- ```
401
-
402
- #### Nested Value Extraction
403
-
404
- Use dot notation to extract nested values from RequestContext:
405
-
406
- ```ts
407
- export const mastra = new Mastra({
408
- observability: new Observability({
409
- configs: {
410
- default: {
411
- requestContextKeys: ["user.id", "session.data.experimentId"],
412
- exporters: [new DefaultExporter()],
413
- },
414
- },
415
- }),
416
- });
417
-
418
- const requestContext = new RequestContext();
419
- requestContext.set("user", { id: "user-456", name: "John Doe" });
420
- requestContext.set("session", { data: { experimentId: "exp-999" } });
421
-
422
- // Metadata will include: { user: { id: 'user-456' }, session: { data: { experimentId: 'exp-999' } } }
423
- ```
424
-
425
- #### How It Works
426
-
427
- 1. **TraceState Computation**: At the start of a trace (root span creation), Mastra computes which keys to extract by merging configuration-level and per-request keys
428
- 2. **Automatic Extraction**: Root spans (agent runs, workflow executions) automatically extract metadata from RequestContext
429
- 3. **Child Span Extraction**: Child spans can also extract metadata if you pass `requestContext` when creating them
430
- 4. **Metadata Precedence**: Explicit metadata passed to span options always takes precedence over extracted metadata
431
-
432
- ### Adding Tags to Traces
433
-
434
- Tags are string labels that help you categorize and filter traces. Unlike metadata (which contains structured key-value data), tags are simple strings designed for quick filtering and organization.
435
-
436
- Use `tracingOptions.tags` to add tags when executing agents or workflows:
437
-
438
- ```ts
439
- // With agents
440
- const result = await agent.generate("Hello", {
441
- tracingOptions: {
442
- tags: ["production", "experiment-v2", "user-request"],
443
- },
444
- });
445
-
446
- // With workflows
447
- const run = await mastra.getWorkflow("myWorkflow").createRun();
448
- const result = await run.start({
449
- inputData: { data: "process this" },
450
- tracingOptions: {
451
- tags: ["batch-processing", "priority-high"],
452
- },
453
- });
454
- ```
455
-
456
- #### How Tags Work
457
-
458
- - **Root span only**: Tags are applied only to the root span of a trace (the agent run or workflow run span)
459
-
460
- - **Widely supported**: Tags are supported by most exporters for filtering and searching traces:
461
-
462
- - **Braintrust** - Native `tags` field
463
- - **Langfuse** - Native `tags` field on traces
464
- - **ArizeExporter** - `tag.tags` OpenInference attribute
465
- - **OtelExporter** - `mastra.tags` span attribute
466
- - **OtelBridge** - `mastra.tags` span attribute
467
-
468
- - **Combinable with metadata**: You can use both `tags` and `metadata` in the same `tracingOptions`
469
-
470
- ```ts
471
- const result = await agent.generate([{ role: "user", content: "Analyze this" }], {
472
- tracingOptions: {
473
- tags: ["production", "analytics"],
474
- metadata: { userId: "user-123", experimentId: "exp-456" },
475
- },
476
- });
477
- ```
478
-
479
- #### Common Tag Patterns
480
-
481
- - **Environment**: `"production"`, `"staging"`, `"development"`
482
- - **Feature flags**: `"feature-x-enabled"`, `"beta-user"`
483
- - **Request types**: `"user-request"`, `"batch-job"`, `"scheduled-task"`
484
- - **Priority levels**: `"priority-high"`, `"priority-low"`
485
- - **Experiments**: `"experiment-v1"`, `"control-group"`, `"treatment-a"`
486
-
487
- ### Hiding Sensitive Input/Output
488
-
489
- When processing sensitive data, you may want to prevent input and output values from being logged to your observability platforms. Use `hideInput` and `hideOutput` in `tracingOptions` to exclude this data from all spans in a trace:
490
-
491
- ```ts
492
- // Hide input data (e.g., user credentials, PII)
493
- const result = await agent.generate([{ role: "user", content: "Process this sensitive data" }], {
494
- tracingOptions: {
495
- hideInput: true, // Input will be hidden from all spans
496
- },
497
- });
498
-
499
- // Hide output data (e.g., generated secrets, confidential results)
500
- const result = await agent.generate([{ role: "user", content: "Generate API keys" }], {
501
- tracingOptions: {
502
- hideOutput: true, // Output will be hidden from all spans
503
- },
504
- });
505
-
506
- // Hide both input and output
507
- const result = await agent.generate([{ role: "user", content: "Handle confidential request" }], {
508
- tracingOptions: {
509
- hideInput: true,
510
- hideOutput: true,
511
- },
512
- });
513
- ```
514
-
515
- #### How It Works
516
-
517
- - **Trace-wide effect**: When set on the root span, these options apply to all child spans in the trace (tool calls, model generations, etc.)
518
- - **Export-time filtering**: The data is still available internally during execution but is excluded when spans are exported to observability platforms
519
- - **Combinable with other options**: You can use `hideInput`/`hideOutput` alongside `tags`, `metadata`, and other `tracingOptions`
520
-
521
- ```ts
522
- const result = await agent.generate([{ role: "user", content: "Sensitive operation" }], {
523
- tracingOptions: {
524
- hideInput: true,
525
- hideOutput: true,
526
- tags: ["sensitive-operation", "pii-handling"],
527
- metadata: { operationType: "credential-processing" },
528
- },
529
- });
530
- ```
531
-
532
- > **Tip:** For more granular control over sensitive data, consider using the [Sensitive Data Filter](https://mastra.ai/docs/observability/tracing/processors/sensitive-data-filter) processor, which can redact specific fields (like passwords, tokens, and keys) while preserving the rest of the input/output.
533
-
534
- #### Child Spans and Metadata Extraction
535
-
536
- When creating child spans within tools or workflow steps, you can pass the `requestContext` parameter to enable metadata extraction:
537
-
538
- ```ts
539
- execute: async (inputData, context) => {
540
- // Create child span WITH requestContext - gets metadata extraction
541
- const dbSpan = context?.tracingContext.currentSpan?.createChildSpan({
542
- type: "generic",
543
- name: "database-query",
544
- requestContext: context?.requestContext, // Pass to enable metadata extraction
545
- });
546
-
547
- const results = await db.query("SELECT * FROM users");
548
- dbSpan?.end({ output: results });
549
-
550
- // Or create child span WITHOUT requestContext - no metadata extraction
551
- const cacheSpan = context?.tracingContext.currentSpan?.createChildSpan({
552
- type: "generic",
553
- name: "cache-check",
554
- // No requestContext - won't extract metadata
555
- });
556
-
557
- return results;
558
- };
559
- ```
560
-
561
- This gives you fine-grained control over which child spans include RequestContext metadata. Root spans (agent/workflow executions) always extract metadata automatically, while child spans only extract when you explicitly pass `requestContext`.
562
-
563
- ## Creating Child Spans
564
-
565
- Child spans allow you to track fine-grained operations within your workflow steps or tools. They provide visibility into sub-operations like database queries, API calls, file operations, or complex calculations. This hierarchical structure helps you identify performance bottlenecks and understand the exact sequence of operations.
566
-
567
- Create child spans inside a tool call or workflow step to track specific operations:
568
-
569
- ```ts
570
- execute: async (inputData, context) => {
571
- // Create another child span for the main database operation
572
- const querySpan = context?.tracingContext.currentSpan?.createChildSpan({
573
- type: "generic",
574
- name: "database-query",
575
- input: { query: inputData.query },
576
- metadata: { database: "production" },
577
- });
578
-
579
- try {
580
- const results = await db.query(inputData.query);
581
- querySpan?.end({
582
- output: results.data,
583
- metadata: {
584
- rowsReturned: results.length,
585
- queryTimeMs: results.executionTime,
586
- cacheHit: results.fromCache,
587
- },
588
- });
589
- return results;
590
- } catch (error) {
591
- querySpan?.error({
592
- error,
593
- metadata: { retryable: isRetryableError(error) },
594
- });
595
- throw error;
596
- }
597
- };
598
- ```
599
-
600
- Child spans automatically inherit the trace context from their parent, maintaining the relationship hierarchy in your observability platform.
601
-
602
- ## Span Formatting
603
-
604
- Mastra provides two ways to transform span data before it reaches your observability platform: **span processors** and **custom span formatters**. Both allow you to modify, filter, or enrich trace data, but they operate at different levels and serve different purposes.
605
-
606
- | Feature | Span Processors | Custom Span Formatters |
607
- | ------------------- | ------------------------------- | ---------------------------------------------- |
608
- | Configuration level | Observability config | Per-exporter |
609
- | Operates on | Internal `Span` object | Exported `ExportedSpan` data |
610
- | Applies to | All exporters | Single exporter |
611
- | Async support | No | Yes |
612
- | Use case | Security, filtering, enrichment | Platform-specific formatting, async enrichment |
613
-
614
- Use **span processors** for synchronous transformations that should apply to all exporters (like redacting sensitive data). Use **custom span formatters** when different exporters need different representations of the same data (like plain text for one platform and structured data for another), or when you need to perform asynchronous operations like fetching data from external APIs.
615
-
616
- ### Span Processors
617
-
618
- Span processors transform, filter, or enrich trace data before it's exported. They act as a pipeline between span creation and export, enabling you to modify spans for security, compliance, or debugging purposes. Processors run once and affect all exporters.
619
-
620
- #### Built-in Processors
621
-
622
- - [Sensitive Data Filter](https://mastra.ai/docs/observability/tracing/processors/sensitive-data-filter) redacts sensitive information. It is enabled in the default observability config.
623
-
624
- #### Creating Custom Processors
625
-
626
- You can create custom span processors by implementing the `SpanOutputProcessor` interface. Here's a simple example that converts all input text in spans to lowercase:
627
-
628
- ```ts
629
- import type { SpanOutputProcessor, AnySpan } from "@mastra/observability";
630
-
631
- export class LowercaseInputProcessor implements SpanOutputProcessor {
632
- name = "lowercase-processor";
633
-
634
- process(span: AnySpan): AnySpan {
635
- span.input = `${span.input}`.toLowerCase();
636
- return span;
637
- }
638
-
639
- async shutdown(): Promise<void> {
640
- // Cleanup if needed
641
- }
642
- }
643
-
644
- // Use the custom processor
645
- export const mastra = new Mastra({
646
- observability: new Observability({
647
- configs: {
648
- development: {
649
- spanOutputProcessors: [new LowercaseInputProcessor(), new SensitiveDataFilter()],
650
- exporters: [new DefaultExporter()],
651
- },
652
- },
653
- }),
654
- });
655
- ```
656
-
657
- Processors are executed in the order they're defined, allowing you to chain multiple transformations. Common use cases include:
658
-
659
- - Redacting sensitive data (passwords, tokens, API keys)
660
- - Adding environment-specific metadata
661
- - Filtering out spans based on criteria
662
- - Normalizing data formats
663
- - Enriching spans with business context
664
-
665
- ### Custom Span Formatters
666
-
667
- Custom span formatters transform how spans appear in specific observability platforms. Unlike span processors, formatters are configured per-exporter, allowing different formatting for different destinations. Formatters support both synchronous and asynchronous operations.
668
-
669
- #### Use Cases
670
-
671
- - **Extract plain text from AI SDK messages** - Convert structured message arrays to readable text
672
- - **Transform input/output formats** - Customize how data appears in specific platforms
673
- - **Platform-specific field mapping** - Add or remove fields based on platform requirements
674
- - **Async data enrichment** - Fetch additional context from external APIs or databases
675
-
676
- #### Configuration
677
-
678
- Add a `customSpanFormatter` to any exporter configuration:
679
-
680
- ```ts
681
- import { BraintrustExporter } from "@mastra/braintrust";
682
- import { LangfuseExporter } from "@mastra/langfuse";
683
- import { SpanType } from "@mastra/core/observability";
684
- import type { CustomSpanFormatter } from "@mastra/core/observability";
685
-
686
- // Formatter that extracts plain text from AI messages
687
- const plainTextFormatter: CustomSpanFormatter = (span) => {
688
- if (span.type === SpanType.AGENT_RUN && Array.isArray(span.input)) {
689
- const userMessage = span.input.find((m) => m.role === "user");
690
- return {
691
- ...span,
692
- input: userMessage?.content ?? span.input,
693
- };
694
- }
695
- return span;
696
- };
697
-
698
- export const mastra = new Mastra({
699
- observability: new Observability({
700
- configs: {
701
- default: {
702
- serviceName: "my-service",
703
- exporters: [
704
- // Braintrust gets plain text formatting
705
- new BraintrustExporter({
706
- customSpanFormatter: plainTextFormatter,
707
- }),
708
- // Langfuse keeps the original structured format
709
- new LangfuseExporter(),
710
- ],
711
- },
712
- },
713
- }),
714
- });
715
- ```
716
-
717
- #### Chaining Multiple Formatters
718
-
719
- Use `chainFormatters` to combine multiple formatters. Chains support both sync and async formatters:
720
-
721
- ```ts
722
- import { chainFormatters } from "@mastra/observability";
723
-
724
- const inputFormatter: CustomSpanFormatter = (span) => ({
725
- ...span,
726
- input: extractPlainText(span.input),
727
- });
728
-
729
- const outputFormatter: CustomSpanFormatter = (span) => ({
730
- ...span,
731
- output: extractPlainText(span.output),
732
- });
733
-
734
- const exporter = new BraintrustExporter({
735
- customSpanFormatter: chainFormatters([inputFormatter, outputFormatter]),
736
- });
737
- ```
738
-
739
- #### Async Formatters
740
-
741
- Custom span formatters support asynchronous operations, enabling use cases like fetching data from external APIs or databases to enrich your spans:
742
-
743
- ```ts
744
- import type { CustomSpanFormatter } from "@mastra/core/observability";
745
-
746
- // Async formatter that enriches spans with user data
747
- const userEnrichmentFormatter: CustomSpanFormatter = async (span) => {
748
- const userId = span.metadata?.userId;
749
- if (!userId) return span;
750
-
751
- // Fetch user data from your API or database
752
- const userData = await fetchUserData(userId);
753
-
754
- return {
755
- ...span,
756
- metadata: {
757
- ...span.metadata,
758
- userName: userData.name,
759
- userEmail: userData.email,
760
- department: userData.department,
761
- },
762
- };
763
- };
764
-
765
- // Async formatter that looks up additional context
766
- const contextEnrichmentFormatter: CustomSpanFormatter = async (span) => {
767
- if (span.type !== SpanType.AGENT_RUN) return span;
768
-
769
- // Fetch experiment configuration
770
- const experimentConfig = await getExperimentConfig(span.metadata?.experimentId);
771
-
772
- return {
773
- ...span,
774
- metadata: {
775
- ...span.metadata,
776
- experimentVariant: experimentConfig?.variant,
777
- experimentGroup: experimentConfig?.group,
778
- },
779
- };
780
- };
781
-
782
- // Use async formatters with an exporter
783
- const exporter = new BraintrustExporter({
784
- customSpanFormatter: userEnrichmentFormatter,
785
- });
786
-
787
- // Or chain sync and async formatters together
788
- const exporter = new LangfuseExporter({
789
- customSpanFormatter: chainFormatters([
790
- plainTextFormatter, // sync
791
- userEnrichmentFormatter, // async
792
- contextEnrichmentFormatter, // async
793
- ]),
794
- });
795
- ```
796
-
797
- > **Note:** Async formatters add latency to span export. Keep async operations fast (under 100ms) to avoid slowing down your application. Consider using caching for frequently accessed data.
798
-
799
- ## Serialization Options
800
-
801
- Serialization options control how span data (input, output, and attributes) is truncated before export. This is useful when working with large payloads, deeply nested objects, or when you need to optimize trace storage.
802
-
803
- ### Configuration
804
-
805
- Add `serializationOptions` to your observability configuration:
806
-
807
- ```ts
808
- export const mastra = new Mastra({
809
- observability: new Observability({
810
- configs: {
811
- default: {
812
- serviceName: "my-service",
813
- serializationOptions: {
814
- maxStringLength: 2048, // Maximum length for string values (default: 1024)
815
- maxDepth: 10, // Maximum depth for nested objects (default: 6)
816
- maxArrayLength: 100, // Maximum number of items in arrays (default: 50)
817
- maxObjectKeys: 75, // Maximum number of keys in objects (default: 50)
818
- },
819
- exporters: [new DefaultExporter()],
820
- },
821
- },
822
- }),
823
- });
824
- ```
825
-
826
- ### Available Options
827
-
828
- | Option | Default | Description |
829
- | ----------------- | ------- | ---------------------------------------------------------------- |
830
- | `maxStringLength` | 1024 | Maximum length for string values. Longer strings are truncated. |
831
- | `maxDepth` | 6 | Maximum depth for nested objects. Deeper levels are omitted. |
832
- | `maxArrayLength` | 50 | Maximum number of items in arrays. Additional items are omitted. |
833
- | `maxObjectKeys` | 50 | Maximum number of keys in objects. Additional keys are omitted. |
834
-
835
- ### Use Cases
836
-
837
- **Increasing limits for debugging**: If your agents or tools work with large documents, API responses, or data structures, increase these limits to capture more context in your traces:
838
-
839
- ```ts
840
- serializationOptions: {
841
- maxStringLength: 8192, // Capture longer text content
842
- maxDepth: 12, // Handle deeply nested JSON responses
843
- maxArrayLength: 200, // Keep more items from large lists
844
- }
845
- ```
846
-
847
- **Reducing trace size for production**: Lower these values to reduce storage costs and improve performance when you don't need full payload visibility:
848
-
849
- ```ts
850
- serializationOptions: {
851
- maxStringLength: 256, // Truncate strings aggressively
852
- maxDepth: 3, // Shallow object representation
853
- maxArrayLength: 10, // Keep only first few items
854
- maxObjectKeys: 20, // Limit object keys
855
- }
856
- ```
857
-
858
- All options are optional — if not specified, they fall back to the defaults shown above.
859
-
860
- ## Retrieving Trace IDs
861
-
862
- When you execute agents or workflows with tracing enabled, the response includes a `traceId` that you can use to look up the full trace in your observability platform. This is useful for debugging, customer support, or correlating traces with other events in your system.
863
-
864
- ### Agent Trace IDs
865
-
866
- Both `generate` and `stream` methods return the trace ID in their response:
867
-
868
- ```ts
869
- // Using generate
870
- const result = await agent.generate("Hello");
871
-
872
- console.log("Trace ID:", result.traceId);
873
-
874
- // Using stream
875
- const streamResult = await agent.stream("Tell me a story");
876
-
877
- console.log("Trace ID:", streamResult.traceId);
878
- ```
879
-
880
- ### Workflow Trace IDs
881
-
882
- Workflow executions also return trace IDs:
883
-
884
- ```ts
885
- // Create a workflow run
886
- const run = await mastra.getWorkflow("myWorkflow").createRun();
887
-
888
- // Start the workflow
889
- const result = await run.start({
890
- inputData: { data: "process this" },
891
- });
892
-
893
- console.log("Trace ID:", result.traceId);
894
-
895
- // Or stream the workflow
896
- const { stream, getWorkflowState } = run.stream({
897
- inputData: { data: "process this" },
898
- });
899
-
900
- // Get the final state which includes the trace ID
901
- const finalState = await getWorkflowState();
902
- console.log("Trace ID:", finalState.traceId);
903
- ```
904
-
905
- ### Using Trace IDs
906
-
907
- Once you have a trace ID, you can:
908
-
909
- 1. **Look up traces in Studio**: Navigate to the traces view and search by ID
910
- 2. **Query traces in external platforms**: Use the ID in Langfuse, Braintrust, MLflow, or your observability platform
911
- 3. **Correlate with logs**: Include the trace ID in your application logs for cross-referencing
912
- 4. **Share for debugging**: Provide trace IDs to support teams or developers for investigation
913
-
914
- The trace ID is only available when tracing is enabled. If tracing is disabled or sampling excludes the request, `traceId` will be `undefined`.
915
-
916
- ## Integrating with External Tracing Systems
917
-
918
- When running Mastra agents or workflows within applications that have existing distributed tracing (OpenTelemetry, Datadog, etc.), you can connect Mastra traces to your parent trace context. This creates a unified view of your entire request flow, making it easier to understand how Mastra operations fit into the broader system.
919
-
920
- ### Passing External Trace IDs
921
-
922
- Use the `tracingOptions` parameter to specify the trace context from your parent system:
923
-
924
- ```ts
925
- // Get trace context from your existing tracing system
926
- const parentTraceId = getCurrentTraceId(); // Your tracing system
927
- const parentSpanId = getCurrentSpanId(); // Your tracing system
928
-
929
- // Execute Mastra operations as part of the parent trace
930
- const result = await agent.generate("Analyze this data", {
931
- tracingOptions: {
932
- traceId: parentTraceId,
933
- parentSpanId: parentSpanId,
934
- },
935
- });
936
-
937
- // The Mastra trace will now appear as a child in your distributed trace
938
- ```
939
-
940
- ### OpenTelemetry Integration
941
-
942
- Integration with OpenTelemetry allows Mastra traces to appear seamlessly in your existing observability platform:
943
-
944
- ```ts
945
- import { trace } from "@opentelemetry/api";
946
-
947
- // Get the current OpenTelemetry span
948
- const currentSpan = trace.getActiveSpan();
949
- const spanContext = currentSpan?.spanContext();
950
-
951
- if (spanContext) {
952
- const result = await agent.generate(userMessage, {
953
- tracingOptions: {
954
- traceId: spanContext.traceId,
955
- parentSpanId: spanContext.spanId,
956
- },
957
- });
958
- }
959
- ```
960
-
961
- ### Workflow Integration
962
-
963
- Workflows support the same pattern for trace propagation:
964
-
965
- ```ts
966
- const workflow = mastra.getWorkflow("data-pipeline");
967
- const run = await workflow.createRun();
968
-
969
- const result = await run.start({
970
- inputData: { data: "..." },
971
- tracingOptions: {
972
- traceId: externalTraceId,
973
- parentSpanId: externalSpanId,
974
- },
975
- });
976
- ```
977
-
978
- ### ID Format Requirements
979
-
980
- Mastra validates trace and span IDs to ensure compatibility:
981
-
982
- - **Trace IDs**: 1-32 hexadecimal characters (OpenTelemetry uses 32)
983
- - **Span IDs**: 1-16 hexadecimal characters (OpenTelemetry uses 16)
984
-
985
- Invalid IDs are handled gracefully — Mastra logs an error and continues:
986
-
987
- - Invalid trace ID → generates a new trace ID
988
- - Invalid parent span ID → ignores the parent relationship
989
-
990
- This ensures tracing never crashes your application, even with malformed input.
991
-
992
- ### Example: Express Middleware
993
-
994
- Here's a complete example showing trace propagation in an Express application:
995
-
996
- ```ts
997
- import { trace } from "@opentelemetry/api";
998
- import express from "express";
999
-
1000
- const app = express();
1001
-
1002
- app.post("/api/analyze", async (req, res) => {
1003
- // Get current OpenTelemetry context
1004
- const currentSpan = trace.getActiveSpan();
1005
- const spanContext = currentSpan?.spanContext();
1006
-
1007
- const result = await agent.generate(req.body.message, {
1008
- tracingOptions: spanContext
1009
- ? {
1010
- traceId: spanContext.traceId,
1011
- parentSpanId: spanContext.spanId,
1012
- }
1013
- : undefined,
1014
- });
1015
-
1016
- res.json(result);
1017
- });
1018
- ```
1019
-
1020
- This creates a single distributed trace that includes both the HTTP request handling and the Mastra agent execution, viewable in your observability platform of choice.
1021
-
1022
- ## Flushing Traces in Serverless Environments
1023
-
1024
- In serverless environments like Vercel's fluid compute, AWS Lambda, or Cloudflare Workers, runtime instances can be reused across multiple requests. The `flush()` method allows you to ensure all buffered spans are exported before the runtime terminates, without shutting down the exporter (which would prevent future exports).
1025
-
1026
- > **Storage requirements:** Serverless environments have ephemeral filesystems. Use external storage instead of local file storage (`file:./mastra.db`). See the [Vercel deployment guide](https://mastra.ai/guides/deployment/vercel) for a complete setup example.
1027
-
1028
- ### Using flush()
1029
-
1030
- Call `flush()` on the observability instance to flush all exporters:
1031
-
1032
- ```ts
1033
- // Get the observability instance from Mastra
1034
- const observability = mastra.getObservability();
1035
-
1036
- // Flush all buffered spans to all exporters
1037
- await observability.flush();
1038
- ```
1039
-
1040
- ### When to Use flush()
1041
-
1042
- Use `flush()` in these scenarios:
1043
-
1044
- - **End of serverless function execution**: Ensure spans are exported before the runtime is paused or terminated
1045
- - **Before long-running operations**: Flush accumulated spans before a potentially slow operation
1046
- - **Periodic flushing**: In long-running processes, periodically flush to ensure timely data availability
1047
-
1048
- ```ts
1049
- // Example: Vercel serverless function
1050
- export async function POST(req: Request) {
1051
- const result = await agent.generate([{ role: "user", content: await req.text() }]);
1052
-
1053
- // Ensure spans are exported before function completes
1054
- const observability = mastra.getObservability();
1055
- await observability.flush();
1056
-
1057
- return Response.json(result);
1058
- }
1059
- ```
1060
-
1061
- ### flush() vs shutdown()
1062
-
1063
- | Method | Behavior | Use Case |
1064
- | ------------ | --------------------------------------------- | ------------------------------------------ |
1065
- | `flush()` | Exports buffered spans, keeps exporter active | Serverless environments, periodic flushing |
1066
- | `shutdown()` | Exports buffered spans, releases resources | Application shutdown, graceful termination |
1067
-
1068
- Use `flush()` when you need to ensure data is exported but want to keep the exporter ready for future requests. Use `shutdown()` only when the application is terminating.
1069
-
1070
- ## What Gets Traced
1071
-
1072
- Mastra automatically creates spans for:
1073
-
1074
- ### Agent Operations
1075
-
1076
- - **Agent runs** - Complete execution with instructions and tools
1077
- - **LLM calls** - Model interactions with tokens and parameters
1078
- - **Tool executions** - Function calls with inputs and outputs
1079
- - **Memory operations** - Thread and semantic recall
1080
-
1081
- ### Workflow Operations
1082
-
1083
- - **Workflow runs** - Full execution from start to finish
1084
- - **Individual steps** - Step processing with inputs/outputs
1085
- - **Control flow** - Conditionals, loops, parallel execution
1086
- - **Wait operations** - Delays and event waiting
1087
-
1088
- ## See Also
1089
-
1090
- ### Reference Documentation
1091
-
1092
- - [Configuration API](https://mastra.ai/reference/observability/tracing/configuration) - ObservabilityConfig details
1093
- - [Tracing Classes](https://mastra.ai/reference/observability/tracing/instances) - Core classes and methods
1094
- - [Span Interfaces](https://mastra.ai/reference/observability/tracing/spans) - Span types and lifecycle
1095
- - [Type Definitions](https://mastra.ai/reference/observability/tracing/interfaces) - Complete interface reference
1096
-
1097
- ### Exporters
1098
-
1099
- - [DefaultExporter](https://mastra.ai/reference/observability/tracing/exporters/default-exporter) - Storage persistence
1100
- - [CloudExporter](https://mastra.ai/reference/observability/tracing/exporters/cloud-exporter) - Mastra Cloud integration
1101
- - [ConsoleExporter](https://mastra.ai/reference/observability/tracing/exporters/console-exporter) - Debug output
1102
- - [Arize](https://mastra.ai/reference/observability/tracing/exporters/arize) - Arize Phoenix and Arize AX integration
1103
- - [Braintrust](https://mastra.ai/reference/observability/tracing/exporters/braintrust) - Braintrust integration
1104
- - [Langfuse](https://mastra.ai/reference/observability/tracing/exporters/langfuse) - Langfuse integration
1105
- - [MLflow](https://mastra.ai/docs/observability/tracing/exporters/otel) - MLflow OTLP endpoint setup
1106
- - [OpenTelemetry](https://mastra.ai/reference/observability/tracing/exporters/otel) - OTEL-compatible platforms
1107
-
1108
- ### Bridges
1109
-
1110
- - [OpenTelemetry Bridge](https://mastra.ai/reference/observability/tracing/bridges/otel) - OTEL context integration
1111
-
1112
- ### Processors
1113
-
1114
- - [Sensitive Data Filter](https://mastra.ai/docs/observability/tracing/processors/sensitive-data-filter) - Data redaction