@@ -351,6 +351,10 @@ def __post_init__(self) -> None:
351351 "protocol:cancel:handler-abort-propagates" : Requirement (
352352 source = f"{ SPEC_BASE_URL } /basic/utilities/cancellation#behavior-requirements" ,
353353 behavior = "On the receiving side, a cancellation notification stops the running request handler." ,
354+ arm_exclusions = (
355+ ArmExclusion (reason = "requires-session" , transport = "streamable-http-stateless" ),
356+ ArmExclusion (reason = "requires-session" , spec_version = "2026-07-28" ),
357+ ),
354358 ),
355359 "protocol:cancel:in-flight" : Requirement (
356360 source = f"{ SPEC_BASE_URL } /basic/utilities/cancellation#behavior-requirements" ,
@@ -535,6 +539,10 @@ def __post_init__(self) -> None:
535539 "A progress notification that arrives after its request has completed is not delivered to the "
536540 "original progress callback."
537541 ),
542+ arm_exclusions = (
543+ ArmExclusion (reason = "requires-session" , transport = "streamable-http-stateless" ),
544+ ArmExclusion (reason = "requires-session" , spec_version = "2026-07-28" ),
545+ ),
538546 ),
539547 "protocol:progress:no-token" : Requirement (
540548 source = f"{ SPEC_BASE_URL } /basic/utilities/progress#progress-flow" ,
@@ -660,6 +668,10 @@ def __post_init__(self) -> None:
660668 "A tool handler that issues a sampling request receives the client's completion and can embed "
661669 "it in the tool call result."
662670 ),
671+ arm_exclusions = (
672+ ArmExclusion (reason = "server-initiated-request" , transport = "streamable-http-stateless" ),
673+ ArmExclusion (reason = "server-initiated-request" , spec_version = "2026-07-28" ),
674+ ),
663675 ),
664676 "tools:call:structured-content" : Requirement (
665677 source = f"{ SPEC_BASE_URL } /server/tools#structured-content" ,
@@ -882,6 +894,10 @@ def __post_init__(self) -> None:
882894 "Context.elicit sends a form elicitation built from a typed schema and returns a typed "
883895 "accepted/declined/cancelled result."
884896 ),
897+ arm_exclusions = (
898+ ArmExclusion (reason = "server-initiated-request" , transport = "streamable-http-stateless" ),
899+ ArmExclusion (reason = "server-initiated-request" , spec_version = "2026-07-28" ),
900+ ),
885901 ),
886902 "mcpserver:context:read-resource" : Requirement (
887903 source = "sdk" ,
@@ -906,6 +922,7 @@ def __post_init__(self) -> None:
906922 "A server with resource handlers advertises the resources capability, including the subscribe "
907923 "sub-flag when a subscribe handler is registered."
908924 ),
925+ arm_exclusions = (ArmExclusion (reason = "legacy-only-vocabulary" , spec_version = "2026-07-28" ),),
909926 ),
910927 "resources:list-changed" : Requirement (
911928 source = f"{ SPEC_BASE_URL } /server/resources#list-changed-notification" ,
@@ -1062,6 +1079,7 @@ def __post_init__(self) -> None:
10621079 "prompts:capability:declared" : Requirement (
10631080 source = f"{ SPEC_BASE_URL } /server/prompts#capabilities" ,
10641081 behavior = "A server with a list_prompts handler advertises the prompts capability in its initialize result." ,
1082+ arm_exclusions = (ArmExclusion (reason = "legacy-only-vocabulary" , spec_version = "2026-07-28" ),),
10651083 ),
10661084 "prompts:get:content:audio" : Requirement (
10671085 source = f"{ SPEC_BASE_URL } /server/prompts#audio-content" ,
@@ -1164,6 +1182,7 @@ def __post_init__(self) -> None:
11641182 "completion:capability:declared" : Requirement (
11651183 source = f"{ SPEC_BASE_URL } /server/utilities/completion#capabilities" ,
11661184 behavior = "A server with a completion handler advertises the completions capability in its initialize result." ,
1185+ arm_exclusions = (ArmExclusion (reason = "legacy-only-vocabulary" , spec_version = "2026-07-28" ),),
11671186 ),
11681187 "completion:complete:not-supported" : Requirement (
11691188 source = f"{ SPEC_BASE_URL } /server/utilities/completion#capabilities" ,
@@ -1308,17 +1327,29 @@ def __post_init__(self) -> None:
13081327 "capability; the server-side validator only checks tools/tool_choice."
13091328 ),
13101329 ),
1330+ arm_exclusions = (
1331+ ArmExclusion (reason = "server-initiated-request" , transport = "streamable-http-stateless" ),
1332+ ArmExclusion (reason = "server-initiated-request" , spec_version = "2026-07-28" ),
1333+ ),
13111334 ),
13121335 "sampling:create:model-preferences" : Requirement (
13131336 source = f"{ SPEC_BASE_URL } /client/sampling#model-preferences" ,
13141337 behavior = (
13151338 "The model preferences supplied by the server (hints and the cost, speed, and intelligence "
13161339 "priorities) reach the client callback intact."
13171340 ),
1341+ arm_exclusions = (
1342+ ArmExclusion (reason = "server-initiated-request" , transport = "streamable-http-stateless" ),
1343+ ArmExclusion (reason = "server-initiated-request" , spec_version = "2026-07-28" ),
1344+ ),
13181345 ),
13191346 "sampling:create:system-prompt" : Requirement (
13201347 source = f"{ SPEC_BASE_URL } /client/sampling#creating-messages" ,
13211348 behavior = "The system prompt supplied by the server reaches the client callback intact." ,
1349+ arm_exclusions = (
1350+ ArmExclusion (reason = "server-initiated-request" , transport = "streamable-http-stateless" ),
1351+ ArmExclusion (reason = "server-initiated-request" , spec_version = "2026-07-28" ),
1352+ ),
13221353 ),
13231354 "sampling:create:tools" : Requirement (
13241355 source = f"{ SPEC_BASE_URL } /client/sampling#tools-in-sampling" ,
@@ -1494,13 +1525,21 @@ def __post_init__(self) -> None:
14941525 "elicitation/create; the spec's MUST NOT is not enforced."
14951526 ),
14961527 ),
1528+ arm_exclusions = (
1529+ ArmExclusion (reason = "server-initiated-request" , transport = "streamable-http-stateless" ),
1530+ ArmExclusion (reason = "server-initiated-request" , spec_version = "2026-07-28" ),
1531+ ),
14971532 ),
14981533 "elicitation:form:action:accept" : Requirement (
14991534 source = f"{ SPEC_BASE_URL } /client/elicitation#response-actions" ,
15001535 behavior = (
15011536 "A form-mode elicitation answered with action 'accept' returns the user's content to the "
15021537 "requesting handler."
15031538 ),
1539+ arm_exclusions = (
1540+ ArmExclusion (reason = "server-initiated-request" , transport = "streamable-http-stateless" ),
1541+ ArmExclusion (reason = "server-initiated-request" , spec_version = "2026-07-28" ),
1542+ ),
15041543 ),
15051544 "elicitation:form:action:cancel" : Requirement (
15061545 source = f"{ SPEC_BASE_URL } /client/elicitation#response-actions" ,
@@ -1524,6 +1563,10 @@ def __post_init__(self) -> None:
15241563 "A form-mode elicitation delivers the message and requested schema to the client callback "
15251564 "exactly as the server sent them."
15261565 ),
1566+ arm_exclusions = (
1567+ ArmExclusion (reason = "server-initiated-request" , transport = "streamable-http-stateless" ),
1568+ ArmExclusion (reason = "server-initiated-request" , spec_version = "2026-07-28" ),
1569+ ),
15271570 ),
15281571 "elicitation:form:defaults" : Requirement (
15291572 source = f"{ SPEC_BASE_URL } /client/elicitation#requested-schema" ,
@@ -1560,6 +1603,10 @@ def __post_init__(self) -> None:
15601603 "Requested-schema enum fields (including titled and multi-select variants) reach the client "
15611604 "callback as sent."
15621605 ),
1606+ arm_exclusions = (
1607+ ArmExclusion (reason = "server-initiated-request" , transport = "streamable-http-stateless" ),
1608+ ArmExclusion (reason = "server-initiated-request" , spec_version = "2026-07-28" ),
1609+ ),
15631610 ),
15641611 "elicitation:form:schema:primitives" : Requirement (
15651612 source = f"{ SPEC_BASE_URL } /client/elicitation#requested-schema" ,
@@ -1615,6 +1662,10 @@ def __post_init__(self) -> None:
16151662 "response carries no content (accept means the user agreed to visit the URL, not that the "
16161663 "interaction completed)."
16171664 ),
1665+ arm_exclusions = (
1666+ ArmExclusion (reason = "server-initiated-request" , transport = "streamable-http-stateless" ),
1667+ ArmExclusion (reason = "server-initiated-request" , spec_version = "2026-07-28" ),
1668+ ),
16181669 ),
16191670 "elicitation:url:basic" : Requirement (
16201671 source = f"{ SPEC_BASE_URL } /client/elicitation#url-mode-elicitation-requests" ,
0 commit comments