{"openapi":"3.1.0","info":{"title":"Vercel (BYOK) API","version":"0.1.0","description":"Vercel (BYOK) lets an AI assistant read your own Vercel data through the Vercel API with a key you supply (access token). Read-only: 9 tools (get_user, list_teams, list_projects, list_deployments, get_deployment, list_deployment_aliases, list_domains, get_domain, list_project_domains). The BYOK key travels with each request, is used for that one call only and is never stored, logged or cached; it...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-vercel.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-vercel/docs"},"termsOfService":"https://connectorbay.com/byok-vercel/terms"},"servers":[{"url":"https://byok-vercel.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-vercel/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/get_user":{"post":{"operationId":"get_user","summary":"Show the Vercel account the token belongs to: user ID, username, name, email, default team and creation time. Use for \"W","description":"Show the Vercel account the token belongs to: user ID, username, name, email, default team and creation time. Use for \"Which Vercel account is my token connected to\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_userArguments","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_teams":{"post":{"operationId":"list_teams","summary":"List the Vercel teams the token's user belongs to, with ID, slug, name, creation time and the user's role. Use for \"Whic","description":"List the Vercel teams the token's user belongs to, with ID, slug, name, creation time and the user's role. Use for \"Which Vercel teams am I in\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100).","title":"Limit"},"since":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only items created after this Unix timestamp in milliseconds.","title":"Since"},"until":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only items created before this Unix timestamp in milliseconds.","title":"Until"}},"title":"list_teamsArguments","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_projects":{"post":{"operationId":"list_projects","summary":"List Vercel projects of the account or a team with framework, Node version, linked Git repository and timestamps. Use fo","description":"List Vercel projects of the account or a team with framework, Node version, linked Git repository and timestamps. Use for \"What Vercel projects do I have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"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"},"search":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only projects whose name contains this text.","title":"Search"},"repo":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only projects linked to this Git repository.","title":"Repo"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100).","title":"Limit"}},"title":"list_projectsArguments","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_deployments":{"post":{"operationId":"list_deployments","summary":"List recent Vercel deployments, newest first, filtered by project, environment, state, branch or commit SHA, with URL, s","description":"List recent Vercel deployments, newest first, filtered by project, environment, state, branch or commit SHA, with URL, state, creator and times. Use for \"Did the latest Vercel production deployments succeed\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"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"},"project_id":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only deployments of this project ID or name.","title":"Project Id"},"target":{"anyOf":[{"maxLength":50,"type":"string"},{"type":"null"}],"default":null,"description":"Only deployments to this environment, for example 'production'.","title":"Target"},"state":{"anyOf":[{"enum":["BUILDING","ERROR","INITIALIZING","QUEUED","READY","CANCELED","BLOCKED"],"type":"string"},{"type":"null"}],"default":null,"description":"Only deployments in this state.","title":"State"},"branch":{"anyOf":[{"maxLength":250,"type":"string"},{"type":"null"}],"default":null,"description":"Only deployments of this Git branch.","title":"Branch"},"sha":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Only deployments of this commit SHA.","title":"Sha"},"since":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only items created after this Unix timestamp in milliseconds.","title":"Since"},"until":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only items created before this Unix timestamp in milliseconds.","title":"Until"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100).","title":"Limit"}},"title":"list_deploymentsArguments","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_deployment":{"post":{"operationId":"get_deployment","summary":"Get one Vercel deployment by ID (dpl_...) or hostname: state, target, URL, creation, build and ready times, regions and ","description":"Get one Vercel deployment by ID (dpl_...) or hostname: state, target, URL, creation, build and ready times, regions and error details. Use for \"What is the status of Vercel deployment dpl_89qyp1cskzkLrVicDaZoDbjyHuDJ\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id_or_url":{"description":"Deployment ID such as 'dpl_89qyp1cskzkLrVicDaZoDbjyHuDJ', or its hostname.","maxLength":200,"title":"Id Or Url","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_url"],"title":"get_deploymentArguments","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_deployment_aliases":{"post":{"operationId":"list_deployment_aliases","summary":"List the aliases (custom domains and vercel.app names) assigned to one Vercel deployment. Use for \"Which domains point a","description":"List the aliases (custom domains and vercel.app names) assigned to one Vercel deployment. Use for \"Which domains point at Vercel deployment dpl_89qyp1cskzkLrVicDaZoDbjyHuDJ\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"deployment_id":{"description":"Deployment ID, for example 'dpl_89qyp1cskzkLrVicDaZoDbjyHuDJ'.","maxLength":200,"title":"Deployment 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":["deployment_id"],"title":"list_deployment_aliasesArguments","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_domains":{"post":{"operationId":"list_domains","summary":"List domains registered or added in the Vercel account or team with verification, DNS service type, nameservers and expi","description":"List domains registered or added in the Vercel account or team with verification, DNS service type, nameservers and expiry. Use for \"Which domains do I have on Vercel\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"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"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100).","title":"Limit"},"since":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only items created after this Unix timestamp in milliseconds.","title":"Since"},"until":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only items created before this Unix timestamp in milliseconds.","title":"Until"}},"title":"list_domainsArguments","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_domain":{"post":{"operationId":"get_domain","summary":"Get one Vercel domain: verification status, DNS service type, nameservers, auto-renew flag and purchase and expiry times","description":"Get one Vercel domain: verification status, DNS service type, nameservers, auto-renew flag and purchase and expiry times. Use for \"Is example.com verified on Vercel\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain":{"description":"Domain name, for example 'example.com'.","maxLength":200,"title":"Domain","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":["domain"],"title":"get_domainArguments","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_project_domains":{"post":{"operationId":"list_project_domains","summary":"List the domains attached to one Vercel project with verification status, Git branch, redirect target and timestamps. Us","description":"List the domains attached to one Vercel project with verification status, Git branch, redirect target and timestamps. Use for \"Which domains are attached to my Vercel project\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project":{"description":"Project ID or project name.","maxLength":200,"title":"Project","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"},"production":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to list only production domains.","title":"Production"},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to list only verified domains, false for unverified ones.","title":"Verified"},"order":{"anyOf":[{"enum":["DESC","ASC"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort by creation time.","title":"Order"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100).","title":"Limit"}},"required":["project"],"title":"list_project_domainsArguments","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}}}}