@mastra/mcp-docs-server 1.1.42-alpha.8 → 1.1.42

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. package/.docs/docs/agent-builder/memory.md +1 -1
  2. package/.docs/docs/agents/a2a.md +1 -1
  3. package/.docs/docs/agents/acp.md +4 -4
  4. package/.docs/docs/agents/adding-voice.md +7 -7
  5. package/.docs/docs/agents/agent-approval.md +1 -1
  6. package/.docs/docs/agents/background-tasks.md +2 -2
  7. package/.docs/docs/agents/channels.md +1 -1
  8. package/.docs/docs/agents/code-mode.md +3 -3
  9. package/.docs/docs/agents/guardrails.md +2 -2
  10. package/.docs/docs/agents/networks.md +1 -1
  11. package/.docs/docs/agents/overview.md +1 -1
  12. package/.docs/docs/agents/processors.md +3 -3
  13. package/.docs/docs/agents/response-caching.md +1 -1
  14. package/.docs/docs/agents/sdk-agents.md +261 -0
  15. package/.docs/docs/agents/signals.md +1 -1
  16. package/.docs/docs/agents/structured-output.md +5 -5
  17. package/.docs/docs/agents/supervisor-agents.md +2 -2
  18. package/.docs/docs/agents/using-tools.md +5 -5
  19. package/.docs/docs/browser/agent-browser.md +1 -1
  20. package/.docs/docs/browser/browser-viewer.md +1 -1
  21. package/.docs/docs/browser/overview.md +1 -1
  22. package/.docs/docs/browser/stagehand.md +5 -5
  23. package/.docs/docs/editor/overview.md +1 -1
  24. package/.docs/docs/evals/custom-scorers.md +1 -1
  25. package/.docs/docs/evals/datasets/running-experiments.md +1 -1
  26. package/.docs/docs/evals/overview.md +2 -2
  27. package/.docs/docs/mcp/mcp-apps.md +3 -3
  28. package/.docs/docs/mcp/overview.md +1 -1
  29. package/.docs/docs/memory/memory-processors.md +6 -6
  30. package/.docs/docs/memory/multi-user-threads.md +1 -1
  31. package/.docs/docs/memory/semantic-recall.md +1 -1
  32. package/.docs/docs/memory/storage.md +2 -1
  33. package/.docs/docs/memory/working-memory.md +1 -1
  34. package/.docs/docs/observability/tracing/exporters/langfuse.md +1 -1
  35. package/.docs/docs/observability/tracing/exporters/langsmith.md +2 -2
  36. package/.docs/docs/rag/graph-rag.md +2 -2
  37. package/.docs/docs/rag/retrieval.md +12 -12
  38. package/.docs/docs/server/auth/fga.md +2 -0
  39. package/.docs/docs/server/mastra-client.md +1 -1
  40. package/.docs/docs/server/request-context.md +3 -3
  41. package/.docs/docs/streaming/overview.md +1 -1
  42. package/.docs/docs/streaming/tool-streaming.md +1 -1
  43. package/.docs/docs/voice/overview.md +25 -25
  44. package/.docs/docs/voice/speech-to-speech.md +4 -4
  45. package/.docs/docs/voice/speech-to-text.md +1 -1
  46. package/.docs/docs/voice/text-to-speech.md +1 -1
  47. package/.docs/docs/workspace/filesystem.md +2 -2
  48. package/.docs/docs/workspace/overview.md +1 -1
  49. package/.docs/docs/workspace/sandbox.md +1 -1
  50. package/.docs/guides/build-your-ui/ai-sdk-ui.md +1 -1
  51. package/.docs/guides/guide/ai-recruiter.md +1 -1
  52. package/.docs/guides/guide/chef-michel.md +1 -1
  53. package/.docs/guides/guide/code-review-bot.md +1 -1
  54. package/.docs/guides/guide/dev-assistant.md +1 -1
  55. package/.docs/guides/guide/docs-manager.md +1 -1
  56. package/.docs/guides/guide/firecrawl.md +1 -1
  57. package/.docs/guides/guide/github-actions-pr-description.md +1 -1
  58. package/.docs/guides/guide/research-assistant.md +1 -1
  59. package/.docs/guides/guide/research-coordinator.md +2 -2
  60. package/.docs/guides/guide/slack-assistant.md +1 -1
  61. package/.docs/guides/guide/stock-agent.md +2 -2
  62. package/.docs/guides/guide/whatsapp-chat-bot.md +2 -2
  63. package/.docs/guides/migrations/agentnetwork.md +4 -4
  64. package/.docs/guides/migrations/upgrade-to-v1/agent.md +1 -1
  65. package/.docs/guides/migrations/vnext-to-standard-apis.md +2 -2
  66. package/.docs/reference/agents/agent.md +4 -4
  67. package/.docs/reference/agents/channels.md +47 -5
  68. package/.docs/reference/agents/generateLegacy.md +1 -1
  69. package/.docs/reference/agents/getLLM.md +2 -2
  70. package/.docs/reference/agents/getMetadata.md +2 -2
  71. package/.docs/reference/agents/network.md +1 -1
  72. package/.docs/reference/browser/agent-browser.md +1 -1
  73. package/.docs/reference/browser/browser-viewer.md +1 -1
  74. package/.docs/reference/browser/mastra-browser.md +1 -1
  75. package/.docs/reference/browser/stagehand-browser.md +5 -5
  76. package/.docs/reference/configuration.md +1 -1
  77. package/.docs/reference/evals/answer-relevancy.md +1 -1
  78. package/.docs/reference/evals/answer-similarity.md +1 -1
  79. package/.docs/reference/evals/bias.md +1 -1
  80. package/.docs/reference/evals/context-precision.md +3 -3
  81. package/.docs/reference/evals/context-relevance.md +11 -11
  82. package/.docs/reference/evals/faithfulness.md +1 -1
  83. package/.docs/reference/evals/hallucination.md +5 -5
  84. package/.docs/reference/evals/noise-sensitivity.md +11 -11
  85. package/.docs/reference/evals/prompt-alignment.md +15 -15
  86. package/.docs/reference/evals/tool-call-accuracy.md +3 -3
  87. package/.docs/reference/evals/toxicity.md +1 -1
  88. package/.docs/reference/memory/memory-class.md +3 -3
  89. package/.docs/reference/memory/observational-memory.md +4 -4
  90. package/.docs/reference/observability/tracing/exporters/langfuse.md +1 -1
  91. package/.docs/reference/processors/batch-parts-processor.md +1 -1
  92. package/.docs/reference/processors/cost-guard-processor.md +1 -1
  93. package/.docs/reference/processors/language-detector.md +1 -1
  94. package/.docs/reference/processors/message-history-processor.md +1 -1
  95. package/.docs/reference/processors/moderation-processor.md +2 -2
  96. package/.docs/reference/processors/pii-detector.md +2 -2
  97. package/.docs/reference/processors/prefill-error-handler.md +2 -2
  98. package/.docs/reference/processors/processor-interface.md +2 -2
  99. package/.docs/reference/processors/prompt-injection-detector.md +1 -1
  100. package/.docs/reference/processors/regex-filter-processor.md +1 -1
  101. package/.docs/reference/processors/semantic-recall-processor.md +1 -1
  102. package/.docs/reference/processors/skill-search-processor.md +1 -1
  103. package/.docs/reference/processors/system-prompt-scrubber.md +1 -1
  104. package/.docs/reference/processors/token-limiter-processor.md +3 -3
  105. package/.docs/reference/processors/tool-call-filter.md +2 -2
  106. package/.docs/reference/processors/tool-search-processor.md +2 -2
  107. package/.docs/reference/processors/unicode-normalizer.md +1 -1
  108. package/.docs/reference/processors/working-memory-processor.md +1 -1
  109. package/.docs/reference/rag/rerank.md +1 -1
  110. package/.docs/reference/server/nestjs-adapter.md +1 -1
  111. package/.docs/reference/storage/dsql.md +1 -1
  112. package/.docs/reference/storage/mongodb.md +1 -1
  113. package/.docs/reference/storage/postgresql.md +1 -1
  114. package/.docs/reference/storage/redis.md +1 -1
  115. package/.docs/reference/storage/spanner.md +5 -0
  116. package/.docs/reference/storage/upstash.md +1 -1
  117. package/.docs/reference/streaming/agents/stream.md +1 -1
  118. package/.docs/reference/templates/overview.md +1 -1
  119. package/.docs/reference/tools/mcp-client.md +2 -2
  120. package/.docs/reference/tools/mcp-server.md +33 -1
  121. package/.docs/reference/tools/vector-query-tool.md +1 -1
  122. package/.docs/reference/vectors/libsql.md +1 -1
  123. package/.docs/reference/vectors/mongodb.md +1 -1
  124. package/.docs/reference/vectors/pg.md +1 -1
  125. package/.docs/reference/vectors/upstash.md +1 -1
  126. package/.docs/reference/voice/voice.addInstructions.md +1 -1
  127. package/.docs/reference/workspace/agentfs-filesystem.md +1 -1
  128. package/.docs/reference/workspace/azure-blob-filesystem.md +1 -1
  129. package/.docs/reference/workspace/docker-sandbox.md +1 -1
  130. package/.docs/reference/workspace/e2b-sandbox.md +9 -5
  131. package/.docs/reference/workspace/files-sdk-filesystem.md +1 -1
  132. package/.docs/reference/workspace/gcs-filesystem.md +1 -1
  133. package/.docs/reference/workspace/google-drive-filesystem.md +1 -1
  134. package/.docs/reference/workspace/local-filesystem.md +1 -1
  135. package/.docs/reference/workspace/local-sandbox.md +1 -1
  136. package/.docs/reference/workspace/modal-sandbox.md +1 -1
  137. package/.docs/reference/workspace/s3-filesystem.md +1 -1
  138. package/CHANGELOG.md +30 -0
  139. package/package.json +6 -6
