@mastra/mcp-docs-server 0.13.37 → 0.13.38

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 (397) hide show
  1. package/.docs/organized/changelogs/%40internal%2Fchangeset-cli.md +2 -0
  2. package/.docs/organized/changelogs/%40internal%2Fexternal-types.md +2 -0
  3. package/.docs/organized/changelogs/%40internal%2Fstorage-test-utils.md +8 -8
  4. package/.docs/organized/changelogs/%40internal%2Ftypes-builder.md +2 -0
  5. package/.docs/organized/changelogs/%40mastra%2Fclient-js.md +23 -23
  6. package/.docs/organized/changelogs/%40mastra%2Fcore.md +69 -69
  7. package/.docs/organized/changelogs/%40mastra%2Fdeployer-cloud.md +17 -17
  8. package/.docs/organized/changelogs/%40mastra%2Fdeployer-cloudflare.md +17 -17
  9. package/.docs/organized/changelogs/%40mastra%2Fdeployer-netlify.md +17 -17
  10. package/.docs/organized/changelogs/%40mastra%2Fdeployer-vercel.md +17 -17
  11. package/.docs/organized/changelogs/%40mastra%2Fdeployer.md +25 -25
  12. package/.docs/organized/changelogs/%40mastra%2Fmcp-docs-server.md +15 -15
  13. package/.docs/organized/changelogs/%40mastra%2Fplayground-ui.md +27 -27
  14. package/.docs/organized/changelogs/%40mastra%2Freact.md +15 -15
  15. package/.docs/organized/changelogs/%40mastra%2Fserver.md +23 -23
  16. package/.docs/organized/changelogs/create-mastra.md +5 -5
  17. package/.docs/organized/changelogs/mastra.md +17 -17
  18. package/.docs/raw/agents/adding-voice.mdx +20 -9
  19. package/.docs/raw/agents/agent-memory.mdx +55 -39
  20. package/.docs/raw/agents/guardrails.mdx +68 -61
  21. package/.docs/raw/agents/networks.mdx +50 -46
  22. package/.docs/raw/agents/overview.mdx +125 -88
  23. package/.docs/raw/agents/using-tools.mdx +14 -15
  24. package/.docs/raw/auth/auth0.mdx +28 -27
  25. package/.docs/raw/auth/clerk.mdx +22 -20
  26. package/.docs/raw/auth/firebase.mdx +42 -39
  27. package/.docs/raw/auth/index.mdx +1 -1
  28. package/.docs/raw/auth/jwt.mdx +18 -16
  29. package/.docs/raw/auth/supabase.mdx +20 -18
  30. package/.docs/raw/auth/workos.mdx +32 -26
  31. package/.docs/raw/community/contributing-templates.mdx +7 -7
  32. package/.docs/raw/community/discord.mdx +2 -2
  33. package/.docs/raw/community/licensing.mdx +1 -1
  34. package/.docs/raw/course/03-agent-memory/26-updating-mastra-export-comprehensive.md +0 -32
  35. package/.docs/raw/deployment/cloud-providers/amazon-ec2.mdx +41 -22
  36. package/.docs/raw/deployment/cloud-providers/aws-lambda.mdx +48 -29
  37. package/.docs/raw/deployment/cloud-providers/azure-app-services.mdx +52 -24
  38. package/.docs/raw/deployment/cloud-providers/digital-ocean.mdx +86 -55
  39. package/.docs/raw/deployment/cloud-providers/index.mdx +16 -13
  40. package/.docs/raw/deployment/monorepo.mdx +32 -42
  41. package/.docs/raw/deployment/overview.mdx +15 -15
  42. package/.docs/raw/deployment/server-deployment.mdx +18 -23
  43. package/.docs/raw/deployment/serverless-platforms/cloudflare-deployer.mdx +16 -17
  44. package/.docs/raw/deployment/serverless-platforms/index.mdx +15 -12
  45. package/.docs/raw/deployment/serverless-platforms/netlify-deployer.mdx +14 -23
  46. package/.docs/raw/deployment/serverless-platforms/vercel-deployer.mdx +16 -23
  47. package/.docs/raw/deployment/web-framework.mdx +14 -14
  48. package/.docs/raw/frameworks/agentic-uis/ai-sdk.mdx +138 -145
  49. package/.docs/raw/frameworks/agentic-uis/assistant-ui.mdx +54 -43
  50. package/.docs/raw/frameworks/agentic-uis/cedar-os.mdx +51 -36
  51. package/.docs/raw/frameworks/agentic-uis/copilotkit.mdx +161 -120
  52. package/.docs/raw/frameworks/agentic-uis/openrouter.mdx +59 -48
  53. package/.docs/raw/frameworks/servers/express.mdx +45 -44
  54. package/.docs/raw/frameworks/web-frameworks/astro.mdx +245 -162
  55. package/.docs/raw/frameworks/web-frameworks/next-js.mdx +112 -69
  56. package/.docs/raw/frameworks/web-frameworks/sveltekit.mdx +189 -164
  57. package/.docs/raw/frameworks/web-frameworks/vite-react.mdx +94 -81
  58. package/.docs/raw/getting-started/installation.mdx +164 -133
  59. package/.docs/raw/getting-started/mcp-docs-server.mdx +36 -39
  60. package/.docs/raw/getting-started/project-structure.mdx +34 -42
  61. package/.docs/raw/getting-started/studio.mdx +40 -58
  62. package/.docs/raw/getting-started/templates.mdx +22 -27
  63. package/.docs/raw/index.mdx +9 -9
  64. package/.docs/raw/mastra-cloud/dashboard.mdx +10 -10
  65. package/.docs/raw/mastra-cloud/observability.mdx +7 -8
  66. package/.docs/raw/mastra-cloud/overview.mdx +16 -22
  67. package/.docs/raw/mastra-cloud/setting-up.mdx +33 -20
  68. package/.docs/raw/memory/conversation-history.mdx +2 -2
  69. package/.docs/raw/memory/overview.mdx +21 -23
  70. package/.docs/raw/memory/semantic-recall.mdx +14 -13
  71. package/.docs/raw/memory/storage/memory-with-libsql.mdx +27 -28
  72. package/.docs/raw/memory/storage/memory-with-pg.mdx +26 -26
  73. package/.docs/raw/memory/storage/memory-with-upstash.mdx +26 -27
  74. package/.docs/raw/memory/threads-and-resources.mdx +23 -20
  75. package/.docs/raw/memory/working-memory.mdx +27 -38
  76. package/.docs/raw/observability/ai-tracing/exporters/arize.mdx +30 -29
  77. package/.docs/raw/observability/ai-tracing/exporters/braintrust.mdx +8 -9
  78. package/.docs/raw/observability/ai-tracing/exporters/cloud.mdx +17 -16
  79. package/.docs/raw/observability/ai-tracing/exporters/default.mdx +31 -32
  80. package/.docs/raw/observability/ai-tracing/exporters/langfuse.mdx +18 -17
  81. package/.docs/raw/observability/ai-tracing/exporters/langsmith.mdx +14 -14
  82. package/.docs/raw/observability/ai-tracing/exporters/otel.mdx +56 -46
  83. package/.docs/raw/observability/ai-tracing/overview.mdx +145 -122
  84. package/.docs/raw/observability/ai-tracing/processors/sensitive-data-filter.mdx +57 -36
  85. package/.docs/raw/observability/logging.mdx +14 -17
  86. package/.docs/raw/observability/nextjs-tracing.mdx +5 -5
  87. package/.docs/raw/observability/otel-tracing.mdx +17 -18
  88. package/.docs/raw/observability/overview.mdx +14 -10
  89. package/.docs/raw/rag/chunking-and-embedding.mdx +10 -8
  90. package/.docs/raw/rag/overview.mdx +5 -5
  91. package/.docs/raw/rag/retrieval.mdx +125 -107
  92. package/.docs/raw/rag/vector-databases.mdx +232 -223
  93. package/.docs/raw/reference/agents/agent.mdx +54 -41
  94. package/.docs/raw/reference/agents/generate.mdx +367 -261
  95. package/.docs/raw/reference/agents/generateLegacy.mdx +260 -178
  96. package/.docs/raw/reference/agents/getDefaultGenerateOptions.mdx +7 -5
  97. package/.docs/raw/reference/agents/getDefaultStreamOptions.mdx +7 -5
  98. package/.docs/raw/reference/agents/getDescription.mdx +3 -2
  99. package/.docs/raw/reference/agents/getInstructions.mdx +7 -5
  100. package/.docs/raw/reference/agents/getLLM.mdx +11 -7
  101. package/.docs/raw/reference/agents/getMemory.mdx +7 -5
  102. package/.docs/raw/reference/agents/getModel.mdx +7 -5
  103. package/.docs/raw/reference/agents/getScorers.mdx +7 -5
  104. package/.docs/raw/reference/agents/getTools.mdx +7 -5
  105. package/.docs/raw/reference/agents/getVoice.mdx +7 -5
  106. package/.docs/raw/reference/agents/getWorkflows.mdx +7 -5
  107. package/.docs/raw/reference/agents/listAgents.mdx +6 -4
  108. package/.docs/raw/reference/agents/network.mdx +171 -116
  109. package/.docs/raw/reference/auth/auth0.mdx +18 -14
  110. package/.docs/raw/reference/auth/clerk.mdx +15 -12
  111. package/.docs/raw/reference/auth/firebase.mdx +23 -16
  112. package/.docs/raw/reference/auth/jwt.mdx +7 -6
  113. package/.docs/raw/reference/auth/supabase.mdx +13 -10
  114. package/.docs/raw/reference/auth/workos.mdx +17 -13
  115. package/.docs/raw/reference/cli/create-mastra.mdx +61 -44
  116. package/.docs/raw/reference/cli/mastra.mdx +11 -11
  117. package/.docs/raw/reference/client-js/agents.mdx +40 -43
  118. package/.docs/raw/reference/client-js/error-handling.mdx +1 -1
  119. package/.docs/raw/reference/client-js/logs.mdx +1 -1
  120. package/.docs/raw/reference/client-js/mastra-client.mdx +21 -13
  121. package/.docs/raw/reference/client-js/memory.mdx +6 -2
  122. package/.docs/raw/reference/client-js/observability.mdx +10 -9
  123. package/.docs/raw/reference/client-js/telemetry.mdx +1 -1
  124. package/.docs/raw/reference/client-js/tools.mdx +1 -1
  125. package/.docs/raw/reference/client-js/vectors.mdx +1 -1
  126. package/.docs/raw/reference/client-js/workflows-legacy.mdx +1 -1
  127. package/.docs/raw/reference/client-js/workflows.mdx +7 -7
  128. package/.docs/raw/reference/core/getAgent.mdx +6 -5
  129. package/.docs/raw/reference/core/getAgentById.mdx +5 -4
  130. package/.docs/raw/reference/core/getAgents.mdx +3 -3
  131. package/.docs/raw/reference/core/getDeployer.mdx +4 -3
  132. package/.docs/raw/reference/core/getLogger.mdx +4 -3
  133. package/.docs/raw/reference/core/getLogs.mdx +10 -6
  134. package/.docs/raw/reference/core/getLogsByRunId.mdx +8 -5
  135. package/.docs/raw/reference/core/getMCPServer.mdx +8 -5
  136. package/.docs/raw/reference/core/getMCPServers.mdx +4 -3
  137. package/.docs/raw/reference/core/getMemory.mdx +4 -3
  138. package/.docs/raw/reference/core/getScorer.mdx +15 -12
  139. package/.docs/raw/reference/core/getScorerByName.mdx +12 -9
  140. package/.docs/raw/reference/core/getScorers.mdx +3 -2
  141. package/.docs/raw/reference/core/getServer.mdx +4 -3
  142. package/.docs/raw/reference/core/getStorage.mdx +4 -3
  143. package/.docs/raw/reference/core/getTelemetry.mdx +4 -3
  144. package/.docs/raw/reference/core/getVector.mdx +6 -4
  145. package/.docs/raw/reference/core/getVectors.mdx +4 -3
  146. package/.docs/raw/reference/core/getWorkflow.mdx +7 -4
  147. package/.docs/raw/reference/core/getWorkflows.mdx +5 -3
  148. package/.docs/raw/reference/core/mastra-class.mdx +16 -16
  149. package/.docs/raw/reference/core/setLogger.mdx +6 -4
  150. package/.docs/raw/reference/core/setStorage.mdx +4 -4
  151. package/.docs/raw/reference/core/setTelemetry.mdx +4 -3
  152. package/.docs/raw/reference/deployer/cloudflare.mdx +11 -7
  153. package/.docs/raw/reference/deployer/deployer.mdx +2 -1
  154. package/.docs/raw/reference/deployer/netlify.mdx +4 -4
  155. package/.docs/raw/reference/deployer/vercel.mdx +6 -6
  156. package/.docs/raw/reference/evals/answer-relevancy.mdx +4 -5
  157. package/.docs/raw/reference/evals/bias.mdx +4 -5
  158. package/.docs/raw/reference/evals/completeness.mdx +4 -5
  159. package/.docs/raw/reference/evals/content-similarity.mdx +4 -5
  160. package/.docs/raw/reference/evals/context-position.mdx +4 -5
  161. package/.docs/raw/reference/evals/context-precision.mdx +4 -5
  162. package/.docs/raw/reference/evals/context-relevancy.mdx +4 -5
  163. package/.docs/raw/reference/evals/contextual-recall.mdx +4 -5
  164. package/.docs/raw/reference/evals/faithfulness.mdx +4 -5
  165. package/.docs/raw/reference/evals/hallucination.mdx +4 -6
  166. package/.docs/raw/reference/evals/keyword-coverage.mdx +4 -5
  167. package/.docs/raw/reference/evals/prompt-alignment.mdx +4 -6
  168. package/.docs/raw/reference/evals/summarization.mdx +4 -6
  169. package/.docs/raw/reference/evals/textual-difference.mdx +4 -5
  170. package/.docs/raw/reference/evals/tone-consistency.mdx +4 -7
  171. package/.docs/raw/reference/evals/toxicity.mdx +4 -5
  172. package/.docs/raw/reference/index.mdx +3 -3
  173. package/.docs/raw/reference/legacyWorkflows/after.mdx +5 -5
  174. package/.docs/raw/reference/legacyWorkflows/afterEvent.mdx +5 -5
  175. package/.docs/raw/reference/legacyWorkflows/commit.mdx +5 -5
  176. package/.docs/raw/reference/legacyWorkflows/createRun.mdx +4 -4
  177. package/.docs/raw/reference/legacyWorkflows/else.mdx +5 -5
  178. package/.docs/raw/reference/legacyWorkflows/events.mdx +7 -7
  179. package/.docs/raw/reference/legacyWorkflows/execute.mdx +4 -4
  180. package/.docs/raw/reference/legacyWorkflows/if.mdx +5 -5
  181. package/.docs/raw/reference/legacyWorkflows/resume.mdx +5 -5
  182. package/.docs/raw/reference/legacyWorkflows/resumeWithEvent.mdx +6 -6
  183. package/.docs/raw/reference/legacyWorkflows/snapshots.mdx +6 -6
  184. package/.docs/raw/reference/legacyWorkflows/start.mdx +6 -6
  185. package/.docs/raw/reference/legacyWorkflows/step-class.mdx +4 -4
  186. package/.docs/raw/reference/legacyWorkflows/step-condition.mdx +4 -4
  187. package/.docs/raw/reference/legacyWorkflows/step-function.mdx +5 -5
  188. package/.docs/raw/reference/legacyWorkflows/step-options.mdx +6 -6
  189. package/.docs/raw/reference/legacyWorkflows/step-retries.mdx +4 -4
  190. package/.docs/raw/reference/legacyWorkflows/suspend.mdx +4 -4
  191. package/.docs/raw/reference/legacyWorkflows/then.mdx +5 -5
  192. package/.docs/raw/reference/legacyWorkflows/until.mdx +4 -4
  193. package/.docs/raw/reference/legacyWorkflows/watch.mdx +3 -3
  194. package/.docs/raw/reference/legacyWorkflows/while.mdx +4 -4
  195. package/.docs/raw/reference/legacyWorkflows/workflow.mdx +7 -7
  196. package/.docs/raw/reference/memory/createThread.mdx +10 -10
  197. package/.docs/raw/reference/memory/deleteMessages.mdx +7 -5
  198. package/.docs/raw/reference/memory/getThreadById.mdx +6 -5
  199. package/.docs/raw/reference/memory/getThreadsByResourceId.mdx +11 -10
  200. package/.docs/raw/reference/memory/getThreadsByResourceIdPaginated.mdx +10 -9
  201. package/.docs/raw/reference/memory/{Memory.mdx → memory-class.mdx} +53 -46
  202. package/.docs/raw/reference/memory/query.mdx +39 -25
  203. package/.docs/raw/reference/observability/ai-tracing/ai-tracing.mdx +9 -5
  204. package/.docs/raw/reference/observability/ai-tracing/configuration.mdx +26 -22
  205. package/.docs/raw/reference/observability/ai-tracing/exporters/arize.mdx +16 -12
  206. package/.docs/raw/reference/observability/ai-tracing/exporters/braintrust.mdx +14 -14
  207. package/.docs/raw/reference/observability/ai-tracing/exporters/cloud-exporter.mdx +16 -11
  208. package/.docs/raw/reference/observability/ai-tracing/exporters/console-exporter.mdx +10 -6
  209. package/.docs/raw/reference/observability/ai-tracing/exporters/default-exporter.mdx +23 -15
  210. package/.docs/raw/reference/observability/ai-tracing/exporters/langfuse.mdx +6 -6
  211. package/.docs/raw/reference/observability/ai-tracing/exporters/langsmith.mdx +13 -13
  212. package/.docs/raw/reference/observability/ai-tracing/exporters/otel.mdx +44 -36
  213. package/.docs/raw/reference/observability/ai-tracing/interfaces.mdx +115 -106
  214. package/.docs/raw/reference/observability/ai-tracing/processors/sensitive-data-filter.mdx +37 -32
  215. package/.docs/raw/reference/observability/ai-tracing/span.mdx +29 -26
  216. package/.docs/raw/reference/observability/logging/pino-logger.mdx +13 -15
  217. package/.docs/raw/reference/observability/otel-tracing/otel-config.mdx +2 -2
  218. package/.docs/raw/reference/observability/otel-tracing/providers/arize-ax.mdx +3 -3
  219. package/.docs/raw/reference/observability/otel-tracing/providers/arize-phoenix.mdx +2 -1
  220. package/.docs/raw/reference/observability/otel-tracing/providers/dash0.mdx +1 -1
  221. package/.docs/raw/reference/observability/otel-tracing/providers/index.mdx +12 -14
  222. package/.docs/raw/reference/observability/otel-tracing/providers/keywordsai.mdx +3 -3
  223. package/.docs/raw/reference/observability/otel-tracing/providers/laminar.mdx +1 -1
  224. package/.docs/raw/reference/observability/otel-tracing/providers/langfuse.mdx +4 -4
  225. package/.docs/raw/reference/observability/otel-tracing/providers/langsmith.mdx +1 -1
  226. package/.docs/raw/reference/observability/otel-tracing/providers/langwatch.mdx +2 -2
  227. package/.docs/raw/reference/observability/otel-tracing/providers/new-relic.mdx +1 -1
  228. package/.docs/raw/reference/observability/otel-tracing/providers/signoz.mdx +1 -1
  229. package/.docs/raw/reference/observability/otel-tracing/providers/traceloop.mdx +1 -1
  230. package/.docs/raw/reference/processors/batch-parts-processor.mdx +13 -10
  231. package/.docs/raw/reference/processors/language-detector.mdx +27 -17
  232. package/.docs/raw/reference/processors/moderation-processor.mdx +26 -17
  233. package/.docs/raw/reference/processors/pii-detector.mdx +28 -18
  234. package/.docs/raw/reference/processors/prompt-injection-detector.mdx +25 -17
  235. package/.docs/raw/reference/processors/system-prompt-scrubber.mdx +26 -17
  236. package/.docs/raw/reference/processors/token-limiter-processor.mdx +22 -15
  237. package/.docs/raw/reference/processors/unicode-normalizer.mdx +13 -12
  238. package/.docs/raw/reference/rag/chunk.mdx +41 -23
  239. package/.docs/raw/reference/rag/database-config.mdx +56 -38
  240. package/.docs/raw/reference/rag/document.mdx +1 -1
  241. package/.docs/raw/reference/rag/embeddings.mdx +1 -1
  242. package/.docs/raw/reference/rag/extract-params.mdx +1 -1
  243. package/.docs/raw/reference/rag/graph-rag.mdx +1 -1
  244. package/.docs/raw/reference/rag/metadata-filters.mdx +23 -26
  245. package/.docs/raw/reference/rag/rerank.mdx +1 -1
  246. package/.docs/raw/reference/rag/rerankWithScorer.mdx +2 -2
  247. package/.docs/raw/reference/scorers/answer-relevancy.mdx +35 -17
  248. package/.docs/raw/reference/scorers/answer-similarity.mdx +84 -68
  249. package/.docs/raw/reference/scorers/bias.mdx +22 -19
  250. package/.docs/raw/reference/scorers/completeness.mdx +21 -16
  251. package/.docs/raw/reference/scorers/content-similarity.mdx +12 -10
  252. package/.docs/raw/reference/scorers/context-precision.mdx +73 -64
  253. package/.docs/raw/reference/scorers/context-relevance.mdx +142 -126
  254. package/.docs/raw/reference/scorers/create-scorer.mdx +93 -61
  255. package/.docs/raw/reference/scorers/faithfulness.mdx +21 -13
  256. package/.docs/raw/reference/scorers/hallucination.mdx +17 -12
  257. package/.docs/raw/reference/scorers/keyword-coverage.mdx +32 -27
  258. package/.docs/raw/reference/scorers/mastra-scorer.mdx +39 -33
  259. package/.docs/raw/reference/scorers/noise-sensitivity.mdx +203 -152
  260. package/.docs/raw/reference/scorers/prompt-alignment.mdx +186 -132
  261. package/.docs/raw/reference/scorers/run-experiment.mdx +40 -31
  262. package/.docs/raw/reference/scorers/textual-difference.mdx +25 -26
  263. package/.docs/raw/reference/scorers/tone-consistency.mdx +29 -26
  264. package/.docs/raw/reference/scorers/tool-call-accuracy.mdx +180 -176
  265. package/.docs/raw/reference/scorers/toxicity.mdx +35 -31
  266. package/.docs/raw/reference/storage/cloudflare-d1.mdx +1 -1
  267. package/.docs/raw/reference/storage/cloudflare.mdx +1 -1
  268. package/.docs/raw/reference/storage/dynamodb.mdx +1 -1
  269. package/.docs/raw/reference/storage/lance.mdx +1 -1
  270. package/.docs/raw/reference/storage/libsql.mdx +2 -2
  271. package/.docs/raw/reference/storage/mongodb.mdx +4 -5
  272. package/.docs/raw/reference/storage/mssql.mdx +5 -4
  273. package/.docs/raw/reference/storage/postgresql.mdx +35 -33
  274. package/.docs/raw/reference/storage/upstash.mdx +6 -5
  275. package/.docs/raw/reference/streaming/ChunkType.mdx +788 -314
  276. package/.docs/raw/reference/streaming/agents/MastraModelOutput.mdx +265 -109
  277. package/.docs/raw/reference/streaming/agents/stream.mdx +375 -266
  278. package/.docs/raw/reference/streaming/agents/streamLegacy.mdx +233 -162
  279. package/.docs/raw/reference/streaming/workflows/observeStream.mdx +4 -4
  280. package/.docs/raw/reference/streaming/workflows/observeStreamVNext.mdx +5 -5
  281. package/.docs/raw/reference/streaming/workflows/resumeStreamVNext.mdx +24 -20
  282. package/.docs/raw/reference/streaming/workflows/stream.mdx +35 -26
  283. package/.docs/raw/reference/streaming/workflows/streamVNext.mdx +36 -27
  284. package/.docs/raw/reference/templates/overview.mdx +16 -39
  285. package/.docs/raw/reference/tools/client.mdx +1 -1
  286. package/.docs/raw/reference/tools/create-tool.mdx +45 -35
  287. package/.docs/raw/reference/tools/document-chunker-tool.mdx +2 -2
  288. package/.docs/raw/reference/tools/graph-rag-tool.mdx +12 -12
  289. package/.docs/raw/reference/tools/mcp-client.mdx +70 -64
  290. package/.docs/raw/reference/tools/mcp-server.mdx +91 -78
  291. package/.docs/raw/reference/tools/vector-query-tool.mdx +48 -38
  292. package/.docs/raw/reference/vectors/astra.mdx +1 -1
  293. package/.docs/raw/reference/vectors/chroma.mdx +25 -19
  294. package/.docs/raw/reference/vectors/couchbase.mdx +4 -4
  295. package/.docs/raw/reference/vectors/lance.mdx +5 -6
  296. package/.docs/raw/reference/vectors/libsql.mdx +1 -1
  297. package/.docs/raw/reference/vectors/mongodb.mdx +1 -1
  298. package/.docs/raw/reference/vectors/opensearch.mdx +1 -1
  299. package/.docs/raw/reference/vectors/pg.mdx +8 -4
  300. package/.docs/raw/reference/vectors/pinecone.mdx +1 -1
  301. package/.docs/raw/reference/vectors/qdrant.mdx +1 -1
  302. package/.docs/raw/reference/vectors/s3vectors.mdx +35 -27
  303. package/.docs/raw/reference/vectors/turbopuffer.mdx +1 -1
  304. package/.docs/raw/reference/vectors/upstash.mdx +33 -25
  305. package/.docs/raw/reference/vectors/vectorize.mdx +1 -1
  306. package/.docs/raw/reference/voice/azure.mdx +1 -1
  307. package/.docs/raw/reference/voice/cloudflare.mdx +1 -1
  308. package/.docs/raw/reference/voice/composite-voice.mdx +1 -1
  309. package/.docs/raw/reference/voice/deepgram.mdx +1 -1
  310. package/.docs/raw/reference/voice/elevenlabs.mdx +1 -1
  311. package/.docs/raw/reference/voice/google-gemini-live.mdx +6 -4
  312. package/.docs/raw/reference/voice/google.mdx +1 -1
  313. package/.docs/raw/reference/voice/mastra-voice.mdx +1 -1
  314. package/.docs/raw/reference/voice/murf.mdx +1 -1
  315. package/.docs/raw/reference/voice/openai-realtime.mdx +1 -1
  316. package/.docs/raw/reference/voice/openai.mdx +1 -1
  317. package/.docs/raw/reference/voice/playai.mdx +1 -1
  318. package/.docs/raw/reference/voice/sarvam.mdx +1 -1
  319. package/.docs/raw/reference/voice/speechify.mdx +1 -1
  320. package/.docs/raw/reference/voice/voice.addInstructions.mdx +1 -1
  321. package/.docs/raw/reference/voice/voice.addTools.mdx +1 -1
  322. package/.docs/raw/reference/voice/voice.answer.mdx +1 -1
  323. package/.docs/raw/reference/voice/voice.close.mdx +1 -1
  324. package/.docs/raw/reference/voice/voice.connect.mdx +1 -1
  325. package/.docs/raw/reference/voice/voice.events.mdx +1 -1
  326. package/.docs/raw/reference/voice/voice.getSpeakers.mdx +23 -30
  327. package/.docs/raw/reference/voice/voice.listen.mdx +1 -1
  328. package/.docs/raw/reference/voice/voice.off.mdx +1 -1
  329. package/.docs/raw/reference/voice/voice.on.mdx +1 -1
  330. package/.docs/raw/reference/voice/voice.send.mdx +1 -1
  331. package/.docs/raw/reference/voice/voice.speak.mdx +1 -1
  332. package/.docs/raw/reference/voice/voice.updateConfig.mdx +1 -1
  333. package/.docs/raw/reference/workflows/run-methods/cancel.mdx +4 -3
  334. package/.docs/raw/reference/workflows/run-methods/resume.mdx +49 -34
  335. package/.docs/raw/reference/workflows/run-methods/start.mdx +43 -31
  336. package/.docs/raw/reference/workflows/run-methods/watch.mdx +7 -8
  337. package/.docs/raw/reference/workflows/run.mdx +7 -10
  338. package/.docs/raw/reference/workflows/step.mdx +15 -12
  339. package/.docs/raw/reference/workflows/workflow-methods/branch.mdx +2 -2
  340. package/.docs/raw/reference/workflows/workflow-methods/commit.mdx +1 -1
  341. package/.docs/raw/reference/workflows/workflow-methods/create-run.mdx +7 -7
  342. package/.docs/raw/reference/workflows/workflow-methods/dountil.mdx +2 -2
  343. package/.docs/raw/reference/workflows/workflow-methods/dowhile.mdx +2 -2
  344. package/.docs/raw/reference/workflows/workflow-methods/foreach.mdx +1 -1
  345. package/.docs/raw/reference/workflows/workflow-methods/map.mdx +3 -2
  346. package/.docs/raw/reference/workflows/workflow-methods/parallel.mdx +1 -1
  347. package/.docs/raw/reference/workflows/workflow-methods/sendEvent.mdx +5 -5
  348. package/.docs/raw/reference/workflows/workflow-methods/sleep.mdx +3 -2
  349. package/.docs/raw/reference/workflows/workflow-methods/sleepUntil.mdx +3 -2
  350. package/.docs/raw/reference/workflows/workflow-methods/then.mdx +1 -1
  351. package/.docs/raw/reference/workflows/workflow-methods/waitForEvent.mdx +3 -3
  352. package/.docs/raw/reference/workflows/workflow.mdx +13 -10
  353. package/.docs/raw/scorers/custom-scorers.mdx +58 -48
  354. package/.docs/raw/scorers/evals-old-api/custom-eval.mdx +6 -8
  355. package/.docs/raw/scorers/evals-old-api/overview.mdx +8 -8
  356. package/.docs/raw/scorers/evals-old-api/running-in-ci.mdx +9 -9
  357. package/.docs/raw/scorers/evals-old-api/textual-evals.mdx +5 -5
  358. package/.docs/raw/scorers/off-the-shelf-scorers.mdx +3 -1
  359. package/.docs/raw/scorers/overview.mdx +20 -19
  360. package/.docs/raw/server-db/custom-api-routes.mdx +8 -8
  361. package/.docs/raw/server-db/mastra-client.mdx +56 -54
  362. package/.docs/raw/server-db/middleware.mdx +11 -7
  363. package/.docs/raw/server-db/production-server.mdx +5 -7
  364. package/.docs/raw/server-db/runtime-context.mdx +41 -38
  365. package/.docs/raw/server-db/storage.mdx +82 -87
  366. package/.docs/raw/streaming/events.mdx +24 -16
  367. package/.docs/raw/streaming/overview.mdx +17 -18
  368. package/.docs/raw/streaming/tool-streaming.mdx +9 -10
  369. package/.docs/raw/streaming/workflow-streaming.mdx +14 -12
  370. package/.docs/raw/tools-mcp/advanced-usage.mdx +2 -2
  371. package/.docs/raw/tools-mcp/mcp-overview.mdx +92 -102
  372. package/.docs/raw/tools-mcp/overview.mdx +9 -14
  373. package/.docs/raw/voice/overview.mdx +273 -250
  374. package/.docs/raw/voice/speech-to-speech.mdx +14 -12
  375. package/.docs/raw/voice/speech-to-text.mdx +2 -2
  376. package/.docs/raw/voice/text-to-speech.mdx +2 -2
  377. package/.docs/raw/workflows/agents-and-tools.mdx +29 -28
  378. package/.docs/raw/workflows/control-flow.mdx +24 -24
  379. package/.docs/raw/workflows/error-handling.mdx +15 -17
  380. package/.docs/raw/workflows/human-in-the-loop.mdx +39 -39
  381. package/.docs/raw/workflows/inngest-workflow.mdx +33 -29
  382. package/.docs/raw/workflows/input-data-mapping.mdx +9 -9
  383. package/.docs/raw/workflows/overview.mdx +60 -60
  384. package/.docs/raw/workflows/snapshots.mdx +54 -36
  385. package/.docs/raw/workflows/suspend-and-resume.mdx +52 -57
  386. package/.docs/raw/workflows-legacy/control-flow.mdx +15 -17
  387. package/.docs/raw/workflows-legacy/dynamic-workflows.mdx +3 -1
  388. package/.docs/raw/workflows-legacy/error-handling.mdx +8 -6
  389. package/.docs/raw/workflows-legacy/nested-workflows.mdx +6 -0
  390. package/.docs/raw/workflows-legacy/overview.mdx +28 -26
  391. package/.docs/raw/workflows-legacy/runtime-variables.mdx +4 -2
  392. package/.docs/raw/workflows-legacy/steps.mdx +5 -3
  393. package/.docs/raw/workflows-legacy/suspend-and-resume.mdx +10 -8
  394. package/.docs/raw/workflows-legacy/variables.mdx +10 -8
  395. package/CHANGELOG.md +14 -0
  396. package/package.json +5 -5
  397. package/.docs/raw/memory/storage/memory-with-mongodb.mdx +0 -148
