Skip to content

feat(projects): add typed project tool outputs - #3401

Draft
SamMorrowDrums wants to merge 3 commits into
sammorrowdrums-typed-git-gist-toolsfrom
sammorrowdrums-typed-projects-tools
Draft

SamMorrowDrums wants to merge 3 commits into
sammorrowdrums-typed-git-gist-toolsfrom
sammorrowdrums-typed-projects-tools

Conversation

@SamMorrowDrums

Copy link
Copy Markdown
Collaborator

Summary

Migrates projects_list, projects_get, and projects_write to typed inputs/outputs with structured output exposed only for protocol 2026-07-28.

Why

Next sequential layer of native stack #3385, on parent #3399 (c6acd4d330ecaf4149f98dc3b3e82f74be586af9).
Fixes #

What changed

  • Added typed compatibility inputs that preserve legacy method-specific validation, coercion, and error precedence.
  • Added concrete method-selected output unions/schemas; arbitrary-only fields (value, batch ref, error candidates) are explicitly patched.
  • Kept text output, pagination, feature flags, and OAuth scopes unchanged; legacy/unknown protocols hide output schema and structured content.
  • Added protocol wire tests, schema contract/negative tests, and typed toolsnaps; regenerated README docs.

MCP impact

  • No tool or API changes
  • Tool schema or behavior changed — input schemas gain compatibility fallbacks and modern sessions receive output schemas/structured content; legacy behavior is preserved.
  • New tool added

Prompts tested (tool changes only)

  • Covered by 21 exact wire cases across 2026-07-28, 2025-11-25, empty, and unknown protocols, plus a temporary exact-parent oracle (passed, then removed).

Security / limits

  • No security or limits impact
  • Auth / permissions considered — scopes unchanged.
  • Data exposure, filtering, or token/size limits considered

Tool renaming

  • I am renaming tools as part of this PR (e.g. a part of a consolidation effort)
    • I have added the new tool aliases in deprecated_tool_aliases.go
  • I am not renaming tools as part of this PR

Lint & tests

  • Linted locally with ./script/lint — passed, 0 issues
  • Tested locally with ./script/test — passed

Ordered validation: UPDATE_TOOLSNAPS=true go test ./... passed → script/lint passed → script/test passed → script/generate-docs passed → git diff --check passed.

Docs

  • Not needed
  • Updated (README / docs / examples)

@SamMorrowDrums
SamMorrowDrums force-pushed the sammorrowdrums-typed-projects-tools branch from c8980f3 to 2b1e2ed Compare October 2, 2026 20:50
@SamMorrowDrums
SamMorrowDrums added this pull request to stack #3385 October 2, 2026 20:50
SamMorrowDrums and others added 2 commits October 2, 2026 22:57
Migrate projects_list, projects_get, and projects_write to typed
inputs and protocol-gated structured outputs while preserving legacy
method-specific behavior, text, errors, pagination, and scopes.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Auto-generated by license-check workflow
@SamMorrowDrums
SamMorrowDrums force-pushed the sammorrowdrums-typed-projects-tools branch from 12921e1 to ee91b42 Compare October 2, 2026 20:59
Auto-generated by license-check workflow
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