{"openapi":"3.1.0","info":{"title":"Vercel Routing and Releases (BYOK) API","version":"0.1.0","description":"Vercel Routing and Releases (BYOK) lets an AI assistant read your own Vercel Routing and Releases data through the Vercel Routing and Releases API with a key you supply (access token). Read-only: 6 tools (list_route_versions, list_redirect_versions, get_rolling_release, get_rolling_release_config, list_custom_environments, get_custom_environment). The BYOK key travels with each request, is used...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-vercel-routing.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-vercel-routing/docs"},"termsOfService":"https://connectorbay.com/byok-vercel-routing/terms"},"servers":[{"url":"https://byok-vercel-routing.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-vercel-routing/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/list_route_versions":{"post":{"operationId":"list_route_versions","summary":"List the versions of a project's routing rules with id, live and staging flags, rule count, author and last-modified tim","description":"List the versions of a project's routing rules with id, live and staging flags, rule count, author and last-modified time. Use for \"Which routing rule version is live on my Vercel project\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"Vercel project ID (prj_...).","maxLength":100,"title":"Project Id","type":"string"},"team_id":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Team ID (starts with 'team_') to act on behalf of; omit to use the personal account.","title":"Team Id"}},"required":["project_id"],"title":"list_route_versionsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_redirect_versions":{"post":{"operationId":"list_redirect_versions","summary":"List the versions of a project's bulk redirects with id, name, live and staging flags, redirect count and last-modified ","description":"List the versions of a project's bulk redirects with id, name, live and staging flags, redirect count and last-modified time. Use for \"Which bulk redirect version is live\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"Vercel project ID (prj_...).","maxLength":100,"title":"Project Id","type":"string"},"team_id":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Team ID (starts with 'team_') to act on behalf of; omit to use the personal account.","title":"Team Id"}},"required":["project_id"],"title":"list_redirect_versionsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_rolling_release":{"post":{"operationId":"get_rolling_release","summary":"Get the current rolling release of a project: state, canary percentage, advancement type, current stage and start time. ","description":"Get the current rolling release of a project: state, canary percentage, advancement type, current stage and start time. Use for \"Is a rolling release in progress for my project\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id_or_name":{"description":"Vercel project ID (prj_...) or name.","maxLength":100,"title":"Id Or Name","type":"string"},"team_id":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Team ID (starts with 'team_') to act on behalf of; omit to use the personal account.","title":"Team Id"},"state":{"anyOf":[{"enum":["ACTIVE","COMPLETE","ABORTED"],"type":"string"},{"type":"null"}],"default":null,"description":"Only a release in this state.","title":"State"}},"required":["id_or_name"],"title":"get_rolling_releaseArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_rolling_release_config":{"post":{"operationId":"get_rolling_release_config","summary":"Get a project's rolling release settings: target environment, stages, advancement gate and canary header flag. Use for \"","description":"Get a project's rolling release settings: target environment, stages, advancement gate and canary header flag. Use for \"How is rolling release configured for my project\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id_or_name":{"description":"Vercel project ID (prj_...) or name.","maxLength":100,"title":"Id Or Name","type":"string"},"team_id":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Team ID (starts with 'team_') to act on behalf of; omit to use the personal account.","title":"Team Id"}},"required":["id_or_name"],"title":"get_rolling_release_configArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_custom_environments":{"post":{"operationId":"list_custom_environments","summary":"List a project's custom environments with slug, type, description, domains, current aliases and dates. Use for \"Which cu","description":"List a project's custom environments with slug, type, description, domains, current aliases and dates. Use for \"Which custom environments does my Vercel project have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id_or_name":{"description":"Vercel project ID (prj_...) or name.","maxLength":100,"title":"Id Or Name","type":"string"},"team_id":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Team ID (starts with 'team_') to act on behalf of; omit to use the personal account.","title":"Team Id"},"git_branch":{"anyOf":[{"maxLength":250,"type":"string"},{"type":"null"}],"default":null,"description":"Only the environment matching this Git branch.","title":"Git Branch"}},"required":["id_or_name"],"title":"list_custom_environmentsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_custom_environment":{"post":{"operationId":"get_custom_environment","summary":"Get one custom environment of a project. Use for \"What domains does the staging environment use\".","description":"Get one custom environment of a project. Use for \"What domains does the staging environment use\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id_or_name":{"description":"Vercel project ID (prj_...) or name.","maxLength":100,"title":"Id Or Name","type":"string"},"environment_slug_or_id":{"description":"Custom environment slug or ID, as returned by list_custom_environments.","maxLength":100,"title":"Environment Slug Or Id","type":"string"},"team_id":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Team ID (starts with 'team_') to act on behalf of; omit to use the personal account.","title":"Team Id"}},"required":["id_or_name","environment_slug_or_id"],"title":"get_custom_environmentArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}