Skip to content

Make ToolsFeature building blocks reusable #1320

Open

Description

@Kehrlann

Context

In #1013, the plan is for Tasks (SEP-2663) to be a feature of its own that replaces ToolsFeature entirely instead of wrapping it (comment).

To do that without copying ToolsFeature, the logic it applies around a tools/call needs to be reusable.

Proposal

Pull the per-call steps out of ToolsFeature so that another feature can build on them:

  • Required client capabilities check (RequiredCapabilities.check)
  • Mcp-Param header validation against the tool's annotations
  • Input validation against inputSchema (returned as an isError tool result)
  • Output validation against outputSchema, and filling in content from structuredContent

ToolsFeature should keep working exactly as it does today, built on top of these pieces.

Out of scope

Activity

  1. added this to the 2.2.0-M3 milestone on Nov 9, 2026
  2. added
    P1Significant bug affecting many users, highly requested feature
    P2Moderate issues affecting some users, edge cases, potentially valuable feature
    modernv3 covering the 2026-07-28 spec
    and removed
    P1Significant bug affecting many users, highly requested feature
    on Nov 9, 2026
  3. neerajbhatt commented on Nov 12, 2026

    @neerajbhatt
    Contributor

    Hi @Kehrlann, I’d be interested in working on #1320. I recently raised a PR for #1317. My proposed scope is to make the capability, Mcp-Param, and input/output schema checks in ToolsFeature reusable, with focused tests to preserve its current behavior. I’d leave the Tasks feature itself out of scope. If that aligns with your plan, could you assign this issue to me?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Moderate issues affecting some users, edge cases, potentially valuable featurearea/servermodernv3 covering the 2026-07-28 spec

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions