Running client scenario 'server-stateless' against server: http://127.0.0.1:3954/mcp
Checks:
2026-07-29T03:31:05.341Z [sep-2575-request-meta-invalid-missing-meta                     ] SUCCESS Rejects request with missing _meta with -32602 Invalid params
2026-07-29T03:31:05.341Z [sep-2575-http-server-meta-invalid-400                          ] SUCCESS Rejections of requests missing required _meta fields use HTTP 400 Bad Request.
2026-07-29T03:31:05.341Z [sep-2575-request-meta-invalid-missing-protocol-version         ] SUCCESS Rejects request with _meta missing io.modelcontextprotocol/protocolVersion
2026-07-29T03:31:05.341Z [sep-2575-http-server-meta-invalid-400                          ] SUCCESS Rejections of requests missing required _meta fields use HTTP 400 Bad Request.
2026-07-29T03:31:05.341Z [sep-2575-request-meta-invalid-missing-client-capabilities      ] SUCCESS Rejects request with _meta missing io.modelcontextprotocol/clientCapabilities
2026-07-29T03:31:05.341Z [sep-2575-http-server-meta-invalid-400                          ] SUCCESS Rejections of requests missing required _meta fields use HTTP 400 Bad Request.
2026-07-29T03:31:05.341Z [sep-2575-request-meta-client-info-optional                     ] SUCCESS Serves requests whose _meta omits io.modelcontextprotocol/clientInfo (clientInfo is a SHOULD).
2026-07-29T03:31:05.341Z [sep-2575-server-implements-discover                            ] SUCCESS Servers MUST implement server/discover.
2026-07-29T03:31:05.341Z [sep-2575-server-identifies-in-result-meta                      ] SUCCESS Servers SHOULD identify themselves via _meta['io.modelcontextprotocol/serverInfo'] on responses (spec PR #3002).
2026-07-29T03:31:05.341Z [sep-2575-server-declares-prompts-in-discover                   ] SUCCESS Servers that support prompts MUST declare the prompts capability in their DiscoverResult.
2026-07-29T03:31:05.341Z [sep-2575-discover-capabilities-match-handlers                  ] SUCCESS capabilities matches what the server honors on real RPC calls
2026-07-29T03:31:05.341Z [sep-2575-server-unsupported-version-error                      ] SUCCESS If the server does not implement the requested version (whether the version is unknown to the server, or is a known version the server has chosen not to support), it MUST respond with an UnsupportedProtocolVersionError listing the versions it does support; the error data carries the supported versions and echoes the requested version.
2026-07-29T03:31:05.341Z [sep-2575-http-server-unsupported-version-400                   ] SUCCESS If the server does not implement the requested protocol version, it MUST respond with 400 Bad Request and an UnsupportedProtocolVersionError listing its supported versions.
2026-07-29T03:31:05.341Z [sep-2575-http-server-header-mismatch-400                       ] SUCCESS If the values do not match, the server MUST reject the request with 400 Bad Request and a HeaderMismatch JSON-RPC error.
2026-07-29T03:31:05.341Z [sep-2575-server-rejects-undeclared-capability                  ] SUCCESS A server MUST NOT rely on capabilities the client has not declared. If processing a request requires a capability the client did not include in io.modelcontextprotocol/clientCapabilities, the server MUST return a MissingRequiredClientCapabilityError (-32021).
2026-07-29T03:31:05.341Z [sep-2575-missing-capability-http-400                           ] SUCCESS On HTTP, the response status MUST be 400 Bad Request [for MissingRequiredClientCapabilityError].
2026-07-29T03:31:05.341Z [sep-2575-http-server-method-not-found-404-initialize           ] SUCCESS If the server does not implement the removed RPC method 'initialize', it MUST respond with 404 Not Found and a JSON-RPC error with code -32601 (Method not found).
2026-07-29T03:31:05.341Z [sep-2575-http-server-method-not-found-404-ping                 ] SUCCESS If the server does not implement the removed RPC method 'ping', it MUST respond with 404 Not Found and a JSON-RPC error with code -32601 (Method not found).
2026-07-29T03:31:05.341Z [sep-2575-http-server-method-not-found-404-logging-setlevel     ] SUCCESS If the server does not implement the removed RPC method 'logging/setLevel', it MUST respond with 404 Not Found and a JSON-RPC error with code -32601 (Method not found).
2026-07-29T03:31:05.341Z [sep-2575-http-server-method-not-found-404-resources-subscribe  ] SUCCESS If the server does not implement the removed RPC method 'resources/subscribe', it MUST respond with 404 Not Found and a JSON-RPC error with code -32601 (Method not found).
2026-07-29T03:31:05.341Z [sep-2575-http-server-method-not-found-404-resources-unsubscribe] SUCCESS If the server does not implement the removed RPC method 'resources/unsubscribe', it MUST respond with 404 Not Found and a JSON-RPC error with code -32601 (Method not found).
2026-07-29T03:31:05.341Z [sep-2575-http-server-method-not-found-404                      ] SUCCESS If the server does not implement the requested RPC method, it MUST respond with 404 Not Found and a JSON-RPC error with code -32601 (Method not found).
2026-07-29T03:31:05.341Z [sep-2575-http-server-no-independent-requests-on-stream         ] FAILURE Request stream contains only IncompleteResult, never independent JSON-RPC requests
2026-07-29T03:31:05.341Z [sep-2575-server-no-log-without-loglevel                        ] SUCCESS No notifications/message for requests that didn't set _meta.../logLevel
2026-07-29T03:31:05.341Z [sep-2575-server-sends-subscription-ack                         ] FAILURE notifications/subscriptions/acknowledged is the first message on a subscriptions/listen stream
2026-07-29T03:31:05.341Z [sep-2575-server-tags-subscription-id                           ] FAILURE Listen-stream notifications carry _meta.../subscriptionId
2026-07-29T03:31:05.341Z [sep-2575-server-honors-notification-filter                     ] SKIPPED Server doesn't send notification types the client didn't request
2026-07-29T03:31:05.341Z [sep-2575-server-sends-prompts-list-changed-on-subscription     ] SKIPPED List-changed-capable servers notify listen streams with promptsListChanged: true (SHOULD)
2026-07-29T03:31:05.341Z [sep-2575-server-sends-tools-list-changed-on-subscription       ] SKIPPED List-changed-capable servers notify listen streams with toolsListChanged: true (SHOULD)
2026-07-29T03:31:05.341Z [sep-2575-http-server-error-jsonrpc-id                          ] SUCCESS All error responses carry the request JSON-RPC id

Test Results:
Passed: 24/27, 3 failed, 0 warnings

=== Failed Checks ===

  - HttpServerNoIndependentRequestsOnStream: Request stream contains only IncompleteResult, never independent JSON-RPC requests
    Error: Failed to receive progressive stream chunk execution frames from tools/call handler endpoint

Test stateless MCP server architecture (SEP-2575).

Server Implementation Requirements:

Endpoints:
- server/discover: Returns supportedVersions and capabilities; SHOULD identify itself via _meta['io.modelcontextprotocol/serverInfo'] (spec PR #3002).
- tools/call: Implement structural test tools like test_missing_capability requiring explicit capabilities in _meta.

Grouped Specification Requirements:

1. Per-Request _meta Validation (4 Checks)
   - Rejects requests missing _meta or lacking structural required internal subfields (protocolVersion, clientCapabilities) with a JSON-RPC -32602 Invalid params error signature and an HTTP status code 400 Bad Request.
   - Serves requests whose _meta omits clientInfo (a SHOULD since spec PR #3002 — servers MUST NOT require it).
2. Discovery & Capabilities (3 Checks)
   - Implements server/discover mapping exact mandatory protocol elements.
   - Dynamically checks prompt capability declaration constraints, validates that active RPC handlers match advertised discovery capacities.
3. Version Negotiation & Headers (3 Checks)
   - Mismatched or unknown protocol versions must return an UnsupportedProtocolVersionError (HTTP status code 400 Bad Request) carrying precise version tracking arrays.
   - Absent or altered protocol version header metadata must trigger a -32020 Header Mismatch error with an HTTP 400 boundary state.
4. Client Capability Constraints (2 Checks)
   - Accessing platform capabilities without explicit declaration drops requests with a -32021 MissingRequiredClientCapabilityError returning an HTTP status code 400 Bad Request. Its error.data.requiredCapabilities is a ClientCapabilities object keyed by the missing capability (e.g. { "sampling": {} }), not an array of names.
5. Methods & Routing Mechanics (5 Checks)
   - Removed legacy endpoints (initialize, ping, logging/setLevel, etc.) or generic unknown methods must cleanly yield an HTTP status code 404 Not Found alongside a JSON-RPC -32601 Method not found payload. All error returns must preserve original request ID mappings.
   - Validates response streams contain only IncompleteResult chunks and never independent top-level JSON-RPC requests, while enforcing that no log messages are emitted when _meta.../logLevel is omitted.
6. Subscription Streams & Filtering (3 Checks)
   - Mandates that notifications/subscriptions/acknowledged is the first message on a subscriptions/listen stream, and that subsequent notifications carry a matching _meta.../subscriptionId.
   - Verifies strict containment where servers do not dispatch notification types that fall outside the client's explicit requested subscription filter list.
7. Dynamic List Mutations (2 Checks)
   - Evaluates that list-changed capable servers notify active listen streams with promptsListChanged: true or toolsListChanged: true upon live configuration or capability modifications.

  - ServerSendsSubscriptionAck: notifications/subscriptions/acknowledged is the first message on a subscriptions/listen stream
    Error: Failed to open or receive frames from the subscriptions/listen stream endpoint

Test stateless MCP server architecture (SEP-2575).

Server Implementation Requirements:

Endpoints:
- server/discover: Returns supportedVersions and capabilities; SHOULD identify itself via _meta['io.modelcontextprotocol/serverInfo'] (spec PR #3002).
- tools/call: Implement structural test tools like test_missing_capability requiring explicit capabilities in _meta.

Grouped Specification Requirements:

1. Per-Request _meta Validation (4 Checks)
   - Rejects requests missing _meta or lacking structural required internal subfields (protocolVersion, clientCapabilities) with a JSON-RPC -32602 Invalid params error signature and an HTTP status code 400 Bad Request.
   - Serves requests whose _meta omits clientInfo (a SHOULD since spec PR #3002 — servers MUST NOT require it).
2. Discovery & Capabilities (3 Checks)
   - Implements server/discover mapping exact mandatory protocol elements.
   - Dynamically checks prompt capability declaration constraints, validates that active RPC handlers match advertised discovery capacities.
3. Version Negotiation & Headers (3 Checks)
   - Mismatched or unknown protocol versions must return an UnsupportedProtocolVersionError (HTTP status code 400 Bad Request) carrying precise version tracking arrays.
   - Absent or altered protocol version header metadata must trigger a -32020 Header Mismatch error with an HTTP 400 boundary state.
4. Client Capability Constraints (2 Checks)
   - Accessing platform capabilities without explicit declaration drops requests with a -32021 MissingRequiredClientCapabilityError returning an HTTP status code 400 Bad Request. Its error.data.requiredCapabilities is a ClientCapabilities object keyed by the missing capability (e.g. { "sampling": {} }), not an array of names.
5. Methods & Routing Mechanics (5 Checks)
   - Removed legacy endpoints (initialize, ping, logging/setLevel, etc.) or generic unknown methods must cleanly yield an HTTP status code 404 Not Found alongside a JSON-RPC -32601 Method not found payload. All error returns must preserve original request ID mappings.
   - Validates response streams contain only IncompleteResult chunks and never independent top-level JSON-RPC requests, while enforcing that no log messages are emitted when _meta.../logLevel is omitted.
6. Subscription Streams & Filtering (3 Checks)
   - Mandates that notifications/subscriptions/acknowledged is the first message on a subscriptions/listen stream, and that subsequent notifications carry a matching _meta.../subscriptionId.
   - Verifies strict containment where servers do not dispatch notification types that fall outside the client's explicit requested subscription filter list.
7. Dynamic List Mutations (2 Checks)
   - Evaluates that list-changed capable servers notify active listen streams with promptsListChanged: true or toolsListChanged: true upon live configuration or capability modifications.

  - ServerTagsSubscriptionId: Listen-stream notifications carry _meta.../subscriptionId
    Error: Failed to open stream line or tracking frames are missing completely

Test stateless MCP server architecture (SEP-2575).

Server Implementation Requirements:

Endpoints:
- server/discover: Returns supportedVersions and capabilities; SHOULD identify itself via _meta['io.modelcontextprotocol/serverInfo'] (spec PR #3002).
- tools/call: Implement structural test tools like test_missing_capability requiring explicit capabilities in _meta.

Grouped Specification Requirements:

1. Per-Request _meta Validation (4 Checks)
   - Rejects requests missing _meta or lacking structural required internal subfields (protocolVersion, clientCapabilities) with a JSON-RPC -32602 Invalid params error signature and an HTTP status code 400 Bad Request.
   - Serves requests whose _meta omits clientInfo (a SHOULD since spec PR #3002 — servers MUST NOT require it).
2. Discovery & Capabilities (3 Checks)
   - Implements server/discover mapping exact mandatory protocol elements.
   - Dynamically checks prompt capability declaration constraints, validates that active RPC handlers match advertised discovery capacities.
3. Version Negotiation & Headers (3 Checks)
   - Mismatched or unknown protocol versions must return an UnsupportedProtocolVersionError (HTTP status code 400 Bad Request) carrying precise version tracking arrays.
   - Absent or altered protocol version header metadata must trigger a -32020 Header Mismatch error with an HTTP 400 boundary state.
4. Client Capability Constraints (2 Checks)
   - Accessing platform capabilities without explicit declaration drops requests with a -32021 MissingRequiredClientCapabilityError returning an HTTP status code 400 Bad Request. Its error.data.requiredCapabilities is a ClientCapabilities object keyed by the missing capability (e.g. { "sampling": {} }), not an array of names.
5. Methods & Routing Mechanics (5 Checks)
   - Removed legacy endpoints (initialize, ping, logging/setLevel, etc.) or generic unknown methods must cleanly yield an HTTP status code 404 Not Found alongside a JSON-RPC -32601 Method not found payload. All error returns must preserve original request ID mappings.
   - Validates response streams contain only IncompleteResult chunks and never independent top-level JSON-RPC requests, while enforcing that no log messages are emitted when _meta.../logLevel is omitted.
6. Subscription Streams & Filtering (3 Checks)
   - Mandates that notifications/subscriptions/acknowledged is the first message on a subscriptions/listen stream, and that subsequent notifications carry a matching _meta.../subscriptionId.
   - Verifies strict containment where servers do not dispatch notification types that fall outside the client's explicit requested subscription filter list.
7. Dynamic List Mutations (2 Checks)
   - Evaluates that list-changed capable servers notify active listen streams with promptsListChanged: true or toolsListChanged: true upon live configuration or capability modifications.
