Skip to content

WIP feat(T5): MRTR (multi round trip requests) types (#243) - #276

Draft
sideeffffect wants to merge 5 commits into
softwaremill:2026-07-28-protocol-supportfrom
sideeffffect:feat/t5-mrtr-types
Draft

sideeffffect wants to merge 5 commits into
softwaremill:2026-07-28-protocol-supportfrom
sideeffffect:feat/t5-mrtr-types

Conversation

@sideeffffect

@sideeffffect sideeffffect commented Sep 23, 2026 •

Copy link
Copy Markdown

Closes #243.

What

Adds the 2026-07-28 multi round trip request (MRTR) types — the machinery that lets a tool call pause, ask the client for input (sampling / roots / elicitation), and resume:

  • InputRequest / InputResponse enums (sampling, roots, elicitation), discriminated by method / structural fields.
  • InputRequiredResult — pending InputRequests keyed by an opaque key, plus requestState the client echoes back, and the modern result envelope (resultType defaults to incomplete).
  • ResultType gains the incomplete case.
  • ElicitParams becomes an enum with Form and Url variants (mode distinguishes them; optional on Form for 2025-11-25 back-compat).
  • CallToolParams / GetPromptParams / ReadResourceParams carry inputResponses and requestState so a client can resume a paused call.

Tests

  • Schema conformance tests for the new modern $defs (ElicitRequestParams url variant, InputRequiredResult, the three request-params types).
  • Full core / client / server unit suites green.
  • All four conformance combos green (server/client × 2025-11-25 / 2026-07-28) — baseline checks pass, no unexpected failures.

Stacking

This PR is stacked on #275 (T7); review only the T5 delta here:

sideeffffect/chimp@feat/t7-shared-types...feat/t5-mrtr-types

Stack (bottom → top, all on 2026-07-28-protocol-support)

#271 (T3) → #273 (T6) → #275 (T7) → #276 (T5, this PR) → #274 (T8)

🤖 Generated with Claude Code

sideeffffect and others added 3 commits September 22, 2026 17:47
…ue T8 (softwaremill#246)

T3 (softwaremill#241): run client and server conformance at both 2025-11-25 and
2026-07-28 in CI (4 steps). Rename conformance-baseline.yml to
conformance-baseline-2025-11-25.yml and add a client section to
conformance-baseline-2026-07-28.yml (37 server, 37 client scenarios still
failing, all needing later tickets). Both conformance tasks select the
per-spec-version baseline from --requirements / --spec-version. Update both
conformance READMEs with the two-revision and single-scenario commands.

T8 (softwaremill#246): the modern-result envelope, server/discover and -32022 validation
landed in softwaremill#260 (already on this base). Remaining server rules (-32602 missing
_meta, -32020 header/_meta mismatch, HTTP 400/404 plain-JSON, notifications
gating, server-context request facts, the test_missing_capability /
test_logging_tool fixtures) are the WIP continuation tracked by this PR.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add the 2026-07-28 subscription datatypes and their schema conformance tests:
SubscriptionFilter, SubscriptionsListenParams/Request, SubscriptionsListenResult,
SubscriptionsAcknowledgedParams and the acknowledged-notification wrapper. Add the
reserved _meta key io.modelcontextprotocol/subscriptionId. Types only — serving is T8.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
)

Add the 2026-07-28 shared metadata:
- new Icon and Annotations types
- icons on Implementation, ToolDefinition, Resource, ResourceTemplate, Prompt, ResourceLink
- annotations and _meta on content blocks (Text/Image/Audio/ResourceContent) and Resource/ResourceTemplate
- Implementation.websiteUrl/description, PromptReference.title, ResourceLink.title/size
- server DSL builders (icons/annotations) on the resource, resource-template and prompt builders
- schema conformance tests for the new fields against the 2026-07-28 schema

All additive (optional, default None) so the 2025-11-25 wire is unchanged. Tool-builder
`.icons(...)` deferred (threads through the multi-step Tool[I,O] chain); ToolDefinition
still carries icons at the protocol level.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
sideeffffect and others added 2 commits September 23, 2026 20:03
…ange

The mdoc client examples/quickstart matched ToolContent.Text with two
patterns; T7 added annotations and _meta. Switch to a type pattern so
the snippets survive further field additions.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add the 2026-07-28 multi-round-trip request types:

- InputRequest / InputResponse enums (sampling, roots, elicitation),
  discriminated by method / structural fields.
- InputRequiredResult carrying pending InputRequests plus requestState
  and the modern result envelope (resultType defaults to incomplete).
- ResultType gains the `incomplete` case.
- ElicitParams becomes an enum with Form and Url variants (mode
  distinguishes them; optional on Form for 2025-11-25 back-compat).
- CallToolParams / GetPromptParams / ReadResourceParams carry
  inputResponses and requestState so clients can resume a paused call.

Schema conformance tests for the new modern defs; client-conformance
elicitation handler updated for the ElicitParams enum.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant