{"openapi":"3.1.0","info":{"title":"Vercel Access (BYOK) API","version":"0.1.0","description":"Vercel Access (BYOK) lets an AI assistant read your own Vercel Access data through the Vercel Access API with a key you supply (access token). Read-only: 5 tools (list_access_groups, get_access_group, list_access_group_members, list_access_group_projects, list_project_members). The BYOK key travels with each request, is used for that one call only and is never stored, logged or cached; it is only...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-vercel-access.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-vercel-access/docs"},"termsOfService":"https://connectorbay.com/byok-vercel-access/terms"},"servers":[{"url":"https://byok-vercel-access.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-vercel-access/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_access_groups":{"post":{"operationId":"list_access_groups","summary":"List a team's access groups with member and project counts, team roles and whether directory sync manages them. Use for ","description":"List a team's access groups with member and project counts, team roles and whether directory sync manages them. Use for \"Which access groups does my Vercel team have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"search":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only access groups whose name contains this text.","title":"Search"},"project_id":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only access groups with access to this project ID (prj_...).","title":"Project Id"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100).","title":"Limit"},"next":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Continuation cursor from pagination.next of the previous answer; leave empty for the first page.","title":"Next"},"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"}},"title":"list_access_groupsArguments","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_access_group":{"post":{"operationId":"get_access_group","summary":"Get one access group: member and project counts, team roles and the team permissions it grants. Use for \"Show Vercel acc","description":"Get one access group: member and project counts, team roles and the team permissions it grants. Use for \"Show Vercel access group frontend\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"access_group":{"description":"Access group ID (ag_...) or name, as returned by list_access_groups.","maxLength":120,"title":"Access Group","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":["access_group"],"title":"get_access_groupArguments","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_access_group_members":{"post":{"operationId":"list_access_group_members","summary":"List the members of an access group with username, team role and when they joined. Names and emails are not returned. Us","description":"List the members of an access group with username, team role and when they joined. Names and emails are not returned. Use for \"Who is in the Vercel access group frontend\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"access_group":{"description":"Access group ID (ag_...) or name, as returned by list_access_groups.","maxLength":120,"title":"Access Group","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100).","title":"Limit"},"next":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Continuation cursor from pagination.next of the previous answer; leave empty for the first page.","title":"Next"},"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":["access_group"],"title":"list_access_group_membersArguments","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_access_group_projects":{"post":{"operationId":"list_access_group_projects","summary":"List the projects an access group can reach with the role it has on each. Use for \"Which Vercel projects can the fronten","description":"List the projects an access group can reach with the role it has on each. Use for \"Which Vercel projects can the frontend access group reach\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"access_group":{"description":"Access group ID (ag_...) or name, as returned by list_access_groups.","maxLength":120,"title":"Access Group","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100).","title":"Limit"},"next":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Continuation cursor from pagination.next of the previous answer; leave empty for the first page.","title":"Next"},"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":["access_group"],"title":"list_access_group_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_project_members":{"post":{"operationId":"list_project_members","summary":"List the members of a Vercel project with username, project role, team role and when they were added. Names and emails a","description":"List the members of a Vercel project with username, project role, team role and when they were added. Names and emails are not returned. Use for \"Who has access to my Vercel project my-site and with which role\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project":{"description":"Vercel project ID (prj_...) or name.","maxLength":100,"title":"Project","type":"string"},"search":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only members whose name, username or email matches this text.","title":"Search"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100).","title":"Limit"},"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"],"title":"list_project_membersArguments","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}}}}