@mastra/mcp-docs-server 1.1.49-alpha.2 → 1.2.0-alpha.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.
@@ -1,10 +1,16 @@
1
1
  # Modes
2
2
 
3
- Modes define the different personalities or capability sets available within a Harness. Each mode layers its own instructions and tool overrides on top of a shared backing agent. The Harness ensures only one mode is active at a time and handles transitions between them.
3
+ Modes define the different behaviors a Harness can run. Each mode layers its own instructions and tool overrides on top of a shared backing agent, so the same agent can act as a planner in one mode and an executor in another. The Harness keeps exactly one mode active at a time, carries the thread and state across switches, and handles the transition between them.
4
4
 
5
- ## When to use modes
5
+ Every Harness needs at least one mode — the `modes` array is required, and the Harness throws at construction if it's empty. A single-purpose Harness still defines one mode; multiple modes are how you give a session more than one behavior to switch between.
6
6
 
7
- Use modes when a single conversational session needs to switch between distinct behaviors. For example, a planning mode that reasons about tasks and a build mode that executes them. Modes share the same thread and state, so the agent retains context across switches.
7
+ A mode supplies three things that change how the agent behaves:
8
+
9
+ - **Instructions**: layered on top of the backing agent's own instructions while the mode is active.
10
+ - **Tools**: either replacing or adding to the backing agent's tools (see [Mode tool overrides](#mode-tool-overrides)).
11
+ - **Model**: an optional `defaultModelId` to bootstrap model selection when the session enters the mode.
12
+
13
+ Because every mode shares the same backing agent, thread, and state, switching modes changes how the agent behaves without losing conversation context.
8
14
 
9
15
  ## Quickstart
10
16
 
@@ -98,6 +104,8 @@ await harness.switchMode({ modeId: 'build' })
98
104
 
99
105
  ## Querying modes
100
106
 
