Skip to content

feat: add Tool Resolution extension - #9

Open
SamMorrowDrums wants to merge 1 commit into
mainfrom
sammorrowdrums-tool-resolution-extension
Open

SamMorrowDrums wants to merge 1 commit into
mainfrom
sammorrowdrums-tool-resolution-extension

Conversation

@SamMorrowDrums

Copy link
Copy Markdown
Contributor

Summary

  • adapt SEP-1862 from a proposed core method into the negotiated io.modelcontextprotocol/tool-resolution extension
  • add tools/resolve with per-tool opt-in through namespaced Tool._meta, modern per-request capability negotiation, and legacy initialize compatibility
  • return a dedicated metadata-only result with complete argument-specific ToolAnnotations, while retaining tools/list as the authority for identity and schemas
  • define conservative static fallback, validation, errors, trust boundaries, side-effect prohibition, TOCTOU limits, and no-cache semantics
  • add TypeScript types and reference helpers, generated JSON Schema/type docs, examples, conformance tests, and CI

Review concern addressed

The result deliberately does not return a replacement Tool. This prevents resolution from changing inputSchema, outputSchema, identity, descriptions, titles, or icons after the client has already selected arguments—the major concern raised during SEP-1862 review.

Fallback

Clients that do not negotiate the extension, skip resolution, or encounter a non-argument resolution failure continue using the core tool with its conservative static annotations. Invalid arguments are surfaced and must not be executed unchanged.

Validation

  • npm run check
  • npm run build
  • git diff --check

Adapt SEP-1862 into a negotiated extension with per-tool opt-in,
argument-specific annotation resolution, conservative fallback behavior,
and a metadata-only result that preserves tools/list authority.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.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