Skip to content

feat(mcp): add access-tier registry - #11

Merged
solomonneas merged 1 commit into
masterfrom
feat/dynamic-tool-tier-registry
Jul 28, 2026
Merged

feat(mcp): add access-tier registry#11
solomonneas merged 1 commit into
masterfrom
feat/dynamic-tool-tier-registry

Conversation

@solomonneas

@solomonneas solomonneas commented Jul 28, 2026

Copy link
Copy Markdown
Collaborator

What changed

  • declare read, safe-write, or destructive access tiers for all 74 Immich MCP tools
  • derive MCP readOnlyHint and destructiveHint annotations from those tiers
  • reject registered/declared tool drift before the server connects its transport
  • test the registry against executor gates parsed from every tool handler

Why

This is Step 2 of the dynamic-tool loading runbook, following the frozen benchmark in #10. The tier map repeats safety facts already enforced by executor gates, so the test derives each tool's maximum tier independently from requireWrites, requireConfirm, inline confirmation guards, and local helper calls.

immich_restore_by_query is classified as destructive because its no-filter path requires confirm: true, even though that check is inline rather than delegated to requireConfirm.

Verification

  • npm test - 25 files and 249 tests passed
  • npm run typecheck - passed
  • npm run build - passed

Co-authored-by: Codex <codex@openai.com>
@solomonneas
solomonneas merged commit 736b7c3 into master Jul 28, 2026
2 checks passed
@solomonneas
solomonneas deleted the feat/dynamic-tool-tier-registry branch July 28, 2026 04:01
@solomonneas solomonneas self-assigned this Jul 28, 2026
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