Vercel MCP / create-project auth

VERCEL-MCP-AUTH/1.0 · Private · Preferred unblock: Path A · VERCEL_TOKEN · subject: fresh bots cannot create projects
VERCEL-MCP-AUTH/1.0 · 2026-09-25 · Europe/Vilnius
Companion MD: REPORT.md · same edition

Start here

Fresh Grok bots (Infrastructor, Droplet) are stuck in Vercel MCP access/auth loops and cannot create or deploy projects. Older bots (Experimenter, MCPator) historically worked. This brief ranks causes and gives a durable unblock — prefer a Team/Full Account VERCEL_TOKEN over reconnect loops.

Private Recommend: Path A token MCP OAuth flaky team_Xo6… · karolisvalickas-5148 2026-09-25 · Europe/Vilnius
7Confirmed symptoms
~85%Top cause: Cloud/Grok OAuth
3Unblock paths A / B / C
14Findings F1–F14
Decision ask
Approve Path A (issue Team/Full Account token + inject VERCEL_TOKEN), track MCP redirect fix in parallel, and stop forcing AuthenticateMcpServer when it returns no_auth_link.

✓ Path A — VERCEL_TOKEN

Team All-Projects or Full Account token. Smoke POST /v11/projects. Preferred durable fix. ✓✓ recommended

Path B — MCP repair

Disconnect/re-auth only if redirect works. Stop on no_auth_link / invalid redirect. Best-effort until Cursor+Vercel fix.

Path C — Dashboard

Emergency import only (already used for reports.tiesa.tech). Document IDs for later token attach.

Subject line
Fresh bots cannot create Vercel projects — MCP OAuth vs Team token path

Bottom line

Same fact graph as REPORT.md · no invented findings

Cloud Agents / Grok Bot MCP OAuth is broken or incomplete (Connected UI + dead refresh / no_auth_link), often compounded by team-scope 403, while the box has no VERCEL_TOKEN fallback.

Primary failure

Per-agent OAuth: status looks Connected; tool calls demand re-auth; force_reauth yields no_auth_link. Matches community + GH #127 + Grok plugin 649.

Amplifier

No CLI/REST credential on the box. When MCP flaps, agents have zero durable write path.

Team skew

List may work; create/deploy/get 403 on team_Xo6grVYYjwjtGm0gLG59yOos. Multi-connector user-Vercel vs user-Vercel--infrastructor.

Why old bots work

Likely older successful OAuth refresh (or shared connector) minted when redirects/scopes still worked; new bots need a fresh round-trip that fails.
Preferred unblock
Issue Team (All Projects) or Full Account access token → inject VERCEL_TOKEN (+ VERCEL_TEAM_ID) → validate with POST /v11/projects. Treat MCP write as best-effort. Dashboard import remains emergency-only.

Ranked causes

For THIS symptom: new agents fail, old succeed

RankCauseConfidenceEvidence
1Per-agent / Cloud Agents MCP OAuth broken or stale — Connected + dead refresh; no_auth_link; flips to needsAuth tools=0High ~85% ✓Symptoms 1–3 · F1 F2 F3
2OAuth grant missing team write / MCP team-scoping bug — list OK; create/deploy/get 403 on team_Xo6…High ~75% ✓Symptoms 4–5 · F5 F10
3No CLI/REST fallback — logged out; no VERCEL_TOKEN (amplifier)High ~90% amp ✓✓Symptom 6 · F8 F12
4Wrong token/user RBAC — Developer w/o Create Project, Viewer, Contributor, or project-scoped tokenMedium ~40% ✓F6 F7
5Thinner tool catalog — missing deploy/create (likely symptom of degraded auth)Med-low ~30% ~Symptom 3 · F4
6Hobby project limitLow ~5% ✓F11
7Deployment ProtectionVery low ✓F13

Confirmed incident symptoms

This org · operator-verified ✓✓

CallDynamicTool requires authentication for user-Vercel / user-Vercel--infrastructor even when status showed Connected + 46 tools.
AuthenticateMcpServer already authenticated; force_reauth → no_auth_link.
Sessions flip to needsAuth, tools=0; catalog thinner (missing write-ish tools).
list_projects required teamId; team team_Xo6grVYYjwjtGm0gLG59yOos historically 403 for scope karolisvalickas-5148.
Droplet: list OK; create / deploy / get → HTTP 403 team-scope / re-auth.
CLI: vercel whoami → Logged out; no VERCEL_TOKEN on the box.
Workaround that worked (one-off): dashboard import → tiesa-assistant-reports live at https://reports.tiesa.tech/.
Still needed
Durable MCP write grant or team/full-account VERCEL_TOKEN so agents do not need the dashboard.

Path A — Team / Full Account VERCEL_TOKEN

