@mastra/mcp-docs-server 1.0.0-beta.0 → 1.0.0-beta.10
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.
- package/.docs/organized/changelogs/%40internal%2Fchangeset-cli.md +1 -15
- package/.docs/organized/changelogs/%40internal%2Fexternal-types.md +1 -7
- package/.docs/organized/changelogs/%40internal%2Fstorage-test-utils.md +201 -1
- package/.docs/organized/changelogs/%40internal%2Ftypes-builder.md +1 -55
- package/.docs/organized/changelogs/%40mastra%2Fagent-builder.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fai-sdk.md +250 -50
- package/.docs/organized/changelogs/%40mastra%2Fastra.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fauth.md +6 -0
- package/.docs/organized/changelogs/%40mastra%2Fchroma.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fclickhouse.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fclient-js.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fcloudflare-d1.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fcloudflare.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fcodemod.md +26 -0
- package/.docs/organized/changelogs/%40mastra%2Fconvex.md +89 -0
- package/.docs/organized/changelogs/%40mastra%2Fcore.md +396 -196
- package/.docs/organized/changelogs/%40mastra%2Fcouchbase.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-cloud.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-cloudflare.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-netlify.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-vercel.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fdeployer.md +200 -0
- package/.docs/organized/changelogs/%40mastra%2Fduckdb.md +42 -0
- package/.docs/organized/changelogs/%40mastra%2Fdynamodb.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Felasticsearch.md +61 -0
- package/.docs/organized/changelogs/%40mastra%2Fevals.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Flance.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Flibsql.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Floggers.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fmcp-docs-server.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fmcp-registry-registry.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fmcp.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fmemory.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fmongodb.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fmssql.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fopensearch.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fpg.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fpinecone.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fplayground-ui.md +251 -51
- package/.docs/organized/changelogs/%40mastra%2Fqdrant.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Frag.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Freact.md +128 -1
- package/.docs/organized/changelogs/%40mastra%2Fs3vectors.md +18 -0
- package/.docs/organized/changelogs/%40mastra%2Fschema-compat.md +42 -0
- package/.docs/organized/changelogs/%40mastra%2Fserver.md +251 -51
- package/.docs/organized/changelogs/%40mastra%2Fturbopuffer.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fupstash.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvectorize.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-azure.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-cloudflare.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-deepgram.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-elevenlabs.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-gladia.md +92 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-google-gemini-live.md +67 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-google.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-murf.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-openai-realtime.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-openai.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-playai.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-sarvam.md +201 -1
- package/.docs/organized/changelogs/%40mastra%2Fvoice-speechify.md +201 -1
- package/.docs/organized/changelogs/create-mastra.md +201 -1
- package/.docs/organized/changelogs/mastra.md +201 -1
- package/.docs/organized/code-examples/agui.md +1 -0
- package/.docs/organized/code-examples/ai-elements.md +2 -2
- package/.docs/organized/code-examples/ai-sdk-useChat.md +2 -2
- package/.docs/organized/code-examples/ai-sdk-v5.md +3 -2
- package/.docs/organized/code-examples/assistant-ui.md +2 -2
- package/.docs/organized/code-examples/bird-checker-with-express.md +1 -1
- package/.docs/organized/code-examples/bird-checker-with-nextjs-and-eval.md +2 -2
- package/.docs/organized/code-examples/bird-checker-with-nextjs.md +2 -2
- package/.docs/organized/code-examples/client-side-tools.md +1 -1
- package/.docs/organized/code-examples/crypto-chatbot.md +2 -2
- package/.docs/organized/code-examples/fireworks-r1.md +1 -1
- package/.docs/organized/code-examples/heads-up-game.md +1 -1
- package/.docs/organized/code-examples/mcp-configuration.md +0 -3
- package/.docs/organized/code-examples/mcp-server-adapters.md +720 -0
- package/.docs/organized/code-examples/memory-per-resource-example.md +1 -1
- package/.docs/organized/code-examples/memory-with-processors.md +1 -1
- package/.docs/organized/code-examples/openapi-spec-writer.md +1 -1
- package/.docs/organized/code-examples/processors-with-ai-sdk.md +14 -0
- package/.docs/organized/code-examples/quick-start.md +2 -2
- package/.docs/organized/code-examples/server-app-access.md +342 -0
- package/.docs/organized/code-examples/server-express-adapter.md +87 -0
- package/.docs/organized/code-examples/server-hono-adapter.md +85 -0
- package/.docs/organized/code-examples/stock-price-tool.md +1 -21
- package/.docs/organized/code-examples/workflow-ai-recruiter.md +1 -1
- package/.docs/organized/code-examples/workflow-with-inline-steps.md +1 -1
- package/.docs/organized/code-examples/workflow-with-memory.md +1 -1
- package/.docs/organized/code-examples/workflow-with-separate-steps.md +1 -1
- package/.docs/organized/code-examples/workflow-with-suspend-resume.md +1 -1
- package/.docs/raw/agents/adding-voice.mdx +56 -10
- package/.docs/raw/agents/agent-approval.mdx +189 -0
- package/.docs/raw/agents/agent-memory.mdx +2 -2
- package/.docs/raw/agents/guardrails.mdx +27 -24
- package/.docs/raw/agents/networks.mdx +3 -3
- package/.docs/raw/agents/overview.mdx +19 -168
- package/.docs/raw/agents/processors.mdx +279 -0
- package/.docs/raw/agents/structured-output.mdx +224 -0
- package/.docs/raw/agents/using-tools.mdx +14 -14
- package/.docs/raw/auth/auth0.mdx +2 -2
- package/.docs/raw/auth/clerk.mdx +2 -2
- package/.docs/raw/auth/firebase.mdx +2 -2
- package/.docs/raw/auth/index.mdx +1 -1
- package/.docs/raw/auth/jwt.mdx +2 -2
- package/.docs/raw/auth/supabase.mdx +2 -2
- package/.docs/raw/auth/workos.mdx +2 -2
- package/.docs/raw/community/contributing-templates.mdx +1 -1
- package/.docs/raw/community/discord.mdx +2 -2
- package/.docs/raw/community/licensing.mdx +1 -1
- package/.docs/raw/course/01-first-agent/03-verifying-installation.md +1 -1
- package/.docs/raw/course/01-first-agent/05-running-playground.md +5 -5
- package/.docs/raw/course/01-first-agent/09-testing-your-agent.md +3 -3
- package/.docs/raw/course/01-first-agent/13-testing-your-tool.md +3 -3
- package/.docs/raw/course/01-first-agent/17-testing-memory.md +2 -2
- package/.docs/raw/course/02-agent-tools-mcp/02-installing-mcp.md +1 -1
- package/.docs/raw/course/03-agent-memory/03-installing-memory.md +1 -1
- package/.docs/raw/course/04-workflows/07-using-playground.md +1 -1
- package/.docs/raw/deployment/{server-deployment.mdx → building-mastra.mdx} +4 -4
- package/.docs/raw/deployment/cloud-providers/amazon-ec2.mdx +3 -3
- package/.docs/raw/deployment/cloud-providers/aws-lambda.mdx +4 -4
- package/.docs/raw/deployment/cloud-providers/azure-app-services.mdx +4 -4
- package/.docs/raw/deployment/{serverless-platforms → cloud-providers}/cloudflare-deployer.mdx +2 -2
- package/.docs/raw/deployment/cloud-providers/digital-ocean.mdx +3 -3
- package/.docs/raw/deployment/cloud-providers/index.mdx +26 -29
- package/.docs/raw/deployment/{serverless-platforms → cloud-providers}/netlify-deployer.mdx +46 -15
- package/.docs/raw/deployment/{serverless-platforms → cloud-providers}/vercel-deployer.mdx +2 -2
- package/.docs/raw/{mastra-cloud → deployment/mastra-cloud}/dashboard.mdx +3 -3
- package/.docs/raw/deployment/mastra-cloud/observability.mdx +53 -0
- package/.docs/raw/{mastra-cloud → deployment/mastra-cloud}/overview.mdx +3 -3
- package/.docs/raw/{mastra-cloud → deployment/mastra-cloud}/setting-up.mdx +4 -4
- package/.docs/raw/deployment/monorepo.mdx +3 -3
- package/.docs/raw/deployment/overview.mdx +7 -7
- package/.docs/raw/deployment/web-framework.mdx +6 -6
- package/.docs/raw/evals/{off-the-shelf-scorers.mdx → built-in-scorers.mdx} +17 -15
- package/.docs/raw/evals/custom-scorers.mdx +4 -6
- package/.docs/raw/evals/overview.mdx +6 -7
- package/.docs/raw/evals/running-in-ci.mdx +2 -4
- package/.docs/raw/getting-started/{installation.mdx → manual-install.mdx} +15 -89
- package/.docs/raw/getting-started/mcp-docs-server.mdx +6 -6
- package/.docs/raw/getting-started/project-structure.mdx +2 -2
- package/.docs/raw/getting-started/start.mdx +72 -0
- package/.docs/raw/getting-started/studio.mdx +8 -6
- package/.docs/raw/guides/agent-frameworks/ai-sdk.mdx +147 -0
- package/.docs/raw/guides/build-your-ui/ai-sdk-ui.mdx +627 -0
- package/.docs/raw/{frameworks/agentic-uis → guides/build-your-ui}/assistant-ui.mdx +72 -20
- package/.docs/raw/guides/build-your-ui/copilotkit.mdx +206 -0
- package/.docs/raw/{frameworks/web-frameworks → guides/getting-started}/astro.mdx +28 -30
- package/.docs/raw/{frameworks/servers → guides/getting-started}/express.mdx +4 -5
- package/.docs/raw/guides/getting-started/next-js.mdx +276 -0
- package/.docs/raw/guides/getting-started/quickstart.mdx +97 -0
- package/.docs/raw/{frameworks/web-frameworks → guides/getting-started}/sveltekit.mdx +28 -30
- package/.docs/raw/{frameworks/web-frameworks → guides/getting-started}/vite-react.mdx +12 -12
- package/.docs/raw/guides/guide/ai-recruiter.mdx +2 -3
- package/.docs/raw/guides/guide/chef-michel.mdx +2 -3
- package/.docs/raw/guides/guide/notes-mcp-server.mdx +3 -3
- package/.docs/raw/guides/guide/research-assistant.mdx +8 -18
- package/.docs/raw/guides/guide/stock-agent.mdx +4 -6
- package/.docs/raw/guides/guide/web-search.mdx +12 -10
- package/.docs/raw/guides/guide/whatsapp-chat-bot.mdx +421 -0
- package/.docs/raw/guides/index.mdx +3 -35
- package/.docs/raw/guides/migrations/agentnetwork.mdx +4 -4
- package/.docs/raw/guides/migrations/ai-sdk-v4-to-v5.mdx +119 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/agent.mdx +56 -6
- package/.docs/raw/guides/migrations/upgrade-to-v1/client.mdx +42 -2
- package/.docs/raw/guides/migrations/upgrade-to-v1/evals.mdx +31 -1
- package/.docs/raw/guides/migrations/upgrade-to-v1/mastra.mdx +29 -5
- package/.docs/raw/guides/migrations/upgrade-to-v1/mcp.mdx +3 -3
- package/.docs/raw/guides/migrations/upgrade-to-v1/memory.mdx +28 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/overview.mdx +59 -37
- package/.docs/raw/guides/migrations/upgrade-to-v1/storage.mdx +80 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/tools.mdx +70 -5
- package/.docs/raw/guides/migrations/upgrade-to-v1/tracing.mdx +13 -13
- package/.docs/raw/guides/migrations/upgrade-to-v1/vectors.mdx +25 -1
- package/.docs/raw/guides/migrations/upgrade-to-v1/voice.mdx +1 -1
- package/.docs/raw/guides/migrations/upgrade-to-v1/workflows.mdx +175 -2
- package/.docs/raw/guides/migrations/vnext-to-standard-apis.mdx +2 -2
- package/.docs/raw/index.mdx +4 -4
- package/.docs/raw/mcp/overview.mdx +358 -0
- package/.docs/raw/mcp/publishing-mcp-server.mdx +139 -0
- package/.docs/raw/memory/conversation-history.mdx +1 -1
- package/.docs/raw/memory/memory-processors.mdx +265 -80
- package/.docs/raw/memory/overview.mdx +3 -3
- package/.docs/raw/memory/semantic-recall.mdx +10 -10
- package/.docs/raw/memory/storage/memory-with-libsql.mdx +5 -10
- package/.docs/raw/memory/storage/memory-with-mongodb.mdx +150 -0
- package/.docs/raw/memory/storage/memory-with-pg.mdx +5 -10
- package/.docs/raw/memory/storage/memory-with-upstash.mdx +5 -10
- package/.docs/raw/memory/threads-and-resources.mdx +4 -4
- package/.docs/raw/memory/working-memory.mdx +16 -8
- package/.docs/raw/{logging.mdx → observability/logging.mdx} +8 -8
- package/.docs/raw/observability/overview.mdx +5 -6
- package/.docs/raw/observability/tracing/bridges/otel.mdx +200 -0
- package/.docs/raw/observability/tracing/exporters/arize.mdx +39 -3
- package/.docs/raw/observability/tracing/exporters/braintrust.mdx +22 -3
- package/.docs/raw/observability/tracing/exporters/cloud.mdx +4 -4
- package/.docs/raw/observability/tracing/exporters/default.mdx +6 -6
- package/.docs/raw/observability/tracing/exporters/langfuse.mdx +86 -3
- package/.docs/raw/observability/tracing/exporters/langsmith.mdx +15 -3
- package/.docs/raw/observability/tracing/exporters/otel.mdx +128 -30
- package/.docs/raw/observability/tracing/exporters/posthog.mdx +127 -0
- package/.docs/raw/observability/tracing/overview.mdx +100 -29
- package/.docs/raw/observability/tracing/processors/sensitive-data-filter.mdx +2 -3
- package/.docs/raw/rag/chunking-and-embedding.mdx +16 -17
- package/.docs/raw/rag/overview.mdx +5 -4
- package/.docs/raw/rag/retrieval.mdx +44 -39
- package/.docs/raw/rag/vector-databases.mdx +94 -3
- package/.docs/raw/reference/agents/agent.mdx +10 -14
- package/.docs/raw/reference/agents/generate.mdx +67 -99
- package/.docs/raw/reference/agents/generateLegacy.mdx +3 -3
- package/.docs/raw/reference/agents/getDefaultGenerateOptions.mdx +1 -1
- package/.docs/raw/reference/agents/getDefaultOptions.mdx +1 -1
- package/.docs/raw/reference/agents/getDefaultStreamOptions.mdx +1 -1
- package/.docs/raw/reference/agents/getDescription.mdx +1 -1
- package/.docs/raw/reference/agents/getInstructions.mdx +1 -1
- package/.docs/raw/reference/agents/getLLM.mdx +2 -2
- package/.docs/raw/reference/agents/getMemory.mdx +1 -1
- package/.docs/raw/reference/agents/getModel.mdx +1 -1
- package/.docs/raw/reference/agents/getTools.mdx +69 -0
- package/.docs/raw/reference/agents/getVoice.mdx +1 -1
- package/.docs/raw/reference/agents/listAgents.mdx +1 -1
- package/.docs/raw/reference/agents/listScorers.mdx +1 -1
- package/.docs/raw/reference/agents/listTools.mdx +2 -2
- package/.docs/raw/reference/agents/listWorkflows.mdx +1 -1
- package/.docs/raw/reference/agents/network.mdx +33 -72
- package/.docs/raw/reference/ai-sdk/chat-route.mdx +127 -0
- package/.docs/raw/reference/ai-sdk/handle-chat-stream.mdx +117 -0
- package/.docs/raw/reference/ai-sdk/handle-network-stream.mdx +64 -0
- package/.docs/raw/reference/ai-sdk/handle-workflow-stream.mdx +116 -0
- package/.docs/raw/reference/ai-sdk/network-route.mdx +99 -0
- package/.docs/raw/reference/ai-sdk/to-ai-sdk-stream.mdx +289 -0
- package/.docs/raw/reference/ai-sdk/with-mastra.mdx +119 -0
- package/.docs/raw/reference/ai-sdk/workflow-route.mdx +110 -0
- package/.docs/raw/reference/auth/auth0.mdx +1 -1
- package/.docs/raw/reference/auth/clerk.mdx +1 -1
- package/.docs/raw/reference/auth/firebase.mdx +1 -1
- package/.docs/raw/reference/auth/jwt.mdx +1 -1
- package/.docs/raw/reference/auth/supabase.mdx +1 -1
- package/.docs/raw/reference/auth/workos.mdx +1 -1
- package/.docs/raw/reference/cli/create-mastra.mdx +11 -11
- package/.docs/raw/reference/cli/mastra.mdx +25 -12
- package/.docs/raw/reference/client-js/agents.mdx +252 -68
- package/.docs/raw/reference/client-js/error-handling.mdx +1 -1
- package/.docs/raw/reference/client-js/logs.mdx +1 -1
- package/.docs/raw/reference/client-js/mastra-client.mdx +4 -4
- package/.docs/raw/reference/client-js/memory.mdx +48 -2
- package/.docs/raw/reference/client-js/observability.mdx +1 -1
- package/.docs/raw/reference/client-js/telemetry.mdx +1 -1
- package/.docs/raw/reference/client-js/tools.mdx +1 -1
- package/.docs/raw/reference/client-js/vectors.mdx +1 -1
- package/.docs/raw/reference/client-js/workflows.mdx +93 -64
- package/.docs/raw/reference/core/addGateway.mdx +59 -0
- package/.docs/raw/reference/core/getAgent.mdx +1 -1
- package/.docs/raw/reference/core/getAgentById.mdx +1 -1
- package/.docs/raw/reference/core/getDeployer.mdx +1 -1
- package/.docs/raw/reference/core/getGateway.mdx +59 -0
- package/.docs/raw/reference/core/getGatewayById.mdx +62 -0
- package/.docs/raw/reference/core/getLogger.mdx +3 -3
- package/.docs/raw/reference/core/getMCPServer.mdx +4 -4
- package/.docs/raw/reference/core/getMCPServerById.mdx +5 -5
- package/.docs/raw/reference/core/getMemory.mdx +73 -0
- package/.docs/raw/reference/core/getScorer.mdx +1 -1
- package/.docs/raw/reference/core/getScorerById.mdx +1 -1
- package/.docs/raw/reference/core/getServer.mdx +2 -2
- package/.docs/raw/reference/core/getStorage.mdx +1 -1
- package/.docs/raw/reference/core/getStoredAgentById.mdx +183 -0
- package/.docs/raw/reference/core/getTelemetry.mdx +3 -3
- package/.docs/raw/reference/core/getVector.mdx +1 -1
- package/.docs/raw/reference/core/getWorkflow.mdx +1 -1
- package/.docs/raw/reference/core/listAgents.mdx +1 -1
- package/.docs/raw/reference/core/listGateways.mdx +53 -0
- package/.docs/raw/reference/core/listLogs.mdx +3 -3
- package/.docs/raw/reference/core/listLogsByRunId.mdx +3 -3
- package/.docs/raw/reference/core/listMCPServers.mdx +5 -5
- package/.docs/raw/reference/core/listMemory.mdx +70 -0
- package/.docs/raw/reference/core/listScorers.mdx +1 -1
- package/.docs/raw/reference/core/listStoredAgents.mdx +151 -0
- package/.docs/raw/reference/core/listVectors.mdx +1 -1
- package/.docs/raw/reference/core/listWorkflows.mdx +1 -1
- package/.docs/raw/reference/core/mastra-class.mdx +17 -1
- package/.docs/raw/reference/core/mastra-model-gateway.mdx +227 -0
- package/.docs/raw/reference/core/setLogger.mdx +3 -3
- package/.docs/raw/reference/core/setStorage.mdx +1 -1
- package/.docs/raw/reference/core/setTelemetry.mdx +3 -3
- package/.docs/raw/reference/deployer/cloudflare.mdx +1 -1
- package/.docs/raw/reference/deployer/deployer.mdx +1 -1
- package/.docs/raw/reference/deployer/netlify.mdx +2 -3
- package/.docs/raw/reference/deployer/vercel.mdx +1 -1
- package/.docs/raw/reference/evals/answer-relevancy.mdx +29 -99
- package/.docs/raw/reference/evals/answer-similarity.mdx +13 -259
- package/.docs/raw/reference/evals/bias.mdx +30 -88
- package/.docs/raw/reference/evals/completeness.mdx +32 -91
- package/.docs/raw/reference/evals/content-similarity.mdx +29 -89
- package/.docs/raw/reference/evals/context-precision.mdx +29 -131
- package/.docs/raw/reference/evals/context-relevance.mdx +12 -12
- package/.docs/raw/reference/evals/create-scorer.mdx +59 -50
- package/.docs/raw/reference/evals/faithfulness.mdx +29 -102
- package/.docs/raw/reference/evals/hallucination.mdx +29 -104
- package/.docs/raw/reference/evals/keyword-coverage.mdx +29 -108
- package/.docs/raw/reference/evals/mastra-scorer.mdx +3 -1
- package/.docs/raw/reference/evals/noise-sensitivity.mdx +12 -12
- package/.docs/raw/reference/evals/prompt-alignment.mdx +16 -16
- package/.docs/raw/reference/evals/run-evals.mdx +1 -1
- package/.docs/raw/reference/evals/scorer-utils.mdx +362 -0
- package/.docs/raw/reference/evals/textual-difference.mdx +28 -101
- package/.docs/raw/reference/evals/tone-consistency.mdx +26 -99
- package/.docs/raw/reference/evals/tool-call-accuracy.mdx +8 -8
- package/.docs/raw/reference/evals/toxicity.mdx +30 -93
- package/.docs/raw/reference/index.mdx +1 -0
- package/.docs/raw/reference/logging/pino-logger.mdx +2 -2
- package/.docs/raw/reference/memory/createThread.mdx +1 -1
- package/.docs/raw/reference/memory/deleteMessages.mdx +1 -1
- package/.docs/raw/reference/memory/getThreadById.mdx +1 -1
- package/.docs/raw/reference/memory/listThreadsByResourceId.mdx +1 -1
- package/.docs/raw/reference/memory/memory-class.mdx +6 -8
- package/.docs/raw/reference/memory/query.mdx +1 -1
- package/.docs/raw/reference/memory/recall.mdx +1 -1
- package/.docs/raw/reference/observability/tracing/bridges/otel.mdx +177 -0
- package/.docs/raw/reference/observability/tracing/configuration.mdx +12 -16
- package/.docs/raw/reference/observability/tracing/exporters/arize.mdx +31 -2
- package/.docs/raw/reference/observability/tracing/exporters/braintrust.mdx +1 -1
- package/.docs/raw/reference/observability/tracing/exporters/cloud-exporter.mdx +9 -9
- package/.docs/raw/reference/observability/tracing/exporters/console-exporter.mdx +9 -9
- package/.docs/raw/reference/observability/tracing/exporters/default-exporter.mdx +9 -9
- package/.docs/raw/reference/observability/tracing/exporters/langfuse.mdx +44 -1
- package/.docs/raw/reference/observability/tracing/exporters/langsmith.mdx +18 -2
- package/.docs/raw/reference/observability/tracing/exporters/otel.mdx +34 -44
- package/.docs/raw/reference/observability/tracing/exporters/posthog.mdx +132 -0
- package/.docs/raw/reference/observability/tracing/instances.mdx +8 -12
- package/.docs/raw/reference/observability/tracing/interfaces.mdx +36 -11
- package/.docs/raw/reference/observability/tracing/processors/sensitive-data-filter.mdx +1 -1
- package/.docs/raw/reference/observability/tracing/spans.mdx +7 -11
- package/.docs/raw/reference/processors/batch-parts-processor.mdx +10 -4
- package/.docs/raw/reference/processors/language-detector.mdx +19 -6
- package/.docs/raw/reference/processors/message-history-processor.mdx +131 -0
- package/.docs/raw/reference/processors/moderation-processor.mdx +21 -8
- package/.docs/raw/reference/processors/pii-detector.mdx +21 -8
- package/.docs/raw/reference/processors/processor-interface.mdx +502 -0
- package/.docs/raw/reference/processors/prompt-injection-detector.mdx +19 -6
- package/.docs/raw/reference/processors/semantic-recall-processor.mdx +197 -0
- package/.docs/raw/reference/processors/system-prompt-scrubber.mdx +12 -7
- package/.docs/raw/reference/processors/token-limiter-processor.mdx +11 -5
- package/.docs/raw/reference/processors/tool-call-filter.mdx +125 -0
- package/.docs/raw/reference/processors/unicode-normalizer.mdx +10 -4
- package/.docs/raw/reference/processors/working-memory-processor.mdx +221 -0
- package/.docs/raw/reference/rag/chunk.mdx +1 -1
- package/.docs/raw/reference/rag/database-config.mdx +1 -1
- package/.docs/raw/reference/rag/document.mdx +1 -1
- package/.docs/raw/reference/rag/embeddings.mdx +6 -6
- package/.docs/raw/reference/rag/extract-params.mdx +1 -1
- package/.docs/raw/reference/rag/graph-rag.mdx +1 -1
- package/.docs/raw/reference/rag/metadata-filters.mdx +1 -1
- package/.docs/raw/reference/rag/rerank.mdx +2 -3
- package/.docs/raw/reference/rag/rerankWithScorer.mdx +1 -2
- package/.docs/raw/reference/server/create-route.mdx +328 -0
- package/.docs/raw/reference/server/express-adapter.mdx +260 -0
- package/.docs/raw/reference/server/hono-adapter.mdx +242 -0
- package/.docs/raw/reference/server/mastra-server.mdx +345 -0
- package/.docs/raw/reference/server/routes.mdx +250 -0
- package/.docs/raw/reference/storage/cloudflare-d1.mdx +39 -2
- package/.docs/raw/reference/storage/cloudflare.mdx +2 -2
- package/.docs/raw/reference/storage/convex.mdx +164 -0
- package/.docs/raw/reference/storage/dynamodb.mdx +4 -4
- package/.docs/raw/reference/storage/lance.mdx +35 -2
- package/.docs/raw/reference/storage/libsql.mdx +39 -2
- package/.docs/raw/reference/storage/mongodb.mdx +41 -2
- package/.docs/raw/reference/storage/mssql.mdx +39 -2
- package/.docs/raw/reference/storage/postgresql.mdx +39 -2
- package/.docs/raw/reference/storage/upstash.mdx +2 -2
- package/.docs/raw/reference/streaming/ChunkType.mdx +2 -2
- package/.docs/raw/reference/streaming/agents/MastraModelOutput.mdx +1 -1
- package/.docs/raw/reference/streaming/agents/stream.mdx +68 -95
- package/.docs/raw/reference/streaming/agents/streamLegacy.mdx +1 -1
- package/.docs/raw/reference/streaming/workflows/observeStream.mdx +8 -10
- package/.docs/raw/reference/streaming/workflows/{resumeStreamVNext.mdx → resumeStream.mdx} +51 -11
- package/.docs/raw/reference/streaming/workflows/stream.mdx +84 -25
- package/.docs/raw/reference/streaming/workflows/timeTravelStream.mdx +170 -0
- package/.docs/raw/reference/templates/overview.mdx +3 -6
- package/.docs/raw/reference/tools/client.mdx +2 -3
- package/.docs/raw/reference/tools/create-tool.mdx +135 -4
- package/.docs/raw/reference/tools/document-chunker-tool.mdx +1 -1
- package/.docs/raw/reference/tools/graph-rag-tool.mdx +7 -7
- package/.docs/raw/reference/tools/mcp-client.mdx +131 -23
- package/.docs/raw/reference/tools/mcp-server.mdx +56 -8
- package/.docs/raw/reference/tools/vector-query-tool.mdx +16 -17
- package/.docs/raw/reference/vectors/astra.mdx +1 -1
- package/.docs/raw/reference/vectors/chroma.mdx +82 -2
- package/.docs/raw/reference/vectors/convex.mdx +429 -0
- package/.docs/raw/reference/vectors/couchbase.mdx +33 -20
- package/.docs/raw/reference/vectors/duckdb.mdx +462 -0
- package/.docs/raw/reference/vectors/elasticsearch.mdx +310 -0
- package/.docs/raw/reference/vectors/lance.mdx +39 -23
- package/.docs/raw/reference/vectors/libsql.mdx +37 -4
- package/.docs/raw/reference/vectors/mongodb.mdx +43 -4
- package/.docs/raw/reference/vectors/opensearch.mdx +38 -17
- package/.docs/raw/reference/vectors/pg.mdx +44 -37
- package/.docs/raw/reference/vectors/pinecone.mdx +70 -3
- package/.docs/raw/reference/vectors/qdrant.mdx +37 -2
- package/.docs/raw/reference/vectors/s3vectors.mdx +2 -2
- package/.docs/raw/reference/vectors/turbopuffer.mdx +75 -1
- package/.docs/raw/reference/vectors/upstash.mdx +1 -1
- package/.docs/raw/reference/vectors/vectorize.mdx +1 -1
- package/.docs/raw/reference/voice/azure.mdx +96 -81
- package/.docs/raw/reference/voice/cloudflare.mdx +1 -1
- package/.docs/raw/reference/voice/composite-voice.mdx +72 -29
- package/.docs/raw/reference/voice/deepgram.mdx +1 -1
- package/.docs/raw/reference/voice/elevenlabs.mdx +1 -1
- package/.docs/raw/reference/voice/google-gemini-live.mdx +1 -1
- package/.docs/raw/reference/voice/google.mdx +160 -21
- package/.docs/raw/reference/voice/mastra-voice.mdx +1 -1
- package/.docs/raw/reference/voice/murf.mdx +1 -1
- package/.docs/raw/reference/voice/openai-realtime.mdx +3 -3
- package/.docs/raw/reference/voice/openai.mdx +1 -1
- package/.docs/raw/reference/voice/playai.mdx +1 -1
- package/.docs/raw/reference/voice/sarvam.mdx +1 -1
- package/.docs/raw/reference/voice/speechify.mdx +1 -1
- package/.docs/raw/reference/voice/voice.addInstructions.mdx +3 -4
- package/.docs/raw/reference/voice/voice.addTools.mdx +2 -2
- package/.docs/raw/reference/voice/voice.answer.mdx +2 -2
- package/.docs/raw/reference/voice/voice.close.mdx +2 -2
- package/.docs/raw/reference/voice/voice.connect.mdx +2 -2
- package/.docs/raw/reference/voice/voice.events.mdx +1 -1
- package/.docs/raw/reference/voice/voice.getSpeakers.mdx +1 -1
- package/.docs/raw/reference/voice/voice.listen.mdx +87 -53
- package/.docs/raw/reference/voice/voice.off.mdx +2 -2
- package/.docs/raw/reference/voice/voice.on.mdx +2 -2
- package/.docs/raw/reference/voice/voice.send.mdx +2 -2
- package/.docs/raw/reference/voice/voice.speak.mdx +76 -41
- package/.docs/raw/reference/voice/voice.updateConfig.mdx +2 -2
- package/.docs/raw/reference/workflows/run-methods/cancel.mdx +1 -1
- package/.docs/raw/reference/workflows/run-methods/restart.mdx +142 -0
- package/.docs/raw/reference/workflows/run-methods/resume.mdx +45 -1
- package/.docs/raw/reference/workflows/run-methods/start.mdx +48 -4
- package/.docs/raw/reference/workflows/run-methods/timeTravel.mdx +310 -0
- package/.docs/raw/reference/workflows/run.mdx +28 -6
- package/.docs/raw/reference/workflows/step.mdx +65 -1
- package/.docs/raw/reference/workflows/workflow-methods/branch.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/commit.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/create-run.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/dountil.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/dowhile.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/foreach.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/map.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/parallel.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/sendEvent.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/sleep.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/sleepUntil.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/then.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/waitForEvent.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow.mdx +21 -2
- package/.docs/raw/server-db/custom-adapters.mdx +386 -0
- package/.docs/raw/server-db/custom-api-routes.mdx +6 -6
- package/.docs/raw/server-db/mastra-client.mdx +7 -8
- package/.docs/raw/server-db/{production-server.mdx → mastra-server.mdx} +16 -8
- package/.docs/raw/server-db/middleware.mdx +31 -31
- package/.docs/raw/server-db/request-context.mdx +3 -4
- package/.docs/raw/server-db/server-adapters.mdx +312 -0
- package/.docs/raw/server-db/storage.mdx +12 -1
- package/.docs/raw/streaming/events.mdx +1 -1
- package/.docs/raw/streaming/overview.mdx +27 -16
- package/.docs/raw/streaming/tool-streaming.mdx +58 -19
- package/.docs/raw/streaming/workflow-streaming.mdx +6 -12
- package/.docs/raw/tools-mcp/advanced-usage.mdx +2 -3
- package/.docs/raw/tools-mcp/mcp-overview.mdx +5 -7
- package/.docs/raw/tools-mcp/overview.mdx +1 -1
- package/.docs/raw/voice/overview.mdx +88 -41
- package/.docs/raw/voice/speech-to-speech.mdx +5 -5
- package/.docs/raw/voice/speech-to-text.mdx +3 -4
- package/.docs/raw/voice/text-to-speech.mdx +3 -4
- package/.docs/raw/workflows/agents-and-tools.mdx +43 -5
- package/.docs/raw/workflows/control-flow.mdx +186 -1
- package/.docs/raw/workflows/error-handling.mdx +5 -4
- package/.docs/raw/workflows/human-in-the-loop.mdx +160 -213
- package/.docs/raw/workflows/inngest-workflow.mdx +2 -2
- package/.docs/raw/workflows/input-data-mapping.mdx +1 -1
- package/.docs/raw/workflows/overview.mdx +67 -47
- package/.docs/raw/workflows/snapshots.mdx +5 -3
- package/.docs/raw/workflows/suspend-and-resume.mdx +121 -204
- package/.docs/raw/workflows/time-travel.mdx +313 -0
- package/.docs/raw/workflows/workflow-state.mdx +190 -0
- package/CHANGELOG.md +88 -0
- package/dist/{chunk-5NJC7NRO.js → chunk-4CM2BQNP.js} +24 -4
- package/dist/prepare-docs/package-changes.d.ts.map +1 -1
- package/dist/prepare-docs/prepare.js +1 -1
- package/dist/stdio.js +17 -19
- package/package.json +11 -15
- package/.docs/raw/deployment/serverless-platforms/index.mdx +0 -58
- package/.docs/raw/frameworks/agentic-uis/ai-sdk.mdx +0 -688
- package/.docs/raw/frameworks/agentic-uis/cedar-os.mdx +0 -123
- package/.docs/raw/frameworks/agentic-uis/copilotkit.mdx +0 -382
- package/.docs/raw/frameworks/agentic-uis/openrouter.mdx +0 -179
- package/.docs/raw/frameworks/web-frameworks/next-js.mdx +0 -379
- package/.docs/raw/getting-started/templates.mdx +0 -73
- package/.docs/raw/mastra-cloud/observability.mdx +0 -51
- package/.docs/raw/reference/streaming/workflows/observeStreamVNext.mdx +0 -47
- package/.docs/raw/reference/streaming/workflows/streamVNext.mdx +0 -153
|
@@ -25,7 +25,7 @@ To migrate, replace all calls to `mastra.getWorkflows()` with `mastra.listWorkfl
|
|
|
25
25
|
You can use Mastra's codemod CLI to update your imports automatically:
|
|
26
26
|
|
|
27
27
|
```shell
|
|
28
|
-
npx @mastra/codemod v1/
|
|
28
|
+
npx @mastra/codemod@beta v1/mastra-plural-apis .
|
|
29
29
|
```
|
|
30
30
|
|
|
31
31
|
:::
|
|
@@ -52,7 +52,7 @@ To migrate, update references from `runtimeContext` to `requestContext` in step
|
|
|
52
52
|
You can use Mastra's codemod CLI to update your imports automatically:
|
|
53
53
|
|
|
54
54
|
```shell
|
|
55
|
-
npx @mastra/codemod v1/runtime-context .
|
|
55
|
+
npx @mastra/codemod@beta v1/runtime-context .
|
|
56
56
|
```
|
|
57
57
|
|
|
58
58
|
:::
|
|
@@ -68,6 +68,16 @@ To migrate, rename method calls from `createRunAsync` to `createRun`.
|
|
|
68
68
|
+ await workflow.createRun({ input: { ... } });
|
|
69
69
|
```
|
|
70
70
|
|
|
71
|
+
:::tip[Codemod]
|
|
72
|
+
|
|
73
|
+
You can use Mastra's codemod CLI to update your code automatically:
|
|
74
|
+
|
|
75
|
+
```shell
|
|
76
|
+
npx @mastra/codemod@beta v1/workflow-create-run-async .
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
:::
|
|
80
|
+
|
|
71
81
|
### `runCount` to `retryCount` (deprecated)
|
|
72
82
|
|
|
73
83
|
The `runCount` parameter has been deprecated in favor of `retryCount` in workflow step execution. This change provides clearer naming that better describes retry behavior. The old `runCount` still works but shows deprecation warnings.
|
|
@@ -83,6 +93,16 @@ To migrate, rename `runCount` to `retryCount` in step execution functions.
|
|
|
83
93
|
});
|
|
84
94
|
```
|
|
85
95
|
|
|
96
|
+
:::tip[Codemod]
|
|
97
|
+
|
|
98
|
+
You can use Mastra's codemod CLI to update your code automatically:
|
|
99
|
+
|
|
100
|
+
```shell
|
|
101
|
+
npx @mastra/codemod@beta v1/workflow-run-count .
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
:::
|
|
105
|
+
|
|
86
106
|
### `getWorkflowRuns` to `listWorkflowRuns`
|
|
87
107
|
|
|
88
108
|
The `getWorkflowRuns()` method has been renamed to `listWorkflowRuns()`. This change aligns with the convention that `list*` methods return collections.
|
|
@@ -94,8 +114,161 @@ To migrate, rename method calls from `getWorkflowRuns` to `listWorkflowRuns`.
|
|
|
94
114
|
+ const runs = await workflow.listWorkflowRuns({ fromDate, toDate });
|
|
95
115
|
```
|
|
96
116
|
|
|
117
|
+
:::tip[Codemod]
|
|
118
|
+
|
|
119
|
+
You can use Mastra's codemod CLI to update your code automatically:
|
|
120
|
+
|
|
121
|
+
```shell
|
|
122
|
+
npx @mastra/codemod@beta v1/workflow-list-runs .
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
:::
|
|
126
|
+
|
|
127
|
+
### Inputs are validated by default
|
|
128
|
+
|
|
129
|
+
Previously, inputs weren't validated by default. The [`validateInputs`](/reference/v1/workflows/workflow#workflowoptions) flag determines whether to validate the workflow inputs or not. This boolean has been flipped to `true`. If you want the old behavior or have workflows whose schemas don't need to be validated, set `validateInputs: false`.
|
|
130
|
+
|
|
131
|
+
```diff
|
|
132
|
+
createWorkflow({
|
|
133
|
+
+ options: {
|
|
134
|
+
+ validateInputs: false
|
|
135
|
+
+ }
|
|
136
|
+
})
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### Step `suspendPayload` validation
|
|
140
|
+
|
|
141
|
+
Step `suspendPayload` is now validated for steps that have a `suspendSchema` defined. This also uses the `validateInputs` flag to determine whether to validate the `suspendPayload` or not.
|
|
142
|
+
|
|
143
|
+
```diff
|
|
144
|
+
createStep({
|
|
145
|
+
id: "suspend-resume-step",
|
|
146
|
+
// ... other step properties
|
|
147
|
+
suspendSchema: z.object({
|
|
148
|
+
reason: z.string(),
|
|
149
|
+
otherReason: z.string()
|
|
150
|
+
}),
|
|
151
|
+
execute: async ({ suspend, resumeData}) => {
|
|
152
|
+
if (!resumeData) {
|
|
153
|
+
- return suspend({ reason: "Suspension reason" }); // Missing otherReason
|
|
154
|
+
+ return suspend({ reason: "Suspension reason", otherReason: "Other reason" });
|
|
155
|
+
}
|
|
156
|
+
//... continue execution logic
|
|
157
|
+
},
|
|
158
|
+
});
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### Branch result fields are now optional
|
|
162
|
+
|
|
163
|
+
The `.branch()` method now returns a schema where all branch output fields are optional. This reflects the runtime behavior where each branch only executes if its condition is truthy, so outputs from any branch may be undefined.
|
|
164
|
+
|
|
165
|
+
To migrate, update any code that consumes branch outputs to handle optional values.
|
|
166
|
+
|
|
167
|
+
```diff
|
|
168
|
+
const workflow = createWorkflow({...})
|
|
169
|
+
.branch([
|
|
170
|
+
[condition1, stepA], // outputSchema: { result: z.string() }
|
|
171
|
+
[condition2, stepB], // outputSchema: { data: z.number() }
|
|
172
|
+
])
|
|
173
|
+
- // Previously: stepA.result typed as string, stepB.data typed as number
|
|
174
|
+
+ // Now: stepA.result typed as string | undefined, stepB.data typed as number | undefined
|
|
175
|
+
.then(nextStep);
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
If your code depends on non-optional types, add runtime checks or provide default values when accessing branch outputs.
|
|
179
|
+
|
|
180
|
+
### `writableStream` to `outputWriter` in `Run.start()` & `Run.timeTravel()`
|
|
181
|
+
|
|
182
|
+
The `writableStream` parameter in `Run.start()` and `Run.timeTravel()` has been replaced with `outputWriter`. Instead of passing a `WritableStream`, you now pass an async callback function that receives each workflow event chunk directly.
|
|
183
|
+
|
|
184
|
+
This change simplifies the API - rather than creating a `WritableStream` wrapper, you handle chunks directly in the callback.
|
|
185
|
+
|
|
186
|
+
**Example:** Streaming workflow events to an HTTP response (SSE):
|
|
187
|
+
|
|
188
|
+
```diff
|
|
189
|
+
const run = await workflow.createRun();
|
|
190
|
+
|
|
191
|
+
- const stream = new WritableStream({
|
|
192
|
+
- write(chunk) {
|
|
193
|
+
- response.write(`data: ${JSON.stringify(chunk)}\n\n`);
|
|
194
|
+
- }
|
|
195
|
+
- });
|
|
196
|
+
- await run.start({ inputData, writableStream: stream });
|
|
197
|
+
|
|
198
|
+
+ await run.start({
|
|
199
|
+
+ inputData,
|
|
200
|
+
+ outputWriter: async (chunk) => {
|
|
201
|
+
+ response.write(`data: ${JSON.stringify(chunk)}\n\n`);
|
|
202
|
+
+ },
|
|
203
|
+
+ });
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
:::note
|
|
207
|
+
|
|
208
|
+
The `writer` parameter passed to step `execute` functions is not affected by this change. It remains a `ToolStream` that extends `WritableStream<unknown>` and provides `.write()` and `.custom()` methods:
|
|
209
|
+
|
|
210
|
+
```ts
|
|
211
|
+
createStep({
|
|
212
|
+
id: 'my-step',
|
|
213
|
+
execute: async ({ writer }) => {
|
|
214
|
+
// This API is unchanged
|
|
215
|
+
await writer.write({ data: 'some output' });
|
|
216
|
+
await writer.custom({ type: 'custom-event', payload: {} });
|
|
217
|
+
},
|
|
218
|
+
});
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
:::
|
|
222
|
+
|
|
223
|
+
### `setState()` is now async and the data passed is validated
|
|
224
|
+
|
|
225
|
+
The `setState()` function is now async. The data passed is now validated against the `stateSchema` defined in the step. The state data validation also uses the `validateInputs` flag to determine whether to validate the state data or not. Also, when calling `setState()`, you can now pass only the state data being updated, instead of adding the previous state spread `(...state)`.
|
|
226
|
+
|
|
227
|
+
To migrate, update the `setState()` function to be async.
|
|
228
|
+
|
|
229
|
+
```diff
|
|
230
|
+
- setState({ ...state, sharedCounter: state.sharedCounter + 1 });
|
|
231
|
+
+ await setState({ sharedCounter: state.sharedCounter + 1 });
|
|
232
|
+
+ // await setState({ ...state, sharedCounter: state.sharedCounter + 1 });
|
|
233
|
+
+ // this also works, as the previous state spread remains supported
|
|
234
|
+
```
|
|
235
|
+
|
|
97
236
|
## Removed
|
|
98
237
|
|
|
238
|
+
### `streamVNext`, `resumeStreamVNext`, and `observeStreamVNext` methods
|
|
239
|
+
|
|
240
|
+
The experimental `streamVNext()`, `resumeStreamVNext()`, and `observeStreamVNext()` methods have been removed. These methods are now the standard implementation with updated event structures and return types.
|
|
241
|
+
|
|
242
|
+
To migrate, use the standard `stream()`, `resumeStream()`, and `observeStream()` methods. Update event type checks to use workflow-prefixed names and access stream properties directly.
|
|
243
|
+
|
|
244
|
+
See [`Run.stream()`](/reference/v1/streaming/workflows/stream), [`Run.resumeStream()`](/reference/v1/streaming/workflows/resumeStream), and [`Run.observeStream()`](/reference/v1/streaming/workflows/observeStream) for details.
|
|
245
|
+
|
|
246
|
+
:::tip[Codemod]
|
|
247
|
+
|
|
248
|
+
You can use Mastra's codemod CLI to update your code automatically:
|
|
249
|
+
|
|
250
|
+
```shell
|
|
251
|
+
npx @mastra/codemod@beta v1/workflow-stream-vnext .
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
:::
|
|
255
|
+
|
|
256
|
+
### `suspend` and `setState` are not available in step condition functions parameters
|
|
257
|
+
|
|
258
|
+
The `suspend` and `setState` functions are not available in step condition functions parameters.
|
|
259
|
+
|
|
260
|
+
To migrate, use the `suspend` function in the step execute function instead.
|
|
261
|
+
|
|
262
|
+
```diff
|
|
263
|
+
.dowhile(step, async ({ suspend, state, setState }) => {
|
|
264
|
+
- setState({...state, updatedState: "updated state"})
|
|
265
|
+
- await suspend({ reason: "Suspension reason" });
|
|
266
|
+
+ // Use the suspend/setState in the step execute function instead
|
|
267
|
+
});
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
This is the same for `dountil` and `branch` condition functions parameters.
|
|
271
|
+
|
|
99
272
|
### Legacy workflows export
|
|
100
273
|
|
|
101
274
|
The `./workflows/legacy` export path has been removed from `@mastra/core`. Legacy workflows are no longer supported.
|
|
@@ -160,7 +160,7 @@ The following options are available in the standard `.stream()` and `generate()`
|
|
|
160
160
|
name: z.string(),
|
|
161
161
|
age: z.number(),
|
|
162
162
|
}),
|
|
163
|
-
model: "openai/gpt-
|
|
163
|
+
model: "openai/gpt-5.1", // Optional model override for structuring
|
|
164
164
|
errorStrategy: "fallback",
|
|
165
165
|
fallbackValue: { name: "unknown", age: 0 },
|
|
166
166
|
instructions: "Extract user information", // Override default structuring instructions
|
|
@@ -300,7 +300,7 @@ The following options are available in the standard `.stream()` and `generate()`
|
|
|
300
300
|
schema: z.object({
|
|
301
301
|
summary: z.string(),
|
|
302
302
|
}),
|
|
303
|
-
model: "openai/gpt-
|
|
303
|
+
model: "openai/gpt-5.1",
|
|
304
304
|
},
|
|
305
305
|
});
|
|
306
306
|
```
|
package/.docs/raw/index.mdx
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: "About Mastra
|
|
2
|
+
title: "About Mastra"
|
|
3
3
|
sidebar_position: 2
|
|
4
4
|
sidebar_label: "Introduction"
|
|
5
5
|
description: "Mastra is an all-in-one framework for building AI-powered applications and agents with a modern TypeScript stack."
|
|
@@ -27,7 +27,7 @@ Some highlights include:
|
|
|
27
27
|
|
|
28
28
|
- [**Workflows**](/docs/v1/workflows/overview) - When you need explicit control over execution, use Mastra's graph-based workflow engine to orchestrate complex multi-step processes. Mastra workflows use an intuitive syntax for control flow (`.then()`, `.branch()`, `.parallel()`).
|
|
29
29
|
|
|
30
|
-
- [**Human-in-the-loop**]/docs/v1/workflows/suspend-and-resume) - Suspend an agent or workflow and await user input or approval before resuming. Mastra uses [storage](/docs/v1/server-db/storage) to remember execution state, so you can pause indefinitely and resume where you left off.
|
|
30
|
+
- [**Human-in-the-loop**](/docs/v1/workflows/suspend-and-resume) - Suspend an agent or workflow and await user input or approval before resuming. Mastra uses [storage](/docs/v1/server-db/storage) to remember execution state, so you can pause indefinitely and resume where you left off.
|
|
31
31
|
|
|
32
32
|
- **Context management** - Give your agents the right context at the right time. Provide [conversation history](/docs/v1/memory/conversation-history), [retrieve](/docs/v1/rag/overview) data from your sources (APIs, databases, files), and add human-like [working](/docs/v1/memory/working-memory) and [semantic](/docs/v1/memory/semantic-recall) memory so your agents behave coherently.
|
|
33
33
|
|
|
@@ -51,8 +51,8 @@ Explore real-world examples in our [community showcase](/showcase).
|
|
|
51
51
|
|
|
52
52
|
## Get started
|
|
53
53
|
|
|
54
|
-
|
|
54
|
+
Choose a [getting started guide](/docs/v1/getting-started/start) to get started, or see the [manual installation guide](/docs/v1/getting-started/manual-install) if you need more control over your setup.
|
|
55
55
|
|
|
56
|
-
If you're new to AI agents, check out our [templates](/
|
|
56
|
+
If you're new to AI agents, check out our [templates](https://mastra.ai/templates), [course](https://mastra.ai/course), and [YouTube videos](https://youtube.com/@mastra-ai). You can also join our [Discord](https://discord.gg/BTYqqHKUrf) community to get help and share your projects.
|
|
57
57
|
|
|
58
58
|
We can't wait to see what you build ✌️
|
|
@@ -0,0 +1,358 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "MCP Overview | MCP"
|
|
3
|
+
description: Learn about the Model Context Protocol (MCP), how to use third-party tools via MCPClient, connect to registries, and share your own tools using MCPServer.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
import Tabs from "@theme/Tabs";
|
|
7
|
+
import TabItem from "@theme/TabItem";
|
|
8
|
+
|
|
9
|
+
# MCP Overview
|
|
10
|
+
|
|
11
|
+
Mastra supports the [Model Context Protocol (MCP)](https://modelcontextprotocol.io/introduction), an open standard for connecting AI agents to external tools and resources. It serves as a universal plugin system, enabling agents to call tools regardless of language or hosting environment.
|
|
12
|
+
|
|
13
|
+
Mastra can also be used to author MCP servers, exposing agents, tools, and other structured resources via the MCP interface. These can then be accessed by any system or agent that supports the protocol.
|
|
14
|
+
|
|
15
|
+
Mastra currently supports two MCP classes:
|
|
16
|
+
|
|
17
|
+
1. **`MCPClient`**: Connects to one or many MCP servers to access their tools, resources, prompts, and handle elicitation requests.
|
|
18
|
+
2. **`MCPServer`**: Exposes Mastra tools, agents, workflows, prompts, and resources to MCP-compatible clients.
|
|
19
|
+
|
|
20
|
+
## Getting started
|
|
21
|
+
|
|
22
|
+
To use MCP, install the required dependency:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
npm install @mastra/mcp@beta
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Configuring `MCPClient`
|
|
29
|
+
|
|
30
|
+
The `MCPClient` connects Mastra primitives to external MCP servers, which can be local packages (invoked using `npx`) or remote HTTP(S) endpoints. Each server must be configured with either a `command` or a `url`, depending on how it's hosted.
|
|
31
|
+
|
|
32
|
+
```typescript title="src/mastra/mcp/test-mcp-client.ts" showLineNumbers copy
|
|
33
|
+
import { MCPClient } from "@mastra/mcp";
|
|
34
|
+
|
|
35
|
+
export const testMcpClient = new MCPClient({
|
|
36
|
+
id: "test-mcp-client",
|
|
37
|
+
servers: {
|
|
38
|
+
wikipedia: {
|
|
39
|
+
command: "npx",
|
|
40
|
+
args: ["-y", "wikipedia-mcp"],
|
|
41
|
+
},
|
|
42
|
+
weather: {
|
|
43
|
+
url: new URL(
|
|
44
|
+
`https://server.smithery.ai/@smithery-ai/national-weather-service/mcp?api_key=${process.env.SMITHERY_API_KEY}`,
|
|
45
|
+
),
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
});
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
> See [MCPClient](/reference/v1/tools/mcp-client) for a full list of configuration options.
|
|
52
|
+
|
|
53
|
+
## Using `MCPClient` with an agent
|
|
54
|
+
|
|
55
|
+
To use tools from an MCP server in an agent, import your `MCPClient` and call `.getTools()` in the `tools` parameter. This loads from the defined MCP servers, making them available to the agent.
|
|
56
|
+
|
|
57
|
+
```typescript {3,15} title="src/mastra/agents/test-agent.ts" showLineNumbers copy
|
|
58
|
+
import { Agent } from "@mastra/core/agent";
|
|
59
|
+
|
|
60
|
+
import { testMcpClient } from "../mcp/test-mcp-client";
|
|
61
|
+
|
|
62
|
+
export const testAgent = new Agent({
|
|
63
|
+
name: "Test Agent",
|
|
64
|
+
description: "You are a helpful AI assistant",
|
|
65
|
+
instructions: `
|
|
66
|
+
You are a helpful assistant that has access to the following MCP Servers.
|
|
67
|
+
- Wikipedia MCP Server
|
|
68
|
+
- US National Weather Service
|
|
69
|
+
|
|
70
|
+
Answer questions using the information you find using the MCP Servers.`,
|
|
71
|
+
model: "openai/gpt-5.1",
|
|
72
|
+
tools: await testMcpClient.getTools(),
|
|
73
|
+
});
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
> See the [Agent Class](/reference/v1/agents/agent) for a full list of configuration options.
|
|
77
|
+
|
|
78
|
+
## Configuring `MCPServer`
|
|
79
|
+
|
|
80
|
+
To expose agents, tools, and workflows from your Mastra application to external systems over HTTP(S) use the `MCPServer` class. This makes them accessible to any system or agent that supports the protocol.
|
|
81
|
+
|
|
82
|
+
```typescript title="src/mastra/mcp/test-mcp-server.ts" showLineNumbers copy
|
|
83
|
+
import { MCPServer } from "@mastra/mcp";
|
|
84
|
+
|
|
85
|
+
import { testAgent } from "../agents/test-agent";
|
|
86
|
+
import { testWorkflow } from "../workflows/test-workflow";
|
|
87
|
+
import { testTool } from "../tools/test-tool";
|
|
88
|
+
|
|
89
|
+
export const testMcpServer = new MCPServer({
|
|
90
|
+
id: "test-mcp-server",
|
|
91
|
+
name: "Test Server",
|
|
92
|
+
version: "1.0.0",
|
|
93
|
+
agents: { testAgent },
|
|
94
|
+
tools: { testTool },
|
|
95
|
+
workflows: { testWorkflow },
|
|
96
|
+
});
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
> See [MCPServer](/reference/v1/tools/mcp-server) for a full list of configuration options.
|
|
100
|
+
|
|
101
|
+
## Registering an `MCPServer`
|
|
102
|
+
|
|
103
|
+
To make an MCP server available to other systems or agents that support the protocol, register it in the main `Mastra` instance using `mcpServers`.
|
|
104
|
+
|
|
105
|
+
```typescript title="src/mastra/index.ts" showLineNumbers copy
|
|
106
|
+
import { Mastra } from "@mastra/core/mastra";
|
|
107
|
+
|
|
108
|
+
import { testMcpServer } from "./mcp/test-mcp-server";
|
|
109
|
+
|
|
110
|
+
export const mastra = new Mastra({
|
|
111
|
+
// ...
|
|
112
|
+
mcpServers: { testMcpServer },
|
|
113
|
+
});
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## Static and dynamic tools
|
|
117
|
+
|
|
118
|
+
`MCPClient` offers two approaches to retrieving tools from connected servers, suitable for different application architectures:
|
|
119
|
+
|
|
120
|
+
| Feature | Static Configuration (`await mcp.getTools()`) | Dynamic Configuration (`await mcp.getToolsets()`) |
|
|
121
|
+
| :---------------- | :-------------------------------------------- | :--------------------------------------------------- |
|
|
122
|
+
| **Use Case** | Single-user, static config (e.g., CLI tool) | Multi-user, dynamic config (e.g., SaaS app) |
|
|
123
|
+
| **Configuration** | Fixed at agent initialization | Per-request, dynamic |
|
|
124
|
+
| **Credentials** | Shared across all uses | Can vary per user/request |
|
|
125
|
+
| **Agent Setup** | Tools added in `Agent` constructor | Tools passed in `.generate()` or `.stream()` options |
|
|
126
|
+
|
|
127
|
+
### Static tools
|
|
128
|
+
|
|
129
|
+
Use the `.getTools()` method to fetch tools from all configured MCP servers. This is suitable when configuration (such as API keys) is static and consistent across users or requests. Call it once and pass the result to the `tools` property when defining your agent.
|
|
130
|
+
|
|
131
|
+
> See [getTools()](/reference/v1/tools/mcp-client#gettools) for more information.
|
|
132
|
+
|
|
133
|
+
```typescript {7} title="src/mastra/agents/test-agent.ts" showLineNumbers copy
|
|
134
|
+
import { Agent } from "@mastra/core/agent";
|
|
135
|
+
|
|
136
|
+
import { testMcpClient } from "../mcp/test-mcp-client";
|
|
137
|
+
|
|
138
|
+
export const testAgent = new Agent({
|
|
139
|
+
// ...
|
|
140
|
+
tools: await testMcpClient.getTools(),
|
|
141
|
+
});
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
### Dynamic tools
|
|
145
|
+
|
|
146
|
+
Use the `.getToolsets()` method when tool configuration may vary by request or user, such as in a multi-tenant system where each user provides their own API key. This method returns toolsets that can be passed to the `toolsets` option in the agent's `.generate()` or `.stream()` calls.
|
|
147
|
+
|
|
148
|
+
```typescript {5-16,21} showLineNumbers copy
|
|
149
|
+
import { MCPClient } from "@mastra/mcp";
|
|
150
|
+
import { mastra } from "./mastra";
|
|
151
|
+
|
|
152
|
+
async function handleRequest(userPrompt: string, userApiKey: string) {
|
|
153
|
+
const userMcp = new MCPClient({
|
|
154
|
+
servers: {
|
|
155
|
+
weather: {
|
|
156
|
+
url: new URL("http://localhost:8080/mcp"),
|
|
157
|
+
requestInit: {
|
|
158
|
+
headers: {
|
|
159
|
+
Authorization: `Bearer ${userApiKey}`,
|
|
160
|
+
},
|
|
161
|
+
},
|
|
162
|
+
},
|
|
163
|
+
},
|
|
164
|
+
});
|
|
165
|
+
|
|
166
|
+
const agent = mastra.getAgent("testAgent");
|
|
167
|
+
|
|
168
|
+
const response = await agent.generate(userPrompt, {
|
|
169
|
+
toolsets: await userMcp.getToolsets(),
|
|
170
|
+
});
|
|
171
|
+
|
|
172
|
+
await userMcp.disconnect();
|
|
173
|
+
|
|
174
|
+
return Response.json({
|
|
175
|
+
data: response.text,
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
> See [getToolsets()](/reference/v1/tools/mcp-client#gettoolsets) for more information.
|
|
181
|
+
|
|
182
|
+
## Connecting to an MCP registry
|
|
183
|
+
|
|
184
|
+
MCP servers can be discovered through registries. Here's how to connect to some popular ones using `MCPClient`:
|
|
185
|
+
|
|
186
|
+
<Tabs>
|
|
187
|
+
<TabItem value="klavis" label="Klavis AI">
|
|
188
|
+
[Klavis AI](https://klavis.ai) provides hosted, enterprise-authenticated, high-quality MCP servers.
|
|
189
|
+
|
|
190
|
+
```typescript
|
|
191
|
+
import { MCPClient } from "@mastra/mcp";
|
|
192
|
+
|
|
193
|
+
const mcp = new MCPClient({
|
|
194
|
+
servers: {
|
|
195
|
+
salesforce: {
|
|
196
|
+
url: new URL("https://salesforce-mcp-server.klavis.ai/mcp/?instance_id={private-instance-id}"),
|
|
197
|
+
},
|
|
198
|
+
hubspot: {
|
|
199
|
+
url: new URL("https://hubspot-mcp-server.klavis.ai/mcp/?instance_id={private-instance-id}"),
|
|
200
|
+
},
|
|
201
|
+
},
|
|
202
|
+
});
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
Klavis AI offers enterprise-grade authentication and security for production deployments.
|
|
206
|
+
|
|
207
|
+
For more details on how to integrate Mastra with Klavis, check out their [documentation](https://docs.klavis.ai/documentation/ai-platform-integration/mastra).
|
|
208
|
+
|
|
209
|
+
</TabItem>
|
|
210
|
+
<TabItem value="mcp-run" label="mcp.run">
|
|
211
|
+
[mcp.run](https://www.mcp.run/) provides pre-authenticated, managed MCP servers. Tools are grouped into Profiles, each with a unique, signed URL.
|
|
212
|
+
|
|
213
|
+
```typescript
|
|
214
|
+
import { MCPClient } from "@mastra/mcp";
|
|
215
|
+
|
|
216
|
+
const mcp = new MCPClient({
|
|
217
|
+
servers: {
|
|
218
|
+
marketing: { // Example profile name
|
|
219
|
+
url: new URL(process.env.MCP_RUN_SSE_URL!), // Get URL from mcp.run profile
|
|
220
|
+
},
|
|
221
|
+
},
|
|
222
|
+
});
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
> **Important:** Treat the mcp.run SSE URL like a password. Store it securely, for example, in an environment variable.
|
|
226
|
+
> ```bash title=".env"
|
|
227
|
+
> MCP_RUN_SSE_URL=https://www.mcp.run/api/mcp/sse?nonce=...
|
|
228
|
+
> ```
|
|
229
|
+
|
|
230
|
+
</TabItem>
|
|
231
|
+
<TabItem value="composio" label="Composio.dev">
|
|
232
|
+
[Composio.dev](https://composio.dev) offers a registry of [SSE-based MCP servers](https://mcp.composio.dev). You can use the SSE URL generated for tools like Cursor directly.
|
|
233
|
+
|
|
234
|
+
```typescript
|
|
235
|
+
import { MCPClient } from "@mastra/mcp";
|
|
236
|
+
|
|
237
|
+
const mcp = new MCPClient({
|
|
238
|
+
servers: {
|
|
239
|
+
googleSheets: {
|
|
240
|
+
url: new URL("https://mcp.composio.dev/googlesheets/[private-url-path]"),
|
|
241
|
+
},
|
|
242
|
+
gmail: {
|
|
243
|
+
url: new URL("https://mcp.composio.dev/gmail/[private-url-path]"),
|
|
244
|
+
},
|
|
245
|
+
},
|
|
246
|
+
});
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
Authentication with services like Google Sheets often happens interactively through the agent conversation.
|
|
250
|
+
|
|
251
|
+
*Note: Composio URLs are typically tied to a single user account, making them best suited for personal automation rather than multi-tenant applications.*
|
|
252
|
+
|
|
253
|
+
</TabItem>
|
|
254
|
+
<TabItem value="smithery" label="Smithery.ai">
|
|
255
|
+
[Smithery.ai](https://smithery.ai) provides a registry accessible via their CLI.
|
|
256
|
+
|
|
257
|
+
```typescript
|
|
258
|
+
// Unix/Mac
|
|
259
|
+
import { MCPClient } from "@mastra/mcp";
|
|
260
|
+
|
|
261
|
+
const mcp = new MCPClient({
|
|
262
|
+
servers: {
|
|
263
|
+
sequentialThinking: {
|
|
264
|
+
command: "npx",
|
|
265
|
+
args: [
|
|
266
|
+
"-y",
|
|
267
|
+
"@smithery/cli@latest",
|
|
268
|
+
"run",
|
|
269
|
+
"@smithery-ai/server-sequential-thinking",
|
|
270
|
+
"--config",
|
|
271
|
+
"{}",
|
|
272
|
+
],
|
|
273
|
+
},
|
|
274
|
+
},
|
|
275
|
+
});
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
```typescript
|
|
279
|
+
// Windows
|
|
280
|
+
import { MCPClient } from "@mastra/mcp";
|
|
281
|
+
|
|
282
|
+
const mcp = new MCPClient({
|
|
283
|
+
servers: {
|
|
284
|
+
sequentialThinking: {
|
|
285
|
+
command: "npx",
|
|
286
|
+
args: [
|
|
287
|
+
"-y",
|
|
288
|
+
"@smithery/cli@latest",
|
|
289
|
+
"run",
|
|
290
|
+
"@smithery-ai/server-sequential-thinking",
|
|
291
|
+
"--config",
|
|
292
|
+
"{}",
|
|
293
|
+
],
|
|
294
|
+
},
|
|
295
|
+
},
|
|
296
|
+
});
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
</TabItem>
|
|
300
|
+
<TabItem value="ampersand" label="Ampersand">
|
|
301
|
+
|
|
302
|
+
[Ampersand](https://withampersand.com?utm_source=mastra-docs) offers an [MCP Server](https://docs.withampersand.com/mcp) that allows you to connect your agent to 150+ integrations with SaaS products like Salesforce, Hubspot, and Zendesk.
|
|
303
|
+
|
|
304
|
+
```typescript
|
|
305
|
+
// MCPClient with Ampersand MCP Server using SSE
|
|
306
|
+
export const mcp = new MCPClient({
|
|
307
|
+
servers: {
|
|
308
|
+
"@amp-labs/mcp-server": {
|
|
309
|
+
url: `https://mcp.withampersand.com/v1/sse?${new URLSearchParams({
|
|
310
|
+
apiKey: process.env.AMPERSAND_API_KEY,
|
|
311
|
+
project: process.env.AMPERSAND_PROJECT_ID,
|
|
312
|
+
integrationName: process.env.AMPERSAND_INTEGRATION_NAME,
|
|
313
|
+
groupRef: process.env.AMPERSAND_GROUP_REF,
|
|
314
|
+
})}`,
|
|
315
|
+
},
|
|
316
|
+
},
|
|
317
|
+
});
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
```typescript
|
|
321
|
+
// If you prefer to run the MCP server locally:
|
|
322
|
+
import { MCPClient } from "@mastra/mcp";
|
|
323
|
+
|
|
324
|
+
// MCPClient with Ampersand MCP Server using stdio transport
|
|
325
|
+
export const mcp = new MCPClient({
|
|
326
|
+
servers: {
|
|
327
|
+
"@amp-labs/mcp-server": {
|
|
328
|
+
command: "npx",
|
|
329
|
+
args: [
|
|
330
|
+
"-y",
|
|
331
|
+
"@amp-labs/mcp-server@latest",
|
|
332
|
+
"--transport",
|
|
333
|
+
"stdio",
|
|
334
|
+
"--project",
|
|
335
|
+
process.env.AMPERSAND_PROJECT_ID,
|
|
336
|
+
"--integrationName",
|
|
337
|
+
process.env.AMPERSAND_INTEGRATION_NAME,
|
|
338
|
+
"--groupRef",
|
|
339
|
+
process.env.AMPERSAND_GROUP_REF, // optional
|
|
340
|
+
],
|
|
341
|
+
env: {
|
|
342
|
+
AMPERSAND_API_KEY: process.env.AMPERSAND_API_KEY,
|
|
343
|
+
},
|
|
344
|
+
},
|
|
345
|
+
},
|
|
346
|
+
});
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
As an alternative to MCP, Ampersand's AI SDK also has an adapter for Mastra, so you can [directly import Ampersand tools](https://docs.withampersand.com/ai-sdk#use-with-mastra) for your agent to access.
|
|
350
|
+
|
|
351
|
+
</TabItem>
|
|
352
|
+
</Tabs>
|
|
353
|
+
|
|
354
|
+
## Related
|
|
355
|
+
|
|
356
|
+
- [Using Tools](/docs/v1/agents/using-tools)
|
|
357
|
+
- [MCPClient](/reference/v1/tools/mcp-client)
|
|
358
|
+
- [MCPServer](/reference/v1/tools/mcp-server)
|