@mastra/mcp-docs-server 1.2.2-alpha.1 → 1.2.2-alpha.4

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 (32) hide show
  1. package/.docs/docs/agents/code-mode.md +1 -1
  2. package/.docs/docs/agents/goals.md +1 -1
  3. package/.docs/docs/agents/processors.md +1 -1
  4. package/.docs/docs/agents/signal-providers.md +1 -1
  5. package/.docs/docs/agents/signals.md +1 -1
  6. package/.docs/docs/agents/supervisor-agents.md +15 -0
  7. package/.docs/docs/evals/built-in-scorers.md +17 -1
  8. package/.docs/docs/evals/gates-and-verdicts.md +140 -0
  9. package/.docs/docs/evals/overview.md +2 -0
  10. package/.docs/docs/evals/quick-checks.md +136 -0
  11. package/.docs/docs/harness/overview.md +1 -1
  12. package/.docs/docs/harness/session.md +7 -3
  13. package/.docs/docs/harness/threads-and-state.md +2 -0
  14. package/.docs/docs/memory/observational-memory.md +1 -3
  15. package/.docs/guides/guide/signal-provider.md +1 -1
  16. package/.docs/models/gateways/netlify.md +1 -3
  17. package/.docs/models/index.md +1 -1
  18. package/.docs/models/providers/baseten.md +1 -1
  19. package/.docs/models/providers/huggingface.md +4 -1
  20. package/.docs/models/providers/llmgateway.md +184 -199
  21. package/.docs/reference/agents/channels.md +4 -0
  22. package/.docs/reference/agents/generate.md +1 -1
  23. package/.docs/reference/evals/checks.md +210 -0
  24. package/.docs/reference/evals/run-evals.md +71 -1
  25. package/.docs/reference/harness/harness-class.md +28 -1
  26. package/.docs/reference/harness/session.md +20 -4
  27. package/.docs/reference/index.md +1 -0
  28. package/.docs/reference/memory/observational-memory.md +1 -1
  29. package/.docs/reference/memory/serialized-memory-config.md +1 -1
  30. package/.docs/reference/streaming/agents/stream.md +1 -1
  31. package/CHANGELOG.md +14 -0
  32. package/package.json +4 -4