Do this first
Human (Karolis) mints a Team All-Projects or Full Account token for the correct team, injects it into Infrastructor / Droplet / future bots, then smoke-tests create-project.
  1. Open vercel.com/account/tokens signed into the account that is Owner|Member of the target team (team switcher: team for team_Xo6grVYYjwjtGm0gLG59yOos, not personal hobby slug alone).
  2. Create token: prefer that Team (All Projects), or Full Account if agents must touch multiple teams. Not single-project scope if the goal is creating new projects. Expiration e.g. 90d + calendar rotation.
  3. Copy once (vcp_…). Store as VERCEL_TOKEN (+ optional VERCEL_TEAM_ID=team_Xo6grVYYjwjtGm0gLG59yOos).
  4. Verify on box (expect 200; delete probe after) — copyable blocks below.
  5. Playbooks: prefer REST/CLI with VERCEL_TOKEN when MCP ≠ ready; do not block on MCP auth loops.
  6. Optional: mint narrower project tokens later with vercel tokens add using the classic Full Account token.

Smoke — list projects

export VERCEL_TOKEN='…'
export VERCEL_TEAM_ID='team_Xo6grVYYjwjtGm0gLG59yOos'
curl -sS -o /dev/null -w "%{http_code}\n" \
  -H "Authorization: Bearer $VERCEL_TOKEN" \
  "https://api.vercel.com/v10/projects?teamId=$VERCEL_TEAM_ID&limit=1"
# expect 200

Smoke — create project (delete probe after)

curl -sS -H "Authorization: Bearer $VERCEL_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"agent-auth-probe-'$(date +%s)'"}' \
  "https://api.vercel.com/v11/projects?teamId=$VERCEL_TEAM_ID"
# expect 200 with project JSON; delete probe after

CLI checks

vercel whoami --token "$VERCEL_TOKEN"
vercel project add agent-cli-probe --token "$VERCEL_TOKEN" --scope <team-slug>

Path B — Repair MCP write grant

Parallel · may be blocked by Vercel/Cursor until redirect fix ~ / ✓ product defect

  1. In cursor.com/agents and each bot’s MCP panel, identify all Vercel servers: user-Vercel, user-Vercel--infrastructor, etc.
  2. Disconnect / remove grant; in Vercel Account → Sign in with Vercel / connected apps, revoke Cursor/Grok/Vercel MCP authorizations.
  3. Re-auth only while the browser is logged into the correct Vercel user (Owner/Member of target team). Complete consent selecting that team if prompted.
  4. If authorize shows “redirect URL is invalid” or AuthenticateMcpServer returns no_auth_link: stop retrying — known Cloud/Grok OAuth defect (F1/F2). Escalate to Cursor + Vercel MCP; fall back to Path A.
  5. After healthy connect: catalog includes deploy_to_vercel, list_teams, list_projects; list_teams shows target; probe deploy_to_vercel with teamId.
  6. If OAuth “succeeds” but list_teams is [] or team calls 403 (F5): Path A remains the unblock.
Do not burn cycles
Forcing AuthenticateMcpServer when it returns no_auth_link matches known product breakage and wastes time.

Path C + hygiene

