You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
|**Active**| The feature is part of the Current specification revision with no planned removal. | Implement per the feature's normative requirements. |
39
-
|**Deprecated**| The feature remains in the specification but is scheduled for removal. A migration path is documented (see below). | New implementations SHOULD NOT adopt the feature. Existing implementations SHOULD migrate before the earliest removal date. |
40
-
|**Removed**| The feature has been deleted from `draft` and will be absent from the next Current revision. It remains documented in the Final revision it last appeared in. | Implementations targeting that next Current revision MUST NOT depend on the feature. |
41
-
42
-
The term "soft-deprecated" is retired. Existing uses in the specification are
43
-
reclassified as Deprecated under this policy (see [Transition](#transition)).
44
-
45
-
Removal from the specification does not oblige an SDK to drop the feature from
46
-
releases that continue to support an earlier revision in which it was Active or
47
-
Deprecated; that timeline is governed by the SDK's own revision-support policy.
28
+
|**Active**| The feature is part of the Current specification revision. | Implement per the feature's normative requirements. |
29
+
|**Deprecated**| The feature remains in the specification but is scheduled for removal. A migration path is documented (see below). | New implementations should not adopt the feature. Existing implementations should migrate before the earliest removal date. |
30
+
|**Removed**| The feature has been deleted from `draft` and will be absent from the next Current revision. It remains documented in the Final revision it last appeared in. | Implementations targeting that next Current revision must not depend on the feature. |
48
31
49
32
A Deprecated feature MAY be restored to Active by a SEP that supersedes the
50
33
deprecation SEP and documents the changed circumstances. Restoration follows
@@ -53,45 +36,40 @@ again, the minimum deprecation window in
53
36
[Deprecating a feature](#deprecating-a-feature) is measured afresh from the
54
37
revision in which the new deprecation takes effect.
55
38
56
-
## Deprecating a Feature
39
+
### SDKs
40
+
Removal from the specification does not oblige an SDK to drop the feature from
41
+
releases. That timeline is governed by the SDK's own revision-support policy.
42
+
57
43
58
-
A feature MAY be proposed for deprecation when at least one of the following
59
-
holds:
44
+
## Deprecating a Feature
45
+
A feature may be proposed for deprecation due to
60
46
61
-
- It has been superseded by another feature that covers the same use cases.
62
-
- It presents a security, privacy, or interoperability risk that cannot be
63
-
mitigated in place.
64
-
- Ecosystem telemetry or SDK maintainer consensus indicates negligible adoption
65
-
relative to its maintenance cost.
47
+
- it has been superseded by another feature that covers the same use cases,
48
+
- it presents a security, privacy, or interoperability risk that cannot be
49
+
mitigated in place,
50
+
- ecosystem telemetry or SDK maintainer consensus indicates negligible adoption
51
+
relative to its maintenance cost,
52
+
- or any other reasons the Core Maintainers seem to deem appropriate.
66
53
67
54
Deprecation is a specification change and therefore requires a SEP per the
68
-
[SEP guidelines](/community/sep-guidelines). The deprecation SEP MUST:
55
+
[SEP guidelines](/community/sep-guidelines). The deprecation SEP must:
69
56
70
57
1. Identify the feature by name and link to its definition in `schema.ts`
71
58
(where applicable) and the specification prose.
72
59
2. State the rationale against the criteria above.
73
60
3. Document the migration path, or state explicitly that none is required. If
74
-
the migration path names a replacement feature, that feature MUST be Active
61
+
the migration path names a replacement feature, that feature must be Active
75
62
in the revision in which the deprecation takes effect; the replacement and
76
-
the deprecation MAY land in the same revision. A feature is not deprecated
77
-
under this policy while its documented replacement is still only in `draft`.
63
+
the deprecation may land in the same revision.
78
64
4. Specify the **minimum deprecation window**: the number of months, at least
79
-
twelve, that the feature MUST remain Deprecated before it is eligible for
65
+
twelve, that the feature must remain Deprecated before it is eligible for
80
66
removal. The window is measured from the release of the specification
81
67
revision in which the feature is first marked Deprecated, not from the date
82
68
the SEP reaches Final. The feature becomes eligible for removal in the first
83
69
specification revision released as Current on or after the window elapses;
84
70
that point is the feature's **earliest removal**.
85
71
86
-
When the deprecation SEP reaches Final the deprecation is scheduled: the
87
-
following changes land in the draft specification (`schema/draft/` and
88
-
`docs/specification/draft/`). The feature becomes Deprecated when the revision
89
-
carrying these changes is released as Current under the
90
-
[versioning guide](/docs/learn/versioning), and the minimum deprecation window
91
-
is counted from that release. Anchoring the clock to the revision release means
92
-
every feature deprecated in the same revision shares one earliest removal
93
-
rather than each carrying a date derived from when its own SEP happened to
94
-
land.
72
+
When the deprecation SEP is accepted and reaches Final, the deprecation is scheduled.
95
73
96
74
- The feature's entry in `schema.ts` gains a `@deprecated` JSDoc tag
97
75
referencing the deprecation SEP and the revision in which the deprecation
@@ -106,139 +84,51 @@ land.
106
84
revision in which it became Deprecated, its migration path, and its earliest
107
85
removal.
108
86
87
+
The feature becomes Deprecated when the revision carrying these changes is released
88
+
and becomes the new Current revision (see [versioning guide](/docs/learn/versioning)).
89
+
The minimum deprecation window is counted from that release.
90
+
109
91
## The Deprecated Registry
110
92
111
93
[`docs/specification/draft/deprecated.mdx`](/specification/draft/deprecated) is
112
-
a single page listing every feature currently in the Deprecated state. It is
94
+
a single page listing every feature Deprecated or Removed state. It is
113
95
the canonical answer to "what is on its way out, and by when," so that an
114
96
implementer does not have to reconstruct that picture from deprecation entries
115
-
spread across revision changelogs. Each row records the feature, its
116
-
deprecation SEP, the revision in which it became Deprecated, the documented
117
-
migration path, and its earliest removal. A deprecation adds a row; a removal
118
-
moves the row to a Removed section of the same page with a link to the
119
-
changelog entry, so the page also serves as the historical record. The registry
120
-
carries no normative force of its own; it is a derived view kept consistent
121
-
with the per-feature notices and changelog entries, which are the normative
122
-
records.
97
+
spread across revision changelogs.
123
98
124
99
## Tier 1 SDK Obligations
125
100
126
-
A feature lifecycle is only as effective as the implementations that surface it
127
-
to consumers. The specification artifacts above record that a feature is
128
-
Deprecated; Tier 1 SDKs (per the [SDK tiering system](/community/sdk-tiers))
129
-
deliver that record to the implementers who would otherwise discover the
130
-
removal by breakage. Once the revision in which a feature becomes Deprecated is
101
+
Once the revision in which a feature becomes Deprecated is
131
102
released as Current, Tier 1 SDKs:
132
103
133
-
-MUST mark the corresponding API surface deprecated using the language's
104
+
-Must mark the corresponding API surface deprecated using the language's
134
105
native mechanism (for example `@Deprecated` in Java, `[Obsolete]` in .NET,
135
106
`@deprecated` JSDoc in TypeScript, the `Deprecated:` doc convention in Go) in
136
107
their next release, referencing the deprecation SEP and the earliest removal
137
-
date where the mechanism permits. The marker applies to the SDK API surface
138
-
and is not conditioned on the specification revision a consumer targets;
139
-
surfacing it to consumers still on an earlier revision is intentional forward
140
-
signal.
141
-
- SHOULD emit a runtime warning when a deprecated feature is exercised, using
108
+
date where the mechanism permits.
109
+
- Should emit a runtime warning when a deprecated feature is exercised, using
142
110
the language's idiomatic mechanism (for example Python's
143
111
`DeprecationWarning`, Node.js's `process.emitWarning`, or a configurable
144
-
logger). A runtime warning reaches developers who never read API
145
-
documentation and is an observable signal a conformance test can assert
146
-
against.
147
-
148
-
These obligations are conformance criteria for Tier 1 status. A Tier 1 SDK that
149
-
persistently fails to surface a Deprecated feature is subject to the
| HTTP+SSE transport |[Streamable HTTP](/specification/draft/basic/transports#streamable-http)| Three months after SEP-2596 is Final |
232
-
|`includeContext: "thisServer"` / `"allServers"`| Omit the field or use `"none"`| Follows Sampling ([SEP-2577](https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2577)) |
233
-
234
-
`includeContext` is a parameter of `sampling/createMessage`.
0 commit comments