@@ -1,5 +1,5 @@
1
1
  ---
2
- title: "Reference: MCPClient | Tool Management | Mastra Docs"
2
+ title: "Reference: MCPClient | Tools & MCP | Mastra Docs"
3
3
  description: API Reference for MCPClient - A class for managing multiple Model Context Protocol servers and their tools.
4
4
  ---
5
5
 
@@ -318,15 +318,15 @@ const mcpClient = new MCPClient({
318
318
  });
319
319
 
320
320
  // Set up elicitation handler
321
- mcpClient.elicitation.onRequest('serverName', async (request) => {
321
+ mcpClient.elicitation.onRequest("serverName", async (request) => {
322
322
  // Handle elicitation request from server
323
- console.log('Server requests:', request.message);
324
- console.log('Schema:', request.requestedSchema);
325
-
323
+ console.log("Server requests:", request.message);
324
+ console.log("Schema:", request.requestedSchema);
325
+
326
326
  // Return user response
327
327
  return {
328
- action: 'accept',
329
- content: { name: 'John Doe', email: 'john@example.com' }
328
+ action: "accept",
329
+ content: { name: "John Doe", email: "john@example.com" },
330
330
  };
331
331
  });
332
332
  ```
@@ -338,41 +338,43 @@ Sets up a handler function that will be called when any connected MCP server sen
338
338
  **ElicitationHandler Function:**
339
339
 
340
340
  The handler function receives a request object with:
341
+
341
342
  - `message`: A human-readable message describing what information is needed
342
343
  - `requestedSchema`: A JSON schema defining the structure of the expected response
343
344
 
344
345
  The handler must return an `ElicitResult` with:
346
+
345
347
  - `action`: One of `'accept'`, `'decline'`, or `'cancel'`
346
348
  - `content`: The user's data (only when action is `'accept'`)
347
349
 
348
350
  **Example:**
349
351
 
350
352
  ```typescript
351
- mcpClient.elicitation.onRequest('serverName', async (request) => {
353
+ mcpClient.elicitation.onRequest("serverName", async (request) => {
352
354
  console.log(`Server requests: ${request.message}`);
353
-
355
+
354
356
  // Example: Simple user input collection
355
357
  if (request.requestedSchema.properties.name) {
356
358
  // Simulate user accepting and providing data
357
359
  return {
358
- action: 'accept',
360
+ action: "accept",
359
361
  content: {
360
- name: 'Alice Smith',
361
- email: 'alice@example.com'
362
- }
362
+ name: "Alice Smith",
363
+ email: "alice@example.com",
364
+ },
363
365
  };
364
366
  }
365
-
367
+
366
368
  // Simulate user declining the request
367
- return { action: 'decline' };
369
+ return { action: "decline" };
368
370
  });
369
371
  ```
370
372
 
371
373
  **Complete Interactive Example:**
372
374
 
373
375
  ```typescript
374
- import { MCPClient } from '@mastra/mcp';
375
- import { createInterface } from 'readline';
376
+ import { MCPClient } from "@mastra/mcp";
377
+ import { createInterface } from "readline";
376
378
 
377
379
  const readline = createInterface({
378
380
  input: process.stdin,
@@ -380,69 +382,71 @@ const readline = createInterface({
380
382
  });
381
383
 
382
384
  function askQuestion(question: string): Promise<string> {
383
- return new Promise(resolve => {
384
- readline.question(question, answer => resolve(answer.trim()));
385
+ return new Promise((resolve) => {
386
+ readline.question(question, (answer) => resolve(answer.trim()));
385
387
  });
386
388
  }
387
389
 
388
390
  const mcpClient = new MCPClient({
389
391
  servers: {
390
392
  interactiveServer: {
391
- url: new URL('http://localhost:3000/mcp'),
393
+ url: new URL("http://localhost:3000/mcp"),
392
394
  },
393
395
  },
394
396
  });
395
397
 
396
398
  // Set up interactive elicitation handler
397
- await mcpClient.elicitation.onRequest('interactiveServer', async (request) => {
399
+ await mcpClient.elicitation.onRequest("interactiveServer", async (request) => {
398
400
  console.log(`\n📋 Server Request: ${request.message}`);
399
- console.log('Required information:');
400
-
401
+ console.log("Required information:");
402
+
401
403
  const schema = request.requestedSchema;
402
404
  const properties = schema.properties || {};
403
405
  const required = schema.required || [];
404
406
  const content: Record<string, any> = {};
405
-
407
+
406
408
  // Collect input for each field
407
409
  for (const [fieldName, fieldSchema] of Object.entries(properties)) {
408
410
  const field = fieldSchema as any;
409
411
  const isRequired = required.includes(fieldName);
410
-
412
+
411
413
  let prompt = `${field.title || fieldName}`;
412
414
  if (field.description) prompt += ` (${field.description})`;
413
- if (isRequired) prompt += ' *required*';
414
- prompt += ': ';
415
-
415
+ if (isRequired) prompt += " *required*";
416
+ prompt += ": ";
417
+
416
418
  const answer = await askQuestion(prompt);
417
-
419
+
418
420
  // Handle cancellation
419
- if (answer.toLowerCase() === 'cancel') {
420
- return { action: 'cancel' };
421
+ if (answer.toLowerCase() === "cancel") {
422
+ return { action: "cancel" };
421
423
  }
422
-
424
+
423
425
  // Validate required fields
424
- if (answer === '' && isRequired) {
426
+ if (answer === "" && isRequired) {
425
427
  console.log(`❌ ${fieldName} is required`);
426
- return { action: 'decline' };
428
+ return { action: "decline" };
427
429
  }
428
-
429
- if (answer !== '') {
430
+
431
+ if (answer !== "") {
430
432
  content[fieldName] = answer;
431
433
  }
432
434
  }
433
-
435
+
434
436
  // Confirm submission
435
- console.log('\n📝 You provided:');
437
+ console.log("\n📝 You provided:");
436
438
  console.log(JSON.stringify(content, null, 2));
437
-
438
- const confirm = await askQuestion('\nSubmit this information? (yes/no/cancel): ');
439
-
440
- if (confirm.toLowerCase() === 'yes' || confirm.toLowerCase() === 'y') {
441
- return { action: 'accept', content };
442
- } else if (confirm.toLowerCase() === 'cancel') {
443
- return { action: 'cancel' };
439
+
440
+ const confirm = await askQuestion(
441
+ "\nSubmit this information? (yes/no/cancel): ",
442
+ );
443
+
444
+ if (confirm.toLowerCase() === "yes" || confirm.toLowerCase() === "y") {
445
+ return { action: "accept", content };
446
+ } else if (confirm.toLowerCase() === "cancel") {
447
+ return { action: "cancel" };
444
448
  } else {
445
- return { action: 'decline' };
449
+ return { action: "decline" };
446
450
  }
447
451
  });
448
452
  ```
@@ -529,27 +533,27 @@ Elicitation is a feature that allows MCP servers to request structured informati
529
533
  You must set up an elicitation handler before tools that use elicitation are called:
530
534
 
531
535
  ```typescript
532
- import { MCPClient } from '@mastra/mcp';
536
+ import { MCPClient } from "@mastra/mcp";
533
537
 
534
538
  const mcpClient = new MCPClient({
535
539
  servers: {
536
540
  interactiveServer: {
537
- url: new URL('http://localhost:3000/mcp'),
541
+ url: new URL("http://localhost:3000/mcp"),
538
542
  },
539
543
  },
540
544
  });
541
545
 
542
546
  // Set up elicitation handler
543
- mcpClient.elicitation.onRequest('interactiveServer', async (request) => {
547
+ mcpClient.elicitation.onRequest("interactiveServer", async (request) => {
544
548
  // Handle the server's request for user input
545
549
  console.log(`Server needs: ${request.message}`);
546
-
550
+
547
551
  // Your logic to collect user input
548
552
  const userData = await collectUserInput(request.requestedSchema);
549
-
553
+
550
554
  return {
551
- action: 'accept',
552
- content: userData
555
+ action: "accept",
556
+ content: userData,
553
557
  };
554
558
  });
555
559
  ```
@@ -559,21 +563,23 @@ mcpClient.elicitation.onRequest('interactiveServer', async (request) => {
559
563
  Your elicitation handler must return one of three response types:
560
564
 
561
565
  - **Accept**: User provided data and confirmed submission
566
+
562
567
  ```typescript
563
568
  return {
564
- action: 'accept',
565
- content: { name: 'John Doe', email: 'john@example.com' }
569
+ action: "accept",
570
+ content: { name: "John Doe", email: "john@example.com" },
566
571
  };
567
572
  ```
568
573
 
569
574
  - **Decline**: User explicitly declined to provide the information
575
+
570
576
  ```typescript
571
- return { action: 'decline' };
577
+ return { action: "decline" };
572
578
  ```
573
579
 
574
580
  - **Cancel**: User dismissed or cancelled the request
575
581
  ```typescript
576
- return { action: 'cancel' };
582
+ return { action: "cancel" };
577
583
  ```
578
584
 
579
585
  ### Schema-Based Input Collection
@@ -581,14 +587,14 @@ Your elicitation handler must return one of three response types:
581
587
  The `requestedSchema` provides structure for the data the server needs:
582
588
 
583
589
  ```typescript
584
- await mcpClient.elicitation.onRequest('interactiveServer', async (request) => {
590
+ await mcpClient.elicitation.onRequest("interactiveServer", async (request) => {
585
591
  const { properties, required = [] } = request.requestedSchema;
586
592
  const content: Record<string, any> = {};
587
-
593
+
588
594
  for (const [fieldName, fieldSchema] of Object.entries(properties || {})) {
589
595
  const field = fieldSchema as any;
590
596
  const isRequired = required.includes(fieldName);
591
-
597
+
592
598
  // Collect input based on field type and requirements
593
599
  const value = await promptUser({
594
600
  name: fieldName,
@@ -599,13 +605,13 @@ await mcpClient.elicitation.onRequest('interactiveServer', async (request) => {
599
605
  format: field.format,
600
606
  enum: field.enum,
601
607
  });
602
-
608
+
603
609
  if (value !== null) {
604
610
  content[fieldName] = value;
605
611
  }
606
612
  }
607
-
608
- return { action: 'accept', content };
613
+
614
+ return { action: "accept", content };
609
615
  });
610
616
  ```
611
617
 
@@ -679,7 +685,7 @@ async function checkWeatherPrompt() {
679
685
  const weatherPrompts = await mcp.prompts.list();
680
686
  if (weatherPrompts.weather && weatherPrompts.weather.length > 0) {
681
687
  const currentWeatherPrompt = weatherPrompts.weather.find(
682
- (p) => p.name === "current"
688
+ (p) => p.name === "current",
683
689
  );
684
690
  if (currentWeatherPrompt) {
685
691
  console.log("Weather prompt:", currentWeatherPrompt);
@@ -1,5 +1,5 @@
1
1
  ---
2
- title: "Reference: MCPServer | Exposing Mastra Tools via MCP | Mastra Docs"
2
+ title: "Reference: MCPServer | Tools & MCP | Mastra Docs"
3
3
  description: API Reference for MCPServer - A class for exposing Mastra tools and capabilities as a Model Context Protocol server.
4
4
  ---
5
5
 
@@ -165,7 +165,6 @@ A powerful feature of `MCPServer` is its ability to automatically expose your Ma
165
165
  - **Tool Naming**: Each agent is converted into a tool named `ask_<agentKey>`, where `<agentKey>` is the key you used for that agent in the `agents` object. For instance, if you configure `agents: { myAgentKey: myAgentInstance }`, a tool named `ask_myAgentKey` will be created.
166
166
 
167
167
  - **Tool Functionality**:
168
-
169
168
  - **Description**: The generated tool's description will be in the format: "Ask agent `<AgentName>` a question. Original agent instructions: `<agent description>`".
170
169
  - **Input**: The tool expects a single object argument with a `message` property (string): `{ message: "Your question for the agent" }`.
171
170
  - **Execution**: When this tool is called, it invokes the `generate()` method of the corresponding agent, passing the provided `query`.
@@ -383,7 +382,7 @@ import http from "http";
383
382
 
384
383
  const httpServer = http.createServer(async (req, res) => {
385
384
  await server.startHTTP({
386
- url: new URL(req.url || '', 'http://localhost:1234'),
385
+ url: new URL(req.url || "", "http://localhost:1234"),
387
386
  httpPath: `/mcp`,
388
387
  req,
389
388
  res,
@@ -403,32 +402,32 @@ Here are the details for the values needed by the `startHTTP` method:
403
402
  <PropertiesTable
404
403
  content={[
405
404
  {
406
- name: 'url',
407
- type: 'URL',
408
- description: 'The web address the user is requesting.',
405
+ name: "url",
406
+ type: "URL",
407
+ description: "The web address the user is requesting.",
409
408
  },
410
409
  {
411
- name: 'httpPath',
412
- type: 'string',
410
+ name: "httpPath",
411
+ type: "string",
413
412
  description:
414
413
  "The specific part of the URL where the MCP server will handle HTTP requests (e.g., '/mcp').",
415
414
  },
416
415
  {
417
- name: 'req',
418
- type: 'http.IncomingMessage',
419
- description: 'The incoming request object from your web server.',
416
+ name: "req",
417
+ type: "http.IncomingMessage",
418
+ description: "The incoming request object from your web server.",
420
419
  },
421
420
  {
422
- name: 'res',
423
- type: 'http.ServerResponse',
421
+ name: "res",
422
+ type: "http.ServerResponse",
424
423
  description:
425
- 'The response object from your web server, used to send data back.',
424
+ "The response object from your web server, used to send data back.",
426
425
  },
427
426
  {
428
- name: 'options',
429
- type: 'StreamableHTTPServerTransportOptions',
427
+ name: "options",
428
+ type: "StreamableHTTPServerTransportOptions",
430
429
  description:
431
- 'Optional configuration for the HTTP transport. See the options table below for more details.',
430
+ "Optional configuration for the HTTP transport. See the options table below for more details.",
432
431
  optional: true,
433
432
  },
434
433
  ]}
@@ -439,30 +438,30 @@ The `StreamableHTTPServerTransportOptions` object allows you to customize the be
439
438
  <PropertiesTable
440
439
  content={[
441
440
  {
442
- name: 'sessionIdGenerator',
443
- type: '(() => string) | undefined',
441
+ name: "sessionIdGenerator",
442
+ type: "(() => string) | undefined",
444
443
  description:
445
- 'A function that generates a unique session ID. This should be a cryptographically secure, globally unique string. Return `undefined` to disable session management.',
444
+ "A function that generates a unique session ID. This should be a cryptographically secure, globally unique string. Return `undefined` to disable session management.",
446
445
  },
447
446
  {
448
- name: 'onsessioninitialized',
449
- type: '(sessionId: string) => void',
447
+ name: "onsessioninitialized",
448
+ type: "(sessionId: string) => void",
450
449
  description:
451
- 'A callback that is invoked when a new session is initialized. This is useful for tracking active MCP sessions.',
450
+ "A callback that is invoked when a new session is initialized. This is useful for tracking active MCP sessions.",
452
451
  optional: true,
453
452
  },
454
453
  {
455
- name: 'enableJsonResponse',
456
- type: 'boolean',
454
+ name: "enableJsonResponse",
455
+ type: "boolean",
457
456
  description:
458
- 'If `true`, the server will return plain JSON responses instead of using Server-Sent Events (SSE) for streaming. Defaults to `false`.',
457
+ "If `true`, the server will return plain JSON responses instead of using Server-Sent Events (SSE) for streaming. Defaults to `false`.",
459
458
  optional: true,
460
459
  },
461
460
  {
462
- name: 'eventStore',
463
- type: 'EventStore',
461
+ name: "eventStore",
462
+ type: "EventStore",
464
463
  description:
465
- 'An event store for message resumability. Providing this enables clients to reconnect and resume message streams.',
464
+ "An event store for message resumability. Providing this enables clients to reconnect and resume message streams.",
466
465
  optional: true,
467
466
  },
468
467
  ]}
@@ -752,13 +751,13 @@ const prompts: Prompt[] = [
752
751
  {
753
752
  name: "analyze-code",
754
753
  description: "Analyze code for improvements",
755
- version: "v1"
754
+ version: "v1",
756
755
  },
757
756
  {
758
757
  name: "analyze-code",
759
758
  description: "Analyze code for improvements (new logic)",
760
- version: "v2"
761
- }
759
+ version: "v2",
760
+ },
762
761
  ];
763
762
 
764
763
  const myPromptHandlers: MCPServerPrompts = {
@@ -766,39 +765,46 @@ const myPromptHandlers: MCPServerPrompts = {
766
765
  getPromptMessages: async ({ name, version, args }) => {
767
766
  if (name === "analyze-code") {
768
767
  if (version === "v2") {
769
- const prompt = prompts.find(p => p.name === name && p.version === "v2");
768
+ const prompt = prompts.find(
769
+ (p) => p.name === name && p.version === "v2",
770
+ );
770
771
  if (!prompt) throw new Error("Prompt version not found");
771
772
  return {
772
773
  prompt,
773
774
  messages: [
774
775
  {
775
776
  role: "user",
776
- content: { type: "text", text: `Analyze this code with the new logic: ${args.code}` }
777
- }
778
- ]
777
+ content: {
778
+ type: "text",
779
+ text: `Analyze this code with the new logic: ${args.code}`,
780
+ },
781
+ },
782
+ ],
779
783
  };
780
784
  }
781
785
  // Default or v1
782
- const prompt = prompts.find(p => p.name === name && p.version === "v1");
786
+ const prompt = prompts.find((p) => p.name === name && p.version === "v1");
783
787
  if (!prompt) throw new Error("Prompt version not found");
784
788
  return {
785
789
  prompt,
786
790
  messages: [
787
791
  {
788
792
  role: "user",
789
- content: { type: "text", text: `Analyze this code: ${args.code}` }
790
- }
791
- ]
793
+ content: { type: "text", text: `Analyze this code: ${args.code}` },
794
+ },
795
+ ],
792
796
  };
793
797
  }
794
798
  throw new Error("Prompt not found");
795
- }
799
+ },
796
800
  };
797
801
 
798
802
  const serverWithPrompts = new MCPServer({
799
803
  name: "Promptful Server",
800
804
  version: "1.0.0",
801
- tools: { /* ... */ },
805
+ tools: {
806
+ /* ... */
807
+ },
802
808
  prompts: myPromptHandlers,
803
809
  });
804
810
  ```
@@ -849,20 +855,22 @@ When tools are executed within an MCP server context, they receive an additional
849
855
  execute: async ({ context }, options) => {
850
856
  // context contains the tool's input parameters
851
857
  // options contains server capabilities like elicitation and authentication info
852
-
858
+
853
859
  // Access authentication information (when available)
854
860
  if (options.extra?.authInfo) {
855
- console.log('Authenticated request from:', options.extra.authInfo.clientId);
861
+ console.log("Authenticated request from:", options.extra.authInfo.clientId);
856
862
  }
857
-
863
+
858
864
  // Use elicitation capabilities
859
865
  const result = await options.elicitation.sendRequest({
860
866
  message: "Please provide information",
861
- requestedSchema: { /* schema */ }
867
+ requestedSchema: {
868
+ /* schema */
869
+ },
862
870
  });
863
-
871
+
864
872
  return result;
865
- }
873
+ };
866
874
  ```
867
875
 
868
876
  ### How Elicitation Works
@@ -893,51 +901,54 @@ const server = new MCPServer({
893
901
  id: "collectContactInfo",
894
902
  description: "Collects user contact information through elicitation",
895
903
  inputSchema: z.object({
896
- reason: z.string().optional().describe("Reason for collecting contact info"),
904
+ reason: z
905
+ .string()
906
+ .optional()
907
+ .describe("Reason for collecting contact info"),
897
908
  }),
898
909
  execute: async ({ context }, options) => {
899
910
  const { reason } = context;
900
-
911
+
901
912
  // Log session info if available
902
- console.log('Request from session:', options.extra?.sessionId);
913
+ console.log("Request from session:", options.extra?.sessionId);
903
914
 
904
915
  try {
905
916
  // Request user input via elicitation
906
917
  const result = await options.elicitation.sendRequest({
907
- message: reason
918
+ message: reason
908
919
  ? `Please provide your contact information. ${reason}`
909
- : 'Please provide your contact information',
920
+ : "Please provide your contact information",
910
921
  requestedSchema: {
911
- type: 'object',
922
+ type: "object",
912
923
  properties: {
913
924
  name: {
914
- type: 'string',
915
- title: 'Full Name',
916
- description: 'Your full name',
925
+ type: "string",
926
+ title: "Full Name",
927
+ description: "Your full name",
917
928
  },
918
929
  email: {
919
- type: 'string',
920
- title: 'Email Address',
921
- description: 'Your email address',
922
- format: 'email',
930
+ type: "string",
931
+ title: "Email Address",
932
+ description: "Your email address",
933
+ format: "email",
923
934
  },
924
935
  phone: {
925
- type: 'string',
926
- title: 'Phone Number',
927
- description: 'Your phone number (optional)',
936
+ type: "string",
937
+ title: "Phone Number",
938
+ description: "Your phone number (optional)",
928
939
  },
929
940
  },
930
- required: ['name', 'email'],
941
+ required: ["name", "email"],
931
942
  },
932
943
  });
933
944
 
934
945
  // Handle the user's response
935
- if (result.action === 'accept') {
946
+ if (result.action === "accept") {
936
947
  return `Contact information collected: ${JSON.stringify(result.content, null, 2)}`;
937
- } else if (result.action === 'decline') {
938
- return 'Contact information collection was declined by the user.';
948
+ } else if (result.action === "decline") {
949
+ return "Contact information collection was declined by the user.";
939
950
  } else {
940
- return 'Contact information collection was cancelled by the user.';
951
+ return "Contact information collection was cancelled by the user.";
941
952
  }
942
953
  } catch (error) {
943
954
  return `Error collecting contact information: ${error}`;
@@ -1017,7 +1028,7 @@ execute: async ({ context }, options) => {
1017
1028
  message: string, // Message to display to user
1018
1029
  requestedSchema: object // JSON schema defining expected response structure
1019
1030
  }): Promise<ElicitResult>
1020
-
1031
+
1021
1032
  // Access authentication info if needed
1022
1033
  if (options.extra?.authInfo) {
1023
1034
  // Use options.extra.authInfo.token, etc.
@@ -1031,9 +1042,9 @@ The `ElicitResult` type:
1031
1042
 
1032
1043
  ```typescript
1033
1044
  type ElicitResult = {
1034
- action: 'accept' | 'decline' | 'cancel';
1045
+ action: "accept" | "decline" | "cancel";
1035
1046
  content?: any; // Only present when action is 'accept'
1036
- }
1047
+ };
1037
1048
  ```
1038
1049
 
1039
1050
  ## Authentication Context
@@ -1045,29 +1056,31 @@ execute: async ({ context }, options) => {
1045
1056
  if (!options.extra?.authInfo?.token) {
1046
1057
  return "Authentication required";
1047
1058
  }
1048
-
1059
+
1049
1060
  // Use the auth token
1050
- const response = await fetch('/api/data', {
1061
+ const response = await fetch("/api/data", {
1051
1062
  headers: { Authorization: `Bearer ${options.extra.authInfo.token}` },
1052
1063
  signal: options.extra.signal,
1053
1064
  });
1054
-
1065
+
1055
1066
  return response.json();
1056
- }
1067
+ };
1057
1068
  ```
1058
1069
 
1059
1070
  The `extra` object contains:
1071
+
1060
1072
  - `authInfo`: Authentication info (when provided by server middleware)
1061
- - `sessionId`: Session identifier
1073
+ - `sessionId`: Session identifier
1062
1074
  - `signal`: AbortSignal for cancellation
1063
1075
  - `sendNotification`/`sendRequest`: MCP protocol functions
1064
1076
 
1065
1077
  > Note: To enable authentication, your HTTP server needs middleware that populates `req.auth` before calling `server.startHTTP()`. For example:
1078
+ >
1066
1079
  > ```typescript
1067
1080
  > httpServer.createServer((req, res) => {
1068
1081
  > // Add auth middleware
1069
1082
  > req.auth = validateAuthToken(req.headers.authorization);
1070
- >
1083
+ >
1071
1084
  > // Then pass to MCP server
1072
1085
  > await server.startHTTP({ url, httpPath, req, res });
1073
1086
  > });