Path C — Immediate operational (already proven)
Dashboard import / deploy (as done for https://reports.tiesa.tech/) for urgent ships only. Document project name/IDs so agents can attach via token later. ✓✓

Hygiene for future agents

Vercel-side verify table

CheckWherePass criteria
Connector accountBrowser during MCP consent; Vercel avatarSame user that owns older working bots’ projects
Team role on team_Xo6…Team Settings → MembersOwner or Member (or Developer + Create Project)
Personal vs team slugTeam switcher / SettingsAgents pass teamId/slug for the team, not only personal karolisvalickas-5148
Token scopeAccount Tokens listTeam All-Projects or Full Account — not single-project — for create
Connected apps / SiwVAccount → Sign in with Vercel / appsRevoke stale Cursor/Grok grants; note dates vs working old bots
MCP tool surfaceAgent MCP statusIncludes deploy_to_vercel; not tools=0; not Connected-but-auth
Project count vs planLimits / dashboardHobby < 200; unlikely root cause
CLI auth on boxvercel whoami, envNot Logged out; VERCEL_TOKEN set
Multi-connector mapCursor agents MCP listDocument user-Vercel vs user-Vercel--infrastructor account/team

API smoke (after token)

# List teams for token identity
curl -sS -H "Authorization: Bearer $VERCEL_TOKEN" https://api.vercel.com/v2/teams

# Create (team)
curl -sS -H "Authorization: Bearer $VERCEL_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"probe-…"}' \
  "https://api.vercel.com/v11/projects?teamId=team_Xo6grVYYjwjtGm0gLG59yOos"

Findings F1–F14

Badges: ✓✓ docs/operator · ✓ docs or strong community · ~ community / incomplete

IDClaimBadgeKey URL
F1Cursor Cloud Agents OAuth callback often not allowlisted on Vercel MCP✓ community + GH opencommunity 46285 · GH #127
F2Grok Bot / Cursor Vercel plugin OAuth known broken (Aug–Sep 2026); retry will not fix until provider-side✓ forumforum 168499
F3“Connected” + tools listed ≠ usable authenticated session✓ forumforum 150862
F4Official Vercel MCP can create via deploy_to_vercel when healthy✓✓ changelog/docschangelog · tools
F5MCP OAuth can succeed yet return empty teams / 403 on team projects✓ community Sep 202648813 · 49232
F6Create RBAC: Owner/Member yes; Developer needs Create Project; Viewer/Billing/Contributor no✓✓ docsmanaging projects
F7Full Account / Team tokens can create; Project-scoped cannot create new projects✓✓ docsaccess tokens
F8REST create = POST /v11/projects + Bearer; CLI needs session or --token✓✓ docscreate project API
F9SiwV / generic OAuth resource permissions private beta; OAuth token cannot create is documented gap✓ community + docs32951
F10MCP grants AI same access as Vercel user; wrong browser account on consent = wrong team✓✓ docsVercel MCP
F11Project limits unlikely primary failure (Hobby ≤200)✓✓ docslimits
F12Durable CLI token minting requires classic Full Account token✓✓ docsCLI tokens
F13Deployment Protection mostly irrelevant to creating projects✓ docs—
F14Reddit deep-dive blocked from this environment~ search titles onlyr/mcp · r/FactoryAi

Key URLs / sources

TopicURLTier
Vercel MCP setupvercel.com/docs/…/vercel-mcpOfficial
Vercel MCP tools…/vercel-mcp/toolsOfficial
MCP deploy changelogchangelog deploy codeOfficial
Access tokens / scopesaccess-tokensOfficial
Create projectmanaging-projectsOfficial
POST create project APIcreate-a-new-projectOfficial
RBAC + Create Projectextended-permissionsOfficial
CLI project / tokenscli/project · cli/tokensOfficial
LimitslimitsOfficial
Cloud Agents OAuth failcommunity 46285Community
Cloud Agents OAuth (GH)vercel-plugin#127GitHub
Grok Bot plugin OAuthforum 168499Forum
MCP 403 empty teamscommunity 48813Community
OAuth cannot createcommunity 32951Community
SiwV permissions betaSiwV scopesOfficial
Full research notessources/vercel-create-project-auth-research.mdInternal

Gaps — still needed

Exact JSON bodies for Droplet create/deploy 403 (code/message/action/resource).
Which MCP tools Infrastructor/Droplet actually invoke (deploy_to_vercel vs custom create vs CLI).
Whether list_teams returns team_Xo6… for working vs failing bots.
Account email / user id bound to user-Vercel vs user-Vercel--infrastructor vs Experimenter/MCPator.
Whether Cloud Agents redirect https://www.cursor.com/agents/mcp/oauth/callback is now allowlisted (open as of 2026-09-19).
Team role of Karolis on team_Xo6… (Owner/Member/Developer/…).
Reddit thread bodies (network-blocked here) — optional manual read of r/mcp and r/FactoryAi.
Whether older bots use shared MCP OAuth or a long-lived VERCEL_TOKEN already in their runtime.
Limitations
Research generated live 2026-09-25 from WebSearch/WebFetch/curl. Reddit full text unavailable. Training knowledge not used as evidence.

Recommended Manager decision

1. Immediate — Path A

Issue Team-scoped (All Projects) or Full Account token; inject VERCEL_TOKEN (+ VERCEL_TEAM_ID) into Infrastructor, Droplet, future bots. Validate with POST /v11/projects.

2. Parallel — track OAuth fix

File/track Cursor+Vercel on Cloud Agents / Grok Bot redirect allowlist (cite GH vercel/vercel-plugin#127 and community 46285). MCP write = best-effort until fixed.

3. Stop auth loops

Do not keep forcing AuthenticateMcpServer when it returns no_auth_link.

4. Dashboard = emergency

Keep dashboard import only as emergency (already used for tiesa-assistant-reports).

CHANGELOG

VerDateNotes
1.02026-09-25First twin from live research notes: confirmed Connected-but-auth / no_auth_link / team 403 / no VERCEL_TOKEN; ranked causes; Path A token (preferred) / B MCP repair / C dashboard emergency; Vercel-side verify table; gaps; Manager decision. Author trail: VercelResearcher. Edition VERCEL-MCP-AUTH/1.0.

Companion: REPORT.md (authoritative facts) · sources/vercel-create-project-auth-research.md · live reports.tiesa.tech/…/2026-09-25_vercel-mcp-create-project-auth/