107
+ The Harness exposes the full mode catalog, while the Session tracks which mode is active. Use `harness.listModes()` to read every configured mode, `harness.session.mode.get()` for the active mode ID, and `harness.session.mode.resolve()` for the active mode's full definition:
108
+
101
109
  ```typescript
102
110
  // List all configured modes
103
111
  const modes = harness.listModes()
@@ -10,14 +10,15 @@ A Harness exposes a [`Session`](https://mastra.ai/docs/harness/session) — the
10
10
 
11
11
  ## What you can build
12
12
 
13
- The Harness is designed for applications where a user has an ongoing, interactive session with one or more AI agents:
13
+ The Harness gives you the runtime pieces to ship interactive agent applications. Each outcome below maps to a capability you can use today:
14
14
 
15
- | Application | How the Harness helps |
16
- | ------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
17
- | **Coding agents** (TUI or IDE) | Plan mode reasons about changes, build mode executes them. Thread persistence resumes conversations across sessions. Tool approvals gate destructive operations like file writes. |
18
- | **Multi-step assistants** | A research mode gathers information, a drafting mode produces output. Shared state tracks progress. Subagents handle focused subtasks (e.g., web search, code review). |
19
- | **Copilot UIs** | Model switching lets users pick the right model for the job. Permission policies control which tools run automatically vs. requiring confirmation. Event subscriptions drive real-time UI updates. |
20
- | **Autonomous task runners** | Background agents with structured task lists, heartbeat handlers for health checks, and observational memory for learning across threads. |
15
+ - **Resume a conversation exactly where the user left off.** Persistent [threads and state](https://mastra.ai/docs/harness/threads-and-state) reload the active mode, model, and progress across restarts, so a coding agent or assistant picks up mid-task instead of starting over.
16
+ - **Gate destructive actions behind human approval.** [Tool approvals and permission policies](https://mastra.ai/docs/harness/tool-approvals) let you require confirmation for risky operations like file writes or deployments, while trusted tools run automatically.
17
+ - **Move a task through distinct phases without losing context.** [Modes](https://mastra.ai/docs/harness/modes) switch the agent's instructions, tools, and model on the same thread, so you can build a plan-then-execute coding agent or a research-then-draft assistant.
18
+ - **Let users pick the right model for each step.** Per-mode [model management](https://mastra.ai/reference/harness/harness-class) switches models at runtime and tracks usage, which powers copilot UIs where users trade speed for capability.
19
+ - **Delegate focused work to child agents.** [Subagents](https://mastra.ai/docs/harness/subagents) run subtasks with constrained tools and can fork the parent conversation, so a research mode can spin off web search or code review without polluting the main thread.
20
+ - **Drive a live UI from agent activity.** The [event system](https://mastra.ai/docs/harness/session) emits typed events and coalesced display snapshots, so your TUI or web app reflects message updates, mode changes, and pending approvals in real time.
21
+ - **Run long-lived autonomous agents.** Structured task lists, heartbeat handlers, and observational memory keep background task runners on track and let them learn across threads.
21
22
 
22
23
  ## When to use the Harness
23
24
 
@@ -29,7 +30,7 @@ Use the Harness when your application needs:
29
30
  - Subagent orchestration to delegate focused subtasks with constrained tools
30
31
  - Session continuity with persistent threads, state, and observational memory across restarts
31
32
 
32
- For single-shot agent calls or basic request-response patterns, use the [Agent class](https://mastra.ai/docs/agents/overview) directly. The Harness adds value when you need session state, mode switching, or interactive approval flows.
33
+ You could assemble all of this yourself on top of the [Agent class](https://mastra.ai/docs/agents/overview), which exposes the full agent loop, tools, and memory. The Harness is an opinionated set of defaults that wires those pieces into one application style: an ongoing session where the agent acts as a collaborator rather than a one-shot endpoint. Reach for the Agent class directly when you want full control or a simple request-response call; reach for the Harness when you want the collaborative-session model without building the runtime around it.
33
34
 
34
35
  ## Key capabilities
35
36
 
@@ -38,10 +39,10 @@ For single-shot agent calls or basic request-response patterns, use the [Agent c
38
39
  - **Threads and state**: Persist conversations and structured state across sessions, users, and mode switches. See [Threads and state](https://mastra.ai/docs/harness/threads-and-state).
39
40
  - **Subagents**: Spawn focused child agents with constrained tools for subtasks, optionally forking the parent conversation. See [Subagents](https://mastra.ai/docs/harness/subagents).
40
41
  - **Tool approvals and permissions**: Configure which tools require user confirmation, grant session-wide exceptions, and handle interactive tool suspension. See [Tool approvals](https://mastra.ai/docs/harness/tool-approvals).
41
- - **Model management**: Switch models per-mode at runtime, track usage, and resolve gateway-backed models.
42
- - **Follow-ups and steering**: Queue messages while the agent is running, or inject mid-stream instructions to redirect the agent.
43
- - **Event system**: Subscribe to typed events (message updates, mode changes, tool approvals) or coalesced `HarnessDisplayState` snapshots to drive your UI.
44
- - **Observational memory**: Automatic summarization and reflection across threads for long-running agent sessions.
42
+ - **Model management**: Switch models per-mode at runtime, track usage, and resolve gateway-backed models through Mastra's [model router](https://mastra.ai/models).
43
+ - **Follow-ups and steering**: Queue messages while the agent is running, or inject mid-stream instructions to redirect the agent. Built on [signals](https://mastra.ai/docs/agents/signals).
44
+ - **Event system**: Subscribe to typed events (message updates, mode changes, tool approvals) or coalesced `HarnessDisplayState` snapshots to drive your UI. See [Events](https://mastra.ai/reference/harness/harness-class).
45
+ - **Observational memory**: Automatic summarization and reflection across threads for long-running agent sessions. See [Observational memory](https://mastra.ai/docs/memory/observational-memory).
45
46
 
46
47
  ## Quickstart
47
48
 
@@ -1,26 +1,21 @@
1
1
  # Session
2
2
 
3
- A `Session` holds the per-conversation state of a Harness: who the conversation is for, which thread is active, the selected mode and model, permission grants, queued follow-ups, token usage, application state, and the display snapshot. You reach it through `harness.session`.
3
+ A [`Session`](https://mastra.ai/reference/harness/session) holds the live state of a Harness: who the session is for, which thread is active, the selected mode and model, permission grants, queued follow-ups, token usage, application state, and the display snapshot. You reach it through `harness.session`.
4
4
 
5
- ## Harness vs. Session
5
+ ## What the Session tracks
6
6
 
7
- The Harness is the shared host. It owns the machinery that doesn't change from one conversation to the next: configuration, storage, the agent registry, the thread lock, the event bus, and permission _policy_. The Session is the per-conversation state that sits on top of that machinery.
7
+ The Session is the live state of a single user's interaction with the Harness. It answers "what is true right now": who the session belongs to, which thread is currently bound, which mode and model are selected, what the user has approved, what's queued or running, the application state, and the snapshot to render. A session has one active thread at a time but can list, switch between, and clone many threads over its lifetime. Anything that describes the current state lives here; the Harness owns the shared infrastructure every session runs on.
8
8
 
9
- A useful way to remember the split: the **Harness** is the application, and the **Session** is the current conversation running inside it. Operations that mutate shared infrastructure or coordinate the event bus stay on the Harness; everything that describes "this conversation right now" lives on the Session.
9
+ Because each session has its own identity and state, one Harness can serve many users at once each backed by its own Session without one session's mode, grants, or active thread leaking into another.
10
10
 
11
- | Lives on the Harness (shared host) | Lives on the Session (per-conversation) |
12
- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- |
13
- | Configuration, storage, and memory | Resource ID and active thread binding ([`session.identity`](#identity), [`session.thread`](#thread)) |
14
- | Thread lifecycle: `createThread`, `switchThread`, `cloneThread`, `renameThread`, `deleteThread` | Thread and message reads ([`session.thread.list()`](#thread)) |
15
- | The event bus (`subscribe`, event emission) | Selected mode and model ([`session.mode`](#mode-and-model), [`session.model`](#mode-and-model)) |
16
- | Permission _policy_ (`setPermissionForCategory`, `getToolCategory`) | Permission _grants_ ([`session.grantCategory`](#permission-grants)) |
17
- | Mode and model _definitions_ (`config.modes`) | Run state, abort, follow-ups, suspensions ([`session.run`](#run-state), [`session.followUps`](#follow-ups)) |
18
- | The `stateSchema` definition | Application state and its updates ([`session.state`](#state)) |
19
- | The shared agent loop and subagent spawning | Token usage and the display snapshot ([`session.displayState`](#display-state)) |
11
+ The rest of this page walks through the Session's state. Each part is a focused sub-object on `harness.session`:
20
12
 
21
- This is why thread _creation_ is `harness.createThread()` (it acquires the shared lock and emits an event) while thread _reads_ are `harness.session.thread.list()` (they describe the current conversation's view).
13
+ - **Who and where**: [Identity](#identity) sets the resource the session belongs to, and [Thread](#thread) tracks the currently bound thread.
14
+ - **How the agent behaves**: [Mode and model](#mode-and-model) controls which agent profile and model are active, and [Permission grants](#permission-grants) records what the user has approved to run without prompting.
15
+ - **What's happening right now**: [Run state](#run-state) reflects the in-flight generation, and [Follow-ups](#follow-ups) holds messages queued to send when it finishes.
16
+ - **What you store and render**: [State](#state) holds your application's structured data, and [Display state](#display-state) is the single snapshot your UI renders from.
22
17
 
23
- In single-player apps there is one Harness and one Session, so the split is mostly organizational. In a multi-user host, the same Harness can serve many conversations each backed by its own Session without one conversation's mode, grants, or active thread leaking into another.
18
+ The Harness performs actions that change this state switching threads, modes, or models because those operations coordinate shared infrastructure and emit events. The Session is where you read the result. The sections below note this split where it matters.
24
19
 
25
20
  ## Identity
26
21
 
@@ -31,7 +26,7 @@ const resourceId = harness.session.identity.getResourceId()
31
26
  const threadId = harness.session.thread.getId()
32
27
  ```
