Vercel Connect → Builder.io OAuth authorize redirect missing required resource parameter (RFC 8707)
Summary
We’re trying to stand up a Vercel Connect–managed OAuth connector to Builder.io’s MCP server (https://mcp.builder.io/mcp/publish) so an internal AI agent can read and write CMS content. The connector is correctly created and linked to our Vercel project, but the actual OAuth consent flow always dead-ends on Builder.io’s own authorize page with:
Authorization Error resource parameter is required (RFC 8707)
This happens on every attempt, for every user, and blocks the connector from ever being authorized. We believe the redirect Vercel Connect constructs to Builder.io’s /app/oauth/authorize endpoint is missing a resource query parameter that Builder.io’s authorization server requires (RFC 8707 Resource Indicators), and Builder.io’s authorize page is rejecting the request before any login/consent screen is shown.
Environment
-
Connection definition (unmodified from Vercel Connect’s documented Eve integration pattern):
import { connect } from "@vercel/connect/eve"; import { defineMcpClientConnection } from "eve/connections"; export default defineMcpClientConnection({ url: "https://mcp.builder.io/mcp/publish", auth: connect("mcp.builder.io/builder"), // defaults to principalType: "user" // ... });
Setup steps completed (for context)
vercel link— project linked.vercel connect create mcp.builder.io --name builder— connector created.vercel connect attach scl_b8GPrGgPqa9B63gdQrUKfg --yes— succeeded, attached the connector tocontent0for all three environments (production, preview, development). This resolved a separate, earlier error (Connector is not enabled for this environment, HTTP 403) that we were hitting before this step was completed.- Attempting to actually authorize the connector (either by triggering it live through our deployed Slack-based agent, or via
vercel connect token scl_b8GPrGgPqa9B63gdQrUKfg --yesfrom the CLI) redirects to Builder.io’s OAuth authorize page and fails as described below.
Steps to reproduce
-
With the connector created and attached as above, trigger any flow that requires end-user authorization of the
mcp.builder.io/builderconnector (e.g.vercel connect token <connector-id> --yes, or a live user-scoped tool call through the connected agent). -
This redirects the browser to a URL of the form:
https://builder.io/app/oauth/authorize?client_id=5e5e2427-e062-46ad-81ce-4d7cf8fb6607&code_challenge=<PKCE challenge>&code_challenge_method=S256&redirect_uri=https%3A%2F%2Fconnect.vercel.com%2Fcallback&response_type=code&state=<state>Note there is no
resourceparameter in this query string. -
Builder.io’s own app (builder.io’s React/MobX app shell) renders:
Authorization Error resource parameter is required (RFC 8707)
immediately, with no login or consent prompt ever shown. There’s no network/fetch error logged in the browser console for this — Builder.io’s authorize page appears to validate the incoming query parameters client-side (or via an immediate server response) and reject before any further interaction is possible.
Expected behavior
The OAuth authorize redirect should either include whatever resource value Builder.io’s authorization server expects (e.g. the MCP server URL, https://mcp.builder.io/mcp/publish), or Builder.io’s authorize endpoint should not require it for this client. Completing the redirect should reach a normal Builder.io login/consent screen.
Actual behavior
100% reproduction rate across multiple independent attempts, on different dates, from different entry points:
- Interactively through our deployed Slack-based agent (
principalType: "user", the default/documented config). - Directly via
vercel connect token <connector-id> --yesfrom the Vercel CLI (same client_id, different device-code/request-code each time). - Also previously tried switching the connection to
principalType: "app"as a fallback — that path fails differently (Connector is not enabled for this environment, a 403 fromresolveScopedToken), which is a distinct issue from the one described here and appears to be about whether an app-level grant has ever been completed for this connector (blocked on this same authorize-page issue, since app-scoped grants also can’t complete when the initial OAuth handshake itself never completes).
In every user-scoped attempt, the flow reaches Builder.io’s authorize page and stops there with the RFC 8707 error — the OAuth grant can never be established.
Impact
We cannot complete authorization for this connector at all, in any environment (local dev, preview, or production), which blocks our agent from ever writing to Builder.io content through the MCP server. Read-only access to Builder.io content (via separate, non-OAuth API-key-based tools) is unaffected — this only blocks the OAuth-gated write/publish path.
Ask
We’d appreciate help from both sides here, since this is at the boundary between the two products:
- Vercel Connect: please check whether the OAuth authorize request built for the
mcp.builder.io/builderconnector type includes aresourceparameter, and if not, whether one can be added (and what value Builder.io expects).