{"openapi":"3.1.0","info":{"title":"Vercel Aliases DNS and Certs (BYOK) API","version":"0.1.0","description":"Vercel Aliases DNS and Certs (BYOK) lets an AI assistant read your own Vercel Aliases DNS and Certs data through the Vercel Aliases DNS and Certs API with a key you supply (access token). Read-only: 7 tools (list_aliases, get_alias, list_dns_records, get_domain_config, list_project_domains_by_apex, list_certificates, get_certificate). The BYOK key travels with each request, is used for that one...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-vercel-aliases-dns-certs.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-vercel-aliases-dns-certs/docs"},"termsOfService":"https://connectorbay.com/byok-vercel-aliases-dns-certs/terms"},"servers":[{"url":"https://byok-vercel-aliases-dns-certs.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-vercel-aliases-dns-certs/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_aliases":{"post":{"operationId":"list_aliases","summary":"List aliases (hostnames pointing at deployments) with the deployment and project they target and any redirect. Filter by","description":"List aliases (hostnames pointing at deployments) with the deployment and project they target and any redirect. Filter by domain or project. Use for \"Which deployment does www.example.com point to on Vercel\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain":{"anyOf":[{"maxLength":253,"type":"string"},{"type":"null"}],"default":null,"description":"Only aliases of this domain.","title":"Domain"},"project_id":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only aliases of this project (prj_...).","title":"Project Id"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many aliases to return (1 to 100).","title":"Limit"},"since":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only items created after this timestamp in milliseconds.","title":"Since"},"until":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only items created before this timestamp in milliseconds.","title":"Until"},"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_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/get_alias":{"post":{"operationId":"get_alias","summary":"Get one alias by id or hostname: target deployment, project, redirect settings and dates. Use for \"Show the Vercel alias","description":"Get one alias by id or hostname: target deployment, project, redirect settings and dates. Use for \"Show the Vercel alias www.example.com\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id_or_alias":{"description":"Alias id or full hostname.","maxLength":253,"title":"Id Or Alias","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_alias"],"title":"get_aliasArguments","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_dns_records":{"post":{"operationId":"list_dns_records","summary":"List the DNS records of a domain hosted on Vercel DNS with type, name, value, TTL, priority and comment. Use for \"What D","description":"List the DNS records of a domain hosted on Vercel DNS with type, name, value, TTL, priority and comment. Use for \"What DNS records does example.com have on Vercel\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain":{"description":"Domain name, for example 'example.com'.","maxLength":253,"title":"Domain","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many records to return (1 to 100).","title":"Limit"},"since":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only records created after this timestamp in milliseconds.","title":"Since"},"until":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only records created before this timestamp in milliseconds.","title":"Until"},"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":"list_dns_recordsArguments","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_config":{"post":{"operationId":"get_domain_config","summary":"Check how a domain is configured: whether it is misconfigured, how it is set up (A, CNAME, challenge) and the recommende","description":"Check how a domain is configured: whether it is misconfigured, how it is set up (A, CNAME, challenge) and the recommended DNS values. Use for \"Is example.com configured correctly for Vercel\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain":{"description":"Domain name, for example 'example.com'.","maxLength":253,"title":"Domain","type":"string"},"project_id_or_name":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Check against this project (id or name).","title":"Project Id Or Name"},"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_domain_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_project_domains_by_apex":{"post":{"operationId":"list_project_domains_by_apex","summary":"List the project domain assignments of one apex domain: project, verification state, git branch and redirect target. Use","description":"List the project domain assignments of one apex domain: project, verification state, git branch and redirect target. Use for \"Which Vercel projects use example.com\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain":{"description":"Apex domain name, for example 'example.com'.","maxLength":253,"title":"Domain","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many entries 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":["domain"],"title":"list_project_domains_by_apexArguments","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_certificates":{"post":{"operationId":"list_certificates","summary":"List the TLS certificates stored for the account or team with covered names, auto-renew flag and expiry time. Use for \"W","description":"List the TLS certificates stored for the account or team with covered names, auto-renew flag and expiry time. Use for \"When do my Vercel TLS certificates expire\".","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"}},"title":"list_certificatesArguments","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_certificate":{"post":{"operationId":"get_certificate","summary":"Get one TLS certificate's metadata by id: covered names, auto-renew flag, creation and expiry time. The private key is n","description":"Get one TLS certificate's metadata by id: covered names, auto-renew flag, creation and expiry time. The private key is not part of the answer. Use for \"Show details of Vercel certificate cert_1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Certificate id, as returned by list_certificates.","maxLength":100,"title":"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"],"title":"get_certificateArguments","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}}}}