@@ -0,0 +1,210 @@
1
+ # Quick Checks
2
+
3
+ Quick Checks are zero-LLM, composable micro-scorers for common assertions. They plug into the existing `scorers: [...]` array anywhere scorers are used — in `runEvals`, live scoring, experiments, and Studio.
4
+
5
+ Internally they are standard `createScorer()` instances, so they have the same observability, storage, and pipeline integration as any other scorer.
6
+
7
+ ## Usage example
8
+
9
+ ```typescript
10
+ import { checks } from '@mastra/evals/checks'
11
+ import { runEvals } from '@mastra/core/evals'
12
+ import { myAgent } from '../agents'
13
+
14
+ const result = await runEvals({
15
+ data: [{ input: 'What is the weather in Brooklyn?' }],
16
+ target: myAgent,
17
+ scorers: [
18
+ checks.includes('sunny'),
19
+ checks.calledTool('get_weather'),
20
+ checks.toolOrder(['get_weather', 'summarize']),
21
+ checks.noToolErrors(),
22
+ ],
23
+ })
24
+
25
+ console.log(result.scores)
26
+ ```
27
+
28
+ ## Text checks
29
+
30
+ ### `checks.includes(expected, options?)`
31
+
32
+ Scores 1 if the agent's output text contains the expected substring, 0 otherwise.
33
+
34
+ ```typescript
35
+ checks.includes('sunny')
36
+ checks.includes('Sunny', { ignoreCase: false })
37
+ ```
38
+
39
+ **expected** (`string`): Substring to search for in the output.
40
+
41
+ **options.ignoreCase** (`boolean`): Case-insensitive matching. (Default: `true`)
42
+
43
+ Returns: `1` if found, `0` otherwise.
44
+
45
+ ### `checks.excludes(unwanted, options?)`
46
+
47
+ Scores 1 if the agent's output text does NOT contain the substring, 0 otherwise.
48
+
49
+ ```typescript
50
+ checks.excludes('error')
51
+ checks.excludes('Error', { ignoreCase: false })
52
+ ```
53
+
54
+ **unwanted** (`string`): Substring that must not appear in the output.
55
+
56
+ **options.ignoreCase** (`boolean`): Case-insensitive matching. (Default: `true`)
57
+
58
+ Returns: `1` if absent, `0` otherwise.
59
+
60
+ ### `checks.equals(expected, options?)`
61
+
62
+ Scores 1 if the output text exactly equals the expected string after optional normalization.
63
+
64
+ ```typescript
65
+ checks.equals('Hello, world!')
66
+ checks.equals('Hello', { ignoreCase: false })
67
+ ```
68
+
69
+ **expected** (`string`): Exact string the output must match.
70
+
71
+ **options.ignoreCase** (`boolean`): Case-insensitive matching. (Default: `true`)
72
+
73
+ Returns: `1` if equal, `0` otherwise.
74
+
75
+ ### `checks.matches(pattern, options?)`
76
+
77
+ Scores 1 if the output matches the given regular expression.
78
+
79
+ ```typescript
80
+ checks.matches(/\d+°[FC]/)
81
+ checks.matches(/^hello$/, { exact: true })
82
+ ```
83
+
84
+ **pattern** (`RegExp`): Regular expression to test against the output.
85
+
86
+ **options.exact** (`boolean`): Anchor the pattern to match the entire output (adds ^ and $). (Default: `false`)
87
+
88
+ Returns: `1` if matched, `0` otherwise.
89
+
90
+ ### `checks.similarity(expected, options?)`
91
+
92
+ Returns the string similarity score (0-1) between the output and an expected string using the Dice coefficient. When a `threshold` is set, returns binary 1/0 instead.
93
+
94
+ ```typescript
95
+ checks.similarity('Sunny, 72°F')
96
+ checks.similarity('Sunny, 72°F', { threshold: 0.7 })
97
+ ```
98
+
99
+ **expected** (`string`): Reference string to compare against.
100
+
101
+ **options.threshold** (`number`): Minimum similarity score (0-1) to return 1. When omitted, returns the raw similarity score.
102
+
103
+ **options.ignoreCase** (`boolean`): Case-insensitive comparison. (Default: `true`)
104
+
105
+ Returns: Raw similarity score (0-1), or binary `1`/`0` when `threshold` is set.
106
+
107
+ ## Tool call checks
108
+
109
+ ### `checks.calledTool(toolName, options?)`
110
+
111
+ Scores 1 if the agent called the specified tool at least the required number of times.
112
+
113
+ ```typescript
114
+ checks.calledTool('get_weather')
115
+ checks.calledTool('search', { times: 2 })
116
+ ```
117
+
118
+ **toolName** (`string`): Name of the tool to look for.
119
+
120
+ **options.times** (`number`): Minimum number of times the tool must be called. (Default: `1`)
121
+
122
+ Returns: `1` if called at least `times` times, `0` otherwise.
123
+
124
+ ### `checks.didNotCall(toolName)`
125
+
126
+ Scores 1 if the agent did NOT call the specified tool.
127
+
128
+ ```typescript
129
+ checks.didNotCall('delete_user')
130
+ ```
131
+
132
+ **toolName** (`string`): Name of the tool that must not appear.
133
+
134
+ Returns: `1` if the tool was not called, `0` otherwise.
135
+
136
+ ### `checks.toolOrder(expectedOrder)`
137
+
138
+ Scores 1 if the tools were called in the specified order. Uses relaxed matching — other tool calls between the expected tools are allowed.
139
+
140
+ ```typescript
141
+ checks.toolOrder(['search', 'summarize', 'respond'])
142
+ ```
143
+
144
+ **expectedOrder** (`string[]`): Tool names in the expected calling sequence. Must appear as a subsequence of the actual tool calls.
145
+
146
+ Returns: `1` if the expected order is satisfied, `0` otherwise.
147
+
148
+ ### `checks.maxToolCalls(max)`
149
+
150
+ Scores 1 if the agent used no more than `max` tool calls.
151
+
152
+ ```typescript
153
+ checks.maxToolCalls(5)
154
+ ```
155
+
156
+ **max** (`number`): Maximum number of tool calls allowed.
157
+
158
+ Returns: `1` if within the limit, `0` otherwise.
159
+
160
+ ### `checks.usedNoTools()`
161
+
162
+ Scores 1 if the agent made no tool calls at all.
163
+
164
+ ```typescript
165
+ checks.usedNoTools()
166
+ ```
167
+
168
+ Returns: `1` if no tools were called, `0` otherwise.
169
+
170
+ ### `checks.noToolErrors()`
171
+
172
+ Scores 1 if none of the tool invocations resulted in an error state. Detects both error results (`result.error` present) and incomplete tool calls (`state === 'call'`).
173
+
174
+ ```typescript
175
+ checks.noToolErrors()
176
+ ```
177
+
178
+ Returns: `1` if all tool calls succeeded, `0` otherwise.
179
+
180
+ ## Combining checks with other scorers
181
+
182
+ Checks compose with LLM-based and code-based scorers in the same `scorers` array:
183
+
184
+ ```typescript
185
+ import { checks } from '@mastra/evals/checks'
186
+ import { createAnswerRelevancyScorer } from '@mastra/evals/scorers/prebuilt'
187
+ import { runEvals } from '@mastra/core/evals'
188
+ import { myAgent } from '../agents'
189
+
190
+ const result = await runEvals({
191
+ data: [{ input: 'What is the weather in Brooklyn?' }],
192
+ target: myAgent,
193
+ scorers: [
194
+ // Zero-LLM checks
195
+ checks.includes('Brooklyn'),
196
+ checks.calledTool('get_weather'),
197
+ checks.noToolErrors(),
198
+ // LLM-based scorer
199
+ createAnswerRelevancyScorer({ model: 'openai/gpt-5-mini' }),
200
+ ],
201
+ })
202
+ ```
203
+
204
+ ## Related
205
+
206
+ - [Quick Checks overview](https://mastra.ai/docs/evals/quick-checks)
207
+ - [Built-in Scorers](https://mastra.ai/docs/evals/built-in-scorers)
208
+ - [`createScorer()` reference](https://mastra.ai/reference/evals/create-scorer)
209
+ - [`runEvals()` reference](https://mastra.ai/reference/evals/run-evals)
210
+ - [Custom Scorers](https://mastra.ai/docs/evals/custom-scorers)
@@ -29,13 +29,34 @@ console.log(`Average scores:`, result.scores)
29
29
  console.log(`Processed ${result.summary.totalItems} items`)
30
30
  ```
31
31
 
32
+ ### With gates and thresholds
33
+
34
+ ```typescript
35
+ import { runEvals } from '@mastra/core/evals'
36
+ import { checks } from '@mastra/evals/checks'
37
+ import { faithfulnessScorer } from './scorers'
38
+
39
+ const result = await runEvals({
40
+ target: myAgent,
41
+ data: [{ input: 'What is the weather in Brooklyn?' }],
42
+ gates: [checks.calledTool('get_weather'), checks.noToolErrors()],
43
+ scorers: [{ scorer: faithfulnessScorer, threshold: 0.7 }, checks.includes('Brooklyn')],
44
+ })
45
+
46
+ result.verdict // 'passed' | 'scored' | 'failed'
47
+ result.gateResults // [{ id, passed, score }]
48
+ result.thresholdResults // [{ id, passed, averageScore, threshold }]
49
+ ```
50
+
32
51
  ## Parameters
33
52
 
34
53
  **target** (`Agent | Workflow`): The agent or workflow to evaluate.
35
54
 
36
55
  **data** (`RunEvalsDataItem[]`): Array of test cases with input data and optional ground truth.
37
56
 
38
- **scorers** (`MastraScorer[] | AgentScorerConfig | WorkflowScorerConfig`): Scorers to use. A flat array applies all scorers to the raw output. For agents, an \`AgentScorerConfig\` object separates agent-level and trajectory scorers. For workflows, a \`WorkflowScorerConfig\` object specifies scorers for the workflow, individual steps, and trajectory.
57
+ **scorers** (`ScorerEntry[] | AgentScorerConfig | WorkflowScorerConfig`): Scorers to use. Each entry is either a bare \`MastraScorer\` or \`{ scorer, threshold }\` for threshold tracking. An \`AgentScorerConfig\` object separates agent-level and trajectory scorers. A \`WorkflowScorerConfig\` object specifies scorers for the workflow, individual steps, and trajectory.
58
+
59
+ **gates** (`MastraScorer[]`): Scorers that must score 1.0 for the run to pass. If any gate averages below 1.0 across data items, the verdict is \`failed\`. Gates run before regular scorers on each data item.
39
60
 
40
61
  **targetOptions** (`AgentExecutionOptions | WorkflowRunOptions`): Options forwarded to the target during execution. For agents: options passed to agent.generate() (e.g. maxSteps, modelSettings, instructions). For workflows: options passed to run.start() (e.g. perStep, outputOptions, initialState).
41
62
 
@@ -83,8 +104,55 @@ For workflows, use `WorkflowScorerConfig` to specify scorers at different levels
83
104
 
84
105
  **summary.totalItems** (`number`): Total number of test cases processed.
85
106
 
107
+ **verdict** (`'passed' | 'scored' | 'failed'`): Present when \`gates\` or threshold-bearing scorers are provided. \`passed\` = all gates and thresholds met. \`scored\` = gates passed but a threshold was missed. \`failed\` = at least one gate did not score 1.0.
108
+
109
+ **gateResults** (`GateResult[]`): Per-gate results averaged across all data items. Each entry has \`id\`, \`passed\` (boolean), and \`score\` (0–1).
110
+
111
+ **thresholdResults** (`ThresholdResult[]`): Per-threshold-scorer results averaged across all data items. Each entry has \`id\`, \`passed\`, \`averageScore\`, and \`threshold\`.
112
+
113
+ ## ScorerEntry
114
+
115
+ A scorer entry in the `scorers` array can be either a bare scorer or a scorer with a threshold:
116
+
117
+ **scorer** (`MastraScorer`): The scorer instance.
118
+
119
+ **threshold** (`number | { min?: number; max?: number }`): A number implies minimum threshold (score at or above passes). Use \`{ min, max }\` for range-based checks — e.g. \`{ max: 0.3 }\` for scorers like hallucination where a high score is bad. Both \`min\` and \`max\` must be between 0 and 1.
120
+
86
121
  ## Examples
87
122
 
123
+ ### Gates and verdict
124
+
125
+ Use `gates` for hard pass/fail requirements and `{ scorer, threshold }` for tracked quality metrics:
126
+
127
+ ```typescript
128
+ import { runEvals } from '@mastra/core/evals'
129
+ import { checks } from '@mastra/evals/checks'
130
+
131
+ const result = await runEvals({
132
+ target: weatherAgent,
133
+ data: [{ input: 'What is the weather in Brooklyn?' }],
134
+ gates: [checks.calledTool('get_weather'), checks.noToolErrors()],
135
+ scorers: [
136
+ { scorer: faithfulnessScorer, threshold: 0.7 }, // min threshold (number shorthand)
137
+ { scorer: hallucinationScorer, threshold: { max: 0.3 } }, // max threshold (high = bad)
138
+ { scorer: toneScorer, threshold: { min: 0.5, max: 0.9 } }, // range threshold
139
+ checks.includes('Brooklyn'), // bare scorer, no threshold
140
+ ],
141
+ })
142
+
143
+ if (result.verdict === 'failed') {
144
+ console.log(
145
+ 'Gate failures:',
146
+ result.gateResults?.filter(g => !g.passed),
147
+ )
148
+ } else if (result.verdict === 'scored') {
149
+ console.log(
150
+ 'Threshold misses:',
151
+ result.thresholdResults?.filter(t => !t.passed),
152
+ )
153
+ }
154
+ ```
155
+
88
156
  ### Agent Evaluation
89
157
 
90
158
  ```typescript
@@ -246,6 +314,8 @@ const result = await runEvals({
246
314
 
247
315
  ## Related
248
316
 
317
+ - [Gates and Verdicts](https://mastra.ai/docs/evals/gates-and-verdicts): Conceptual guide to severity semantics
318
+ - [Quick Checks](https://mastra.ai/reference/evals/checks): Zero-LLM composable micro-scorers
249
319
  - [createScorer()](https://mastra.ai/reference/evals/create-scorer): Create custom scorers for experiments
250
320
  - [MastraScorer](https://mastra.ai/reference/evals/mastra-scorer): Learn about scorer structure and methods
251
321
  - [Trajectory Accuracy](https://mastra.ai/reference/evals/trajectory-accuracy): Built-in trajectory evaluation scorers
@@ -1,6 +1,6 @@
1
1
  # Harness class
2
2
 
3
- > **Alpha:** The `Harness` feature is in alpha stage and subject to breaking changes in minor versions until it graduates from its alpha status.
3
+ > **Beta:** The `Harness` feature is in beta stage and subject to breaking changes in minor versions until it graduates from its beta status.
4
4
 
5
5
  The `Harness` class orchestrates multiple agent modes, shared state, memory, and storage. It provides a control layer that a TUI or other UI can drive to manage threads, switch models and modes, send messages, handle tool approvals, and track events.
6
6
 
@@ -166,6 +166,33 @@ Initialize the harness. Loads storage, initializes the workspace, propagates mem
166
166
  await harness.init()
167
167
  ```
168
168
 
169
+ #### `createSession({ id, ownerId, resourceId? })`
170
+
171
+ Create a new, fully-wired `Session` and bring it online. The session starts in the default mode with the seeded model, connects to the Harness's shared machinery (agent, storage/lock, config catalog), and has a current thread (the most recent thread for the resource, or a freshly created one). Call `init()` once before creating sessions so shared storage and workspace are ready.
172
+
173
+ The Harness owns no session of its own — every consumer creates its own session and drives all work through it. In a server or multiplayer setting, each request, thread, or user gets its own session, isolated from every other: independent event bus, mode, model, state, and current thread.
174
+
175
+ `id` and `ownerId` are required — they mirror `SessionRecord.id` and `SessionRecord.ownerId` and are stable for the life of the session. `resourceId` is optional and defaults to `config.resourceId` then `config.id`.
176
+
177
+ ```typescript
178
+ const session = await harness.createSession({
179
+ id: 'session-xyz',
180
+ ownerId: 'user-123',
181
+ })
182
+ ```
183
+
184
+ You can also override the resource:
185
+
186
+ ```typescript
187
+ const session = await harness.createSession({
188
+ id: 'session-xyz',
189
+ ownerId: 'user-123',
190
+ resourceId: 'project-abc',
191
+ })
192
+ ```
193
+
194
+ Switching the resource ID via `harness.setResourceId()` changes only the resource ID, not `id` or `ownerId`. Read them through `session.identity.getId()` and `session.identity.getOwnerId()`.
195
+
169
196
  #### `selectOrCreateThread()`
170
197
 
171
198
  Select the most recent thread for the current resource, or create one if none exist. Loads thread metadata and acquires a thread lock.
@@ -1,6 +1,6 @@
1
1
  # Session class
2
2
 
3
- > **Alpha:** The `Harness` feature is in alpha stage and subject to breaking changes in minor versions until it graduates from its alpha status.
3
+ > **Beta:** The `Harness` feature is in beta stage and subject to breaking changes in minor versions until it graduates from its beta status.
4
4
 
5
5
  A `Session` owns all the state tied to a single conversation. The [`Harness`](https://mastra.ai/reference/harness/harness-class) is the shared host — agents, storage, config, the thread lock, and the event bus — while the `Session` holds everything that is per-conversation: identity, the active thread binding and reads, mode and model selection, run and abort state, the live agent stream, tool suspensions, follow-ups, approvals, permission grants, token usage, and the display-state snapshot.
6
6
 
@@ -29,7 +29,7 @@ harness.subscribe(event => {
29
29
 
30
30
  The session is organized into sub-objects, each owning one domain of per-conversation state.
31
31
 
32
- **identity** (`SessionIdentity`): Resource identity for the conversation. See identity methods below.
32
+ **identity** (`SessionIdentity`): Stable session, owner, and resource identity for the conversation. See identity methods below.
33
33
 
34
34
  **thread** (`SessionThread`): Active thread binding and thread/message reads. See thread methods below.
35
35
 
@@ -125,7 +125,23 @@ const usage = harness.session.getTokenUsage()
125
125
 
126
126
  ## Identity
127
127
 
128
- `session.identity` owns the resource ID for the conversation.
128
+ `session.identity` owns the stable identifiers for the conversation: the resource ID, a session `id`, and an `ownerId`. The `id` and `ownerId` are stable for the life of the session and do not change when the resource ID is switched. They mirror the `id` and `ownerId` fields on `SessionRecord` in storage.
129
+
130
+ ### `session.identity.getId()`
131
+
132
+ Return the stable session identifier.
133
+
134
+ ```typescript
135
+ const sessionId = harness.session.identity.getId()
136
+ ```
137
+
138
+ ### `session.identity.getOwnerId()`
139
+
140
+ Return the stable owner identifier for the session.
141
+
142
+ ```typescript
143
+ const ownerId = harness.session.identity.getOwnerId()
144
+ ```
129
145
 
130
146
  ### `session.identity.getResourceId()`
131
147
 
@@ -143,7 +159,7 @@ Return the resource ID the session was created with.
143
159
  const defaultResourceId = harness.session.identity.getDefaultResourceId()
144
160
  ```
145
161
 
146
- To change the resource ID, use [`harness.setResourceId()`](https://mastra.ai/reference/harness/harness-class), which also tears down the active thread.
162
+ To change the resource ID, use [`harness.setResourceId()`](https://mastra.ai/reference/harness/harness-class), which also tears down the active thread. The session `id` and `ownerId` are not affected by resource switches.
147
163
 
148
164
  ## Thread
149
165
 
@@ -118,6 +118,7 @@ The Reference section provides documentation of Mastra's API, including paramete
118
118
  - [createScorer()](https://mastra.ai/reference/evals/create-scorer)
119
119
  - [filterRun()](https://mastra.ai/reference/evals/filter-run)
120
120
  - [MastraScorer](https://mastra.ai/reference/evals/mastra-scorer)
121
+ - [Quick Checks](https://mastra.ai/reference/evals/checks)
121
122
  - [runEvals()](https://mastra.ai/reference/evals/run-evals)
122
123
  - [Scorer Utils](https://mastra.ai/reference/evals/scorer-utils)
123
124
  - [Answer Relevancy Scorer](https://mastra.ai/reference/evals/answer-relevancy)
@@ -44,7 +44,7 @@ OM performs thresholding with fast local token estimation. Text uses `tokenx`, a
44
44
 
45
45
  **temporalMarkers** (`boolean`): Insert temporal-gap reminder markers before new user messages when the previous message in the thread is at least 10 minutes older. The marker is persisted in memory, emitted as an inline reminder event so clients can render it specially, and shown to the observer so it can anchor observations to when events occurred. (Default: `false`)
46
46
 
47
- **retrieval** (`boolean | { vector?: boolean; scope?: 'thread' | 'resource' }`): \*\*Experimental.\*\* Enable retrieval-mode observation groups as durable pointers to raw message history. \`true\` enables cross-thread browsing by default. \`{ vector: true }\` also enables semantic search using Memory's vector store and embedder. \`{ scope: 'thread' }\` restricts the recall tool to the current thread only. Default scope is \`'resource'\`. (Default: `false`)
47
+ **retrieval** (`boolean | { vector?: boolean; scope?: 'thread' | 'resource' }`): Enable retrieval-mode observation groups as durable pointers to raw message history. \`true\` enables cross-thread browsing by default. \`{ vector: true }\` also enables semantic search using Memory's vector store and embedder. \`{ scope: 'thread' }\` restricts the recall tool to the current thread only. Default scope is \`'resource'\`. (Default: `false`)
48
48
 
49
49
  **observation** (`ObservationalMemoryObservationConfig`): Configuration for the observation step. Controls when the Observer agent runs and how it behaves.
50
50
 
@@ -58,7 +58,7 @@ new MastraEditor({
58
58
 
59
59
  **temporalMarkers** (`boolean`): Persist inline temporal gap markers for long pauses between messages.
60
60
 
61
- **retrieval** (`boolean | { vector?: boolean; scope?: 'thread' | 'resource' }`): Experimental. Enable retrieval-mode observation groups as durable pointers to raw message history.
61
+ **retrieval** (`boolean | { vector?: boolean; scope?: 'thread' | 'resource' }`): Enable retrieval-mode observation groups as durable pointers to raw message history.
62
62
 
63
63
  **observation** (`SerializedObservationalMemoryObservationConfig`): Observer-step configuration (model, token thresholds, buffering).
64
64
 
@@ -78,7 +78,7 @@ const stream = await agent.stream('message for agent')
78
78
 
79
79
  **options.onAbort** (`(event: any) => Promise<void> | void`): Callback function called when the stream is aborted.
80
80
 
81
- **options.abortSignal** (`AbortSignal`): Signal object that allows you to abort the agent's execution. When the signal is aborted, all ongoing operations will be terminated.
81
+ **options.abortSignal** (`AbortSignal`): Signal object that allows you to abort the agent's execution. When the signal is aborted, all ongoing operations will be terminated, including any in-flight subagent runs the agent delegated to.
82
82
 
83
83
  **options.activeTools** (`Array<keyof ToolSet> | undefined`): Array of active tool names that can be used during execution.
84
84
 
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # @mastra/mcp-docs-server
2
2
 
3
+ ## 1.2.2-alpha.3
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [[`86623c1`](https://github.com/mastra-ai/mastra/commit/86623c1adf7d22de32cc916dda17f4155184db36), [`7c9dd77`](https://github.com/mastra-ai/mastra/commit/7c9dd77bd18cb8dc72797e25f1a0fbdc71a11347), [`9990965`](https://github.com/mastra-ai/mastra/commit/999096571635a83b42ef40841fd7028cfa630779), [`c0ffa3c`](https://github.com/mastra-ai/mastra/commit/c0ffa3c897ccd326de880df734740a7f0681a18f), [`0504bf5`](https://github.com/mastra-ai/mastra/commit/0504bf5e8cffc571a4b343326178de371e6f859b), [`5afe423`](https://github.com/mastra-ai/mastra/commit/5afe423e4badf040f1b0d4525183a856fcb8146e), [`86623c1`](https://github.com/mastra-ai/mastra/commit/86623c1adf7d22de32cc916dda17f4155184db36), [`8c9f1c0`](https://github.com/mastra-ai/mastra/commit/8c9f1c0361d89066f9bcd14a2f69e761b01766c8)]:
8
+ - @mastra/core@1.47.0-alpha.2
9
+
10
+ ## 1.2.2-alpha.2
11
+
12
+ ### Patch Changes
13
+
14
+ - Updated dependencies [[`7f9ae70`](https://github.com/mastra-ai/mastra/commit/7f9ae70826b047e5a66218f9e92f20e54a2d791f), [`1505c07`](https://github.com/mastra-ai/mastra/commit/1505c07603f6346bae12aa82f140e8b88ffea9ab), [`e940f09`](https://github.com/mastra-ai/mastra/commit/e940f099ef5d18b403e6f2b4937e086a4da857b1)]:
15
+ - @mastra/core@1.46.1-alpha.1
16
+
3
17
  ## 1.2.2-alpha.0
4
18
 
5
19
  ### Patch Changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mastra/mcp-docs-server",
3
- "version": "1.2.2-alpha.1",
3
+ "version": "1.2.2-alpha.4",
4
4
  "description": "MCP server for accessing Mastra.ai documentation, changelogs, and news.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -28,7 +28,7 @@
28
28
  "jsdom": "^26.1.0",
29
29
  "local-pkg": "^1.1.2",
30
30
  "zod": "^4.4.3",
31
- "@mastra/core": "1.46.1-alpha.0",
31
+ "@mastra/core": "1.47.0-alpha.2",
32
32
  "@mastra/mcp": "^1.12.0"
33
33
  },
34
34
  "devDependencies": {
@@ -45,9 +45,9 @@
45
45
  "tsx": "^4.22.4",
46
46
  "typescript": "^6.0.3",
47
47
  "vitest": "4.1.8",
48
- "@internal/lint": "0.0.108",
48
+ "@mastra/core": "1.47.0-alpha.2",
49
49
  "@internal/types-builder": "0.0.83",
50
- "@mastra/core": "1.46.1-alpha.0"
50
+ "@internal/lint": "0.0.108"
51
51
  },
52
52
  "homepage": "https://mastra.ai",
53
53
  "repository": {