@mastra/mcp-docs-server 1.0.0-beta.9 → 1.0.0
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 +3 -1
- package/.docs/organized/changelogs/%40internal%2Fexternal-types.md +3 -1
- package/.docs/organized/changelogs/%40internal%2Fplayground.md +40 -0
- package/.docs/organized/changelogs/%40internal%2Fstorage-test-utils.md +8 -8
- package/.docs/organized/changelogs/%40internal%2Ftypes-builder.md +3 -1
- package/.docs/organized/changelogs/%40mastra%2Fagent-builder.md +287 -287
- package/.docs/organized/changelogs/%40mastra%2Fai-sdk.md +299 -299
- package/.docs/organized/changelogs/%40mastra%2Fastra.md +53 -53
- package/.docs/organized/changelogs/%40mastra%2Fauth.md +38 -0
- package/.docs/organized/changelogs/%40mastra%2Fchroma.md +66 -66
- package/.docs/organized/changelogs/%40mastra%2Fclickhouse.md +522 -212
- package/.docs/organized/changelogs/%40mastra%2Fclient-js.md +662 -200
- package/.docs/organized/changelogs/%40mastra%2Fcloudflare-d1.md +439 -234
- package/.docs/organized/changelogs/%40mastra%2Fcloudflare.md +450 -211
- package/.docs/organized/changelogs/%40mastra%2Fcodemod.md +202 -0
- package/.docs/organized/changelogs/%40mastra%2Fconvex.md +448 -22
- package/.docs/organized/changelogs/%40mastra%2Fcore.md +3359 -289
- package/.docs/organized/changelogs/%40mastra%2Fcouchbase.md +60 -60
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-cloud.md +289 -289
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-cloudflare.md +90 -90
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-netlify.md +74 -74
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-vercel.md +70 -70
- package/.docs/organized/changelogs/%40mastra%2Fdeployer.md +248 -221
- package/.docs/organized/changelogs/%40mastra%2Fduckdb.md +70 -0
- package/.docs/organized/changelogs/%40mastra%2Fdynamodb.md +403 -225
- package/.docs/organized/changelogs/%40mastra%2Felasticsearch.md +72 -0
- package/.docs/organized/changelogs/%40mastra%2Fevals.md +145 -145
- package/.docs/organized/changelogs/%40mastra%2Ffastembed.md +54 -0
- package/.docs/organized/changelogs/%40mastra%2Flance.md +456 -226
- package/.docs/organized/changelogs/%40mastra%2Flibsql.md +625 -229
- package/.docs/organized/changelogs/%40mastra%2Floggers.md +71 -71
- package/.docs/organized/changelogs/%40mastra%2Fmcp-docs-server.md +247 -247
- package/.docs/organized/changelogs/%40mastra%2Fmcp-registry-registry.md +28 -28
- package/.docs/organized/changelogs/%40mastra%2Fmcp.md +281 -281
- package/.docs/organized/changelogs/%40mastra%2Fmemory.md +354 -156
- package/.docs/organized/changelogs/%40mastra%2Fmongodb.md +545 -212
- package/.docs/organized/changelogs/%40mastra%2Fmssql.md +481 -202
- package/.docs/organized/changelogs/%40mastra%2Fopensearch.md +194 -194
- package/.docs/organized/changelogs/%40mastra%2Fpg.md +781 -235
- package/.docs/organized/changelogs/%40mastra%2Fpinecone.md +198 -198
- package/.docs/organized/changelogs/%40mastra%2Fplayground-ui.md +655 -248
- package/.docs/organized/changelogs/%40mastra%2Fqdrant.md +163 -163
- package/.docs/organized/changelogs/%40mastra%2Frag.md +310 -310
- package/.docs/organized/changelogs/%40mastra%2Freact.md +328 -237
- package/.docs/organized/changelogs/%40mastra%2Fs3vectors.md +64 -0
- package/.docs/organized/changelogs/%40mastra%2Fschema-compat.md +160 -0
- package/.docs/organized/changelogs/%40mastra%2Fserver.md +850 -239
- package/.docs/organized/changelogs/%40mastra%2Fturbopuffer.md +57 -57
- package/.docs/organized/changelogs/%40mastra%2Fupstash.md +479 -232
- package/.docs/organized/changelogs/%40mastra%2Fvectorize.md +53 -53
- package/.docs/organized/changelogs/%40mastra%2Fvoice-azure.md +45 -45
- package/.docs/organized/changelogs/%40mastra%2Fvoice-cloudflare.md +45 -45
- package/.docs/organized/changelogs/%40mastra%2Fvoice-deepgram.md +47 -47
- package/.docs/organized/changelogs/%40mastra%2Fvoice-elevenlabs.md +110 -110
- package/.docs/organized/changelogs/%40mastra%2Fvoice-gladia.md +15 -0
- package/.docs/organized/changelogs/%40mastra%2Fvoice-google-gemini-live.md +98 -0
- package/.docs/organized/changelogs/%40mastra%2Fvoice-google.md +54 -54
- package/.docs/organized/changelogs/%40mastra%2Fvoice-murf.md +46 -46
- package/.docs/organized/changelogs/%40mastra%2Fvoice-openai-realtime.md +93 -93
- package/.docs/organized/changelogs/%40mastra%2Fvoice-openai.md +47 -47
- package/.docs/organized/changelogs/%40mastra%2Fvoice-playai.md +45 -45
- package/.docs/organized/changelogs/%40mastra%2Fvoice-sarvam.md +45 -45
- package/.docs/organized/changelogs/%40mastra%2Fvoice-speechify.md +45 -45
- package/.docs/organized/changelogs/create-mastra.md +215 -215
- package/.docs/organized/changelogs/mastra.md +278 -278
- package/.docs/organized/code-examples/a2a.md +2 -2
- package/.docs/organized/code-examples/agent-v6.md +221 -0
- package/.docs/organized/code-examples/agui.md +4 -4
- package/.docs/organized/code-examples/ai-elements.md +3 -3
- package/.docs/organized/code-examples/ai-sdk-useChat.md +2 -2
- package/.docs/organized/code-examples/ai-sdk-v5.md +3 -3
- package/.docs/organized/code-examples/assistant-ui.md +5 -5
- 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 +3 -3
- package/.docs/organized/code-examples/client-side-tools.md +4 -4
- package/.docs/organized/code-examples/crypto-chatbot.md +5 -5
- package/.docs/organized/code-examples/experimental-auth-weather-agent.md +1 -1
- package/.docs/organized/code-examples/fireworks-r1.md +2 -2
- package/.docs/organized/code-examples/heads-up-game.md +7 -7
- package/.docs/organized/code-examples/inngest.md +1075 -0
- package/.docs/organized/code-examples/mcp-configuration.md +1 -1
- package/.docs/organized/code-examples/mcp-server-adapters.md +2 -2
- package/.docs/organized/code-examples/memory-per-resource-example.md +3 -3
- package/.docs/organized/code-examples/memory-todo-agent.md +1 -1
- package/.docs/organized/code-examples/memory-with-context.md +1 -1
- package/.docs/organized/code-examples/memory-with-processors.md +1 -1
- package/.docs/organized/code-examples/openapi-spec-writer.md +3 -3
- package/.docs/organized/code-examples/quick-start.md +1 -5
- package/.docs/organized/code-examples/server-app-access.md +2 -2
- package/.docs/organized/code-examples/server-express-adapter.md +1 -1
- package/.docs/organized/code-examples/server-fastify-adapter.md +83 -0
- package/.docs/organized/code-examples/server-hono-adapter.md +2 -2
- package/.docs/organized/code-examples/server-koa-adapter.md +94 -0
- package/.docs/organized/code-examples/stock-price-tool.md +21 -2
- 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 +24 -6
- package/.docs/raw/agents/agent-approval.mdx +209 -12
- package/.docs/raw/agents/agent-memory.mdx +36 -32
- package/.docs/raw/agents/guardrails.mdx +105 -56
- package/.docs/raw/agents/network-approval.mdx +281 -0
- package/.docs/raw/agents/networks.mdx +69 -13
- package/.docs/raw/agents/overview.mdx +43 -25
- package/.docs/raw/agents/processors.mdx +234 -17
- package/.docs/raw/agents/structured-output.mdx +78 -8
- package/.docs/raw/agents/using-tools.mdx +67 -6
- package/.docs/raw/course/01-first-agent/07-creating-your-agent.md +1 -2
- package/.docs/raw/course/01-first-agent/12-connecting-tool-to-agent.md +1 -1
- package/.docs/raw/course/01-first-agent/16-adding-memory-to-agent.md +1 -2
- package/.docs/raw/course/02-agent-tools-mcp/05-updating-your-agent.md +1 -1
- package/.docs/raw/course/02-agent-tools-mcp/10-updating-agent-instructions-zapier.md +1 -1
- package/.docs/raw/course/02-agent-tools-mcp/16-updating-agent-instructions-github.md +1 -1
- package/.docs/raw/course/02-agent-tools-mcp/21-updating-agent-instructions-hackernews.md +1 -1
- package/.docs/raw/course/02-agent-tools-mcp/27-updating-agent-instructions-filesystem.md +1 -1
- package/.docs/raw/course/02-agent-tools-mcp/31-enhancing-memory-configuration.md +3 -3
- package/.docs/raw/course/03-agent-memory/04-creating-basic-memory-agent.md +1 -2
- package/.docs/raw/course/03-agent-memory/07-understanding-memory-threads.md +35 -0
- package/.docs/raw/course/03-agent-memory/08-configuring-conversation-history.md +1 -2
- package/.docs/raw/course/03-agent-memory/13-vector-store-configuration.md +1 -1
- package/.docs/raw/course/03-agent-memory/16-configuring-semantic-recall.md +4 -5
- package/.docs/raw/course/03-agent-memory/18-advanced-configuration-semantic-recall.md +1 -1
- package/.docs/raw/course/03-agent-memory/21-configuring-working-memory.md +3 -4
- package/.docs/raw/course/03-agent-memory/22-custom-working-memory-templates.md +3 -4
- package/.docs/raw/course/03-agent-memory/25-combining-memory-features.md +3 -4
- package/.docs/raw/course/03-agent-memory/27-creating-learning-assistant.md +3 -4
- package/.docs/raw/course/04-workflows/11-creating-an-ai-agent.md +2 -3
- package/.docs/raw/deployment/cloud-providers.mdx +22 -0
- package/.docs/raw/deployment/mastra-server.mdx +140 -0
- package/.docs/raw/deployment/monorepo.mdx +106 -42
- package/.docs/raw/deployment/overview.mdx +35 -48
- package/.docs/raw/deployment/web-framework.mdx +17 -19
- package/.docs/raw/deployment/workflow-runners.mdx +16 -0
- package/.docs/raw/evals/built-in-scorers.mdx +2 -0
- package/.docs/raw/evals/custom-scorers.mdx +60 -12
- package/.docs/raw/evals/overview.mdx +6 -6
- package/.docs/raw/evals/running-in-ci.mdx +4 -2
- package/.docs/raw/getting-started/manual-install.mdx +20 -20
- package/.docs/raw/getting-started/mcp-docs-server.mdx +59 -2
- package/.docs/raw/getting-started/project-structure.mdx +2 -2
- package/.docs/raw/getting-started/start.mdx +17 -1
- package/.docs/raw/getting-started/studio.mdx +6 -35
- package/.docs/raw/guides/agent-frameworks/ai-sdk.mdx +23 -33
- package/.docs/raw/guides/build-your-ui/ai-sdk-ui.mdx +1034 -80
- package/.docs/raw/guides/build-your-ui/assistant-ui.mdx +8 -8
- package/.docs/raw/guides/build-your-ui/copilotkit.mdx +32 -11
- package/.docs/raw/{deployment/cloud-providers → guides/deployment}/amazon-ec2.mdx +9 -9
- package/.docs/raw/{deployment/cloud-providers → guides/deployment}/aws-lambda.mdx +13 -16
- package/.docs/raw/{deployment/cloud-providers → guides/deployment}/azure-app-services.mdx +5 -7
- package/.docs/raw/{deployment/cloud-providers → guides/deployment}/cloudflare-deployer.mdx +8 -5
- package/.docs/raw/{deployment/cloud-providers → guides/deployment}/digital-ocean.mdx +18 -23
- package/.docs/raw/guides/deployment/index.mdx +32 -0
- package/.docs/raw/guides/deployment/inngest.mdx +673 -0
- package/.docs/raw/{deployment/cloud-providers → guides/deployment}/netlify-deployer.mdx +7 -3
- package/.docs/raw/{deployment/cloud-providers → guides/deployment}/vercel-deployer.mdx +8 -5
- package/.docs/raw/guides/getting-started/astro.mdx +292 -451
- package/.docs/raw/guides/getting-started/express.mdx +72 -153
- package/.docs/raw/guides/getting-started/hono.mdx +227 -0
- package/.docs/raw/guides/getting-started/next-js.mdx +173 -61
- package/.docs/raw/guides/getting-started/nuxt.mdx +505 -0
- package/.docs/raw/guides/getting-started/quickstart.mdx +5 -5
- package/.docs/raw/guides/getting-started/sveltekit.mdx +238 -409
- package/.docs/raw/guides/getting-started/vite-react.mdx +317 -147
- package/.docs/raw/guides/guide/ai-recruiter.mdx +10 -10
- package/.docs/raw/guides/guide/chef-michel.mdx +9 -11
- package/.docs/raw/guides/guide/notes-mcp-server.mdx +15 -15
- package/.docs/raw/guides/guide/research-assistant.mdx +20 -20
- package/.docs/raw/guides/guide/stock-agent.mdx +5 -5
- package/.docs/raw/guides/guide/web-search.mdx +38 -38
- package/.docs/raw/guides/guide/whatsapp-chat-bot.mdx +7 -7
- package/.docs/raw/guides/index.mdx +0 -1
- package/.docs/raw/guides/migrations/ai-sdk-v4-to-v5.mdx +2 -2
- package/.docs/raw/guides/migrations/upgrade-to-v1/agent.mdx +105 -4
- package/.docs/raw/guides/migrations/upgrade-to-v1/cli.mdx +15 -1
- package/.docs/raw/guides/migrations/upgrade-to-v1/client.mdx +170 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/deployment.mdx +42 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/mastra.mdx +0 -35
- package/.docs/raw/guides/migrations/upgrade-to-v1/memory.mdx +40 -3
- package/.docs/raw/guides/migrations/upgrade-to-v1/overview.mdx +17 -2
- package/.docs/raw/guides/migrations/upgrade-to-v1/processors.mdx +11 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/rag.mdx +47 -0
- package/.docs/raw/guides/migrations/upgrade-to-v1/storage.mdx +271 -25
- package/.docs/raw/guides/migrations/upgrade-to-v1/tracing.mdx +72 -17
- package/.docs/raw/guides/migrations/upgrade-to-v1/vectors.mdx +46 -1
- package/.docs/raw/guides/migrations/upgrade-to-v1/workflows.mdx +50 -7
- package/.docs/raw/guides/migrations/vnext-to-standard-apis.mdx +21 -23
- package/.docs/raw/index.mdx +2 -2
- package/.docs/raw/mastra-cloud/deployment.mdx +86 -0
- package/.docs/raw/mastra-cloud/observability.mdx +43 -0
- package/.docs/raw/mastra-cloud/overview.mdx +31 -0
- package/.docs/raw/mastra-cloud/setup.mdx +64 -0
- package/.docs/raw/mastra-cloud/studio.mdx +35 -0
- package/.docs/raw/mcp/overview.mdx +60 -25
- package/.docs/raw/mcp/publishing-mcp-server.mdx +7 -4
- package/.docs/raw/memory/memory-processors.mdx +17 -12
- package/.docs/raw/memory/message-history.mdx +72 -0
- package/.docs/raw/memory/overview.mdx +38 -76
- package/.docs/raw/memory/semantic-recall.mdx +65 -52
- package/.docs/raw/memory/storage.mdx +248 -0
- package/.docs/raw/memory/working-memory.mdx +24 -13
- package/.docs/raw/observability/logging.mdx +16 -15
- package/.docs/raw/observability/overview.mdx +27 -7
- package/.docs/raw/observability/tracing/bridges/otel.mdx +7 -4
- package/.docs/raw/observability/tracing/exporters/arize.mdx +61 -24
- package/.docs/raw/observability/tracing/exporters/braintrust.mdx +32 -22
- package/.docs/raw/observability/tracing/exporters/cloud.mdx +24 -5
- package/.docs/raw/observability/tracing/exporters/datadog.mdx +175 -0
- package/.docs/raw/observability/tracing/exporters/default.mdx +28 -7
- package/.docs/raw/observability/tracing/exporters/laminar.mdx +89 -0
- package/.docs/raw/observability/tracing/exporters/langfuse.mdx +31 -22
- package/.docs/raw/observability/tracing/exporters/langsmith.mdx +33 -3
- package/.docs/raw/observability/tracing/exporters/otel.mdx +194 -22
- package/.docs/raw/observability/tracing/exporters/posthog.mdx +32 -22
- package/.docs/raw/observability/tracing/exporters/sentry.mdx +198 -0
- package/.docs/raw/observability/tracing/overview.mdx +388 -108
- package/.docs/raw/observability/tracing/processors/sensitive-data-filter.mdx +27 -7
- package/.docs/raw/rag/chunking-and-embedding.mdx +22 -33
- package/.docs/raw/rag/graph-rag.mdx +223 -0
- package/.docs/raw/rag/overview.mdx +6 -3
- package/.docs/raw/rag/retrieval.mdx +53 -57
- package/.docs/raw/rag/vector-databases.mdx +55 -31
- package/.docs/raw/reference/agents/agent.mdx +17 -14
- package/.docs/raw/reference/agents/generate.mdx +172 -44
- package/.docs/raw/reference/agents/generateLegacy.mdx +5 -3
- package/.docs/raw/reference/agents/getDefaultGenerateOptions.mdx +5 -3
- package/.docs/raw/reference/agents/getDefaultOptions.mdx +5 -3
- package/.docs/raw/reference/agents/getDefaultStreamOptions.mdx +5 -3
- package/.docs/raw/reference/agents/getDescription.mdx +3 -1
- package/.docs/raw/reference/agents/getInstructions.mdx +5 -3
- package/.docs/raw/reference/agents/getLLM.mdx +5 -3
- package/.docs/raw/reference/agents/getMemory.mdx +5 -3
- package/.docs/raw/reference/agents/getModel.mdx +5 -3
- package/.docs/raw/reference/agents/getTools.mdx +4 -2
- package/.docs/raw/reference/agents/getVoice.mdx +4 -2
- package/.docs/raw/reference/agents/listAgents.mdx +4 -2
- package/.docs/raw/reference/agents/listScorers.mdx +5 -3
- package/.docs/raw/reference/agents/listTools.mdx +4 -2
- package/.docs/raw/reference/agents/listWorkflows.mdx +4 -2
- package/.docs/raw/reference/agents/network.mdx +113 -1
- package/.docs/raw/reference/ai-sdk/chat-route.mdx +6 -3
- package/.docs/raw/reference/ai-sdk/handle-chat-stream.mdx +4 -2
- package/.docs/raw/reference/ai-sdk/handle-network-stream.mdx +4 -2
- package/.docs/raw/reference/ai-sdk/handle-workflow-stream.mdx +5 -3
- package/.docs/raw/reference/ai-sdk/network-route.mdx +6 -3
- package/.docs/raw/reference/ai-sdk/to-ai-sdk-stream.mdx +10 -6
- package/.docs/raw/reference/ai-sdk/to-ai-sdk-v4-messages.mdx +130 -0
- package/.docs/raw/reference/ai-sdk/to-ai-sdk-v5-messages.mdx +110 -0
- package/.docs/raw/reference/ai-sdk/with-mastra.mdx +122 -0
- package/.docs/raw/reference/ai-sdk/workflow-route.mdx +7 -4
- package/.docs/raw/reference/auth/auth0.mdx +5 -3
- package/.docs/raw/reference/auth/clerk.mdx +5 -3
- package/.docs/raw/reference/auth/firebase.mdx +6 -5
- package/.docs/raw/reference/auth/jwt.mdx +5 -3
- package/.docs/raw/reference/auth/supabase.mdx +5 -3
- package/.docs/raw/reference/auth/workos.mdx +5 -3
- package/.docs/raw/reference/cli/create-mastra.mdx +12 -10
- package/.docs/raw/reference/cli/mastra.mdx +63 -15
- package/.docs/raw/reference/client-js/agents.mdx +77 -35
- package/.docs/raw/reference/client-js/error-handling.mdx +3 -3
- package/.docs/raw/reference/client-js/logs.mdx +2 -0
- package/.docs/raw/reference/client-js/mastra-client.mdx +4 -2
- package/.docs/raw/reference/client-js/memory.mdx +43 -1
- package/.docs/raw/reference/client-js/observability.mdx +2 -0
- package/.docs/raw/reference/client-js/telemetry.mdx +2 -0
- package/.docs/raw/reference/client-js/tools.mdx +2 -0
- package/.docs/raw/reference/client-js/vectors.mdx +2 -0
- package/.docs/raw/reference/client-js/workflows.mdx +47 -3
- package/.docs/raw/reference/configuration.mdx +761 -0
- package/.docs/raw/reference/core/addGateway.mdx +2 -0
- package/.docs/raw/reference/core/getAgent.mdx +3 -1
- package/.docs/raw/reference/core/getAgentById.mdx +3 -1
- package/.docs/raw/reference/core/getDeployer.mdx +3 -1
- package/.docs/raw/reference/core/getGateway.mdx +2 -0
- package/.docs/raw/reference/core/getGatewayById.mdx +2 -0
- package/.docs/raw/reference/core/getLogger.mdx +3 -1
- package/.docs/raw/reference/core/getMCPServer.mdx +3 -1
- package/.docs/raw/reference/core/getMCPServerById.mdx +3 -1
- package/.docs/raw/reference/core/getMemory.mdx +7 -3
- package/.docs/raw/reference/core/getScorer.mdx +2 -0
- package/.docs/raw/reference/core/getScorerById.mdx +2 -0
- package/.docs/raw/reference/core/getServer.mdx +6 -4
- package/.docs/raw/reference/core/getStorage.mdx +5 -3
- package/.docs/raw/reference/core/getStoredAgentById.mdx +6 -4
- package/.docs/raw/reference/core/getTelemetry.mdx +3 -1
- package/.docs/raw/reference/core/getVector.mdx +3 -1
- package/.docs/raw/reference/core/getWorkflow.mdx +3 -1
- package/.docs/raw/reference/core/listAgents.mdx +3 -1
- package/.docs/raw/reference/core/listGateways.mdx +2 -0
- package/.docs/raw/reference/core/listLogs.mdx +3 -1
- package/.docs/raw/reference/core/listLogsByRunId.mdx +3 -1
- package/.docs/raw/reference/core/listMCPServers.mdx +3 -1
- package/.docs/raw/reference/core/listMemory.mdx +8 -4
- package/.docs/raw/reference/core/listScorers.mdx +2 -0
- package/.docs/raw/reference/core/listStoredAgents.mdx +7 -5
- package/.docs/raw/reference/core/listVectors.mdx +3 -1
- package/.docs/raw/reference/core/listWorkflows.mdx +3 -1
- package/.docs/raw/reference/core/mastra-class.mdx +27 -20
- package/.docs/raw/reference/core/mastra-model-gateway.mdx +2 -0
- package/.docs/raw/reference/core/setLogger.mdx +3 -1
- package/.docs/raw/reference/core/setStorage.mdx +6 -4
- package/.docs/raw/reference/deployer/cloudflare.mdx +22 -53
- package/.docs/raw/reference/deployer/deployer.mdx +2 -1
- package/.docs/raw/reference/deployer/netlify.mdx +4 -1
- package/.docs/raw/reference/deployer/vercel.mdx +5 -4
- package/.docs/raw/reference/evals/answer-relevancy.mdx +4 -1
- package/.docs/raw/reference/evals/answer-similarity.mdx +4 -1
- package/.docs/raw/reference/evals/bias.mdx +4 -1
- package/.docs/raw/reference/evals/completeness.mdx +4 -1
- package/.docs/raw/reference/evals/content-similarity.mdx +4 -1
- package/.docs/raw/reference/evals/context-precision.mdx +4 -1
- package/.docs/raw/reference/evals/context-relevance.mdx +2 -0
- package/.docs/raw/reference/evals/create-scorer.mdx +11 -3
- package/.docs/raw/reference/evals/faithfulness.mdx +4 -1
- package/.docs/raw/reference/evals/hallucination.mdx +4 -1
- package/.docs/raw/reference/evals/keyword-coverage.mdx +4 -1
- package/.docs/raw/reference/evals/mastra-scorer.mdx +2 -0
- package/.docs/raw/reference/evals/noise-sensitivity.mdx +2 -0
- package/.docs/raw/reference/evals/prompt-alignment.mdx +9 -7
- package/.docs/raw/reference/evals/run-evals.mdx +3 -1
- package/.docs/raw/reference/evals/scorer-utils.mdx +3 -0
- package/.docs/raw/reference/evals/textual-difference.mdx +4 -1
- package/.docs/raw/reference/evals/tone-consistency.mdx +4 -1
- package/.docs/raw/reference/evals/tool-call-accuracy.mdx +25 -23
- package/.docs/raw/reference/evals/toxicity.mdx +4 -1
- package/.docs/raw/reference/index.mdx +2 -1
- package/.docs/raw/reference/logging/pino-logger.mdx +10 -8
- package/.docs/raw/reference/memory/clone-utilities.mdx +345 -0
- package/.docs/raw/reference/memory/cloneThread.mdx +237 -0
- package/.docs/raw/reference/memory/createThread.mdx +6 -4
- package/.docs/raw/reference/memory/deleteMessages.mdx +4 -2
- package/.docs/raw/reference/memory/getThreadById.mdx +3 -1
- package/.docs/raw/reference/memory/listThreads.mdx +187 -0
- package/.docs/raw/reference/memory/memory-class.mdx +27 -20
- package/.docs/raw/reference/memory/recall.mdx +6 -4
- package/.docs/raw/reference/observability/tracing/bridges/otel.mdx +6 -2
- package/.docs/raw/reference/observability/tracing/configuration.mdx +51 -0
- package/.docs/raw/reference/observability/tracing/exporters/arize.mdx +25 -6
- package/.docs/raw/reference/observability/tracing/exporters/braintrust.mdx +23 -2
- package/.docs/raw/reference/observability/tracing/exporters/cloud-exporter.mdx +10 -0
- package/.docs/raw/reference/observability/tracing/exporters/console-exporter.mdx +3 -0
- package/.docs/raw/reference/observability/tracing/exporters/datadog.mdx +172 -0
- package/.docs/raw/reference/observability/tracing/exporters/default-exporter.mdx +10 -0
- package/.docs/raw/reference/observability/tracing/exporters/laminar.mdx +139 -0
- package/.docs/raw/reference/observability/tracing/exporters/langfuse.mdx +26 -4
- package/.docs/raw/reference/observability/tracing/exporters/langsmith.mdx +10 -0
- package/.docs/raw/reference/observability/tracing/exporters/otel.mdx +51 -34
- package/.docs/raw/reference/observability/tracing/exporters/posthog.mdx +25 -4
- package/.docs/raw/reference/observability/tracing/exporters/sentry.mdx +224 -0
- package/.docs/raw/reference/observability/tracing/instances.mdx +2 -0
- package/.docs/raw/reference/observability/tracing/interfaces.mdx +20 -0
- package/.docs/raw/reference/observability/tracing/processors/sensitive-data-filter.mdx +2 -0
- package/.docs/raw/reference/observability/tracing/spans.mdx +2 -0
- package/.docs/raw/reference/processors/batch-parts-processor.mdx +4 -2
- package/.docs/raw/reference/processors/language-detector.mdx +6 -3
- package/.docs/raw/reference/processors/message-history-processor.mdx +5 -2
- package/.docs/raw/reference/processors/moderation-processor.mdx +6 -4
- package/.docs/raw/reference/processors/pii-detector.mdx +6 -4
- package/.docs/raw/reference/processors/processor-interface.mdx +326 -23
- package/.docs/raw/reference/processors/prompt-injection-detector.mdx +5 -3
- package/.docs/raw/reference/processors/semantic-recall-processor.mdx +7 -2
- package/.docs/raw/reference/processors/system-prompt-scrubber.mdx +5 -3
- package/.docs/raw/reference/processors/token-limiter-processor.mdx +62 -19
- package/.docs/raw/reference/processors/tool-call-filter.mdx +5 -3
- package/.docs/raw/reference/processors/unicode-normalizer.mdx +6 -3
- package/.docs/raw/reference/processors/working-memory-processor.mdx +6 -3
- package/.docs/raw/reference/rag/chunk.mdx +7 -6
- package/.docs/raw/reference/rag/database-config.mdx +8 -6
- package/.docs/raw/reference/rag/document.mdx +2 -0
- package/.docs/raw/reference/rag/embeddings.mdx +2 -0
- package/.docs/raw/reference/rag/extract-params.mdx +57 -3
- package/.docs/raw/reference/rag/graph-rag.mdx +2 -0
- package/.docs/raw/reference/rag/metadata-filters.mdx +27 -7
- package/.docs/raw/reference/rag/rerank.mdx +2 -0
- package/.docs/raw/reference/rag/rerankWithScorer.mdx +2 -0
- package/.docs/raw/reference/server/create-route.mdx +34 -18
- package/.docs/raw/reference/server/express-adapter.mdx +27 -51
- package/.docs/raw/reference/server/fastify-adapter.mdx +130 -0
- package/.docs/raw/reference/server/hono-adapter.mdx +27 -51
- package/.docs/raw/reference/server/koa-adapter.mdx +129 -0
- package/.docs/raw/reference/server/mastra-server.mdx +52 -34
- package/.docs/raw/reference/server/routes.mdx +73 -10
- package/.docs/raw/reference/storage/cloudflare-d1.mdx +10 -5
- package/.docs/raw/reference/storage/cloudflare.mdx +12 -2
- package/.docs/raw/reference/storage/composite.mdx +245 -0
- package/.docs/raw/reference/storage/convex.mdx +8 -6
- package/.docs/raw/reference/storage/dynamodb.mdx +134 -8
- package/.docs/raw/reference/storage/lance.mdx +9 -5
- package/.docs/raw/reference/storage/libsql.mdx +76 -54
- package/.docs/raw/reference/storage/mongodb.mdx +115 -16
- package/.docs/raw/reference/storage/mssql.mdx +11 -6
- package/.docs/raw/{server-db/storage.mdx → reference/storage/overview.mdx} +15 -111
- package/.docs/raw/reference/storage/postgresql.mdx +228 -83
- package/.docs/raw/reference/storage/upstash.mdx +78 -2
- package/.docs/raw/reference/streaming/ChunkType.mdx +31 -3
- package/.docs/raw/reference/streaming/agents/MastraModelOutput.mdx +67 -6
- package/.docs/raw/reference/streaming/agents/stream.mdx +48 -51
- package/.docs/raw/reference/streaming/agents/streamLegacy.mdx +5 -3
- package/.docs/raw/reference/streaming/workflows/observeStream.mdx +3 -1
- package/.docs/raw/reference/streaming/workflows/resumeStream.mdx +3 -1
- package/.docs/raw/reference/streaming/workflows/stream.mdx +37 -22
- package/.docs/raw/reference/streaming/workflows/timeTravelStream.mdx +6 -4
- package/.docs/raw/reference/templates/overview.mdx +3 -2
- package/.docs/raw/reference/tools/client.mdx +3 -0
- package/.docs/raw/reference/tools/create-tool.mdx +127 -5
- package/.docs/raw/reference/tools/document-chunker-tool.mdx +2 -0
- package/.docs/raw/reference/tools/graph-rag-tool.mdx +40 -3
- package/.docs/raw/reference/tools/mcp-client.mdx +110 -1
- package/.docs/raw/reference/tools/mcp-server.mdx +278 -24
- package/.docs/raw/reference/tools/vector-query-tool.mdx +68 -4
- package/.docs/raw/reference/vectors/astra.mdx +5 -3
- package/.docs/raw/reference/vectors/chroma.mdx +5 -3
- package/.docs/raw/reference/vectors/convex.mdx +14 -12
- package/.docs/raw/reference/vectors/couchbase.mdx +7 -5
- package/.docs/raw/reference/vectors/duckdb.mdx +12 -10
- package/.docs/raw/reference/vectors/elasticsearch.mdx +12 -4
- package/.docs/raw/reference/vectors/lance.mdx +6 -4
- package/.docs/raw/reference/vectors/libsql.mdx +66 -13
- package/.docs/raw/reference/vectors/mongodb.mdx +90 -10
- package/.docs/raw/reference/vectors/opensearch.mdx +30 -3
- package/.docs/raw/reference/vectors/pg.mdx +58 -6
- package/.docs/raw/reference/vectors/pinecone.mdx +23 -8
- package/.docs/raw/reference/vectors/qdrant.mdx +148 -4
- package/.docs/raw/reference/vectors/s3vectors.mdx +8 -6
- package/.docs/raw/reference/vectors/turbopuffer.mdx +6 -4
- package/.docs/raw/reference/vectors/upstash.mdx +60 -6
- package/.docs/raw/reference/vectors/vectorize.mdx +5 -3
- package/.docs/raw/reference/voice/azure.mdx +2 -0
- package/.docs/raw/reference/voice/cloudflare.mdx +2 -0
- package/.docs/raw/reference/voice/composite-voice.mdx +4 -0
- package/.docs/raw/reference/voice/deepgram.mdx +2 -0
- package/.docs/raw/reference/voice/elevenlabs.mdx +2 -0
- package/.docs/raw/reference/voice/google-gemini-live.mdx +3 -0
- package/.docs/raw/reference/voice/google.mdx +2 -0
- package/.docs/raw/reference/voice/mastra-voice.mdx +2 -0
- package/.docs/raw/reference/voice/murf.mdx +2 -0
- package/.docs/raw/reference/voice/openai-realtime.mdx +3 -0
- package/.docs/raw/reference/voice/openai.mdx +2 -0
- package/.docs/raw/reference/voice/playai.mdx +2 -0
- package/.docs/raw/reference/voice/sarvam.mdx +2 -0
- package/.docs/raw/reference/voice/speechify.mdx +2 -0
- package/.docs/raw/reference/voice/voice.addInstructions.mdx +3 -0
- package/.docs/raw/reference/voice/voice.addTools.mdx +3 -0
- package/.docs/raw/reference/voice/voice.answer.mdx +4 -0
- package/.docs/raw/reference/voice/voice.close.mdx +3 -0
- package/.docs/raw/reference/voice/voice.connect.mdx +5 -1
- package/.docs/raw/reference/voice/voice.events.mdx +2 -0
- package/.docs/raw/reference/voice/voice.getSpeakers.mdx +3 -0
- package/.docs/raw/reference/voice/voice.listen.mdx +6 -0
- package/.docs/raw/reference/voice/voice.off.mdx +2 -0
- package/.docs/raw/reference/voice/voice.on.mdx +5 -1
- package/.docs/raw/reference/voice/voice.send.mdx +4 -0
- package/.docs/raw/reference/voice/voice.speak.mdx +6 -0
- package/.docs/raw/reference/voice/voice.updateConfig.mdx +2 -0
- package/.docs/raw/reference/workflows/run-methods/cancel.mdx +55 -5
- package/.docs/raw/reference/workflows/run-methods/restart.mdx +3 -3
- package/.docs/raw/reference/workflows/run-methods/resume.mdx +6 -4
- package/.docs/raw/reference/workflows/run-methods/start.mdx +7 -5
- package/.docs/raw/reference/workflows/run-methods/startAsync.mdx +145 -0
- package/.docs/raw/reference/workflows/run-methods/timeTravel.mdx +10 -8
- package/.docs/raw/reference/workflows/run.mdx +11 -3
- package/.docs/raw/reference/workflows/step.mdx +56 -3
- package/.docs/raw/reference/workflows/workflow-methods/branch.mdx +3 -1
- package/.docs/raw/reference/workflows/workflow-methods/commit.mdx +3 -1
- package/.docs/raw/reference/workflows/workflow-methods/create-run.mdx +39 -2
- package/.docs/raw/reference/workflows/workflow-methods/dountil.mdx +3 -1
- package/.docs/raw/reference/workflows/workflow-methods/dowhile.mdx +3 -1
- package/.docs/raw/reference/workflows/workflow-methods/foreach.mdx +71 -4
- package/.docs/raw/reference/workflows/workflow-methods/map.mdx +9 -7
- package/.docs/raw/reference/workflows/workflow-methods/parallel.mdx +3 -1
- package/.docs/raw/reference/workflows/workflow-methods/sleep.mdx +4 -6
- package/.docs/raw/reference/workflows/workflow-methods/sleepUntil.mdx +4 -6
- package/.docs/raw/reference/workflows/workflow-methods/then.mdx +3 -1
- package/.docs/raw/reference/workflows/workflow.mdx +193 -2
- package/.docs/raw/{auth → server/auth}/auth0.mdx +40 -21
- package/.docs/raw/{auth → server/auth}/clerk.mdx +37 -16
- package/.docs/raw/{auth → server/auth}/firebase.mdx +47 -25
- package/.docs/raw/{auth → server/auth}/index.mdx +8 -6
- package/.docs/raw/{auth → server/auth}/jwt.mdx +22 -10
- package/.docs/raw/{auth → server/auth}/supabase.mdx +45 -25
- package/.docs/raw/{auth → server/auth}/workos.mdx +39 -20
- package/.docs/raw/{server-db → server}/custom-adapters.mdx +40 -24
- package/.docs/raw/{server-db → server}/custom-api-routes.mdx +6 -6
- package/.docs/raw/{server-db → server}/mastra-client.mdx +35 -38
- package/.docs/raw/server/mastra-server.mdx +86 -0
- package/.docs/raw/{server-db → server}/middleware.mdx +11 -9
- package/.docs/raw/{server-db → server}/request-context.mdx +85 -43
- package/.docs/raw/{server-db → server}/server-adapters.mdx +154 -33
- package/.docs/raw/streaming/events.mdx +16 -7
- package/.docs/raw/streaming/overview.mdx +30 -17
- package/.docs/raw/streaming/tool-streaming.mdx +8 -6
- package/.docs/raw/streaming/workflow-streaming.mdx +8 -8
- package/.docs/raw/tools-mcp/advanced-usage.mdx +4 -2
- package/.docs/raw/tools-mcp/mcp-overview.mdx +46 -12
- package/.docs/raw/tools-mcp/overview.mdx +14 -13
- package/.docs/raw/voice/overview.mdx +17 -2
- package/.docs/raw/voice/speech-to-speech.mdx +5 -0
- package/.docs/raw/voice/speech-to-text.mdx +4 -0
- package/.docs/raw/voice/text-to-speech.mdx +3 -0
- package/.docs/raw/workflows/agents-and-tools.mdx +70 -21
- package/.docs/raw/workflows/control-flow.mdx +369 -34
- package/.docs/raw/workflows/error-handling.mdx +192 -18
- package/.docs/raw/workflows/human-in-the-loop.mdx +8 -7
- package/.docs/raw/workflows/input-data-mapping.mdx +9 -7
- package/.docs/raw/workflows/overview.mdx +80 -34
- package/.docs/raw/workflows/snapshots.mdx +19 -45
- package/.docs/raw/workflows/suspend-and-resume.mdx +14 -14
- package/.docs/raw/workflows/time-travel.mdx +25 -21
- package/.docs/raw/workflows/workflow-state.mdx +7 -8
- package/CHANGELOG.md +246 -0
- package/README.md +36 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/logger.d.ts +3 -0
- package/dist/logger.d.ts.map +1 -1
- package/dist/stdio.js +746 -49
- package/dist/tools/course.d.ts.map +1 -1
- package/dist/tools/embedded-docs.d.ts +276 -0
- package/dist/tools/embedded-docs.d.ts.map +1 -0
- package/package.json +9 -8
- package/.docs/organized/changelogs/%40internal%2Fai-sdk-v4.md +0 -1
- package/.docs/raw/deployment/building-mastra.mdx +0 -73
- package/.docs/raw/deployment/cloud-providers/index.mdx +0 -55
- package/.docs/raw/deployment/mastra-cloud/dashboard.mdx +0 -100
- package/.docs/raw/deployment/mastra-cloud/observability.mdx +0 -53
- package/.docs/raw/deployment/mastra-cloud/overview.mdx +0 -65
- package/.docs/raw/deployment/mastra-cloud/setting-up.mdx +0 -105
- package/.docs/raw/memory/conversation-history.mdx +0 -24
- package/.docs/raw/memory/storage/memory-with-libsql.mdx +0 -140
- package/.docs/raw/memory/storage/memory-with-mongodb.mdx +0 -150
- package/.docs/raw/memory/storage/memory-with-pg.mdx +0 -138
- package/.docs/raw/memory/storage/memory-with-upstash.mdx +0 -146
- package/.docs/raw/memory/threads-and-resources.mdx +0 -95
- package/.docs/raw/reference/core/setTelemetry.mdx +0 -36
- package/.docs/raw/reference/memory/listThreadsByResourceId.mdx +0 -110
- package/.docs/raw/reference/memory/query.mdx +0 -189
- package/.docs/raw/reference/workflows/workflow-methods/sendEvent.mdx +0 -70
- package/.docs/raw/reference/workflows/workflow-methods/waitForEvent.mdx +0 -66
- package/.docs/raw/server-db/mastra-server.mdx +0 -97
- package/.docs/raw/workflows/inngest-workflow.mdx +0 -363
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: "Custom Adapters | Server
|
|
2
|
+
title: "Custom Adapters | Server"
|
|
3
3
|
description: "Create a custom server adapter for frameworks other than Hono or Express."
|
|
4
|
+
packages:
|
|
5
|
+
- "@mastra/core"
|
|
6
|
+
- "@mastra/express"
|
|
7
|
+
- "@mastra/hono"
|
|
8
|
+
- "@mastra/server"
|
|
9
|
+
- "@mastra/fastify"
|
|
10
|
+
- "@mastra/koa"
|
|
4
11
|
---
|
|
5
12
|
|
|
6
13
|
import PropertiesTable from "@site/src/components/PropertiesTable";
|
|
@@ -13,25 +20,31 @@ A custom adapter translates between Mastra's route definitions and your framewor
|
|
|
13
20
|
|
|
14
21
|
:::info
|
|
15
22
|
|
|
16
|
-
|
|
23
|
+
Use any of these prebuilt server adapters:
|
|
24
|
+
|
|
17
25
|
- [@mastra/hono](/reference/v1/server/hono-adapter)
|
|
18
26
|
- [@mastra/express](/reference/v1/server/express-adapter)
|
|
27
|
+
- [@mastra/fastify](/reference/v1/server/fastify-adapter)
|
|
28
|
+
- [@mastra/koa](/reference/v1/server/koa-adapter)
|
|
19
29
|
|
|
20
30
|
:::
|
|
21
31
|
|
|
22
32
|
## Abstract class
|
|
23
33
|
|
|
24
|
-
The `MastraServer` abstract class from `@mastra/server` provides the foundation for all adapters. It handles route registration logic, parameter validation, and other shared functionality. Your custom adapter extends this class and implements the framework-specific parts.
|
|
34
|
+
The `MastraServer` abstract class from `@mastra/server/server-adapter` provides the foundation for all adapters. It handles route registration logic, parameter validation, and other shared functionality. Your custom adapter extends this class and implements the framework-specific parts.
|
|
25
35
|
|
|
26
36
|
The class takes three type parameters that represent your framework's types:
|
|
27
37
|
|
|
28
|
-
```typescript title="my-framework-adapter.ts"
|
|
29
|
-
import { MastraServer } from '@mastra/server';
|
|
38
|
+
```typescript title="my-framework-adapter.ts"
|
|
39
|
+
import { MastraServer } from '@mastra/server/server-adapter';
|
|
30
40
|
|
|
31
41
|
export class MyFrameworkServer extends MastraServer<
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
42
|
+
// Your framework's app type (e.g., FastifyInstance)
|
|
43
|
+
MyApp,
|
|
44
|
+
// Your framework's request type (e.g., FastifyRequest)
|
|
45
|
+
MyRequest,
|
|
46
|
+
// Your framework's response type (e.g., FastifyReply)
|
|
47
|
+
MyResponse
|
|
35
48
|
> {
|
|
36
49
|
// Implement abstract methods
|
|
37
50
|
}
|
|
@@ -45,9 +58,9 @@ You must implement these six abstract methods. Each handles a specific part of t
|
|
|
45
58
|
|
|
46
59
|
### registerContextMiddleware()
|
|
47
60
|
|
|
48
|
-
This method runs first and attaches Mastra context to every incoming request. Route handlers need access to the Mastra instance, tools, and other context to function. How you attach this context depends on your framework—Express uses `res.locals`, Hono uses `c.set()`, and other frameworks have their own patterns.
|
|
61
|
+
This method runs first and attaches Mastra context to every incoming request. Route handlers need access to the Mastra instance, tools, and other context to function. How you attach this context depends on your framework — Express uses `res.locals`, Hono uses `c.set()`, and other frameworks have their own patterns.
|
|
49
62
|
|
|
50
|
-
```typescript
|
|
63
|
+
```typescript
|
|
51
64
|
registerContextMiddleware(): void {
|
|
52
65
|
this.app.use('*', (req, res, next) => {
|
|
53
66
|
// Attach context to your framework's request/response
|
|
@@ -74,7 +87,7 @@ Context to attach:
|
|
|
74
87
|
|
|
75
88
|
Register authentication and authorization middleware. This method should check if authentication is configured on the Mastra instance and skip registration entirely if not. When auth is configured, you'll typically register two middleware functions: one for authentication (validating tokens and setting the user) and one for authorization (checking if the user can access the requested resource).
|
|
76
89
|
|
|
77
|
-
```typescript
|
|
90
|
+
```typescript
|
|
78
91
|
registerAuthMiddleware(): void {
|
|
79
92
|
const authConfig = this.mastra.getServer()?.auth;
|
|
80
93
|
if (!authConfig) return;
|
|
@@ -110,7 +123,7 @@ registerAuthMiddleware(): void {
|
|
|
110
123
|
|
|
111
124
|
Register a single route with your framework. This method is called once for each Mastra route during initialization. It receives a `ServerRoute` object containing the path, HTTP method, handler function, and Zod schemas for validation. Your implementation should wire this up to your framework's routing system.
|
|
112
125
|
|
|
113
|
-
```typescript
|
|
126
|
+
```typescript
|
|
114
127
|
async registerRoute(
|
|
115
128
|
app: MyApp,
|
|
116
129
|
route: ServerRoute,
|
|
@@ -157,7 +170,7 @@ async registerRoute(
|
|
|
157
170
|
|
|
158
171
|
Extract URL parameters, query parameters, and request body from the incoming request. Different frameworks expose these values in different ways—Express uses `req.params`, `req.query`, and `req.body`, while other frameworks may use different property names or require method calls. This method normalizes the extraction for your framework.
|
|
159
172
|
|
|
160
|
-
```typescript
|
|
173
|
+
```typescript
|
|
161
174
|
async getParams(
|
|
162
175
|
route: ServerRoute,
|
|
163
176
|
request: MyRequest
|
|
@@ -167,9 +180,12 @@ async getParams(
|
|
|
167
180
|
body: unknown;
|
|
168
181
|
}> {
|
|
169
182
|
return {
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
183
|
+
// From route path (e.g., :agentId)
|
|
184
|
+
urlParams: request.params,
|
|
185
|
+
// From URL query string
|
|
186
|
+
queryParams: request.query,
|
|
187
|
+
// From request body
|
|
188
|
+
body: request.body,
|
|
173
189
|
};
|
|
174
190
|
}
|
|
175
191
|
```
|
|
@@ -178,7 +194,7 @@ async getParams(
|
|
|
178
194
|
|
|
179
195
|
Send the response back to the client based on the route's response type. Mastra routes can return different response types: JSON for most API responses, streams for agent generation, and special types for MCP transports. Your implementation should handle each type appropriately for your framework.
|
|
180
196
|
|
|
181
|
-
```typescript
|
|
197
|
+
```typescript
|
|
182
198
|
async sendResponse(
|
|
183
199
|
route: ServerRoute,
|
|
184
200
|
response: MyResponse,
|
|
@@ -213,7 +229,7 @@ async sendResponse(
|
|
|
213
229
|
|
|
214
230
|
Handle streaming responses for agent generation. When an agent generates a response, it produces a stream of chunks that should be sent to the client as they become available. This method reads from the stream, optionally applies redaction to hide sensitive data, and writes chunks to the response in the appropriate format (SSE or newline-delimited JSON).
|
|
215
231
|
|
|
216
|
-
```typescript
|
|
232
|
+
```typescript
|
|
217
233
|
async stream(
|
|
218
234
|
route: ServerRoute,
|
|
219
235
|
response: MyResponse,
|
|
@@ -276,7 +292,7 @@ The `parse*` methods use Zod schemas defined on each route to validate input and
|
|
|
276
292
|
|
|
277
293
|
Your adapter's constructor should accept the same options as the base class and pass them to `super()`. You can add additional framework-specific options if needed:
|
|
278
294
|
|
|
279
|
-
```typescript
|
|
295
|
+
```typescript
|
|
280
296
|
constructor(options: {
|
|
281
297
|
app: MyApp;
|
|
282
298
|
mastra: Mastra;
|
|
@@ -290,14 +306,14 @@ constructor(options: {
|
|
|
290
306
|
}
|
|
291
307
|
```
|
|
292
308
|
|
|
293
|
-
See [Server Adapters](/docs/v1/server
|
|
309
|
+
See [Server Adapters](/docs/v1/server/server-adapters) for full documentation on each option.
|
|
294
310
|
|
|
295
311
|
## Full example
|
|
296
312
|
|
|
297
313
|
Here's a skeleton implementation showing all the required methods. This uses pseudocode for framework-specific parts—replace with your framework's actual APIs:
|
|
298
314
|
|
|
299
|
-
```typescript title="my-framework-adapter.ts"
|
|
300
|
-
import { MastraServer, ServerRoute } from '@mastra/server';
|
|
315
|
+
```typescript title="my-framework-adapter.ts"
|
|
316
|
+
import { MastraServer, ServerRoute } from '@mastra/server/server-adapter';
|
|
301
317
|
import type { Mastra } from '@mastra/core';
|
|
302
318
|
|
|
303
319
|
export class MyFrameworkServer extends MastraServer<MyApp, MyRequest, MyResponse> {
|
|
@@ -353,7 +369,7 @@ export class MyFrameworkServer extends MastraServer<MyApp, MyRequest, MyResponse
|
|
|
353
369
|
|
|
354
370
|
Once your adapter is implemented, use it the same way as the provided adapters:
|
|
355
371
|
|
|
356
|
-
```typescript title="server.ts"
|
|
372
|
+
```typescript title="server.ts"
|
|
357
373
|
import { MyFrameworkServer } from './my-framework-adapter';
|
|
358
374
|
import { mastra } from './mastra';
|
|
359
375
|
|
|
@@ -373,7 +389,7 @@ The existing [@mastra/hono](https://github.com/mastra-ai/mastra/blob/main/server
|
|
|
373
389
|
|
|
374
390
|
## Related
|
|
375
391
|
|
|
376
|
-
- [Server Adapters](/docs/v1/server
|
|
392
|
+
- [Server Adapters](/docs/v1/server/server-adapters) - Overview and shared concepts
|
|
377
393
|
- [Hono Adapter](/reference/v1/server/hono-adapter) - Reference implementation
|
|
378
394
|
- [Express Adapter](/reference/v1/server/express-adapter) - Reference implementation
|
|
379
395
|
- [MastraServer Reference](/reference/v1/server/mastra-server) - Full API reference
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: "Custom API Routes | Server
|
|
2
|
+
title: "Custom API Routes | Server"
|
|
3
3
|
description: "Expose additional HTTP endpoints from your Mastra server."
|
|
4
|
+
packages:
|
|
5
|
+
- "@mastra/core"
|
|
4
6
|
---
|
|
5
7
|
|
|
6
8
|
# Custom API Routes
|
|
@@ -9,19 +11,18 @@ By default, Mastra automatically exposes registered agents and workflows via its
|
|
|
9
11
|
|
|
10
12
|
Routes are provided with a helper `registerApiRoute()` from `@mastra/core/server`. Routes can live in the same file as the `Mastra` instance but separating them helps keep configuration concise.
|
|
11
13
|
|
|
12
|
-
```typescript title="src/mastra/index.ts"
|
|
14
|
+
```typescript title="src/mastra/index.ts"
|
|
13
15
|
import { Mastra } from "@mastra/core";
|
|
14
16
|
import { registerApiRoute } from "@mastra/core/server";
|
|
15
17
|
|
|
16
18
|
export const mastra = new Mastra({
|
|
17
|
-
// ...
|
|
18
19
|
server: {
|
|
19
20
|
apiRoutes: [
|
|
20
21
|
registerApiRoute("/my-custom-route", {
|
|
21
22
|
method: "GET",
|
|
22
23
|
handler: async (c) => {
|
|
23
24
|
const mastra = c.get("mastra");
|
|
24
|
-
const
|
|
25
|
+
const agent = await mastra.getAgent("my-agent");
|
|
25
26
|
|
|
26
27
|
return c.json({ message: "Custom route" });
|
|
27
28
|
},
|
|
@@ -41,12 +42,11 @@ Each route's handler receives the Hono `Context`. Within the handler you can acc
|
|
|
41
42
|
|
|
42
43
|
To add route-specific middleware pass a `middleware` array when calling `registerApiRoute()`.
|
|
43
44
|
|
|
44
|
-
```typescript title="src/mastra/index.ts"
|
|
45
|
+
```typescript title="src/mastra/index.ts"
|
|
45
46
|
import { Mastra } from "@mastra/core";
|
|
46
47
|
import { registerApiRoute } from "@mastra/core/server";
|
|
47
48
|
|
|
48
49
|
export const mastra = new Mastra({
|
|
49
|
-
// ...
|
|
50
50
|
server: {
|
|
51
51
|
apiRoutes: [
|
|
52
52
|
registerApiRoute("/my-custom-route", {
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: "Mastra Client SDK | Server
|
|
2
|
+
title: "Mastra Client SDK | Server"
|
|
3
3
|
description: "Learn how to set up and use the Mastra Client SDK"
|
|
4
|
+
packages:
|
|
5
|
+
- "@mastra/client-js"
|
|
6
|
+
- "@mastra/core"
|
|
4
7
|
---
|
|
5
8
|
|
|
6
9
|
import Tabs from "@theme/Tabs";
|
|
@@ -8,7 +11,7 @@ import TabItem from "@theme/TabItem";
|
|
|
8
11
|
|
|
9
12
|
# Mastra Client SDK
|
|
10
13
|
|
|
11
|
-
The Mastra Client SDK provides a simple and type-safe interface for interacting with your [Mastra Server](/docs/v1/server
|
|
14
|
+
The Mastra Client SDK provides a simple and type-safe interface for interacting with your [Mastra Server](/docs/v1/server/mastra-server) from your client environment.
|
|
12
15
|
|
|
13
16
|
## Prerequisites
|
|
14
17
|
|
|
@@ -61,7 +64,7 @@ To use the Mastra Client SDK, install the required dependencies:
|
|
|
61
64
|
|
|
62
65
|
Once initialized with a `baseUrl`, `MastraClient` exposes a type-safe interface for calling agents, tools, and workflows.
|
|
63
66
|
|
|
64
|
-
```typescript title="lib/mastra-client.ts"
|
|
67
|
+
```typescript title="lib/mastra-client.ts"
|
|
65
68
|
import { MastraClient } from "@mastra/client-js";
|
|
66
69
|
|
|
67
70
|
export const mastraClient = new MastraClient({
|
|
@@ -83,23 +86,16 @@ The Mastra Client SDK exposes all resources served by the Mastra Server
|
|
|
83
86
|
|
|
84
87
|
## Generating responses
|
|
85
88
|
|
|
86
|
-
Call `.generate()` with
|
|
89
|
+
Call `.generate()` with a string prompt:
|
|
87
90
|
|
|
88
|
-
```typescript
|
|
91
|
+
```typescript
|
|
89
92
|
import { mastraClient } from "lib/mastra-client";
|
|
90
93
|
|
|
91
94
|
const testAgent = async () => {
|
|
92
95
|
try {
|
|
93
96
|
const agent = mastraClient.getAgent("testAgent");
|
|
94
97
|
|
|
95
|
-
const response = await agent.generate(
|
|
96
|
-
messages: [
|
|
97
|
-
{
|
|
98
|
-
role: "user",
|
|
99
|
-
content: "Hello",
|
|
100
|
-
},
|
|
101
|
-
],
|
|
102
|
-
});
|
|
98
|
+
const response = await agent.generate("Hello");
|
|
103
99
|
|
|
104
100
|
console.log(response.text);
|
|
105
101
|
} catch (error) {
|
|
@@ -108,27 +104,24 @@ const testAgent = async () => {
|
|
|
108
104
|
};
|
|
109
105
|
```
|
|
110
106
|
|
|
111
|
-
|
|
107
|
+
:::info
|
|
108
|
+
|
|
109
|
+
You can also call `.generate()` with an array of message objects that include `role` and `content`. Visit the [.generate() reference](/reference/v1/client-js/agents#generate) for more information.
|
|
110
|
+
|
|
111
|
+
:::
|
|
112
112
|
|
|
113
113
|
## Streaming responses
|
|
114
114
|
|
|
115
|
-
Use `.stream()` for real-time responses with
|
|
115
|
+
Use `.stream()` for real-time responses with a string prompt:
|
|
116
116
|
|
|
117
|
-
```typescript
|
|
117
|
+
```typescript
|
|
118
118
|
import { mastraClient } from "lib/mastra-client";
|
|
119
119
|
|
|
120
120
|
const testAgent = async () => {
|
|
121
121
|
try {
|
|
122
122
|
const agent = mastraClient.getAgent("testAgent");
|
|
123
123
|
|
|
124
|
-
const stream = await agent.stream(
|
|
125
|
-
messages: [
|
|
126
|
-
{
|
|
127
|
-
role: "user",
|
|
128
|
-
content: "Hello",
|
|
129
|
-
},
|
|
130
|
-
],
|
|
131
|
-
});
|
|
124
|
+
const stream = await agent.stream("Hello");
|
|
132
125
|
|
|
133
126
|
stream.processDataStream({
|
|
134
127
|
onTextPart: (text) => {
|
|
@@ -141,17 +134,20 @@ const testAgent = async () => {
|
|
|
141
134
|
};
|
|
142
135
|
```
|
|
143
136
|
|
|
144
|
-
|
|
137
|
+
:::info
|
|
138
|
+
|
|
139
|
+
You can also call `.stream()` with an array of message objects that include `role` and `content`. Visit the [.stream() reference](/reference/v1/client-js/agents#stream) for more information.
|
|
140
|
+
|
|
141
|
+
:::
|
|
145
142
|
|
|
146
143
|
## Configuration options
|
|
147
144
|
|
|
148
145
|
`MastraClient` accepts optional parameters like `retries`, `backoffMs`, and `headers` to control request behavior. These parameters are useful for controlling retry behavior and including diagnostic metadata.
|
|
149
146
|
|
|
150
|
-
```typescript title="lib/mastra-client.ts"
|
|
147
|
+
```typescript title="lib/mastra-client.ts"
|
|
151
148
|
import { MastraClient } from "@mastra/client-js";
|
|
152
149
|
|
|
153
150
|
export const mastraClient = new MastraClient({
|
|
154
|
-
// ...
|
|
155
151
|
retries: 3,
|
|
156
152
|
backoffMs: 300,
|
|
157
153
|
maxBackoffMs: 5000,
|
|
@@ -161,7 +157,11 @@ export const mastraClient = new MastraClient({
|
|
|
161
157
|
});
|
|
162
158
|
```
|
|
163
159
|
|
|
164
|
-
|
|
160
|
+
:::info
|
|
161
|
+
|
|
162
|
+
Visit [MastraClient](/reference/v1/client-js/mastra-client) for more configuration options.
|
|
163
|
+
|
|
164
|
+
:::
|
|
165
165
|
|
|
166
166
|
## Adding request cancelling
|
|
167
167
|
|
|
@@ -169,7 +169,7 @@ export const mastraClient = new MastraClient({
|
|
|
169
169
|
|
|
170
170
|
Pass an `AbortSignal` to the client constructor to enable cancellation across all requests.
|
|
171
171
|
|
|
172
|
-
```typescript {3,7} title="lib/mastra-client.ts"
|
|
172
|
+
```typescript {3,7} title="lib/mastra-client.ts"
|
|
173
173
|
import { MastraClient } from "@mastra/client-js";
|
|
174
174
|
|
|
175
175
|
export const controller = new AbortController();
|
|
@@ -184,7 +184,7 @@ export const mastraClient = new MastraClient({
|
|
|
184
184
|
|
|
185
185
|
Calling `.abort()` will cancel any ongoing requests tied to that signal.
|
|
186
186
|
|
|
187
|
-
```typescript {4}
|
|
187
|
+
```typescript {4}
|
|
188
188
|
import { mastraClient, controller } from "lib/mastra-client";
|
|
189
189
|
|
|
190
190
|
const handleAbort = () => {
|
|
@@ -198,7 +198,7 @@ Define tools directly in client-side applications using the `createTool()` funct
|
|
|
198
198
|
|
|
199
199
|
This lets agents trigger browser-side functionality such as DOM manipulation, local storage access, or other Web APIs, enabling tool execution in the user's environment rather than on the server.
|
|
200
200
|
|
|
201
|
-
```typescript {27}
|
|
201
|
+
```typescript {27}
|
|
202
202
|
import { createTool } from "@mastra/client-js";
|
|
203
203
|
import { z } from "zod";
|
|
204
204
|
|
|
@@ -223,8 +223,7 @@ const handleClientTool = async () => {
|
|
|
223
223
|
},
|
|
224
224
|
});
|
|
225
225
|
|
|
226
|
-
const response = await agent.generate({
|
|
227
|
-
messages: "Change the background to blue",
|
|
226
|
+
const response = await agent.generate("Change the background to blue", {
|
|
228
227
|
clientTools: { colorChangeTool },
|
|
229
228
|
});
|
|
230
229
|
|
|
@@ -239,7 +238,7 @@ const handleClientTool = async () => {
|
|
|
239
238
|
|
|
240
239
|
This is a standard Mastra [agent](../agents/overview#setting-up-agents) configured to return hex color codes, intended to work with the browser-based client tool defined above.
|
|
241
240
|
|
|
242
|
-
```typescript title="src/mastra/agents/color-agent"
|
|
241
|
+
```typescript title="src/mastra/agents/color-agent"
|
|
243
242
|
import { Agent } from "@mastra/core/agent";
|
|
244
243
|
|
|
245
244
|
export const colorAgent = new Agent({
|
|
@@ -256,13 +255,11 @@ export const colorAgent = new Agent({
|
|
|
256
255
|
|
|
257
256
|
You can also use `MastraClient` in server-side environments such as API routes, serverless functions or actions. The usage will broadly remain the same but you may need to recreate the response to your client:
|
|
258
257
|
|
|
259
|
-
```typescript {8}
|
|
258
|
+
```typescript {8}
|
|
260
259
|
export async function action() {
|
|
261
260
|
const agent = mastraClient.getAgent("testAgent");
|
|
262
261
|
|
|
263
|
-
const stream = await agent.stream(
|
|
264
|
-
messages: [{ role: "user", content: "Hello" }],
|
|
265
|
-
});
|
|
262
|
+
const stream = await agent.stream("Hello");
|
|
266
263
|
|
|
267
264
|
return new Response(stream.body);
|
|
268
265
|
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Server Overview | Server"
|
|
3
|
+
description: "Overview of the Mastra server, covering HTTP endpoints, middleware, authentication, and client integration."
|
|
4
|
+
packages:
|
|
5
|
+
- "@mastra/core"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Server Overview
|
|
9
|
+
|
|
10
|
+
Mastra runs as an HTTP server that exposes your agents, workflows, and other functionality as API endpoints. The server handles request routing, middleware execution, authentication, and streaming responses.
|
|
11
|
+
|
|
12
|
+
:::info
|
|
13
|
+
|
|
14
|
+
This page covers the [`server`](/reference/v1/configuration#server-options) configuration options passed to the `Mastra` constructor. For running Mastra with your own HTTP server (Hono, Express, etc.), visit [Server Adapters](/docs/v1/server/server-adapters).
|
|
15
|
+
|
|
16
|
+
:::
|
|
17
|
+
|
|
18
|
+
## Server architecture
|
|
19
|
+
|
|
20
|
+
Mastra uses [Hono](https://hono.dev) as its underlying HTTP server framework. When you build a Mastra application using `mastra build`, it generates a Hono-based HTTP server in the `.mastra` directory.
|
|
21
|
+
|
|
22
|
+
The server provides:
|
|
23
|
+
|
|
24
|
+
- API endpoints for all registered agents and workflows
|
|
25
|
+
- Custom API routes and middleware
|
|
26
|
+
- Authentication with multiple providers
|
|
27
|
+
- Request context for dynamic configuration
|
|
28
|
+
- Stream data redaction for secure responses
|
|
29
|
+
|
|
30
|
+
## Configuration
|
|
31
|
+
|
|
32
|
+
Configure the server by passing a `server` object to the `Mastra` constructor:
|
|
33
|
+
|
|
34
|
+
```typescript title="src/mastra/index.ts"
|
|
35
|
+
import { Mastra } from "@mastra/core";
|
|
36
|
+
|
|
37
|
+
export const mastra = new Mastra({
|
|
38
|
+
server: {
|
|
39
|
+
port: 3000, // Defaults to 4111
|
|
40
|
+
host: "0.0.0.0", // Defaults to 'localhost'
|
|
41
|
+
},
|
|
42
|
+
});
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
:::info
|
|
46
|
+
|
|
47
|
+
Visit the [configuration reference](/reference/v1/configuration#server-options) for a full list of available server options.
|
|
48
|
+
|
|
49
|
+
:::
|
|
50
|
+
|
|
51
|
+
## Server features
|
|
52
|
+
|
|
53
|
+
- **[Middleware](/docs/v1/server/middleware)**: Intercept requests for authentication, logging, CORS, or injecting request-specific context.
|
|
54
|
+
- **[Custom API Routes](/docs/v1/server/custom-api-routes)**: Extend the server with your own HTTP endpoints that have access to the Mastra instance.
|
|
55
|
+
- **[Request Context](/docs/v1/server/request-context)**: Pass request-specific values to agents, tools, and workflows based on runtime conditions.
|
|
56
|
+
- **[Server Adapters](/docs/v1/server/server-adapters)**: Run Mastra with Express, Hono, or your own HTTP server instead of the generated server.
|
|
57
|
+
- **[Custom Adapters](/docs/v1/server/custom-adapters)**: Build adapters for frameworks not officially supported.
|
|
58
|
+
- **[Mastra Client SDK](/docs/v1/server/mastra-client)**: Type-safe client for calling agents, workflows, and tools from browser or server environments.
|
|
59
|
+
- **[Authentication](/docs/v1/server/auth)**: Secure endpoints with JWT, Clerk, Supabase, Firebase, Auth0, or WorkOS.
|
|
60
|
+
|
|
61
|
+
## Stream data redaction
|
|
62
|
+
|
|
63
|
+
When streaming agent responses, the HTTP layer redacts system prompts, tool definitions, API keys, and similar data from each chunk before sending it to clients. This is enabled by default.
|
|
64
|
+
|
|
65
|
+
This behavior is only configurable by using [server adapters](/docs/v1/server/server-adapters#stream-data-redaction). For server adapters, stream data redaction is enabled by default, too.
|
|
66
|
+
|
|
67
|
+
## TypeScript configuration
|
|
68
|
+
|
|
69
|
+
Mastra requires `module` and `moduleResolution` settings compatible with modern Node.js. Legacy options like `CommonJS` or `node` are not supported.
|
|
70
|
+
|
|
71
|
+
```json {4-5} title="tsconfig.json"
|
|
72
|
+
{
|
|
73
|
+
"compilerOptions": {
|
|
74
|
+
"target": "ES2022",
|
|
75
|
+
"module": "ES2022",
|
|
76
|
+
"moduleResolution": "bundler",
|
|
77
|
+
"esModuleInterop": true,
|
|
78
|
+
"forceConsistentCasingInFileNames": true,
|
|
79
|
+
"strict": true,
|
|
80
|
+
"skipLibCheck": true,
|
|
81
|
+
"noEmit": true,
|
|
82
|
+
"outDir": "dist"
|
|
83
|
+
},
|
|
84
|
+
"include": ["src/**/*"]
|
|
85
|
+
}
|
|
86
|
+
```
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: "Middleware | Server
|
|
2
|
+
title: "Middleware | Server"
|
|
3
3
|
description: "Apply custom middleware functions to intercept requests."
|
|
4
|
+
packages:
|
|
5
|
+
- "@mastra/core"
|
|
4
6
|
---
|
|
5
7
|
|
|
6
8
|
# Middleware
|
|
@@ -13,7 +15,7 @@ A middleware receives the [Hono](https://hono.dev) `Context` (`c`) and a `next`
|
|
|
13
15
|
function. If it returns a `Response` the request is short-circuited. Calling
|
|
14
16
|
`next()` continues processing the next middleware or route handler.
|
|
15
17
|
|
|
16
|
-
```typescript
|
|
18
|
+
```typescript
|
|
17
19
|
import { Mastra } from "@mastra/core";
|
|
18
20
|
|
|
19
21
|
export const mastra = new Mastra({
|
|
@@ -44,7 +46,7 @@ export const mastra = new Mastra({
|
|
|
44
46
|
To attach middleware to a single route pass the `middleware` option to
|
|
45
47
|
`registerApiRoute`:
|
|
46
48
|
|
|
47
|
-
```typescript
|
|
49
|
+
```typescript
|
|
48
50
|
registerApiRoute("/my-custom-route", {
|
|
49
51
|
method: "GET",
|
|
50
52
|
middleware: [
|
|
@@ -68,7 +70,7 @@ registerApiRoute("/my-custom-route", {
|
|
|
68
70
|
|
|
69
71
|
You can populate `RequestContext` dynamically in server middleware by extracting information from the request. In this example, the `temperature-unit` is set based on the Cloudflare `CF-IPCountry` header to ensure responses match the user's locale.
|
|
70
72
|
|
|
71
|
-
```typescript title="src/mastra/index.ts"
|
|
73
|
+
```typescript title="src/mastra/index.ts"
|
|
72
74
|
import { Mastra } from "@mastra/core";
|
|
73
75
|
import { RequestContext } from "@mastra/core/request-context";
|
|
74
76
|
import { testWeatherAgent } from "./agents/test-weather-agent";
|
|
@@ -95,7 +97,7 @@ export const mastra = new Mastra({
|
|
|
95
97
|
|
|
96
98
|
### Authentication
|
|
97
99
|
|
|
98
|
-
```typescript
|
|
100
|
+
```typescript
|
|
99
101
|
{
|
|
100
102
|
handler: async (c, next) => {
|
|
101
103
|
const authHeader = c.req.header('Authorization');
|
|
@@ -112,7 +114,7 @@ export const mastra = new Mastra({
|
|
|
112
114
|
|
|
113
115
|
### CORS support
|
|
114
116
|
|
|
115
|
-
```typescript
|
|
117
|
+
```typescript
|
|
116
118
|
{
|
|
117
119
|
handler: async (c, next) => {
|
|
118
120
|
c.header('Access-Control-Allow-Origin', '*');
|
|
@@ -136,7 +138,7 @@ export const mastra = new Mastra({
|
|
|
136
138
|
|
|
137
139
|
### Request logging
|
|
138
140
|
|
|
139
|
-
```typescript
|
|
141
|
+
```typescript
|
|
140
142
|
{
|
|
141
143
|
handler: async (c, next) => {
|
|
142
144
|
const start = Date.now();
|
|
@@ -152,7 +154,7 @@ export const mastra = new Mastra({
|
|
|
152
154
|
When integrating with Mastra Cloud or custom clients the following headers can
|
|
153
155
|
be inspected by middleware to tailor behavior:
|
|
154
156
|
|
|
155
|
-
```typescript
|
|
157
|
+
```typescript
|
|
156
158
|
{
|
|
157
159
|
handler: async (c, next) => {
|
|
158
160
|
const isFromMastraCloud = c.req.header('x-mastra-cloud') === 'true';
|
|
@@ -174,4 +176,4 @@ be inspected by middleware to tailor behavior:
|
|
|
174
176
|
|
|
175
177
|
# Related
|
|
176
178
|
|
|
177
|
-
- [Request Context](/docs/v1/server
|
|
179
|
+
- [Request Context](/docs/v1/server/request-context)
|