33
28
 
34
- To change the resource a conversation operates under, use `harness.setResourceId()` — it lives on the Harness because it also clears the active thread and releases the shared lock.
29
+ The resource ID is set on the Harness constructor and defaults to the harness `id`. See [Resource IDs](https://mastra.ai/docs/harness/threads-and-state) for how it scopes threads.
35
30
 
36
31
  ## Thread
37
32
 
@@ -94,12 +89,14 @@ harness.abort()
94
89
 
95
90
  ## Follow-ups
96
91
 
97
- While a run is in progress, queued follow-up messages live on `session.followUps`. They are sent when the current run finishes:
92
+ A user may want to add to the conversation while the agent is still working. Instead of dropping or interrupting those messages, the Session queues them on `session.followUps` and sends them when the current run finishes:
98
93
 
99
94
  ```typescript
100
95
  const queued = harness.session.followUps.count()
101
96
  ```
102
97
 
98
+ Queue a follow-up with `harness.followUp({ content })`. To redirect the agent mid-run instead of waiting, use `harness.steer({ content })`. Both build on [signals](https://mastra.ai/docs/agents/signals).
99
+
103
100
  ## State
104
101
 
105
102
  `session.state` holds the conversation's application state — structured values that agents and the UI share, such as model preferences, feature flags, or progress. The Harness defines the shape with a `stateSchema`; the Session owns the live snapshot, validates updates against the schema, and emits `state_changed` on every write:
@@ -113,12 +110,16 @@ See [Threads and state](https://mastra.ai/docs/harness/threads-and-state) for de
113
110
 
114
111
  ## Display state
115
112
 
116
- `session.displayState` is the coalesced `HarnessDisplayState` snapshot the single object a UI renders from. It folds run status, streaming messages, active tools, tasks, token usage, and pending approvals into one place:
113
+ A conversation emits many fine-grained events: tokens streaming in, tools starting and finishing, approvals pending, tasks updating, token usage climbing. Subscribing to each event type and reassembling the current picture yourself is tedious and error-prone. `session.displayState` does that work for you.
114
+
115
+ It's a reducer-maintained snapshot. The Session keeps one `HarnessDisplayState` object and folds every harness event into it as it happens, so the snapshot always reflects the latest state. It captures everything a UI needs to render: whether the agent is running and what it's streaming, which tools and subagents are active, anything waiting on the user such as approvals, the current task list, and running totals like token usage and queued follow-ups.
116
+
117
+ Because it's a single object, you can drive an entire UI from one place: read the current snapshot with `get()`, and re-render whenever the Harness emits `display_state_changed` (fired after every other event):
117
118
 
118
119
  ```typescript
119
120
  const snapshot = harness.session.displayState.get()
120
121
 
121
- // React to changes
122
+ // Re-render from the snapshot on every change
122
123
  harness.subscribe(event => {
123
124
  if (event.type === 'display_state_changed') {
124
125
  render(harness.session.displayState.get())
@@ -126,6 +127,8 @@ harness.subscribe(event => {
126
127
  })
127
128
  ```
128
129
 
130
+ This is the recommended pattern for most UIs. Subscribe to individual typed events only when you need to react to a specific transition rather than re-render the whole view.
131
+
129
132
  > **Note:** Visit the [Session reference](https://mastra.ai/reference/harness/session) for the full list of sub-objects and method signatures.
130
133
 
131
134
  ## Related
@@ -1,14 +1,6 @@
1
1
  # Subagents
2
2
 
3
- Subagents let a parent agent delegate focused tasks to child agents with constrained tools and instructions. The Harness auto-generates a `subagent` built-in tool that the parent model can call to spawn any configured subagent type.
4
-
5
- ## When to use subagents
6
-
7
- Use subagents when:
8
-
9
- - A task needs a different toolset or instruction set than the parent agent
10
- - You want to isolate a subtask's messages from the parent thread
11
- - The parent agent needs to delegate to a cheaper or faster model for specific work
3
+ Subagents let a parent agent delegate focused tasks to child agents with constrained tools and instructions. The Harness auto-generates a `subagent` built-in tool that the parent model can call to spawn any configured subagent type. Reach for a subagent when a task needs a different toolset or instruction set than the parent agent, when you want to isolate a subtask's messages from the parent thread, or when the parent should delegate to a cheaper or faster model for specific work.
12
4
 
13
5
  ## Quickstart
14
6
 
@@ -52,11 +44,17 @@ const harness = new Harness({
52
44
 
53
45
  The parent agent can then call the auto-generated `subagent` tool with a `task` description and optional `agentType`.
54
46
 
47
+ When you define a subagent, write its `description` and `instructions` to be clear and narrow. The `description` is what the parent model reads to decide _when_ to delegate, so state the single job the subagent is for and, by implication, what it's not for — "Reads files and gathers context without making changes" tells the parent to reach for it during exploration and to handle edits elsewhere. The `instructions` then keep the child agent inside that job. A subagent scoped to one task with a focused toolset stays predictable and is easier for the parent to route to; a broadly described subagent invites the parent to over-delegate and blurs the boundary between types. Pair the narrow scope with `allowedWorkspaceTools` so the subagent can only do what its description promises.
48
+
55
49
  For the full list of subagent configuration options, see [`Harness` reference](https://mastra.ai/reference/harness/harness-class).
56
50
 
57
51
  ## Forked subagents
58
52
 
59
- By default, a subagent runs with a fresh context and doesn't see the parent conversation. **Forked subagents** run on a clone of the parent thread and reuse the parent agent's configuration. This preserves prompt-cache prefixes and gives the subagent full conversation context.
53
+ A default subagent starts with a fresh context: it can't see the parent conversation, so you pass everything it needs in the `task` description. That's the right model for self-contained work, but it has two costs. The subagent has no access to what's already happened, and it builds a brand-new request prefix — a different system prompt and tool schemas — so it can't reuse the parent's prompt cache.
54
+
55
+ **Forked subagents** solve both. Instead of a fresh agent, a fork clones the parent thread and runs the parent agent itself, so it sees the full conversation history and keeps the same system prompt and tool schemas as the parent. The identical prefix means the model's prompt cache still hits, which makes context-heavy delegation cheaper and faster.
56
+
57
+ Use a fork when the subtask depends on the conversation so far — prior messages, earlier tool results, or the parent's tool environment — and you want to run it without paying to rebuild that context. Use a default subagent when the task is self-contained and benefits from a narrower toolset, a tighter system prompt, or a cheaper model.
60
58
 
61
59
  Enable forked mode per-type:
62
60
 
@@ -65,24 +63,21 @@ const collaborator = {
65
63
  id: 'collaborator',
66
64
  name: 'Collaborator',
67
65
  description: 'Continues the conversation in a fork.',
68
- instructions: '...', // Ignored in forked mode
69
66
  forked: true,
70
67
  }
71
68
  ```
72
69
 
73
- Or per-invocation via the `subagent` tool's `forked` input parameter.
70
+ Or per-invocation via the `subagent` tool's `forked` input parameter, which overrides the type's default.
74
71
 
75
72
  ### Forked mode semantics
76
73
 
77
- - Memory must be configured on the Harness (forking clones the thread)
78
- - The parent agent's instructions, tools, model, and `maxSteps` apply
79
- - The subagent definition's own `instructions`, `tools`, and `defaultModelId` are ignored
80
- - Fork threads are tagged with `metadata.forkedSubagent === true` and hidden from `session.thread.list()` by default
81
- - Recursive forks are blocked at runtime to prevent infinite nesting
82
-
83
- ### When to prefer non-forked mode
74
+ Because a fork reuses the parent agent to keep the prompt prefix stable, the subagent's own definition is mostly set aside:
84
75
 
85
- Use non-forked subagents when the child needs a strictly smaller toolset, a different system prompt, or a cheaper model. Pass any required context explicitly in the `task` description.
76
+ - Memory must be configured on the Harness, since forking clones the parent thread. Without it, the fork call returns an error.
77
+ - The fork runs with the parent agent's instructions, tools, and model. The subagent definition's own `instructions`, `tools`, and `defaultModelId` are ignored, and a per-invocation `modelId` is ignored too.
78
+ - Only the subagent definition's `description` still matters — it's what the parent model reads to decide when to delegate.
79
+ - Fork threads are tagged with `metadata.forkedSubagent === true` and hidden from `session.thread.list()` by default.
80
+ - Recursive forks are blocked at runtime: the inherited `subagent` tool is disabled inside a fork to prevent infinite nesting.
86
81
 
87
82
  ## Subagent model management
88
83
 
@@ -1,15 +1,15 @@
1
1
  # Threads and state
2
2
 
3
- The Harness manages conversation threads and shared state that persist across mode switches, model changes, and sessions. Threads hold messages while state holds structured data that agents and the UI can read and write.
3
+ Threads and state are how a Harness conversation survives beyond a single exchange. A **thread** is the persistent record of a conversation its messages and metadata, saved to storage so a user can close the app and resume the same conversation later, or switch between several conversations. **State** is structured data attached to the conversation — values like model preferences, feature flags, or progress — that agents and your UI read and write as the conversation runs.
4
4
 
5
- Thread _lifecycle_ transitions (create, switch, clone, delete) live on the Harness because they coordinate the shared thread lock and emit events. The active thread binding and thread/message _reads_ live on the [`Session`](https://mastra.ai/docs/harness/session) as `harness.session.thread`.
5
+ The two work together: the thread is the message history, and state is the shared scratchpad alongside it. Both persist across mode switches, model changes, and restarts, so nothing is lost when a user switches from plan mode to build mode or reopens the app the next day.
6
6
 
7
- ## When to use threads and state
8
-
9
- Use threads when your application needs persistent conversation history, multi-session continuity, or when users switch between threads. Use state for structured values (model preferences, feature flags, UI settings) that agents and the UI layer share.
7
+ Thread _lifecycle_ transitions create, switch, clone, delete — live on the Harness because they coordinate the shared thread lock and emit events. The active thread binding and thread/message _reads_ live on the [`Session`](https://mastra.ai/docs/harness/session) as `harness.session.thread`.
10
8
 
11
9
  ## Threads
12
10
 
11
+ A thread holds one conversation's full message history. The Harness binds the Session to one active thread at a time; messages you send and the agent's replies are appended to that thread and saved to storage. Threads let users resume a past conversation, keep several conversations side by side, or branch one into alternatives.
12
+
13
13
  ### Creating and selecting threads
14
14
 
15
15
  On startup, call `selectOrCreateThread()` to resume the most recent thread or create a new one:
@@ -72,6 +72,8 @@ const harness = new Harness({
72
72
 
73
73
  ## State
74
74
 
75
+ Where a thread stores the conversation's messages, state stores structured values that describe the conversation but aren't messages — model preferences, feature flags, UI settings, or progress markers. Agents can read and update state during a run, and your UI can react to changes, so state is how the agent and the interface stay in sync on shared facts. You define its shape with a schema, and every update is validated against that schema before it's applied.
76
+
75
77
  ### Defining a state schema
76
78
 
77
79
  Pass a `stateSchema` (Standard JSON Schema) to validate state and extract defaults:
@@ -114,16 +116,19 @@ State changes emit a `state_changed` event with the new state and the set of cha
114
116
 
115
117
  ## Resource IDs
116
118
 
117
- Threads are scoped to a resource ID. The resource ID defaults to the harness `id` but can be set explicitly to group threads by project, user, or workspace:
119
+ Threads are scoped to a resource ID, which groups a conversation's threads by project, user, or workspace. Set it on the Harness constructor; it defaults to the harness `id` when omitted:
118
120
 
119
121
  ```typescript
120
122
  const harness = new Harness({
121
123
  id: 'my-agent',
122
124
  resourceId: 'project-xyz',
123
125
  })
126
+ ```
127
+
128
+ The resource ID is part of a conversation's identity, so you read it from the Session:
124
129
 
125
- // Change resource ID at runtime (clears the current thread)
126
- harness.setResourceId({ resourceId: 'project-abc' })
130
+ ```typescript
131
+ const resourceId = harness.session.identity.getResourceId()
127
132
  ```
128
133
 
129
134
  ## Related
@@ -1,10 +1,6 @@
1
1
  # Tool approvals and permissions
2
2
 
3
- The Harness provides a permission system that controls which tools require user approval before execution. You can configure policies at the category level or per-tool, and grant session-wide exceptions for trusted tools.
4
-
5
- ## When to use tool approvals
6
-
7
- Use tool approvals when agents have access to destructive or sensitive tools (file writes, command execution, API calls) and you want a human-in-the-loop checkpoint before those tools run.
3
+ The Harness provides a permission system that controls which tools require user approval before execution. You can configure policies at the category level or per-tool, and grant session-wide exceptions for trusted tools. This gives agents with access to destructive or sensitive tools — file writes, command execution, API calls — a human-in-the-loop checkpoint before those tools run.
8
4
 
9
5
  ## Permission policies
10
6
 
package/CHANGELOG.md CHANGED
@@ -1,5 +1,27 @@
1
1
  # @mastra/mcp-docs-server
2
2
 
3
+ ## 1.2.0-alpha.0
4
+
5
+ ### Minor Changes
6
+
7
+ - Random bump ([#18178](https://github.com/mastra-ai/mastra/pull/18178))
8
+
9
+ ### Patch Changes
10
+
11
+ - Updated dependencies [[`7c0d868`](https://github.com/mastra-ai/mastra/commit/7c0d868d97d0fdbc04c14d0166dbf44d4c5a4a62), [`d9d2273`](https://github.com/mastra-ai/mastra/commit/d9d2273c702690c9a26eab2aebea879701d4355a), [`b04369d`](https://github.com/mastra-ai/mastra/commit/b04369d6b167c698ef103981171a8bf92808e756), [`8f3c262`](https://github.com/mastra-ai/mastra/commit/8f3c262587b335588a02d96b17fd6aca34c885b3)]:
12
+ - @mastra/core@1.45.0-alpha.0
13
+ - @mastra/mcp@1.11.0-alpha.0
14
+
15
+ ## 1.1.49
16
+
17
+ ### Patch Changes
18
+
19
+ - Security remediation for the 2026-06-17 "easy-day-js" supply-chain incident. Patch bump to publish clean versions and move the `latest` dist-tag forward, superseding the compromised versions that declared the malicious `easy-day-js` dependency. ([#18056](https://github.com/mastra-ai/mastra/pull/18056))
20
+
21
+ - Updated dependencies [[`339c57c`](https://github.com/mastra-ai/mastra/commit/339c57c5b2c6dbe75a125e138228e0556528976f), [`1dd4117`](https://github.com/mastra-ai/mastra/commit/1dd4117dcbd8e031ede9f0489436bfbc6f0315b8), [`2b11d1f`](https://github.com/mastra-ai/mastra/commit/2b11d1f6ac7024c5dd2b2dd12a48a956ac9d63bd), [`77a2351`](https://github.com/mastra-ai/mastra/commit/77a2351ee79296e360bce822cb3391f7cfd6489d), [`b7dff0a`](https://github.com/mastra-ai/mastra/commit/b7dff0a3d1022eb6868f48dc40a2b1febd5c277f), [`02087e1`](https://github.com/mastra-ai/mastra/commit/02087e1fbc54aa07f3071f7a200df1bf5be601a8), [`49af8df`](https://github.com/mastra-ai/mastra/commit/49af8df589c4ff71a5015a4553b377b32704b691), [`30ce559`](https://github.com/mastra-ai/mastra/commit/30ce55902ecf819b8ab8697398dd68b108228063), [`c241b92`](https://github.com/mastra-ai/mastra/commit/c241b929dc8c8d6a7b7219c99ed13ac1f3124a77), [`7d6ff70`](https://github.com/mastra-ai/mastra/commit/7d6ff708727297a0526ca0e26e93eeb5bbaaa187), [`ab975d4`](https://github.com/mastra-ai/mastra/commit/ab975d4dd9488752f05bda7afa03166d207e3e2a), [`9d6aa1b`](https://github.com/mastra-ai/mastra/commit/9d6aa1bae407e2afa6a089abc2a6accbbcb287b8)]:
22
+ - @mastra/core@1.44.0
23
+ - @mastra/mcp@1.10.1
24
+
3
25
  ## 1.1.49-alpha.2
4
26
 
5
27
  ### Patch Changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mastra/mcp-docs-server",
3
- "version": "1.1.49-alpha.2",
3
+ "version": "1.2.0-alpha.0",
4
4
  "description": "MCP server for accessing Mastra.ai documentation, changelogs, and news.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -28,8 +28,8 @@
28
28
  "jsdom": "^26.1.0",
29
29
  "local-pkg": "^1.1.2",
30
30
  "zod": "^4.4.3",
31
- "@mastra/core": "1.44.0-alpha.2",
32
- "@mastra/mcp": "^1.10.1-alpha.0"
31
+ "@mastra/core": "1.45.0-alpha.0",
32
+ "@mastra/mcp": "^1.11.0-alpha.0"
33
33
  },
34
34
  "devDependencies": {
35
35
  "@hono/node-server": "^1.19.11",
@@ -45,9 +45,9 @@
45
45
  "tsx": "^4.22.4",
46
46
  "typescript": "^6.0.3",
47
47
  "vitest": "4.1.8",
48
- "@internal/types-builder": "0.0.80",
49
- "@internal/lint": "0.0.105",
50
- "@mastra/core": "1.44.0-alpha.2"
48
+ "@internal/lint": "0.0.106",
49
+ "@mastra/core": "1.45.0-alpha.0",
50
+ "@internal/types-builder": "0.0.81"
51
51
  },
52
52
  "homepage": "https://mastra.ai",
53
53
  "repository": {