@@ -32,7 +32,7 @@ const agent = new Agent({
32
32
  id: 'agent',
33
33
  name: 'OpenAI Realtime Agent',
34
34
  instructions: `You are a helpful assistant with real-time voice capabilities.`,
35
- model: 'openai/gpt-5.4',
35
+ model: 'openai/gpt-5.5',
36
36
  voice: new OpenAIRealtimeVoice(),
37
37
  })
38
38
 
@@ -66,7 +66,7 @@ const agent = new Agent({
66
66
  name: 'Gemini Live Agent',
67
67
  instructions: 'You are a helpful assistant with real-time voice capabilities.',
68
68
  // Model used for text generation; voice provider handles realtime audio
69
- model: 'openai/gpt-5.4',
69
+ model: 'openai/gpt-5.5',
70
70
  voice: new GeminiLiveVoice({
71
71
  apiKey: process.env.GOOGLE_API_KEY,
72
72
  model: 'gemini-2.0-flash-exp',
@@ -113,7 +113,7 @@ const agent = new Agent({
113
113
  name: 'Nova Sonic Agent',
114
114
  instructions: 'You are a helpful assistant with real-time voice capabilities.',
115
115
  // Model used for text generation; voice provider handles realtime audio
116
- model: 'openai/gpt-5.4',
116
+ model: 'openai/gpt-5.5',
117
117
  voice: new NovaSonicVoice({
118
118
  region: 'us-east-1',
119
119
  speaker: 'matthew',
@@ -157,7 +157,7 @@ const agent = new Agent({
157
157
  name: 'Inworld Realtime Agent',
158
158
  instructions: 'You are a helpful assistant with real-time voice capabilities.',
159
159
  // Model used for text generation; voice provider handles realtime audio
160
- model: 'openai/gpt-5.4',
160
+ model: 'openai/gpt-5.5',
161
161
  voice: new InworldRealtimeVoice({
162
162
  apiKey: process.env.INWORLD_API_KEY,
163
163
  model: 'inworld/models/gemma-4-26b-a4b-it',
@@ -57,7 +57,7 @@ const agent = new Agent({
57
57
  id: 'voice-agent',
58
58
  name: 'Voice Agent',
59
59
  instructions: 'You are a voice assistant that provides recommendations based on user input.',
60
- model: 'openai/gpt-5.4',
60
+ model: 'openai/gpt-5.5',
61
61
  voice,
62
62
  })
63
63
 
@@ -64,7 +64,7 @@ const agent = new Agent({
64
64
  id: 'voice-agent',
65
65
  name: 'Voice Agent',
66
66
  instructions: 'You are a voice assistant that can help users with their tasks.',
67
- model: 'openai/gpt-5.4',
67
+ model: 'openai/gpt-5.5',
68
68
  voice,
69
69
  })
70
70
 
@@ -44,7 +44,7 @@ const workspace = new Workspace({
44
44
 
45
45
  const agent = new Agent({
46
46
  id: 'file-agent',
47
- model: 'openai/gpt-5.4',
47
+ model: 'openai/gpt-5.5',
48
48
  instructions: 'You are a helpful file management assistant.',
49
49
  workspace,
50
50
  })
@@ -116,7 +116,7 @@ const workspace = new Workspace({
116
116
 
117
117
  const agent = new Agent({
118
118
  id: 'multi-role-agent',
119
- model: 'openai/gpt-5.4',
119
+ model: 'openai/gpt-5.5',
120
120
  workspace,
121
121
  })
122
122
  ```
@@ -75,7 +75,7 @@ const workspace = new Workspace({
75
75
 
76
76
  export const myAgent = new Agent({
77
77
  id: 'my-agent',
78
- model: 'openai/gpt-5.4',
78
+ model: 'openai/gpt-5.5',
79
79
  workspace,
80
80
  })
81
81
  ```
@@ -41,7 +41,7 @@ const workspace = new Workspace({
41
41
 
42
42
  const agent = new Agent({
43
43
  id: 'dev-agent',
44
- model: 'openai/gpt-5.4',
44
+ model: 'openai/gpt-5.5',
45
45
  instructions: 'You are a helpful development assistant.',
46
46
  workspace,
47
47
  })
@@ -1305,7 +1305,7 @@ import { nestedAgentTool } from '../tools/nested-agent-tool'
1305
1305
  export const forecastAgent = new Agent({
1306
1306
  id: 'forecast-agent',
1307
1307
  instructions: 'Use the nested-agent-stream tool when asked about weather.',
1308
- model: 'openai/gpt-5.4',
1308
+ model: 'openai/gpt-5.5',
1309
1309
  tools: { nestedAgentTool },
1310
1310
  })
1311
1311
  ```
@@ -47,7 +47,7 @@ Set up the Workflow, define steps to extract and classify candidate data, and th
47
47
  id: 'recruiter-agent',
48
48
  name: 'Recruiter Agent',
49
49
  instructions: `You are a recruiter.`,
50
- model: 'openai/gpt-5.4',
50
+ model: 'openai/gpt-5.5',
51
51
  })
52
52
 
53
53
  const gatherCandidateInfo = createStep({
@@ -27,7 +27,7 @@ To create an agent in Mastra use the `Agent` class to define it and then registe
27
27
  instructions:
28
28
  'You are Michel, a practical and experienced home chef' +
29
29
  'You help people cook with whatever ingredients they have available.',
30
- model: 'openai/gpt-5.4',
30
+ model: 'openai/gpt-5.5',
31
31
  })
32
32
  ```
33
33
 
@@ -122,7 +122,7 @@ When asked to review code:
122
122
  2. Follow the review process from the skill
123
123
  3. Check against the style guide in skill references
124
124
  4. Be constructive and specific with line numbers`,
125
- model: 'openai/gpt-5.4',
125
+ model: 'openai/gpt-5.5',
126
126
  })
127
127
  ```
128
128
 
@@ -195,7 +195,7 @@ When adding features:
195
195
  For every new feature: Write code → Write tests → Run tests → Update docs
196
196
 
197
197
  Always explain your reasoning and steps.`,
198
- model: 'openai/gpt-5.4',
198
+ model: 'openai/gpt-5.5',
199
199
  })
200
200
  ```
201
201
 
@@ -103,7 +103,7 @@ When updating existing docs:
103
103
 
104
104
  Use kebab-case naming for files (getting-started.md).
105
105
  Always explain what you're creating and why.`,
106
- model: 'openai/gpt-5.4',
106
+ model: 'openai/gpt-5.5',
107
107
  })
108
108
  ```
109
109
 
@@ -107,7 +107,7 @@ Create a tool file that exposes Firecrawl search and scrape to Mastra.
107
107
  id: 'web-agent',
108
108
  name: 'Web Agent',
109
109
  instructions: 'Use Firecrawl tools to search and scrape web pages, then summarize the results.',
110
- model: 'openai/gpt-5.4',
110
+ model: 'openai/gpt-5.5',
111
111
  tools: { firecrawlSearch, firecrawlScrape },
112
112
  })
113
113
  ```
@@ -97,7 +97,7 @@ Output format:
97
97
 
98
98
  - [Same changes in Japanese]
99
99
  `,
100
- model: 'openai/gpt-5.4',
100
+ model: 'openai/gpt-5.5',
101
101
  })
102
102
  ```
103
103
 
@@ -99,7 +99,7 @@ Let's define the agent's behavior, connect it to your Mastra project, and create
99
99
  and provide accurate, well-supported answers based on the retrieved content.
100
100
  Focus on the specific content available in the tool and acknowledge if you cannot find sufficient information to answer a question.
101
101
  Base your responses only on the content provided, not on general knowledge.`,
102
- model: 'openai/gpt-5.4',
102
+ model: 'openai/gpt-5.5',
103
103
  tools: {
104
104
  vectorQueryTool,
105
105
  },
@@ -94,7 +94,7 @@ Success criteria:
94
94
  - Information is accurate and well-sourced
95
95
  - Final output is well-formatted and complete
96
96
  - If anything is missing or uncertain, continue gathering information`,
97
- model: 'openai/gpt-5.4',
97
+ model: 'openai/gpt-5.5',
98
98
  agents: {
99
99
  researchAgent,
100
100
  writingAgent,
@@ -288,7 +288,7 @@ Success criteria:
288
288
  - Information is accurate and well-sourced
289
289
  - Final output is well-formatted and complete
290
290
  - If anything is missing or uncertain, continue gathering information`,
291
- model: 'openai/gpt-5.4',
291
+ model: 'openai/gpt-5.5',
292
292
  agents: {
293
293
  researchAgent,
294
294
  writingAgent,
@@ -48,7 +48,7 @@ export const slackAgent = new Agent({
48
48
  name: 'Slack Agent',
49
49
  instructions:
50
50
  'You are a helpful assistant. Answer questions, help with tasks, and have natural conversations.',
51
- model: 'anthropic/claude-opus-4-6',
51
+ model: 'anthropic/claude-opus-4-7',
52
52
  channels: {
53
53
  adapters: {
54
54
  slack: createSlackAdapter(),
@@ -24,7 +24,7 @@ To create an agent in Mastra use the `Agent` class to define it and then registe
24
24
  name: 'Stock Agent',
25
25
  instructions:
26
26
  'You are a helpful assistant that provides current stock prices. When asked about a stock, use the stock price tool to fetch the stock price.',
27
- model: 'openai/gpt-5.4',
27
+ model: 'openai/gpt-5.5',
28
28
  })
29
29
  ```
30
30
 
@@ -83,7 +83,7 @@ The Stock Agent doesn't yet know anything about current stock prices. To change
83
83
  name: 'Stock Agent',
84
84
  instructions:
85
85
  'You are a helpful assistant that provides current stock prices. When asked about a stock, use the stock price tool to fetch the stock price.',
86
- model: 'openai/gpt-5.4',
86
+ model: 'openai/gpt-5.5',
87
87
  tools: {
88
88
  stockPrices,
89
89
  },
@@ -117,7 +117,7 @@ export const chatAgent = new Agent({
117
117
 
118
118
  Always aim to be helpful while maintaining a friendly, approachable conversation style.
119
119
  `,
120
- model: 'openai/gpt-5.4',
120
+ model: 'openai/gpt-5.5',
121
121
  memory: new Memory({
122
122
  storage: new LibSQLStore({
123
123
  id: 'agent-storage',
@@ -155,7 +155,7 @@ export const textMessageAgent = new Agent({
155
155
 
156
156
  Always return exactly 5-8 messages in the messages array.
157
157
  `,
158
- model: 'openai/gpt-5.4',
158
+ model: 'openai/gpt-5.5',
159
159
  memory: new Memory({
160
160
  storage: new LibSQLStore({
161
161
  id: 'agent-storage',
@@ -27,7 +27,7 @@ const agent = new AgentNetwork({
27
27
  name: 'agent-network',
28
28
  agents: [agent1, agent2],
29
29
  tools: { tool1, tool2 },
30
- model: 'openai/gpt-5.4',
30
+ model: 'openai/gpt-5.5',
31
31
  instructions: 'You are a network agent that can help users with a variety of tasks.',
32
32
  })
33
33
 
@@ -47,7 +47,7 @@ const agent = new Agent({
47
47
  name: 'agent-network',
48
48
  agents: { agent1, agent2 },
49
49
  tools: { tool1, tool2 },
50
- model: 'openai/gpt-5.4',
50
+ model: 'openai/gpt-5.5',
51
51
  instructions: 'You are a network agent that can help users with a variety of tasks.',
52
52
  memory,
53
53
  })
@@ -68,7 +68,7 @@ const agent = new NewAgentNetwork({
68
68
  agents: { agent1, agent2 },
69
69
  workflows: { workflow1 },
70
70
  tools: { tool1, tool2 },
71
- model: 'openai/gpt-5.4',
71
+ model: 'openai/gpt-5.5',
72
72
  instructions: 'You are a network agent that can help users with a variety of tasks.',
73
73
  })
74
74
 
@@ -88,7 +88,7 @@ const agent = new Agent({
88
88
  agents: { agent1, agent2 },
89
89
  workflows: { workflow1 },
90
90
  tools: { tool1, tool2 },
91
- model: 'openai/gpt-5.4',
91
+ model: 'openai/gpt-5.5',
92
92
  instructions: 'You are a network agent that can help users with a variety of tasks.',
93
93
  memory,
94
94
  })
@@ -227,7 +227,7 @@ const agent = new Agent({
227
227
  + id: 'my-agent',
228
228
  name: 'My Agent',
229
229
  instructions: 'You are a helpful assistant',
230
- model: 'openai/gpt-5.4',
230
+ model: 'openai/gpt-5.5',
231
231
  });
232
232
  ```
233
233
 
@@ -159,7 +159,7 @@ The following options are available in the standard `.stream()` and `generate()`
159
159
  name: z.string(),
160
160
  age: z.number(),
161
161
  }),
162
- model: 'openai/gpt-5.4', // Optional model override for structuring
162
+ model: 'openai/gpt-5.5', // Optional model override for structuring
163
163
  errorStrategy: 'fallback',
164
164
  fallbackValue: { name: 'unknown', age: 0 },
165
165
  instructions: 'Extract user information', // Override default structuring instructions
@@ -299,7 +299,7 @@ The following options are available in the standard `.stream()` and `generate()`
299
299
  schema: z.object({
300
300
  summary: z.string(),
301
301
  }),
302
- model: 'openai/gpt-5.4',
302
+ model: 'openai/gpt-5.5',
303
303
  },
304
304
  })
305
305
  ```
@@ -16,7 +16,7 @@ export const agent = new Agent({
16
16
  id: 'test-agent',
17
17
  name: 'Test Agent',
18
18
  instructions: 'You are a helpful assistant that provides concise answers.',
19
- model: 'openai/gpt-5.4',
19
+ model: 'openai/gpt-5.5',
20
20
  })
21
21
 
22
22
  // System message object
@@ -27,7 +27,7 @@ export const agent2 = new Agent({
27
27
  role: 'system',
28
28
  content: 'You are an expert programmer',
29
29
  },
30
- model: 'openai/gpt-5.4',
30
+ model: 'openai/gpt-5.5',
31
31
  })
32
32
 
33
33
  // Array of system messages
@@ -38,7 +38,7 @@ export const agent3 = new Agent({
38
38
  { role: 'system', content: 'You are a helpful assistant' },
39
39
  { role: 'system', content: 'You have expertise in TypeScript' },
40
40
  ],
41
- model: 'openai/gpt-5.4',
41
+ model: 'openai/gpt-5.5',
42
42
  })
43
43
  ```
44
44
 
@@ -61,7 +61,7 @@ export const agent = new Agent({
61
61
  },
62
62
  },
63
63
  },
64
- model: 'openai/gpt-5.4',
64
+ model: 'openai/gpt-5.5',
65
65
  })
66
66
  ```
67
67
 
@@ -15,7 +15,7 @@ export const supportAgent = new Agent({
15
15
  id: 'support-agent',
16
16
  name: 'Support Agent',
17
17
  instructions: 'You are a helpful support assistant.',
18
- model: 'openai/gpt-5.4',
18
+ model: 'openai/gpt-5.5',
19
19
  channels: {
20
20
  adapters: {
21
21
  slack: createSlackAdapter(),
@@ -45,6 +45,8 @@ export const supportAgent = new Agent({
45
45
 
46
46
  **chatOptions** (`Omit<ChatConfig, 'adapters' | 'state' | 'userName'>`): Additional options passed directly to the \[Chat SDK]\(https\://chat-sdk.dev/docs/usage). Use for advanced configuration such as \`dedupeTtlMs\`, \`fallbackStreamingPlaceholderText\`, \`lockScope\`, and \`messageHistory\`.
47
47
 
48
+ **resolveResourceId** (`(ctx: ResolveResourceIdContext) => string | Promise<string>`): Decide which \`resourceId\` owns resource-level memory for a channel thread, separately from who sent the message. Runs only when a new thread is created; reused threads keep their stored owner and never call the hook. Return \`ctx.defaultResourceId\` (\`${platform}:${message.author.userId}\`) to keep the built-in behavior.
49
+
48
50
  ## Per-adapter options
49
51
 
50
52
  Wrap an adapter in a `ChannelAdapterConfig` object to set per-adapter options:
@@ -57,7 +59,7 @@ import { createSlackAdapter } from '@chat-adapter/slack'
57
59
  const agent = new Agent({
58
60
  name: 'Example',
59
61
  instructions: '...',
60
- model: 'openai/gpt-5.4',
62
+ model: 'openai/gpt-5.5',
61
63
  channels: {
62
64
  adapters: {
63
65
  discord: {
@@ -112,7 +114,7 @@ import { createSlackAdapter } from '@chat-adapter/slack'
112
114
  const agent = new Agent({
113
115
  name: 'Streaming Agent',
114
116
  instructions: '...',
115
- model: 'openai/gpt-5.4',
117
+ model: 'openai/gpt-5.5',
116
118
  channels: {
117
119
  adapters: {
118
120
  slack: {
@@ -139,7 +141,7 @@ import { createDiscordAdapter } from '@chat-adapter/discord'
139
141
  const agent = new Agent({
140
142
  name: 'Custom Typing Agent',
141
143
  instructions: '...',
142
- model: 'openai/gpt-5.4',
144
+ model: 'openai/gpt-5.5',
143
145
  channels: {
144
146
  adapters: {
145
147
  discord: {
@@ -171,7 +173,7 @@ import { createSlackAdapter } from '@chat-adapter/slack'
171
173
  const agent = new Agent({
172
174
  name: 'Custom Handler Agent',
173
175
  instructions: '...',
174
- model: 'openai/gpt-5.4',
176
+ model: 'openai/gpt-5.5',
175
177
  channels: {
176
178
  adapters: {
177
179
  slack: createSlackAdapter(),
@@ -203,6 +205,46 @@ type ChannelHandler = (
203
205
  ) => Promise<void>
204
206
  ```
205
207
 
208
+ ## Resource ID resolution
209
+
210
+ By default a channel thread's memory `resourceId` is `${platform}:${message.author.userId}`. The sender owns the memory, scoped per platform. For apps with a shared identity, such as single sign-on (SSO), this splits memory: the same user gets `feishu:user_123` in a Feishu DM but `user_123` on the web.
211
+
212
+ Pass `resolveResourceId` to decide memory ownership separately from the sender. It runs only when a new thread is created. Reused threads keep their stored `resourceId` and never call the hook, so existing conversations don't depend on the resolver being available. Return `ctx.defaultResourceId` to fall back to the built-in behavior.
213
+
214
+ ```typescript
215
+ import { Agent } from '@mastra/core/agent'
216
+ import { createSlackAdapter } from '@chat-adapter/slack'
217
+
218
+ const agent = new Agent({
219
+ name: 'SSO Agent',
220
+ instructions: '...',
221
+ model: 'openai/gpt-5.5',
222
+ channels: {
223
+ adapters: {
224
+ slack: createSlackAdapter(),
225
+ },
226
+ resolveResourceId: async ({ thread, message }) => {
227
+ // DM: share resource-level memory with the web app by using the bare SSO id
228
+ if (thread.isDM) {
229
+ return await resolveSsoUserId(message)
230
+ }
231
+ // Group chat: the conversation owns the memory; the sender stays the actor
232
+ return thread.channelId
233
+ },
234
+ },
235
+ })
236
+ ```
237
+
238
+ The `ResolveResourceIdContext` passed to the function:
239
+
240
+ **platform** (`string`): Platform name (e.g. \`slack\`, \`discord\`).
241
+
242
+ **thread** (`Thread`): The channel thread the message arrived on. Use \`thread.isDM\` to tell DMs apart from group/channel threads.
243
+
244
+ **message** (`Message`): The incoming message. \`message.author.userId\` is the actor/sender, not necessarily the memory owner.
245
+
246
+ **defaultResourceId** (`string`): The built-in default (\`${platform}:${message.author.userId}\`). Return this to keep the current behavior.
247
+
206
248
  ## Inline media
207
249
 
208
250
  Controls which attachment types (images, video, PDFs, etc.) are sent as file parts to the model. Types that do not match are described as text summaries so the agent knows about the file without crashing models that reject unsupported types.
@@ -195,7 +195,7 @@ await agent.generateLegacy(
195
195
  sentiment: z.enum(['positive', 'negative', 'neutral']),
196
196
  confidence: z.number(),
197
197
  }),
198
- model: 'openai/gpt-5.4',
198
+ model: 'openai/gpt-5.5',
199
199
  errorStrategy: 'warn',
200
200
  },
201
201
  // Output processors for response validation
@@ -10,7 +10,7 @@ await agent.getLLM()
10
10
 
11
11
  ```typescript
12
12
  await agent.getLLM({
13
- model: 'openai/gpt-5.4',
13
+ model: 'openai/gpt-5.5',
14
14
  })
15
15
  ```
16
16
 
@@ -31,7 +31,7 @@ await agent.getLLM({
31
31
  ```typescript
32
32
  await agent.getLLM({
33
33
  requestContext: new RequestContext(),
34
- model: 'openai/gpt-5.4',
34
+ model: 'openai/gpt-5.5',
35
35
  })
36
36
  ```
37
37
 
@@ -29,7 +29,7 @@ export const supportAgent = new Agent({
29
29
  id: 'support-agent',
30
30
  name: 'Support Agent',
31
31
  instructions: 'You help customers with support requests.',
32
- model: 'openai/gpt-5.4',
32
+ model: 'openai/gpt-5.5',
33
33
  metadata: { type: 'support' },
34
34
  })
35
35
 
@@ -45,7 +45,7 @@ export const supportAgent = new Agent({
45
45
  id: 'support-agent',
46
46
  name: 'Support Agent',
47
47
  instructions: 'You help customers with support requests.',
48
- model: 'openai/gpt-5.4',
48
+ model: 'openai/gpt-5.5',
49
49
  metadata: ({ requestContext }) => ({
50
50
  type: 'support',
51
51
  tenant: requestContext.get('tenant'),
@@ -16,7 +16,7 @@ const agent = new Agent({
16
16
  id: 'network-agent',
17
17
  name: 'Network Agent',
18
18
  instructions: 'You are a network agent that can help users with a variety of tasks.',
19
- model: 'openai/gpt-5.4',
19
+ model: 'openai/gpt-5.5',
20
20
  agents: {
21
21
  agent1,
22
22
  agent2,
@@ -21,7 +21,7 @@ export const browserAgent = new Agent({
21
21
  name: 'Browser Agent',
22
22
  instructions: `You can browse the web. Use browser_snapshot to see the page structure,
23
23
  then interact with elements using their refs (e.g., @e5).`,
24
- model: 'openai/gpt-5.4',
24
+ model: 'openai/gpt-5.5',
25
25
  browser,
26
26
  })
27
27
  ```
@@ -23,7 +23,7 @@ const workspace = new Workspace({
23
23
 
24
24
  const browserAgent = new Agent({
25
25
  id: 'browser-agent',
26
- model: 'openai/gpt-5.4',
26
+ model: 'openai/gpt-5.5',
27
27
  workspace,
28
28
  instructions: 'You are a web automation assistant.',
29
29
  })
@@ -24,7 +24,7 @@ export const browserAgent = new Agent({
24
24
  id: 'browser-agent',
25
25
  name: 'Browser Agent',
26
26
  instructions: 'You can browse the web to find information.',
27
- model: 'openai/gpt-5.4',
27
+ model: 'openai/gpt-5.5',
28
28
  browser,
29
29
  })
30
30
  ```
@@ -12,7 +12,7 @@ import { StagehandBrowser } from '@mastra/stagehand'
12
12
 
13
13
  const browser = new StagehandBrowser({
14
14
  headless: true,
15
- model: 'openai/gpt-5.4',
15
+ model: 'openai/gpt-5.5',
16
16
  selfHeal: true,
17
17
  })
18
18
 
@@ -22,7 +22,7 @@ export const browserAgent = new Agent({
22
22
  instructions: `You can browse the web using natural language.
23
23
  Use stagehand_act to perform actions like "click the login button".
24
24
  Use stagehand_extract to get data from pages.`,
25
- model: 'openai/gpt-5.4',
25
+ model: 'openai/gpt-5.5',
26
26
  browser,
27
27
  })
28
28
  ```
@@ -39,7 +39,7 @@ Use stagehand_extract to get data from pages.`,
39
39
 
40
40
  **projectId** (`string`): Browserbase project ID. Required when env is 'BROWSERBASE'.
41
41
 
42
- **model** (`string | ModelConfiguration`): Model configuration for AI operations. Can be a string like '\_\_GATEWAY\_OPENAI\_MODEL\_\_' or an object with modelName, apiKey, and baseURL. (Default: `'openai/gpt-5.4'`)
42
+ **model** (`string | ModelConfiguration`): Model configuration for AI operations. Can be a string like 'openai/gpt-5.5' or an object with modelName, apiKey, and baseURL. (Default: `'openai/gpt-5.5'`)
43
43
 
44
44
  **selfHeal** (`boolean`): Enable self-healing selectors. When enabled, Stagehand uses AI to find elements even when initial selectors fail. (Default: `true`)
45
45
 
@@ -268,7 +268,7 @@ const browser = new StagehandBrowser({
268
268
  env: 'BROWSERBASE',
269
269
  apiKey: process.env.BROWSERBASE_API_KEY,
270
270
  projectId: process.env.BROWSERBASE_PROJECT_ID,
271
- model: 'openai/gpt-5.4',
271
+ model: 'openai/gpt-5.5',
272
272
  })
273
273
  ```
274
274
 
@@ -279,7 +279,7 @@ Configure the AI model for Stagehand operations:
279
279
  ```typescript
280
280
  // String format: "provider/model"
281
281
  const browser = new StagehandBrowser({
282
- model: 'openai/gpt-5.4',
282
+ model: 'openai/gpt-5.5',
283
283
  })
284
284
 
285
285
  // Object format for custom configuration
@@ -30,7 +30,7 @@ export const mastra = new Mastra({
30
30
  id: 'weather-agent',
31
31
  name: 'Weather Agent',
32
32
  instructions: 'You help with weather information',
33
- model: 'openai/gpt-5.4',
33
+ model: 'openai/gpt-5.5',
34
34
  }),
35
35
  },
36
36
  })
@@ -69,7 +69,7 @@ import { runEvals } from '@mastra/core/evals'
69
69
  import { createAnswerRelevancyScorer } from '@mastra/evals/scorers/prebuilt'
70
70
  import { myAgent } from './agent'
71
71
 
72
- const scorer = createAnswerRelevancyScorer({ model: 'openai/gpt-5.4' })
72
+ const scorer = createAnswerRelevancyScorer({ model: 'openai/gpt-5.5' })
73
73
 
74
74
  const result = await runEvals({
75
75
  data: [
@@ -62,7 +62,7 @@ import { runEvals } from '@mastra/core/evals'
62
62
  import { createAnswerSimilarityScorer } from '@mastra/evals/scorers/prebuilt'
63
63
  import { myAgent } from './agent'
64
64
 
65
- const scorer = createAnswerSimilarityScorer({ model: 'openai/gpt-5.4' })
65
+ const scorer = createAnswerSimilarityScorer({ model: 'openai/gpt-5.5' })
66
66
 
67
67
  const result = await runEvals({
68
68
  data: [
@@ -82,7 +82,7 @@ import { runEvals } from '@mastra/core/evals'
82
82
  import { createBiasScorer } from '@mastra/evals/scorers/prebuilt'
83
83
  import { myAgent } from './agent'
84
84
 
85
- const scorer = createBiasScorer({ model: 'openai/gpt-5.4' })
85
+ const scorer = createBiasScorer({ model: 'openai/gpt-5.5' })
86
86
 
87
87
  const result = await runEvals({
88
88
  data: [
@@ -98,7 +98,7 @@ MAP = (1.0 + 0.67) / 2 = 0.835 ≈ **0.83**
98
98
 
99
99
  ```typescript
100
100
  const scorer = createContextPrecisionScorer({
101
- model: 'openai/gpt-5.4',
101
+ model: 'openai/gpt-5.5',
102
102
  options: {
103
103
  contextExtractor: (input, output) => {
104
104
  // Extract context dynamically based on the query
@@ -117,7 +117,7 @@ const scorer = createContextPrecisionScorer({
117
117
 
118
118
  ```typescript
119
119
  const scorer = createContextPrecisionScorer({
120
- model: 'openai/gpt-5.4',
120
+ model: 'openai/gpt-5.5',
121
121
  options: {
122
122
  context: [
123
123
  // Simulate retrieved documents from vector database
@@ -142,7 +142,7 @@ import { createContextPrecisionScorer } from '@mastra/evals/scorers/prebuilt'
142
142
  import { myAgent } from './agent'
143
143
 
144
144
  const scorer = createContextPrecisionScorer({
145
- model: 'openai/gpt-5.4',
145
+ model: 'openai/gpt-5.5',
146
146
  options: {
147
147
  contextExtractor: (input, output) => {
148
148
  // Extract context from agent's retrieved documents