Skip to content

feat(agents): explicit MCP-tools listing for vercel-preview-auditor + ci-triage-engineer#228

Merged
dackclup merged 1 commit into
mainfrom
claude/eager-bohr-12bQi
May 24, 2026
Merged

feat(agents): explicit MCP-tools listing for vercel-preview-auditor + ci-triage-engineer#228
dackclup merged 1 commit into
mainfrom
claude/eager-bohr-12bQi

Conversation

@dackclup
Copy link
Copy Markdown
Owner

Summary

Surfaced by the post-PR-#225 live-fire of the three new sub-agents on 2026-05-23 (session 4):

  • ⚠️ vercel-preview-auditor returned a clean WAIT (MCP access gap — not a deployment failure) verdict — could not reach Vercel MCP tools at all.
  • ⚠️ ci-triage-engineer worked around the same gap by falling back to git history + the squash-merge commit body (correct fallback discipline) but hit GitHub API rate-limits on the unauthenticated fallback.
  • literature-searcher worked correctly (its tools: already lists WebSearch, WebFetch explicitly — that's why it worked).

Root cause: the Claude Code sub-agent runtime does NOT auto-inherit MCP tools from the parent session. Each sub-agent is restricted to the tools listed in its tools: frontmatter field; MCP tools must be enumerated by full name (mcp__<server>__<tool>). The original two agents both described themselves as MCP-driven but their tools: field only listed Read, Bash, Grep, Glob.

Two-part fix

(a) tools: frontmatter extended on both agents

Agent Added MCP tools
vercel-preview-auditor 7 Vercel MCP (mcp__0addee55-...__*): list_deployments · get_deployment · get_deployment_build_logs · get_runtime_logs · web_fetch_vercel_url · get_project · list_projects
ci-triage-engineer 6 GitHub MCP (mcp__github__*): pull_request_read · list_pull_requests · list_commits · get_commit · search_pull_requests · search_code

(b) Hard-constraint bullets for MCP-access-gap failure mode

Agent New constraint
vercel-preview-auditor If Vercel MCP tools NOT in context → surface as WAIT (MCP access gap — not a deployment failure) + escalate to main agent. Do NOT fabricate deployment status. (Vercel UUID is OAuth-connection-specific → a fresh clone by a different user would have a different UUID + this pinned frontmatter would silently fail to match → escalation path keeps agent useful in that scenario.)
ci-triage-engineer If GitHub MCP unavailable → may fall back to local git history (squash-merge commit body, refs) as primary evidence — but MUST explicitly cite the access gap in the report; never fabricate check-run IDs or log URLs. The fallback is acceptable when local primary evidence is authoritative; not acceptable when the failure mode requires the actual log.

Docs

Files touched

File Δ
.claude/agents/vercel-preview-auditor.md +12 / −1 (frontmatter + hard-constraint)
.claude/agents/ci-triage-engineer.md +13 / −1 (frontmatter + hard-constraint)
CLAUDE.md +50 / −4 (§Gotchas + §Phase status)
AGENTS.md +27 / −2 (§Phase + version state)

Doc-only — no compute / schema / scoring / valuation / frontend / Python / TS production-code change. Tests unchanged. ruff trivially passes.

Test plan

  • Edits made + git diff --stat confirms 4 files / +105 −8
  • No code surface → ruff / schema_check / pytest trivially unaffected
  • Frontend (build) CI green (doc-only)
  • Python (lint + test) CI green (doc-only)
  • Vercel preview deploys green
  • docs-reviewer substance check before flipping to Ready
  • After CI green + reviewer pass → flip Draft → Ready

Verification (post-merge follow-up)

A second live-fire of vercel-preview-auditor after this merges should confirm:

  1. The sub-agent now sees the 7 Vercel MCP tools in its context
  2. list_deployments returns the actual deployment list
  3. The 3-route UA probe completes without escalation

If the UUID 0addee55-c9d7-44a2-b1b2-355b2d3fc4fd does NOT match this Claude installation's actual Vercel MCP server registration, the new hard-constraint will trigger the WAIT escalation — keeping the regression visible.

Out of scope (follow-ups)

  • Pattern-check the other 16 agents for similar MCP-tool gaps (none of them describe themselves as MCP-wrapper agents, but a sweep would catch any that quietly call MCP tools through Bash gh shells)
  • Fix feat(phase-1): universe + prices + momentum stub #3 (_FOOTNOTES_REQUIRED_ATTRS extension) — still needs @network verify
  • W2 (compute-rankings.yml workflow-perm narrowing) + W4 (log-bash.sh scrub) — low-priority deferred security WARNs

https://claude.ai/code/session_01JwntEE4PNAXSMkZxRA9BB4


Generated by Claude Code

… ci-triage-engineer

Surfaced by the post-PR-#225 live-fire of the three new sub-agents
on 2026-05-23 (session 4). vercel-preview-auditor returned a clean
WAIT verdict citing "Vercel MCP not reachable in subagent session" —
a real infrastructure gap, not an agent prompt issue. ci-triage-engineer
worked around the same gap by falling back to git history + the
squash-merge commit body (correct fallback discipline) but hit
GitHub API rate-limits on the unauthenticated fallback path.

Root cause: the Claude Code sub-agent runtime does NOT auto-inherit
MCP tools from the parent session. Each sub-agent is restricted to
the tools listed explicitly in its `tools:` frontmatter field; MCP
tools must be enumerated by full name `mcp__<server>__<tool>`.

Two-part fix:

(a) `.claude/agents/vercel-preview-auditor.md` — `tools:` frontmatter
    extended to list 7 Vercel MCP tools by their UUID-namespaced
    name (`mcp__0addee55-c9d7-44a2-b1b2-355b2d3fc4fd__*`):
    list_deployments / get_deployment / get_deployment_build_logs /
    get_runtime_logs / web_fetch_vercel_url / get_project /
    list_projects. Hard-constraint bullet added: "If Vercel MCP
    tools are NOT in your context, surface as WAIT (MCP access gap)
    and escalate to main; do NOT fabricate deployment status." The
    UUID is OAuth-connection-specific so a fresh clone by a
    different user would have a different UUID and the pinned
    frontmatter would silently fail to match — the escalation path
    keeps the agent useful in that scenario.

(b) `.claude/agents/ci-triage-engineer.md` — `tools:` frontmatter
    extended to list 6 GitHub MCP tools (stable `mcp__github__*`
    namespace): pull_request_read / list_pull_requests / list_commits /
    get_commit / search_pull_requests / search_code. Hard-constraint
    bullet added: "If GitHub MCP unavailable, may fall back to
    local git history as primary evidence (squash-merge commit body,
    refs) — but must explicitly cite the access gap in the report;
    never fabricate check-run IDs or log URLs."

Docs:
- CLAUDE.md §Gotchas — new bullet documenting the sub-agent MCP
  inheritance limitation so future agent authors don't repeat the
  gap; lists the GitHub stable-namespace vs UUID-based connector
  distinction
- CLAUDE.md §Phase status — in-flight entry for this PR + reworded
  2 stale "in flight (this PR)" headers from PR #226 + PR #227 to
  "merged via PR #N" so the §Phase status tracker reflects post-merge
  state
- AGENTS.md §Phase + version state — mirrored in-flight entry + same
  PR #227 stale-header reword

Doc-only PR — no compute / schema / scoring / valuation / frontend /
Python / TS production-code change. Tests unchanged. ruff trivially
passes.

https://claude.ai/code/session_01JwntEE4PNAXSMkZxRA9BB4
@vercel
Copy link
Copy Markdown

vercel Bot commented May 24, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
quantrank Ready Ready Preview, Comment May 24, 2026 2:55am

@dackclup dackclup marked this pull request as ready for review May 24, 2026 02:59
@dackclup dackclup merged commit b5ff8cc into main May 24, 2026
4 checks passed
@dackclup dackclup deleted the claude/eager-bohr-12bQi branch May 24, 2026 03:55
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.

2 participants