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.
VERCEL_TOKEN), track MCP redirect fix in parallel, and stop forcing AuthenticateMcpServer when it returns no_auth_link.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
no_auth_link. Matches community + GH #127 + Grok plugin 649.Amplifier
Team skew
team_Xo6grVYYjwjtGm0gLG59yOos. Multi-connector user-Vercel vs user-Vercel--infrastructor.Why old bots work
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
| Rank | Cause | Confidence | Evidence |
|---|---|---|---|
| 1 | Per-agent / Cloud Agents MCP OAuth broken or stale — Connected + dead refresh; no_auth_link; flips to needsAuth tools=0 | High ~85% ✓ | Symptoms 1–3 · F1 F2 F3 |
| 2 | OAuth grant missing team write / MCP team-scoping bug — list OK; create/deploy/get 403 on team_Xo6… | High ~75% ✓ | Symptoms 4–5 · F5 F10 |
| 3 | No CLI/REST fallback — logged out; no VERCEL_TOKEN (amplifier) | High ~90% amp ✓✓ | Symptom 6 · F8 F12 |
| 4 | Wrong token/user RBAC — Developer w/o Create Project, Viewer, Contributor, or project-scoped token | Medium ~40% ✓ | F6 F7 |
| 5 | Thinner tool catalog — missing deploy/create (likely symptom of degraded auth) | Med-low ~30% ~ | Symptom 3 · F4 |
| 6 | Hobby project limit | Low ~5% ✓ | F11 |
| 7 | Deployment Protection | Very low ✓ | F13 |
Confirmed incident symptoms
This org · operator-verified ✓✓
user-Vercel / user-Vercel--infrastructor even when status showed Connected + 46 tools.force_reauth → no_auth_link.list_projects required teamId; team team_Xo6grVYYjwjtGm0gLG59yOos historically 403 for scope karolisvalickas-5148.vercel whoami → Logged out; no VERCEL_TOKEN on the box.tiesa-assistant-reports live at https://reports.tiesa.tech/.VERCEL_TOKEN so agents do not need the dashboard.Path A — Team / Full Account VERCEL_TOKEN
- 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). - 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.
- Copy once (
vcp_…). Store asVERCEL_TOKEN(+ optionalVERCEL_TEAM_ID=team_Xo6grVYYjwjtGm0gLG59yOos). - Verify on box (expect 200; delete probe after) — copyable blocks below.
- Playbooks: prefer REST/CLI with
VERCEL_TOKENwhen MCP ≠ ready; do not block on MCP auth loops. - Optional: mint narrower project tokens later with
vercel tokens addusing 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
- In cursor.com/agents and each bot’s MCP panel, identify all Vercel servers:
user-Vercel,user-Vercel--infrastructor, etc. - Disconnect / remove grant; in Vercel Account → Sign in with Vercel / connected apps, revoke Cursor/Grok/Vercel MCP authorizations.
- 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.
- 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. - After healthy connect: catalog includes
deploy_to_vercel,list_teams,list_projects;list_teamsshows target; probedeploy_to_vercelwithteamId. - If OAuth “succeeds” but
list_teamsis[]or team calls 403 (F5): Path A remains the unblock.
AuthenticateMcpServer when it returns no_auth_link matches known product breakage and wastes time.Path C + hygiene
Hygiene for future agents
- Standardize one Vercel connector identity per org team; document which account each
user-Vercel--*binds. - Bootstrap for new bots: (1)
VERCEL_TOKENpresent, (2) MCP ready or explicitly optional, (3)teamIdconstant, (4) smokePOST /v11/projects. - Never rely on project OIDC for create-project — OIDC is project-bound.
Vercel-side verify table
| Check | Where | Pass criteria |
|---|---|---|
| Connector account | Browser during MCP consent; Vercel avatar | Same user that owns older working bots’ projects |
| Team role on team_Xo6… | Team Settings → Members | Owner or Member (or Developer + Create Project) |
| Personal vs team slug | Team switcher / Settings | Agents pass teamId/slug for the team, not only personal karolisvalickas-5148 |
| Token scope | Account Tokens list | Team All-Projects or Full Account — not single-project — for create |
| Connected apps / SiwV | Account → Sign in with Vercel / apps | Revoke stale Cursor/Grok grants; note dates vs working old bots |
| MCP tool surface | Agent MCP status | Includes deploy_to_vercel; not tools=0; not Connected-but-auth |
| Project count vs plan | Limits / dashboard | Hobby < 200; unlikely root cause |
| CLI auth on box | vercel whoami, env | Not Logged out; VERCEL_TOKEN set |
| Multi-connector map | Cursor agents MCP list | Document 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
| ID | Claim | Badge | Key URL |
|---|---|---|---|
| F1 | Cursor Cloud Agents OAuth callback often not allowlisted on Vercel MCP | ✓ community + GH open | community 46285 · GH #127 |
| F2 | Grok Bot / Cursor Vercel plugin OAuth known broken (Aug–Sep 2026); retry will not fix until provider-side | ✓ forum | forum 168499 |
| F3 | “Connected” + tools listed ≠ usable authenticated session | ✓ forum | forum 150862 |
| F4 | Official Vercel MCP can create via deploy_to_vercel when healthy | ✓✓ changelog/docs | changelog · tools |
| F5 | MCP OAuth can succeed yet return empty teams / 403 on team projects | ✓ community Sep 2026 | 48813 · 49232 |
| F6 | Create RBAC: Owner/Member yes; Developer needs Create Project; Viewer/Billing/Contributor no | ✓✓ docs | managing projects |
| F7 | Full Account / Team tokens can create; Project-scoped cannot create new projects | ✓✓ docs | access tokens |
| F8 | REST create = POST /v11/projects + Bearer; CLI needs session or --token | ✓✓ docs | create project API |
| F9 | SiwV / generic OAuth resource permissions private beta; OAuth token cannot create is documented gap | ✓ community + docs | 32951 |
| F10 | MCP grants AI same access as Vercel user; wrong browser account on consent = wrong team | ✓✓ docs | Vercel MCP |
| F11 | Project limits unlikely primary failure (Hobby ≤200) | ✓✓ docs | limits |
| F12 | Durable CLI token minting requires classic Full Account token | ✓✓ docs | CLI tokens |
| F13 | Deployment Protection mostly irrelevant to creating projects | ✓ docs | — |
| F14 | Reddit deep-dive blocked from this environment | ~ search titles only | r/mcp · r/FactoryAi |
Key URLs / sources
| Topic | URL | Tier |
|---|---|---|
| Vercel MCP setup | vercel.com/docs/…/vercel-mcp | Official |
| Vercel MCP tools | …/vercel-mcp/tools | Official |
| MCP deploy changelog | changelog deploy code | Official |
| Access tokens / scopes | access-tokens | Official |
| Create project | managing-projects | Official |
| POST create project API | create-a-new-project | Official |
| RBAC + Create Project | extended-permissions | Official |
| CLI project / tokens | cli/project · cli/tokens | Official |
| Limits | limits | Official |
| Cloud Agents OAuth fail | community 46285 | Community |
| Cloud Agents OAuth (GH) | vercel-plugin#127 | GitHub |
| Grok Bot plugin OAuth | forum 168499 | Forum |
| MCP 403 empty teams | community 48813 | Community |
| OAuth cannot create | community 32951 | Community |
| SiwV permissions beta | SiwV scopes | Official |
| Full research notes | sources/vercel-create-project-auth-research.md | Internal |
Gaps — still needed
deploy_to_vercel vs custom create vs CLI).list_teams returns team_Xo6… for working vs failing bots.user-Vercel vs user-Vercel--infrastructor vs Experimenter/MCPator.https://www.cursor.com/agents/mcp/oauth/callback is now allowlisted (open as of 2026-09-19).team_Xo6… (Owner/Member/Developer/…).VERCEL_TOKEN already in their runtime.Recommended Manager decision
CHANGELOG
| Ver | Date | Notes |
|---|---|---|
| 1.0 | 2026-09-25 | First 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/