Vercel MCP · Vercel
Auth requiredAn authentication challenge is availability, not an outage — the endpoint is reachable and answering. Passive observation records the challenge and any OAuth discovery metadata without ever authenticating. OAuth-authenticated contract monitoring is planned.
Recorded auth metadata
{
"httpStatus": 401,
"wwwAuthenticate": "Bearer error=\"invalid_token\", error_description=\"No authorization provided\", resource_metadata=\"https://mcp.vercel.com/.well-known/oauth-protected-resource\"",
"discovery": {
"resource": "https://mcp.vercel.com/",
"authorization_servers": [
"https://vercel.com"
],
"scopes_supported": [
"openid"
]
}
}Availability — last 30 days
Last observed 35 min ago by MCP Tools Edge Scanner · scheduled every 60 min
Raw event details
{
"httpStatus": 401,
"wwwAuthenticate": "Bearer error=\"invalid_token\", error_description=\"No authorization provided\", resource_metadata=\"https://mcp.vercel.com/.well-known/oauth-protected-resource\"",
"discovery": {
"resource": "https://mcp.vercel.com/",
"authorization_servers": [
"https://vercel.com"
],
"scopes_supported": [
"openid"
]
}
}teamId was added at get_access_to_vercel_url.inputSchema.teamId was added at get_access_to_vercel_url.inputSchema.Raw event details
{
"beforeRev": 1,
"afterRev": 2,
"changeCount": 4
}Raw event details
{
"contractHash": "sha256:7eaedd629f7774267c28b2d618686623bc8c93f0d4d1448c42ff95ef9ecf1250"
}Raw event details
{
"result": "not_mcp",
"error": "HTTP 500 with content-type text/html; charset=utf-8 — this does not look like an MCP endpoint."
}Raw event details
{
"httpStatus": 401,
"wwwAuthenticate": "Bearer error=\"invalid_token\", error_description=\"No authorization provided\", resource_metadata=\"https://mcp.vercel.com/.well-known/oauth-protected-resource\"",
"discovery": {
"resource": "https://mcp.vercel.com/",
"authorization_servers": [
"https://vercel.com"
],
"scopes_supported": [
"openid",
"offline_access"
]
}
}Advertised capabilities
Tools 46
search_vercel_documentation
2 params · 1 required
Search the Vercel documentation.
Use this tool to answer any questions about Vercel’s platform, features,…
Search the Vercel documentation. Use this tool to answer any questions about Vercel’s platform, features, and best practices, including: - Core Concepts: Projects, Deployments, Git Integration, Preview Deployments, Environments - Frontend & Frameworks: Next.js, SvelteKit, Nuxt, Astro, Remix, frameworks configuration and optimization - APIs: REST API, Vercel SDK, Build Output API - Compute: Fluid Compute, Functions, Routing Middleware, Cron Jobs, OG Image Generation, Sandbox, Data Cache - AI: Vercel AI SDK, AI Gateway, MCP, v0 - Performance & Delivery: Edge Network, Caching, CDN, Image Optimization, Headers, Redirects, Rewrites - Pricing: Plans, Spend Management, Billing - Security: Audit Logs, Firewall, Bot Management, BotID, OIDC, RBAC, Secure Compute, 2FA - Storage: Blog, Edge Config
Input schema
| Parameter | Type | Description & constraints |
|---|---|---|
| topic* | string | Topic to focus the documentation search on (e.g., 'routing', 'data-fetching'). |
| tokens | number | Maximum number of tokens to include in the result. Default is 2500. default: 2500 |
Raw schema JSON
{
"name": "search_vercel_documentation",
"description": "Search the Vercel documentation.\n \n Use this tool to answer any questions about Vercel’s platform, features, and best practices, including:\n - Core Concepts: Projects, Deployments, Git Integration, Preview Deployments, Environments\n - Frontend & Frameworks: Next.js, SvelteKit, Nuxt, Astro, Remix, frameworks configuration and optimization\n - APIs: REST API, Vercel SDK, Build Output API\n - Compute: Fluid Compute, Functions, Routing Middleware, Cron Jobs, OG Image Generation, Sandbox, Data Cache\n - AI: Vercel AI SDK, AI Gateway, MCP, v0\n - Performance & Delivery: Edge Network, Caching, CDN, Image Optimization, Headers, Redirects, Rewrites\n - Pricing: Plans, Spend Management, Billing\n - Security: Audit Logs, Firewall, Bot Management, BotID, OIDC, RBAC, Secure Compute, 2FA\n - Storage: Blog, Edge Config",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"topic": {
"type": "string",
"description": "Topic to focus the documentation search on (e.g., 39;routing39;, 39;data-fetching39;)."
},
"tokens": {
"default": 2500,
"description": "Maximum number of tokens to include in the result. Default is 2500.",
"type": "number"
}
},
"required": [
"topic"
]
}
}deploy_to_vercel
5 params · 3 required
Deploy a small, simple project from inline file contents only when the Vercel CLI is unavailable and no usable…
Deploy a small, simple project from inline file contents only when the Vercel CLI is unavailable and no usable remote git repository exists, or the user explicitly requests an inline file deployment. Prefer the Vercel CLI for local projects: it reads and uploads files directly without reproducing source as model output. If the intended source is pushed to a repository's production branch, use create_git_project. Do not reconstruct medium or large projects, binary assets, or dependency trees in tool arguments. This remote tool cannot read local paths or attachments: files with actual contents are required. Limits: 300 files, 3 MiB per file, 4 MiB total encoded contents. Creation is asynchronous; poll get_deployment until READY, ERROR, or CANCELED before reporting the build outcome.
Input schema
| Parameter | Type | Description & constraints |
|---|---|---|
| target* | enum(2) | Required. "preview" for a shareable non-production URL, or "production" to go live. one of: "preview", "production" |
| name* | string | Project name. Vercel creates the project if it does not already exist. |
| files* | array<object> | Required non-empty array of source files with their actual contents. A project name or local path alone cannot deploy. Do not include node_modules, .git, .env files, or secrets. Vercel installs dependencies and builds. |
| files[].file* | string | Root-relative POSIX path, e.g. "app/page.tsx". |
| files[].data* | string | File contents: plain text, or base64 when encoding is "base64". |
| files[].encoding | enum(2) | Content encoding. Defaults to "utf-8"; use "base64" for binary files. one of: "utf-8", "base64" |
| teamId | string | The team ID to get the deployment events for. Alternatively the team slug can be used. Team IDs start with "team_". If you do not know the team ID or slug, it can be found through these mechanism: - Read the file .vercel/project.json if it exists and extract the orgId - Use the `list_teams` tool |
| projectSettings | object | Optional build settings. Omit to let Vercel auto-detect the framework. |
| projectSettings.framework | string | null | — |
| projectSettings.buildCommand | string | null | — |
| projectSettings.installCommand | string | null | — |
| projectSettings.outputDirectory | string | null | — |
| projectSettings.rootDirectory | string | null | — |
Raw schema JSON
{
"name": "deploy_to_vercel",
"description": "Deploy a small, simple project from inline file contents only when the Vercel CLI is unavailable and no usable remote git repository exists, or the user explicitly requests an inline file deployment. Prefer the Vercel CLI for local projects: it reads and uploads files directly without reproducing source as model output. If the intended source is pushed to a repository39;s production branch, use create_git_project. Do not reconstruct medium or large projects, binary assets, or dependency trees in tool arguments. This remote tool cannot read local paths or attachments: files with actual contents are required. Limits: 300 files, 3 MiB per file, 4 MiB total encoded contents. Creation is asynchronous; poll get_deployment until READY, ERROR, or CANCELED before reporting the build outcome.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"target": {
"type": "string",
"enum": [
"preview",
"production"
],
"description": "Required. \"preview\" for a shareable non-production URL, or \"production\" to go live."
},
"name": {
"type": "string",
"description": "Project name. Vercel creates the project if it does not already exist."
},
"files": {
"minItems": 1,
"maxItems": 300,
"type": "array",
"items": {
"type": "object",
"properties": {
"file": {
"type": "string",
"description": "Root-relative POSIX path, e.g. \"app/page.tsx\"."
},
"data": {
"type": "string",
"description": "File contents: plain text, or base64 when encoding is \"base64\"."
},
"encoding": {
"description": "Content encoding. Defaults to \"utf-8\"; use \"base64\" for binary files.",
"type": "string",
"enum": [
"utf-8",
"base64"
]
}
},
"required": [
"file",
"data"
]
},
"description": "Required non-empty array of source files with their actual contents. A project name or local path alone cannot deploy. Do not include node_modules, .git, .env files, or secrets. Vercel installs dependencies and builds."
},
"teamId": {
"description": "The team ID to get the deployment events for. Alternatively the team slug can be used.\nTeam IDs start with \"team_\".\nIf you do not know the team ID or slug, it can be found through these mechanism:\n- Read the file .vercel/project.json if it exists and extract the orgId\n- Use the `list_teams` tool",
"type": "string"
},
"projectSettings": {
"description": "Optional build settings. Omit to let Vercel auto-detect the framework.",
"type": "object",
"properties": {
"framework": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"buildCommand": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"installCommand": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"outputDirectory": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"rootDirectory": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
}
}
},
"required": [
"target",
"name",
"files"
]
}
}get_git_deployment_context
0 params
Lists the user's Vercel teams with each team's plan, connected Cursor Origin workspaces, and linked Git projec…
Lists the user's Vercel teams with each team's plan, connected Cursor Origin workspaces, and linked Git projects.
Input schema
No parameters.
Raw schema JSON
{
"name": "get_git_deployment_context",
"description": "Lists the user39;s Vercel teams with each team39;s plan, connected Cursor Origin workspaces, and linked Git projects.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}
}list_projects
1 param · 1 required
List all Vercel projects for a user (with a max of 50). Use this to help discover the Project ID of the projec…
List all Vercel projects for a user (with a max of 50). Use this to help discover the Project ID of the project that the user is working on.
Input schema
| Parameter | Type | Description & constraints |
|---|---|---|
| teamId* | string | The team ID to get the deployment events for. Alternatively the team slug can be used. Team IDs start with "team_". If you do not know the team ID or slug, it can be found through these mechanism: - Read the file .vercel/project.json if it exists and extract the orgId - Use the `list_teams` tool |
Raw schema JSON
{
"name": "list_projects",
"description": "List all Vercel projects for a user (with a max of 50). Use this to help discover the Project ID of the project that the user is working on.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"teamId": {
"type": "string",
"description": "The team ID to get the deployment events for. Alternatively the team slug can be used.\nTeam IDs start with \"team_\".\nIf you do not know the team ID or slug, it can be found through these mechanism:\n- Read the file .vercel/project.json if it exists and extract the orgId\n- Use the `list_teams` tool"
}
},
"required": [
"teamId"
]
}
}get_project
2 params · 2 required
Get a specific project in Vercel
Get a specific project in Vercel
Input schema
| Parameter | Type | Description & constraints |
|---|---|---|
| projectId* | string | The project ID to get the deployment events for. Alternatively the project slug can be used. Project IDs start with "prj_". If you do not know the project ID or slug, it can be found through these mechanism: - Read the file .vercel/project.json if it exists and extract the projectId - Use the `list_projects` tool |
| teamId* | string | The team ID to get the deployment events for. Alternatively the team slug can be used. Team IDs start with "team_". If you do not know the team ID or slug, it can be found through these mechanism: - Read the file .vercel/project.json if it exists and extract the orgId - Use the `list_teams` tool |
Raw schema JSON
{
"name": "get_project",
"description": "Get a specific project in Vercel",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"projectId": {
"type": "string",
"description": "The project ID to get the deployment events for. Alternatively the project slug can be used.\nProject IDs start with \"prj_\".\nIf you do not know the project ID or slug, it can be found through these mechanism:\n- Read the file .vercel/project.json if it exists and extract the projectId\n- Use the `list_projects` tool"
},
"teamId": {
"type": "string",
"description": "The team ID to get the deployment events for. Alternatively the team slug can be used.\nTeam IDs start with \"team_\".\nIf you do not know the team ID or slug, it can be found through these mechanism:\n- Read the file .vercel/project.json if it exists and extract the orgId\n- Use the `list_teams` tool"
}
},
"required": [
"projectId",
"teamId"
]
}
}pause_project
2 params · 2 required
Pause a Vercel project. Its production deployment will stop serving traffic and return 503 DEPLOYMENT_PAUSED u…
Pause a Vercel project. Its production deployment will stop serving traffic and return 503 DEPLOYMENT_PAUSED until the project is unpaused.
Input schema
| Parameter | Type | Description & constraints |
|---|---|---|
| projectId* | string | The project ID to get the deployment events for. Alternatively the project slug can be used. Project IDs start with "prj_". If you do not know the project ID or slug, it can be found through these mechanism: - Read the file .vercel/project.json if it exists and extract the projectId - Use the `list_projects` tool |
| teamId* | string | The team ID to get the deployment events for. Alternatively the team slug can be used. Team IDs start with "team_". If you do not know the team ID or slug, it can be found through these mechanism: - Read the file .vercel/project.json if it exists and extract the orgId - Use the `list_teams` tool |
Raw schema JSON
{
"name": "pause_project",
"description": "Pause a Vercel project. Its production deployment will stop serving traffic and return 503 DEPLOYMENT_PAUSED until the project is unpaused.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"projectId": {
"type": "string",
"description": "The project ID to get the deployment events for. Alternatively the project slug can be used.\nProject IDs start with \"prj_\".\nIf you do not know the project ID or slug, it can be found through these mechanism:\n- Read the file .vercel/project.json if it exists and extract the projectId\n- Use the `list_projects` tool"
},
"teamId": {
"type": "string",
"description": "The team ID to get the deployment events for. Alternatively the team slug can be used.\nTeam IDs start with \"team_\".\nIf you do not know the team ID or slug, it can be found through these mechanism:\n- Read the file .vercel/project.json if it exists and extract the orgId\n- Use the `list_teams` tool"
}
},
"required": [
"projectId",
"teamId"
]
}
}unpause_project
2 params · 2 required
Unpause a Vercel project so its production deployment can resume serving traffic and consuming metered resourc…
Unpause a Vercel project so its production deployment can resume serving traffic and consuming metered resources.
Input schema
| Parameter | Type | Description & constraints |
|---|---|---|
| projectId* | string | The project ID to get the deployment events for. Alternatively the project slug can be used. Project IDs start with "prj_". If you do not know the project ID or slug, it can be found through these mechanism: - Read the file .vercel/project.json if it exists and extract the projectId - Use the `list_projects` tool |
| teamId* | string | The team ID to get the deployment events for. Alternatively the team slug can be used. Team IDs start with "team_". If you do not know the team ID or slug, it can be found through these mechanism: - Read the file .vercel/project.json if it exists and extract the orgId - Use the `list_teams` tool |
Raw schema JSON
{
"name": "unpause_project",
"description": "Unpause a Vercel project so its production deployment can resume serving traffic and consuming metered resources.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"projectId": {
"type": "string",
"description": "The project ID to get the deployment events for. Alternatively the project slug can be used.\nProject IDs start with \"prj_\".\nIf you do not know the project ID or slug, it can be found through these mechanism:\n- Read the file .vercel/project.json if it exists and extract the projectId\n- Use the `list_projects` tool"
},
"teamId": {
"type": "string",
"description": "The team ID to get the deployment events for. Alternatively the team slug can be used.\nTeam IDs start with \"team_\".\nIf you do not know the team ID or slug, it can be found through these mechanism:\n- Read the file .vercel/project.json if it exists and extract the orgId\n- Use the `list_teams` tool"
}
},
"required": [
"projectId",
"teamId"
]
}
}get_project_deployment_protection
2 params · 2 required
Get the effective password protection, Vercel Authentication, and Trusted IP settings for a Vercel project. Pa…
Get the effective password protection, Vercel Authentication, and Trusted IP settings for a Vercel project. Password values are never returned.
Input schema
| Parameter | Type | Description & constraints |
|---|---|---|
| projectId* | string | The project ID to get the deployment events for. Alternatively the project slug can be used. Project IDs start with "prj_". If you do not know the project ID or slug, it can be found through these mechanism: - Read the file .vercel/project.json if it exists and extract the projectId - Use the `list_projects` tool |
| teamId* | string | The team ID to get the deployment events for. Alternatively the team slug can be used. Team IDs start with "team_". If you do not know the team ID or slug, it can be found through these mechanism: - Read the file .vercel/project.json if it exists and extract the orgId - Use the `list_teams` tool |
Raw schema JSON
{
"name": "get_project_deployment_protection",
"description": "Get the effective password protection, Vercel Authentication, and Trusted IP settings for a Vercel project. Password values are never returned.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"projectId": {
"type": "string",
"description": "The project ID to get the deployment events for. Alternatively the project slug can be used.\nProject IDs start with \"prj_\".\nIf you do not know the project ID or slug, it can be found through these mechanism:\n- Read the file .vercel/project.json if it exists and extract the projectId\n- Use the `list_projects` tool"
},
"teamId": {
"type": "string",
"description": "The team ID to get the deployment events for. Alternatively the team slug can be used.\nTeam IDs start with \"team_\".\nIf you do not know the team ID or slug, it can be found through these mechanism:\n- Read the file .vercel/project.json if it exists and extract the orgId\n- Use the `list_teams` tool"
}
},
"required": [
"projectId",
"teamId"
]
}
}update_project_deployment_protection
5 params · 2 required
Partially update password protection, Vercel Authentication, and Trusted IPs for a Vercel project. Omitted set…
Partially update password protection, Vercel Authentication, and Trusted IPs for a Vercel project. Omitted settings are preserved. Availability depends on the Vercel team plan and caller permissions.
Input schema
| Parameter | Type | Description & constraints |
|---|---|---|
| projectId* | string | The project ID to get the deployment events for. Alternatively the project slug can be used. Project IDs start with "prj_". If you do not know the project ID or slug, it can be found through these mechanism: - Read the file .vercel/project.json if it exists and extract the projectId - Use the `list_projects` tool |
| teamId* | string | The team ID to get the deployment events for. Alternatively the team slug can be used. Team IDs start with "team_". If you do not know the team ID or slug, it can be found through these mechanism: - Read the file .vercel/project.json if it exists and extract the orgId - Use the `list_teams` tool |
| passwordProtection | object | object | Enable or disable password protection. Omit to preserve the current setting. |
| ssoProtection | object | object | Enable or disable Vercel Authentication. Omit to preserve the current setting. |
| trustedIps | object | object | Enable or disable Trusted IPs. Omit to preserve the current setting. |
Raw schema JSON
{
"name": "update_project_deployment_protection",
"description": "Partially update password protection, Vercel Authentication, and Trusted IPs for a Vercel project. Omitted settings are preserved. Availability depends on the Vercel team plan and caller permissions.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"projectId": {
"type": "string",
"description": "The project ID to get the deployment events for. Alternatively the project slug can be used.\nProject IDs start with \"prj_\".\nIf you do not know the project ID or slug, it can be found through these mechanism:\n- Read the file .vercel/project.json if it exists and extract the projectId\n- Use the `list_projects` tool"
},
"teamId": {
"type": "string",
"description": "The team ID to get the deployment events for. Alternatively the team slug can be used.\nTeam IDs start with \"team_\".\nIf you do not know the team ID or slug, it can be found through these mechanism:\n- Read the file .vercel/project.json if it exists and extract the orgId\n- Use the `list_teams` tool"
},
"passwordProtection": {
"description": "Enable or disable password protection. Omit to preserve the current setting.",
"oneOf": [
{
"type": "object",
"properties": {
"enabled": {
"type": "boolean",
"const": true
},
"deploymentType": {
"type": "string",
"enum": [
"all",
"preview",
"prod_deployment_urls_and_all_previews"
],
"description": "Where protection applies: all deployments, previews only, or production deployment URLs and all previews."
},
"password": {
"type": "string",
"minLength": 1,
"description": "The new password. This value is write-only and redacted."
}
},
"required": [
"enabled",
"deploymentType",
"password"
]
},
{
"type": "object",
"properties": {
"enabled": {
"type": "boolean",
"const": false
}
},
"required": [
"enabled"
]
}
]
},
"ssoProtection": {
"description": "Enable or disable Vercel Authentication. Omit to preserve the current setting.",
"oneOf": [
{
"type": "object",
"properties": {
"enabled": {
"type": "boolean",
"const": true
},
"deploymentType": {
"type": "string",
"enum": [
"all",
"preview",
"prod_deployment_urls_and_all_previews"
],
"description": "Where protection applies: all deployments, previews only, or production deployment URLs and all previews."
}
},
"required": [
"enabled",
"deploymentType"
]
},
{
"type": "object",
"properties": {
"enabled": {
"type": "boolean",
"const": false
}
},
"required": [
"enabled"
]
}
]
},
"trustedIps": {
"description": "Enable or disable Trusted IPs. Omit to preserve the current setting.",
"oneOf": [
{
"type": "object",
"properties": {
"enabled": {
"type": "boolean",
"const": true
},
"deploymentType": {
"type": "string",
"enum": [
"all",
"preview",
"production",
"prod_deployment_urls_and_all_previews"
],
"description": "Where the Trusted IP allowlist applies."
},
"addresses": {
"minItems": 1,
"type": "array",
"items": {
"type": "object",
"properties": {
"value": {
"type": "string"
},
"note": {
"type": "string"
}
},
"required": [
"value"
]
}
},
"protectionMode": {
"type": "string",
"enum": [
"additional",
"exclusive"
],
"description": "Whether an IP match is required in addition to other protection or can bypass it."
}
},
"required": [
"enabled",
"deploymentType",
"addresses",
"protectionMode"
]
},
{
"type": "object",
"properties": {
"enabled": {
"type": "boolean",
"const": false
}
},
"required": [
"enabled"
]
}
]
}
},
"required": [
"projectId",
"teamId"
]
}
}list_deployments
4 params · 2 required
List all deployments for a project
List all deployments for a project
Input schema
| Parameter | Type | Description & constraints |
|---|---|---|
| projectId* | string | The project ID to list deployments for. |
| teamId* | string | The team ID to list deployments for. |
| since | number | Get deployments created after this timestamp. |
| until | number | Get deployments created before this timestamp. |
Raw schema JSON
{
"name": "list_deployments",
"description": "List all deployments for a project",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"projectId": {
"type": "string",
"description": "The project ID to list deployments for."
},
"teamId": {
"type": "string",
"description": "The team ID to list deployments for."
},
"since": {
"type": "number",
"description": "Get deployments created after this timestamp."
},
"until": {
"type": "number",
"description": "Get deployments created before this timestamp."
}
},
"required": [
"projectId",
"teamId"
]
}
}get_deployment
2 params · 2 required
Get a specific deployment by ID or URL.
Get a specific deployment by ID or URL.
Input schema
| Parameter | Type | Description & constraints |
|---|---|---|
| idOrUrl* | string | The unique identifier or hostname of the deployment. |
| teamId* | string | The team ID to get the deployment events for. Alternatively the team slug can be used. Team IDs start with "team_". If you do not know the team ID or slug, it can be found through these mechanism: - Read the file .vercel/project.json if it exists and extract the orgId - Use the `list_teams` tool |
Raw schema JSON
{
"name": "get_deployment",
"description": "Get a specific deployment by ID or URL.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"idOrUrl": {
"type": "string",
"description": "The unique identifier or hostname of the deployment."
},
"teamId": {
"type": "string",
"description": "The team ID to get the deployment events for. Alternatively the team slug can be used.\nTeam IDs start with \"team_\".\nIf you do not know the team ID or slug, it can be found through these mechanism:\n- Read the file .vercel/project.json if it exists and extract the orgId\n- Use the `list_teams` tool"
}
},
"required": [
"idOrUrl",
"teamId"
]
}
}get_deployment_build_logs
8 params · 2 required
Get the build logs for a deployment by ID or URL, to investigate why a build failed. Returns the most recent l…
Get the build logs for a deployment by ID or URL, to investigate why a build failed. Returns the most recent lines by default (where build errors appear). Use errorsOnly to see just the failing lines. Omit since and until for latest logs; use since to narrow the window and omit until when the end should be the current time.
Input schema
| Parameter | Type | Description & constraints |
|---|---|---|
| idOrUrl* | string | The unique identifier or hostname of the deployment. |
| direction | enum(2) | Which end of the build log to return. "tail" (default) returns the most recent lines, where build errors appear. "head" returns the earliest lines. one of: "tail", "head" · default: "tail" |
| errorsOnly | boolean | Return only error, stderr, exit, and fatal events. default: false |
| limit | number | Maximum number of log lines to return. Defaults is 100. default: 100 |
| since | string | Start of the window as an ISO date or relative lookback from now (e.g. "1h", "30m"). |
| until | string | Optional end of the window as an ISO date, relative lookback, or "now". Omit this when the end should be the current time. |
| buildId | string | Filter to a specific build ID (bld_...) for multi-build deployments. |
| teamId* | string | The team ID to get the deployment events for. Alternatively the team slug can be used. Team IDs start with "team_". If you do not know the team ID or slug, it can be found through these mechanism: - Read the file .vercel/project.json if it exists and extract the orgId - Use the `list_teams` tool |
Raw schema JSON
{
"name": "get_deployment_build_logs",
"description": "Get the build logs for a deployment by ID or URL, to investigate why a build failed. Returns the most recent lines by default (where build errors appear). Use errorsOnly to see just the failing lines. Omit since and until for latest logs; use since to narrow the window and omit until when the end should be the current time.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"idOrUrl": {
"type": "string",
"description": "The unique identifier or hostname of the deployment."
},
"direction": {
"default": "tail",
"description": "Which end of the build log to return. \"tail\" (default) returns the most recent lines, where build errors appear. \"head\" returns the earliest lines.",
"type": "string",
"enum": [
"tail",
"head"
]
},
"errorsOnly": {
"default": false,
"description": "Return only error, stderr, exit, and fatal events.",
"type": "boolean"
},
"limit": {
"default": 100,
"description": "Maximum number of log lines to return. Defaults is 100.",
"type": "number"
},
"since": {
"description": "Start of the window as an ISO date or relative lookback from now (e.g. \"1h\", \"30m\").",
"type": "string"
},
"until": {
"description": "Optional end of the window as an ISO date, relative lookback, or \"now\". Omit this when the end should be the current time.",
"type": "string"
},
"buildId": {
"description": "Filter to a specific build ID (bld_...) for multi-build deployments.",
"type": "string"
},
"teamId": {
"type": "string",
"description": "The team ID to get the deployment events for. Alternatively the team slug can be used.\nTeam IDs start with \"team_\".\nIf you do not know the team ID or slug, it can be found through these mechanism:\n- Read the file .vercel/project.json if it exists and extract the orgId\n- Use the `list_teams` tool"
}
},
"required": [
"idOrUrl",
"teamId"
]
}
}get_runtime_logs
13 params · 2 required
Get runtime logs for a project or deployment. Runtime logs show application output (console.log, errors, etc.)…
Get runtime logs for a project or deployment. Runtime logs show application output (console.log, errors, etc.) from serverless functions and edge functions during execution. Supports filtering by environment, log level, status code, source, time range, and full-text search. For recent windows, pass since like "30m" or "24h" and omit until; until is only needed for historical end times. For wide time ranges, scope to a deploymentId for speed, or use group_by to get counts instead of individual lines. To investigate production errors specifically, prefer get_runtime_errors.
Input schema
| Parameter | Type | Description & constraints |
|---|---|---|
| projectId* | string | The project ID to get runtime logs for. |
| teamId* | string | The team ID to get the deployment events for. Alternatively the team slug can be used. Team IDs start with "team_". If you do not know the team ID or slug, it can be found through these mechanism: - Read the file .vercel/project.json if it exists and extract the orgId - Use the `list_teams` tool |
| deploymentId | string | Filter logs to a specific deployment ID or URL. |
| environment | enum(2) | Filter by environment: "production" or "preview". one of: "production", "preview" |
| level | array<enum(4)> | Filter by log level(s). Can specify multiple levels. |
| statusCode | string | Filter by HTTP status code (e.g., "500", "4xx"). |
| source | array<enum(4)> | Filter by source type(s). Can specify multiple sources. |
| since | string | Start of the window as an ISO date or relative lookback from now (e.g., "1h", "30m", "7d"). Defaults to 24 hours ago. |
| until | string | Optional end of the window as an ISO date, relative lookback, or "now". Omit this when the end should be the current time. |
| limit | number | Maximum number of log entries to return. Defaults to 50, max 100. |
| query | string | Full-text search query to filter logs. |
| requestId | string | Filter by specific request ID. |
| group_by | enum(7) | Return counts grouped by this attribute instead of individual log lines. Use for "how many errors", "status code breakdown", "top paths". Fast even over wide time ranges. one of: "statusCode", "requestPath", "route", "level", "source", "deploymentId", "branch" |
Raw schema JSON
{
"name": "get_runtime_logs",
"description": "Get runtime logs for a project or deployment. Runtime logs show application output (console.log, errors, etc.) from serverless functions and edge functions during execution. Supports filtering by environment, log level, status code, source, time range, and full-text search. For recent windows, pass since like \"30m\" or \"24h\" and omit until; until is only needed for historical end times. For wide time ranges, scope to a deploymentId for speed, or use group_by to get counts instead of individual lines. To investigate production errors specifically, prefer get_runtime_errors.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"projectId": {
"type": "string",
"description": "The project ID to get runtime logs for."
},
"teamId": {
"type": "string",
"description": "The team ID to get the deployment events for. Alternatively the team slug can be used.\nTeam IDs start with \"team_\".\nIf you do not know the team ID or slug, it can be found through these mechanism:\n- Read the file .vercel/project.json if it exists and extract the orgId\n- Use the `list_teams` tool"
},
"deploymentId": {
"description": "Filter logs to a specific deployment ID or URL.",
"type": "string"
},
"environment": {
"description": "Filter by environment: \"production\" or \"preview\".",
"type": "string",
"enum": [
"production",
"preview"
]
},
"level": {
"description": "Filter by log level(s). Can specify multiple levels.",
"type": "array",
"items": {
"type": "string",
"enum": [
"error",
"warning",
"info",
"fatal"
]
}
},
"statusCode": {
"description": "Filter by HTTP status code (e.g., \"500\", \"4xx\").",
"type": "string"
},
"source": {
"description": "Filter by source type(s). Can specify multiple sources.",
"type": "array",
"items": {
"type": "string",
"enum": [
"serverless",
"edge-function",
"edge-middleware",
"static"
]
}
},
"since": {
"description": "Start of the window as an ISO date or relative lookback from now (e.g., \"1h\", \"30m\", \"7d\"). Defaults to 24 hours ago.",
"type": "string"
},
"until": {
"description": "Optional end of the window as an ISO date, relative lookback, or \"now\". Omit this when the end should be the current time.",
"type": "string"
},
"limit": {
"description": "Maximum number of log entries to return. Defaults to 50, max 100.",
"type": "number"
},
"query": {
"description": "Full-text search query to filter logs.",
"type": "string"
},
"requestId": {
"description": "Filter by specific request ID.",
"type": "string"
},
"group_by": {
"description": "Return counts grouped by this attribute instead of individual log lines. Use for \"how many errors\", \"status code breakdown\", \"top paths\". Fast even over wide time ranges.",
"type": "string",
"enum": [
"statusCode",
"requestPath",
"route",
"level",
"source",
"deploymentId",
"branch"
]
}
},
"required": [
"projectId",
"teamId"
]
}
}get_runtime_errors
5 params · 2 required
Get grouped runtime error clusters for a project (error name, occurrence count, affected routes, sample messag…
Get grouped runtime error clusters for a project (error name, occurrence count, affected routes, sample messages, first/last seen). Use this first to answer "why is production erroring" — it reads a pre-aggregated table and does not time out. For recent windows, pass since like "24h" or "7d" and omit until; until is only needed for historical end times. Max 7-day range.
Input schema
| Parameter | Type | Description & constraints |
|---|---|---|
| projectId* | string | The project ID to get runtime errors for. |
| teamId* | string | The team ID to get the deployment events for. Alternatively the team slug can be used. Team IDs start with "team_". If you do not know the team ID or slug, it can be found through these mechanism: - Read the file .vercel/project.json if it exists and extract the orgId - Use the `list_teams` tool |
| since | string | Start of the window as an ISO date or relative lookback from now (e.g. "1h", "24h", "7d"). Defaults to 24h ago; max lookback is 7d. |
| until | string | Optional end of the window as an ISO date, relative lookback, or "now". Omit this when the end should be the current time. |
| routes | string | Comma-separated route paths to filter by (e.g. "/api/checkout"). |
Raw schema JSON
{
"name": "get_runtime_errors",
"description": "Get grouped runtime error clusters for a project (error name, occurrence count, affected routes, sample messages, first/last seen). Use this first to answer \"why is production erroring\" — it reads a pre-aggregated table and does not time out. For recent windows, pass since like \"24h\" or \"7d\" and omit until; until is only needed for historical end times. Max 7-day range.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"projectId": {
"type": "string",
"description": "The project ID to get runtime errors for."
},
"teamId": {
"type": "string",
"description": "The team ID to get the deployment events for. Alternatively the team slug can be used.\nTeam IDs start with \"team_\".\nIf you do not know the team ID or slug, it can be found through these mechanism:\n- Read the file .vercel/project.json if it exists and extract the orgId\n- Use the `list_teams` tool"
},
"since": {
"description": "Start of the window as an ISO date or relative lookback from now (e.g. \"1h\", \"24h\", \"7d\"). Defaults to 24h ago; max lookback is 7d.",
"type": "string"
},
"until": {
"description": "Optional end of the window as an ISO date, relative lookback, or \"now\". Omit this when the end should be the current time.",
"type": "string"
},
"routes": {
"description": "Comma-separated route paths to filter by (e.g. \"/api/checkout\").",
"type": "string"
}
},
"required": [
"projectId",
"teamId"
]
}
}list_agent_run_projects
5 params · 1 required
List projects in a Vercel team that have Agent Runs observability data for agents built with the eve framework…
List projects in a Vercel team that have Agent Runs observability data for agents built with the eve framework, with run counts and average duration rollups. Use this to discover which projects have eve agent activity before drilling into a project.
Input schema
| Parameter | Type | Description & constraints |
|---|---|---|
| teamId* | string | The team ID to get the deployment events for. Alternatively the team slug can be used. Team IDs start with "team_". If you do not know the team ID or slug, it can be found through these mechanism: - Read the file .vercel/project.json if it exists and extract the orgId - Use the `list_teams` tool |
| environment | string | Agent run environment, usually "production" or "preview". Defaults to "production". |
| period | enum(11) | Preset time range. Ignored when both from and to are provided. Defaults to the dashboard endpoint default. one of: "5m", "15m", "1h", "6h", "12h", "1d", "3d", "7d", … |
| from | string | Start time as ISO 8601, Unix seconds, Unix milliseconds, or a relative duration like "12h". Must be used with to. |
| to | string | End time as ISO 8601, Unix seconds, Unix milliseconds, a relative duration like "1h", or "now". Must be used with from. |
Raw schema JSON
{
"name": "list_agent_run_projects",
"description": "List projects in a Vercel team that have Agent Runs observability data for agents built with the eve framework, with run counts and average duration rollups. Use this to discover which projects have eve agent activity before drilling into a project.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"teamId": {
"type": "string",
"description": "The team ID to get the deployment events for. Alternatively the team slug can be used.\nTeam IDs start with \"team_\".\nIf you do not know the team ID or slug, it can be found through these mechanism:\n- Read the file .vercel/project.json if it exists and extract the orgId\n- Use the `list_teams` tool"
},
"environment": {
"description": "Agent run environment, usually \"production\" or \"preview\". Defaults to \"production\".",
"type": "string"
},
"period": {
"description": "Preset time range. Ignored when both from and to are provided. Defaults to the dashboard endpoint default.",
"type": "string",
"enum": [
"5m",
"15m",
"1h",
"6h",
"12h",
"1d",
"3d",
"7d",
"14d",
"30d",
"90d"
]
},
"from": {
"description": "Start time as ISO 8601, Unix seconds, Unix milliseconds, or a relative duration like \"12h\". Must be used with to.",
"type": "string"
},
"to": {
"description": "End time as ISO 8601, Unix seconds, Unix milliseconds, a relative duration like \"1h\", or \"now\". Must be used with from.",
"type": "string"
}
},
"required": [
"teamId"
]
}
}list_agent_runs
9 params · 2 required
List Agent Runs for a Vercel project. Agent Runs are the observability layer for agents built with the eve fra…
List Agent Runs for a Vercel project. Agent Runs are the observability layer for agents built with the eve framework. The response includes summaries, status, model, trigger, token usage, time series, and pagination metadata. Use this to find recent or matching production eve agent runs before fetching detail or trace data.
Input schema
| Parameter | Type | Description & constraints |
|---|---|---|
| teamId* | string | The team ID to get the deployment events for. Alternatively the team slug can be used. Team IDs start with "team_". If you do not know the team ID or slug, it can be found through these mechanism: - Read the file .vercel/project.json if it exists and extract the orgId - Use the `list_teams` tool |
| projectId* | string | The project ID to get the deployment events for. Alternatively the project slug can be used. Project IDs start with "prj_". If you do not know the project ID or slug, it can be found through these mechanism: - Read the file .vercel/project.json if it exists and extract the projectId - Use the `list_projects` tool |
| environment | string | Agent run environment, usually "production" or "preview". Defaults to "production". |
| period | enum(11) | Preset time range. Ignored when both from and to are provided. Defaults to the dashboard endpoint default. one of: "5m", "15m", "1h", "6h", "12h", "1d", "3d", "7d", … |
| from | string | Start time as ISO 8601, Unix seconds, Unix milliseconds, or a relative duration like "12h". Must be used with to. |
| to | string | End time as ISO 8601, Unix seconds, Unix milliseconds, a relative duration like "1h", or "now". Must be used with from. |
| page | number | 1-based page number. Defaults to 1. |
| pageSize | number | Number of runs per page. The dashboard endpoint caps this at 100. |
| search | string | Server-side title search for Agent Runs. |
Raw schema JSON
{
"name": "list_agent_runs",
"description": "List Agent Runs for a Vercel project. Agent Runs are the observability layer for agents built with the eve framework. The response includes summaries, status, model, trigger, token usage, time series, and pagination metadata. Use this to find recent or matching production eve agent runs before fetching detail or trace data.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"teamId": {
"type": "string",
"description": "The team ID to get the deployment events for. Alternatively the team slug can be used.\nTeam IDs start with \"team_\".\nIf you do not know the team ID or slug, it can be found through these mechanism:\n- Read the file .vercel/project.json if it exists and extract the orgId\n- Use the `list_teams` tool"
},
"projectId": {
"type": "string",
"description": "The project ID to get the deployment events for. Alternatively the project slug can be used.\nProject IDs start with \"prj_\".\nIf you do not know the project ID or slug, it can be found through these mechanism:\n- Read the file .vercel/project.json if it exists and extract the projectId\n- Use the `list_projects` tool"
},
"environment": {
"description": "Agent run environment, usually \"production\" or \"preview\". Defaults to \"production\".",
"type": "string"
},
"period": {
"description": "Preset time range. Ignored when both from and to are provided. Defaults to the dashboard endpoint default.",
"type": "string",
"enum": [
"5m",
"15m",
"1h",
"6h",
"12h",
"1d",
"3d",
"7d",
"14d",
"30d",
"90d"
]
},
"from": {
"description": "Start time as ISO 8601, Unix seconds, Unix milliseconds, or a relative duration like \"12h\". Must be used with to.",
"type": "string"
},
"to": {
"description": "End time as ISO 8601, Unix seconds, Unix milliseconds, a relative duration like \"1h\", or \"now\". Must be used with from.",
"type": "string"
},
"page": {
"description": "1-based page number. Defaults to 1.",
"type": "number"
},
"pageSize": {
"description": "Number of runs per page. The dashboard endpoint caps this at 100.",
"type": "number"
},
"search": {
"description": "Server-side title search for Agent Runs.",
"type": "string"
}
},
"required": [
"teamId",
"projectId"
]
}
}get_agent_run
7 params · 3 required
Get detailed metadata for a single Agent Run from an eve agent, including events, workflow metadata, usage, an…
Get detailed metadata for a single Agent Run from an eve agent, including events, workflow metadata, usage, and subagent breakout data. Use list_agent_runs first if you need to discover a run ID.
Input schema
| Parameter | Type | Description & constraints |
|---|---|---|
| teamId* | string | The team ID to get the deployment events for. Alternatively the team slug can be used. Team IDs start with "team_". If you do not know the team ID or slug, it can be found through these mechanism: - Read the file .vercel/project.json if it exists and extract the orgId - Use the `list_teams` tool |
| projectId* | string | The project ID to get the deployment events for. Alternatively the project slug can be used. Project IDs start with "prj_". If you do not know the project ID or slug, it can be found through these mechanism: - Read the file .vercel/project.json if it exists and extract the projectId - Use the `list_projects` tool |
| runId* | string | The Agent Run ID to inspect. |
| environment | string | Agent run environment, usually "production" or "preview". Defaults to "production". |
| period | enum(11) | Preset time range. Ignored when both from and to are provided. Defaults to the dashboard endpoint default. one of: "5m", "15m", "1h", "6h", "12h", "1d", "3d", "7d", … |
| from | string | Start time as ISO 8601, Unix seconds, Unix milliseconds, or a relative duration like "12h". Must be used with to. |
| to | string | End time as ISO 8601, Unix seconds, Unix milliseconds, a relative duration like "1h", or "now". Must be used with from. |
Raw schema JSON
{
"name": "get_agent_run",
"description": "Get detailed metadata for a single Agent Run from an eve agent, including events, workflow metadata, usage, and subagent breakout data. Use list_agent_runs first if you need to discover a run ID.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"teamId": {
"type": "string",
"description": "The team ID to get the deployment events for. Alternatively the team slug can be used.\nTeam IDs start with \"team_\".\nIf you do not know the team ID or slug, it can be found through these mechanism:\n- Read the file .vercel/project.json if it exists and extract the orgId\n- Use the `list_teams` tool"
},
"projectId": {
"type": "string",
"description": "The project ID to get the deployment events for. Alternatively the project slug can be used.\nProject IDs start with \"prj_\".\nIf you do not know the project ID or slug, it can be found through these mechanism:\n- Read the file .vercel/project.json if it exists and extract the projectId\n- Use the `list_projects` tool"
},
"runId": {
"type": "string",
"description": "The Agent Run ID to inspect."
},
"environment": {
"description": "Agent run environment, usually \"production\" or \"preview\". Defaults to \"production\".",
"type": "string"
},
"period": {
"description": "Preset time range. Ignored when both from and to are provided. Defaults to the dashboard endpoint default.",
"type": "string",
"enum": [
"5m",
"15m",
"1h",
"6h",
"12h",
"1d",
"3d",
"7d",
"14d",
"30d",
"90d"
]
},
"from": {
"description": "Start time as ISO 8601, Unix seconds, Unix milliseconds, or a relative duration like \"12h\". Must be used with to.",
"type": "string"
},
"to": {
"description": "End time as ISO 8601, Unix seconds, Unix milliseconds, a relative duration like \"1h\", or \"now\". Must be used with from.",
"type": "string"
}
},
"required": [
"teamId",
"projectId",
"runId"
]
}
}get_agent_run_trace
11 params · 3 required
Get one page of the trace for a single Agent Run from an eve agent, including turns, messages, reasoning, tool…
Get one page of the trace for a single Agent Run from an eve agent, including turns, messages, reasoning, tool calls, token usage, and tool input/output when available. To read all available turns, follow the trace payload’s later cursor until absent; use earlier to read backwards. Pages can overlap: deduplicate turns by ID, keeping the more complete turn. Use maxFieldLength: 0 to preserve full string content.
Input schema
| Parameter | Type | Description & constraints |
|---|---|---|
| teamId* | string | The team ID to get the deployment events for. Alternatively the team slug can be used. Team IDs start with "team_". If you do not know the team ID or slug, it can be found through these mechanism: - Read the file .vercel/project.json if it exists and extract the orgId - Use the `list_teams` tool |
| projectId* | string | The project ID to get the deployment events for. Alternatively the project slug can be used. Project IDs start with "prj_". If you do not know the project ID or slug, it can be found through these mechanism: - Read the file .vercel/project.json if it exists and extract the projectId - Use the `list_projects` tool |
| runId* | string | The Agent Run ID to inspect. |
| environment | string | Agent run environment, usually "production" or "preview". Defaults to "production". |
| period | enum(11) | Preset time range. Ignored when both from and to are provided. Defaults to the dashboard endpoint default. one of: "5m", "15m", "1h", "6h", "12h", "1d", "3d", "7d", … |
| from | string | Start time as ISO 8601, Unix seconds, Unix milliseconds, or a relative duration like "12h". Must be used with to. |
| to | string | End time as ISO 8601, Unix seconds, Unix milliseconds, a relative duration like "1h", or "now". Must be used with from. |
| maxFieldLength | number | Maximum length for individual string fields in the returned trace. Defaults to 8000; use 0 to disable truncation. |
| traceStreamId | string | Copy streamId from the trace payload’s later or earlier object. Requires exactly one pagination cursor. minLen: 1 |
| traceAfterCursor | string | Copy cursor from later to fetch the next page, with its traceStreamId. minLen: 1 |
| traceBeforeChunk | integer | Copy beforeChunk from earlier to fetch the previous page, with its traceStreamId. max: 9007199254740991 |
Raw schema JSON
{
"name": "get_agent_run_trace",
"description": "Get one page of the trace for a single Agent Run from an eve agent, including turns, messages, reasoning, tool calls, token usage, and tool input/output when available. To read all available turns, follow the trace payload’s later cursor until absent; use earlier to read backwards. Pages can overlap: deduplicate turns by ID, keeping the more complete turn. Use maxFieldLength: 0 to preserve full string content.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"teamId": {
"type": "string",
"description": "The team ID to get the deployment events for. Alternatively the team slug can be used.\nTeam IDs start with \"team_\".\nIf you do not know the team ID or slug, it can be found through these mechanism:\n- Read the file .vercel/project.json if it exists and extract the orgId\n- Use the `list_teams` tool"
},
"projectId": {
"type": "string",
"description": "The project ID to get the deployment events for. Alternatively the project slug can be used.\nProject IDs start with \"prj_\".\nIf you do not know the project ID or slug, it can be found through these mechanism:\n- Read the file .vercel/project.json if it exists and extract the projectId\n- Use the `list_projects` tool"
},
"runId": {
"type": "string",
"description": "The Agent Run ID to inspect."
},
"environment": {
"description": "Agent run environment, usually \"production\" or \"preview\". Defaults to \"production\".",
"type": "string"
},
"period": {
"description": "Preset time range. Ignored when both from and to are provided. Defaults to the dashboard endpoint default.",
"type": "string",
"enum": [
"5m",
"15m",
"1h",
"6h",
"12h",
"1d",
"3d",
"7d",
"14d",
"30d",
"90d"
]
},
"from": {
"description": "Start time as ISO 8601, Unix seconds, Unix milliseconds, or a relative duration like \"12h\". Must be used with to.",
"type": "string"
},
"to": {
"description": "End time as ISO 8601, Unix seconds, Unix milliseconds, a relative duration like \"1h\", or \"now\". Must be used with from.",
"type": "string"
},
"maxFieldLength": {
"description": "Maximum length for individual string fields in the returned trace. Defaults to 8000; use 0 to disable truncation.",
"type": "number"
},
"traceStreamId": {
"description": "Copy streamId from the trace payload’s later or earlier object. Requires exactly one pagination cursor.",
"type": "string",
"minLength": 1
},
"traceAfterCursor": {
"description": "Copy cursor from later to fetch the next page, with its traceStreamId.",
"type": "string",
"minLength": 1
},
"traceBeforeChunk": {
"description": "Copy beforeChunk from earlier to fetch the previous page, with its traceStreamId.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"teamId",
"projectId",
"runId"
]
}
}get_web_analytics
9 params · 1 required
Query Web Analytics for a Vercel project. Count mode returns total visitors and pageviews (or custom event cou…
Query Web Analytics for a Vercel project. Count mode returns total visitors and pageviews (or custom event count). Aggregate mode groups results over time or by dimensions such as route, requestPath, country, referrerHostname, deviceType, browserName, eventName, flags/<name>, or eventData/<property>. Web Analytics must be enabled for the project.
Input schema
| Parameter | Type | Description & constraints |
|---|---|---|
| teamId | string | The team ID to get the deployment events for. Alternatively the team slug can be used. Team IDs start with "team_". If you do not know the team ID or slug, it can be found through these mechanism: - Read the file .vercel/project.json if it exists and extract the orgId - Use the `list_teams` tool |
| projectId* | string | The project ID to get the deployment events for. Alternatively the project slug can be used. Project IDs start with "prj_". If you do not know the project ID or slug, it can be found through these mechanism: - Read the file .vercel/project.json if it exists and extract the projectId - Use the `list_projects` tool |
| dataset | enum(2) | Data to query: visits for automatically tracked pageviews, or events for custom events sent with track(). Defaults to visits. one of: "visits", "events" |
| mode | enum(2) | Count returns one total. Aggregate returns rows grouped by one or two by dimensions and requires since, until, and by. Defaults to count. one of: "count", "aggregate" |
| since | string | number | Start or end of the date range as a date string, ISO 8601 timestamp, or Unix timestamp in milliseconds. Since and until must be provided together. |
| until | string | number | Start or end of the date range as a date string, ISO 8601 timestamp, or Unix timestamp in milliseconds. Since and until must be provided together. |
| by | array<string> | One or two dimensions for aggregate mode. Time dimensions: hour, day, week, month, year. Other common dimensions: country, deviceType, environment, requestPath, referrerHostname, osName, browserName, route, UTM fields, eventName, flags/<name>, and eventData/<property>. |
| filter | string | OData filter expression, for example requestPath eq '/pricing' and country eq 'US', eventName eq 'signup', or eventData/plan eq 'pro'. |
| limit | integer | Maximum distinct results in aggregate mode. Remaining values are grouped into Others. Defaults to 10. min: 1 · max: 100 |
Raw schema JSON
{
"name": "get_web_analytics",
"description": "Query Web Analytics for a Vercel project. Count mode returns total visitors and pageviews (or custom event count). Aggregate mode groups results over time or by dimensions such as route, requestPath, country, referrerHostname, deviceType, browserName, eventName, flags/<name>, or eventData/<property>. Web Analytics must be enabled for the project.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"teamId": {
"description": "The team ID to get the deployment events for. Alternatively the team slug can be used.\nTeam IDs start with \"team_\".\nIf you do not know the team ID or slug, it can be found through these mechanism:\n- Read the file .vercel/project.json if it exists and extract the orgId\n- Use the `list_teams` tool",
"type": "string"
},
"projectId": {
"type": "string",
"description": "The project ID to get the deployment events for. Alternatively the project slug can be used.\nProject IDs start with \"prj_\".\nIf you do not know the project ID or slug, it can be found through these mechanism:\n- Read the file .vercel/project.json if it exists and extract the projectId\n- Use the `list_projects` tool"
},
"dataset": {
"description": "Data to query: visits for automatically tracked pageviews, or events for custom events sent with track(). Defaults to visits.",
"type": "string",
"enum": [
"visits",
"events"
]
},
"mode": {
"description": "Count returns one total. Aggregate returns rows grouped by one or two by dimensions and requires since, until, and by. Defaults to count.",
"type": "string",
"enum": [
"count",
"aggregate"
]
},
"since": {
"description": "Start or end of the date range as a date string, ISO 8601 timestamp, or Unix timestamp in milliseconds. Since and until must be provided together.",
"anyOf": [
{
"type": "string"
},
{
"type": "number"
}
]
},
"until": {
"description": "Start or end of the date range as a date string, ISO 8601 timestamp, or Unix timestamp in milliseconds. Since and until must be provided together.",
"anyOf": [
{
"type": "string"
},
{
"type": "number"
}
]
},
"by": {
"description": "One or two dimensions for aggregate mode. Time dimensions: hour, day, week, month, year. Other common dimensions: country, deviceType, environment, requestPath, referrerHostname, osName, browserName, route, UTM fields, eventName, flags/<name>, and eventData/<property>.",
"minItems": 1,
"maxItems": 2,
"type": "array",
"items": {
"type": "string"
}
},
"filter": {
"description": "OData filter expression, for example requestPath eq 39;/pricing39; and country eq 39;US39;, eventName eq 39;signup39;, or eventData/plan eq 39;pro39;.",
"type": "string"
},
"limit": {
"description": "Maximum distinct results in aggregate mode. Remaining values are grouped into Others. Defaults to 10.",
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"required": [
"projectId"
]
}
}get_access_to_vercel_url
2 params · 1 required
Creates a temporary shareable link that bypasses authentication for protected Vercel deployments.
When you …
Creates a temporary shareable link that bypasses authentication for protected Vercel deployments. When you encounter a Vercel deployment URL (like https://myapp-abc123.vercel.app), you might receive a 403 (Forbidden) error when trying to access it. This tool generates a special URL with a '_vercel_share' parameter that allows temporary access without requiring login credentials. The shareable URL will expire in 23 hours. When you use the returned URL, that URL will redirect and set an auth cookie. If your fetch implementation does not support cookies, use the 'web_fetch_vercel_url' tool instead.
Input schema
| Parameter | Type | Description & constraints |
|---|---|---|
| teamId | string | The team ID or slug that owns the deployment. Provide this for team deployments so the lookup uses the correct scope. Use list_teams if unknown. |
| url* | string | The full URL of the Vercel deployment (e.g. "https://myapp.vercel.app"). |
Raw schema JSON
{
"name": "get_access_to_vercel_url",
"description": "Creates a temporary shareable link that bypasses authentication for protected Vercel deployments.\n\n When you encounter a Vercel deployment URL (like https://myapp-abc123.vercel.app), \n you might receive a 403 (Forbidden) error when trying to access it. \n\n This tool generates a special URL with a 39;_vercel_share39; parameter that allows temporary access \n without requiring login credentials. The shareable URL will expire in 23 hours.\n \n When you use the returned URL, that URL will redirect and set an auth cookie.\n If your fetch implementation does not support cookies, use the 39;web_fetch_vercel_url39; tool instead.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"teamId": {
"description": "The team ID or slug that owns the deployment. Provide this for team deployments so the lookup uses the correct scope. Use list_teams if unknown.",
"type": "string"
},
"url": {
"type": "string",
"description": "The full URL of the Vercel deployment (e.g. \"https://myapp.vercel.app\")."
}
},
"required": [
"url"
]
}
}web_fetch_vercel_url
2 params · 1 required
Fetches a Vercel deployment URL and returns the response.
This is useful if another web fetch tool returns 4…
Fetches a Vercel deployment URL and returns the response. This is useful if another web fetch tool returns 401 (Unauthorized) or 403 (Forbidden) for a Vercel URL. Supports accessing deployments protected with Vercel Authentication which the user of this MCP server has access to.
Input schema
| Parameter | Type | Description & constraints |
|---|---|---|
| teamId | string | The team ID or slug that owns the deployment. Provide this for team deployments so the lookup uses the correct scope. Use list_teams if unknown. |
| url* | string | The full URL of the Vercel deployment including the path (e.g. "https://myapp.vercel.app/my-page"). |
Raw schema JSON
{
"name": "web_fetch_vercel_url",
"description": "Fetches a Vercel deployment URL and returns the response.\n This is useful if another web fetch tool returns 401 (Unauthorized) or 403 (Forbidden) for a Vercel URL.\n Supports accessing deployments protected with Vercel Authentication which the user of this MCP server has access to.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"teamId": {
"description": "The team ID or slug that owns the deployment. Provide this for team deployments so the lookup uses the correct scope. Use list_teams if unknown.",
"type": "string"
},
"url": {
"type": "string",
"description": "The full URL of the Vercel deployment including the path (e.g. \"https://myapp.vercel.app/my-page\")."
}
},
"required": [
"url"
]
}
}list_teams
0 params
List the user's teams. Use this to help discover the Team ID of the teams that the user is part of.
List the user's teams. Use this to help discover the Team ID of the teams that the user is part of.
Input schema
No parameters.
Raw schema JSON
{
"name": "list_teams",
"description": "List the user39;s teams. Use this to help discover the Team ID of the teams that the user is part of.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}
}import-claude-design-from-url
3 params · 1 required
Import a design into Vercel from a publicly fetchable URL. The file is a self-contained HTML bundle with all i…
Import a design into Vercel from a publicly fetchable URL. The file is a self-contained HTML bundle with all images, fonts, and styles inlined.
Input schema
| Parameter | Type | Description & constraints |
|---|---|---|
| url* | string | Public HTTPS URL to the design file. Valid for ~1 hour. Fetched server-side. |
| title | string | Suggested title for the imported design. |
| claude_design_project_id | string | Stable Claude Design project identifier. Reuse it to update the same imported Vercel project. minLen: 1 |
Raw schema JSON
{
"name": "import-claude-design-from-url",
"description": "Import a design into Vercel from a publicly fetchable URL. The file is a self-contained HTML bundle with all images, fonts, and styles inlined.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"url": {
"type": "string",
"description": "Public HTTPS URL to the design file. Valid for ~1 hour. Fetched server-side."
},
"title": {
"description": "Suggested title for the imported design.",
"type": "string"
},
"claude_design_project_id": {
"description": "Stable Claude Design project identifier. Reuse it to update the same imported Vercel project.",
"type": "string",
"minLength": 1
}
},
"required": [
"url"
]
}
}check_domain_availability_and_price
1 param · 1 required
Check if domain names are available for purchase and get pricing information
Check if domain names are available for purchase and get pricing information
Input schema
| Parameter | Type | Description & constraints |
|---|---|---|
| names* | array<string> | Array of domain names to check availability for (e.g., ["example.com", "test.org"]) |
Raw schema JSON
{
"name": "check_domain_availability_and_price",
"description": "Check if domain names are available for purchase and get pricing information",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"names": {
"minItems": 1,
"maxItems": 10,
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"description": "Array of domain names to check availability for (e.g., [\"example.com\", \"test.org\"])"
}
},
"required": [
"names"
]
}
}get_purchase_quote
9 params · 2 required
Read-only price quote for a Vercel purchase. NEVER charges. This is the ONLY way to obtain an idempotencyKey —…
Read-only price quote for a Vercel purchase. NEVER charges. This is the ONLY way to obtain an idempotencyKey — the buy_* tools no longer quote and reject un-quoted calls, so this is the REQUIRED first step before any buy_* tool. It returns the cost (when Vercel exposes one) and an idempotencyKey to pass to the matching buy tool (buy_credits, buy_domain, buy_addon, buy_pro) with confirm:true within 5 minutes to execute the charge. Present the quote to the user for explicit approval (use a structured question tool such as AskUserQuestion when available) before confirming. Products with no API price (add-ons, Pro) return a priceNote and billing URL instead of a number. Every quote includes a disclosures object the assistant must relay to the user before approval: the payment method (default card on file), that taxes/fees may apply on top of the base price, the item terms, and a link to the full terms.
Input schema
| Parameter | Type | Description & constraints |
|---|---|---|
| product* | enum(4) | Which purchase to quote. one of: "credits", "domain", "addon", "pro" |
| teamId* | string | The team ID to get the deployment events for. Alternatively the team slug can be used. Team IDs start with "team_". If you do not know the team ID or slug, it can be found through these mechanism: - Read the file .vercel/project.json if it exists and extract the orgId - Use the `list_teams` tool |
| creditType | enum(3) | Required for product:credits — which credit balance to top up. one of: "v0", "gateway", "agent" |
| amount | integer | Required for product:credits — amount in whole US dollars (1–1000). max: 1000 |
| domain | string | Required for product:domain — the domain to register, e.g. "example.com". minLen: 1 |
| years | integer | For product:domain — registration term in years (defaults to the TLD minimum). max: 10 |
| autoRenew | boolean | For product:domain — whether to auto-renew at term end. Defaults to true. Cosmetic in the quote; not part of the signed idempotencyKey. |
| productAlias | enum(1) | Required for product:addon — the add-on to quote. Only "siem" is available today. one of: "siem" |
| quantity | integer | Required for product:addon — number of units. max: 9007199254740991 |
Raw schema JSON
{
"name": "get_purchase_quote",
"description": "Read-only price quote for a Vercel purchase. NEVER charges. This is the ONLY way to obtain an idempotencyKey — the buy_* tools no longer quote and reject un-quoted calls, so this is the REQUIRED first step before any buy_* tool. It returns the cost (when Vercel exposes one) and an idempotencyKey to pass to the matching buy tool (buy_credits, buy_domain, buy_addon, buy_pro) with confirm:true within 5 minutes to execute the charge. Present the quote to the user for explicit approval (use a structured question tool such as AskUserQuestion when available) before confirming. Products with no API price (add-ons, Pro) return a priceNote and billing URL instead of a number. Every quote includes a disclosures object the assistant must relay to the user before approval: the payment method (default card on file), that taxes/fees may apply on top of the base price, the item terms, and a link to the full terms.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"product": {
"type": "string",
"enum": [
"credits",
"domain",
"addon",
"pro"
],
"description": "Which purchase to quote."
},
"teamId": {
"type": "string",
"description": "The team ID to get the deployment events for. Alternatively the team slug can be used.\nTeam IDs start with \"team_\".\nIf you do not know the team ID or slug, it can be found through these mechanism:\n- Read the file .vercel/project.json if it exists and extract the orgId\n- Use the `list_teams` tool"
},
"creditType": {
"description": "Required for product:credits — which credit balance to top up.",
"type": "string",
"enum": [
"v0",
"gateway",
"agent"
]
},
"amount": {
"description": "Required for product:credits — amount in whole US dollars (1–1000).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 1000
},
"domain": {
"description": "Required for product:domain — the domain to register, e.g. \"example.com\".",
"type": "string",
"minLength": 1
},
"years": {
"description": "For product:domain — registration term in years (defaults to the TLD minimum).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 10
},
"autoRenew": {
"description": "For product:domain — whether to auto-renew at term end. Defaults to true. Cosmetic in the quote; not part of the signed idempotencyKey.",
"type": "boolean"
},
"productAlias": {
"description": "Required for product:addon — the add-on to quote. Only \"siem\" is available today.",
"type": "string",
"enum": [
"siem"
]
},
"quantity": {
"description": "Required for product:addon — number of units.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"product",
"teamId"
]
}
}buy_pro
3 params · 1 required
Executes a Vercel Pro upgrade previously quoted by get_purchase_quote — quoting first is REQUIRED; this tool r…
Executes a Vercel Pro upgrade previously quoted by get_purchase_quote — quoting first is REQUIRED; this tool rejects un-quoted calls. Get the quote, present it to the user for explicit approval (use a structured question tool such as AskUserQuestion when available), then call with confirm:true, the quote's idempotencyKey, and the same parameters. This starts RECURRING Pro billing immediately at the standard Pro price. The quote returns required disclosures the assistant must relay before approval: the payment method (default card on file), that taxes/fees may apply on top of the price, the subscription terms (recurring monthly charge, no trial, cancel anytime in billing settings), and a full-terms link.
Input schema
| Parameter | Type | Description & constraints |
|---|---|---|
| teamId* | string | The team ID to get the deployment events for. Alternatively the team slug can be used. Team IDs start with "team_". If you do not know the team ID or slug, it can be found through these mechanism: - Read the file .vercel/project.json if it exists and extract the orgId - Use the `list_teams` tool |
| confirm | boolean | Set true to execute the upgrade; requires the idempotencyKey from get_purchase_quote. |
| idempotencyKey | string | The idempotencyKey returned by get_purchase_quote. |
Raw schema JSON
{
"name": "buy_pro",
"description": "Executes a Vercel Pro upgrade previously quoted by get_purchase_quote — quoting first is REQUIRED; this tool rejects un-quoted calls. Get the quote, present it to the user for explicit approval (use a structured question tool such as AskUserQuestion when available), then call with confirm:true, the quote39;s idempotencyKey, and the same parameters. This starts RECURRING Pro billing immediately at the standard Pro price. The quote returns required disclosures the assistant must relay before approval: the payment method (default card on file), that taxes/fees may apply on top of the price, the subscription terms (recurring monthly charge, no trial, cancel anytime in billing settings), and a full-terms link.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"teamId": {
"type": "string",
"description": "The team ID to get the deployment events for. Alternatively the team slug can be used.\nTeam IDs start with \"team_\".\nIf you do not know the team ID or slug, it can be found through these mechanism:\n- Read the file .vercel/project.json if it exists and extract the orgId\n- Use the `list_teams` tool"
},
"confirm": {
"description": "Set true to execute the upgrade; requires the idempotencyKey from get_purchase_quote.",
"type": "boolean"
},
"idempotencyKey": {
"description": "The idempotencyKey returned by get_purchase_quote.",
"type": "string"
}
},
"required": [
"teamId"
]
}
}buy_credits
5 params · 3 required
Executes a prepaid Vercel credits purchase (v0, AI Gateway, or Vercel Agent) previously quoted by get_purchase…
Executes a prepaid Vercel credits purchase (v0, AI Gateway, or Vercel Agent) previously quoted by get_purchase_quote — quoting first is REQUIRED; this tool rejects un-quoted calls. Get the quote, present it to the user for explicit approval (use a structured question tool such as AskUserQuestion when available), then call with confirm:true, the quote's idempotencyKey, and the same parameters. When the user has not named an amount, offer quick-picks — $10, $25, $50, or $100 — or let them enter any custom amount ($1–$1000); do not just quote the range. Some credit types require a plan: Vercel Agent credits require the team to be on Vercel Pro (use buy_pro first), and v0 credits require a paid v0 plan (set up at v0.dev); AI Gateway credits have no plan prerequisite. If the required plan is missing the purchase is rejected (nothing is charged) with guidance. The charge is immediate and non-refundable. The quote returns required disclosures the assistant must relay before approval: the payment method (default card on file), that taxes/fees may apply on top of the base price, the item terms (credits expire in one year), and a full-terms link.
Input schema
| Parameter | Type | Description & constraints |
|---|---|---|
| creditType* | enum(3) | Which credit balance to top up: v0, gateway (AI Gateway), or agent (Vercel Agent). one of: "v0", "gateway", "agent" |
| amount* | integer | Amount to purchase, in whole US dollars (1–1000). max: 1000 |
| teamId* | string | The team ID to get the deployment events for. Alternatively the team slug can be used. Team IDs start with "team_". If you do not know the team ID or slug, it can be found through these mechanism: - Read the file .vercel/project.json if it exists and extract the orgId - Use the `list_teams` tool |
| confirm | boolean | Set true to execute the charge; requires the idempotencyKey from get_purchase_quote. |
| idempotencyKey | string | The idempotencyKey returned by get_purchase_quote. |
Raw schema JSON
{
"name": "buy_credits",
"description": "Executes a prepaid Vercel credits purchase (v0, AI Gateway, or Vercel Agent) previously quoted by get_purchase_quote — quoting first is REQUIRED; this tool rejects un-quoted calls. Get the quote, present it to the user for explicit approval (use a structured question tool such as AskUserQuestion when available), then call with confirm:true, the quote39;s idempotencyKey, and the same parameters. When the user has not named an amount, offer quick-picks — $10, $25, $50, or $100 — or let them enter any custom amount ($1–$1000); do not just quote the range. Some credit types require a plan: Vercel Agent credits require the team to be on Vercel Pro (use buy_pro first), and v0 credits require a paid v0 plan (set up at v0.dev); AI Gateway credits have no plan prerequisite. If the required plan is missing the purchase is rejected (nothing is charged) with guidance. The charge is immediate and non-refundable. The quote returns required disclosures the assistant must relay before approval: the payment method (default card on file), that taxes/fees may apply on top of the base price, the item terms (credits expire in one year), and a full-terms link.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"creditType": {
"type": "string",
"enum": [
"v0",
"gateway",
"agent"
],
"description": "Which credit balance to top up: v0, gateway (AI Gateway), or agent (Vercel Agent)."
},
"amount": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 1000,
"description": "Amount to purchase, in whole US dollars (1–1000)."
},
"teamId": {
"type": "string",
"description": "The team ID to get the deployment events for. Alternatively the team slug can be used.\nTeam IDs start with \"team_\".\nIf you do not know the team ID or slug, it can be found through these mechanism:\n- Read the file .vercel/project.json if it exists and extract the orgId\n- Use the `list_teams` tool"
},
"confirm": {
"description": "Set true to execute the charge; requires the idempotencyKey from get_purchase_quote.",
"type": "boolean"
},
"idempotencyKey": {
"description": "The idempotencyKey returned by get_purchase_quote.",
"type": "string"
}
},
"required": [
"creditType",
"amount",
"teamId"
]
}
}buy_addon
5 params · 3 required
Executes a Vercel add-on purchase (currently only "siem"), by integer quantity, previously quoted by get_purch…
Executes a Vercel add-on purchase (currently only "siem"), by integer quantity, previously quoted by get_purchase_quote — quoting first is REQUIRED; this tool rejects un-quoted calls. Get the quote, present it to the user for explicit approval (use a structured question tool such as AskUserQuestion when available), then call with confirm:true, the quote's idempotencyKey, and the same parameters. The team must be on the Flex plan. No price quote exists for add-ons; the charge is non-refundable. The quote returns required disclosures the assistant must relay before approval: the payment method (default card on file), that taxes/fees may apply on top of the price, the item terms (Flex plan required, billed on the next invoice), and a full-terms link.
Input schema
| Parameter | Type | Description & constraints |
|---|---|---|
| productAlias* | enum(1) | The add-on to purchase. Only "siem" is available today. one of: "siem" |
| quantity* | integer | Number of units to purchase. max: 9007199254740991 |
| teamId* | string | The team ID to get the deployment events for. Alternatively the team slug can be used. Team IDs start with "team_". If you do not know the team ID or slug, it can be found through these mechanism: - Read the file .vercel/project.json if it exists and extract the orgId - Use the `list_teams` tool |
| confirm | boolean | Set true to execute the charge; requires the idempotencyKey from get_purchase_quote. |
| idempotencyKey | string | The idempotencyKey returned by get_purchase_quote. |
Raw schema JSON
{
"name": "buy_addon",
"description": "Executes a Vercel add-on purchase (currently only \"siem\"), by integer quantity, previously quoted by get_purchase_quote — quoting first is REQUIRED; this tool rejects un-quoted calls. Get the quote, present it to the user for explicit approval (use a structured question tool such as AskUserQuestion when available), then call with confirm:true, the quote39;s idempotencyKey, and the same parameters. The team must be on the Flex plan. No price quote exists for add-ons; the charge is non-refundable. The quote returns required disclosures the assistant must relay before approval: the payment method (default card on file), that taxes/fees may apply on top of the price, the item terms (Flex plan required, billed on the next invoice), and a full-terms link.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"productAlias": {
"type": "string",
"enum": [
"siem"
],
"description": "The add-on to purchase. Only \"siem\" is available today."
},
"quantity": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Number of units to purchase."
},
"teamId": {
"type": "string",
"description": "The team ID to get the deployment events for. Alternatively the team slug can be used.\nTeam IDs start with \"team_\".\nIf you do not know the team ID or slug, it can be found through these mechanism:\n- Read the file .vercel/project.json if it exists and extract the orgId\n- Use the `list_teams` tool"
},
"confirm": {
"description": "Set true to execute the charge; requires the idempotencyKey from get_purchase_quote.",
"type": "boolean"
},
"idempotencyKey": {
"description": "The idempotencyKey returned by get_purchase_quote.",
"type": "string"
}
},
"required": [
"productAlias",
"quantity",
"teamId"
]
}
}buy_domain
8 params · 2 required
Executes a single-domain registration previously quoted by get_purchase_quote (product:domain) — quoting first…
Executes a single-domain registration previously quoted by get_purchase_quote (product:domain) — quoting first is REQUIRED; this tool rejects un-quoted calls. Get the quote, present it to the user for explicit approval (use a structured question tool such as AskUserQuestion when available), then call with confirm:true, the quote's idempotencyKey, the expectedPrice and years from the quote, and the full registrant contact to execute the non-refundable purchase. Vercel stores no reusable registrant profile, so contact details must be supplied each time. The quote returns required disclosures the assistant must relay before approval: the payment method (default card on file), that taxes/fees may apply on top of the price, the item terms (non-refundable), and, when auto-renew is on, the recurring-charge terms in disclosures.subscription (renews automatically each term at the then-current price until auto-renew is turned off), plus a full-terms link.
Input schema
| Parameter | Type | Description & constraints |
|---|---|---|
| domain* | string | The domain to register, e.g. "example.com". minLen: 1 |
| years | integer | Registration term in years. Required on confirm — must match the term shown in the quote. max: 10 |
| autoRenew | boolean | Whether to auto-renew at the end of the term. Defaults to true. |
| expectedPrice | number | Required on confirm: the purchasePrice (USD) from the quote. The server rejects the order if it no longer matches the live price. |
| contact | object | Registrant (WHOIS) contact. Not needed for the quote; REQUIRED on confirm. All fields must be provided. |
| contact.firstName* | string | — minLen: 1 |
| contact.lastName* | string | — minLen: 1 |
| contact.email* | string | — format: email · pattern: ^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$ |
| contact.phone* | string | — pattern: ^\+\d{10,15}$ |
| contact.address1* | string | — minLen: 1 |
| contact.city* | string | — minLen: 1 |
| contact.state* | string | — minLen: 1 |
| contact.zip* | string | — minLen: 1 |
| contact.country* | string | Two-letter ISO country code, e.g. US minLen: 2 · maxLen: 2 |
| contact.companyName | string | — |
| teamId* | string | The team ID to get the deployment events for. Alternatively the team slug can be used. Team IDs start with "team_". If you do not know the team ID or slug, it can be found through these mechanism: - Read the file .vercel/project.json if it exists and extract the orgId - Use the `list_teams` tool |
| confirm | boolean | Set true to execute the purchase; requires the idempotencyKey from get_purchase_quote. |
| idempotencyKey | string | The idempotencyKey returned by get_purchase_quote. |
Raw schema JSON
{
"name": "buy_domain",
"description": "Executes a single-domain registration previously quoted by get_purchase_quote (product:domain) — quoting first is REQUIRED; this tool rejects un-quoted calls. Get the quote, present it to the user for explicit approval (use a structured question tool such as AskUserQuestion when available), then call with confirm:true, the quote39;s idempotencyKey, the expectedPrice and years from the quote, and the full registrant contact to execute the non-refundable purchase. Vercel stores no reusable registrant profile, so contact details must be supplied each time. The quote returns required disclosures the assistant must relay before approval: the payment method (default card on file), that taxes/fees may apply on top of the price, the item terms (non-refundable), and, when auto-renew is on, the recurring-charge terms in disclosures.subscription (renews automatically each term at the then-current price until auto-renew is turned off), plus a full-terms link.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"domain": {
"type": "string",
"minLength": 1,
"description": "The domain to register, e.g. \"example.com\"."
},
"years": {
"description": "Registration term in years. Required on confirm — must match the term shown in the quote.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 10
},
"autoRenew": {
"description": "Whether to auto-renew at the end of the term. Defaults to true.",
"type": "boolean"
},
"expectedPrice": {
"description": "Required on confirm: the purchasePrice (USD) from the quote. The server rejects the order if it no longer matches the live price.",
"type": "number",
"exclusiveMinimum": 0
},
"contact": {
"description": "Registrant (WHOIS) contact. Not needed for the quote; REQUIRED on confirm. All fields must be provided.",
"type": "object",
"properties": {
"firstName": {
"type": "string",
"minLength": 1
},
"lastName": {
"type": "string",
"minLength": 1
},
"email": {
"type": "string",
"format": "email",
"pattern": "^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$"
},
"phone": {
"type": "string",
"pattern": "^\\+\\d{10,15}$"
},
"address1": {
"type": "string",
"minLength": 1
},
"city": {
"type": "string",
"minLength": 1
},
"state": {
"type": "string",
"minLength": 1
},
"zip": {
"type": "string",
"minLength": 1
},
"country": {
"type": "string",
"minLength": 2,
"maxLength": 2,
"description": "Two-letter ISO country code, e.g. US"
},
"companyName": {
"type": "string"
}
},
"required": [
"firstName",
"lastName",
"email",
"phone",
"address1",
"city",
"state",
"zip",
"country"
]
},
"teamId": {
"type": "string",
"description": "The team ID to get the deployment events for. Alternatively the team slug can be used.\nTeam IDs start with \"team_\".\nIf you do not know the team ID or slug, it can be found through these mechanism:\n- Read the file .vercel/project.json if it exists and extract the orgId\n- Use the `list_teams` tool"
},
"confirm": {
"description": "Set true to execute the purchase; requires the idempotencyKey from get_purchase_quote.",
"type": "boolean"
},
"idempotencyKey": {
"description": "The idempotencyKey returned by get_purchase_quote.",
"type": "string"
}
},
"required": [
"domain",
"teamId"
]
}
}get_domain_order
2 params · 1 required
Get the status of a domain purchase order returned by buy_domain, to confirm whether the registration complete…
Get the status of a domain purchase order returned by buy_domain, to confirm whether the registration completed.
Input schema
| Parameter | Type | Description & constraints |
|---|---|---|
| orderId* | string | The orderId returned by buy_domain. minLen: 1 |
| teamId | string | The team ID to get the deployment events for. Alternatively the team slug can be used. Team IDs start with "team_". If you do not know the team ID or slug, it can be found through these mechanism: - Read the file .vercel/project.json if it exists and extract the orgId - Use the `list_teams` tool |
Raw schema JSON
{
"name": "get_domain_order",
"description": "Get the status of a domain purchase order returned by buy_domain, to confirm whether the registration completed.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"orderId": {
"type": "string",
"minLength": 1,
"description": "The orderId returned by buy_domain."
},
"teamId": {
"type": "string",
"description": "The team ID to get the deployment events for. Alternatively the team slug can be used.\nTeam IDs start with \"team_\".\nIf you do not know the team ID or slug, it can be found through these mechanism:\n- Read the file .vercel/project.json if it exists and extract the orgId\n- Use the `list_teams` tool"
}
},
"required": [
"orderId"
]
}
}list_toolbar_threads
8 params · 1 required
List Vercel toolbar comment threads for a team. Returns unresolved threads by default. Use this to see feedbac…
List Vercel toolbar comment threads for a team. Returns unresolved threads by default. Use this to see feedback, comments, or discussions on deployments and previews.
Input schema
| Parameter | Type | Description & constraints |
|---|---|---|
| teamId* | string | The team ID to get the deployment events for. Alternatively the team slug can be used. Team IDs start with "team_". If you do not know the team ID or slug, it can be found through these mechanism: - Read the file .vercel/project.json if it exists and extract the orgId - Use the `list_teams` tool |
| projectId | string | Filter by project ID |
| branch | string | Filter by branch name |
| status | enum(2) | Filter by status. Defaults to unresolved. one of: "resolved", "unresolved" |
| page | string | Filter by page path (e.g. /docs) or glob (e.g. /docs*) |
| search | string | Search text in comments |
| limit | number | Maximum number of results to return. Defaults to 20. |
| offset | number | Pagination offset |
Raw schema JSON
{
"name": "list_toolbar_threads",
"description": "List Vercel toolbar comment threads for a team. Returns unresolved threads by default. Use this to see feedback, comments, or discussions on deployments and previews.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"teamId": {
"type": "string",
"description": "The team ID to get the deployment events for. Alternatively the team slug can be used.\nTeam IDs start with \"team_\".\nIf you do not know the team ID or slug, it can be found through these mechanism:\n- Read the file .vercel/project.json if it exists and extract the orgId\n- Use the `list_teams` tool"
},
"projectId": {
"description": "Filter by project ID",
"type": "string"
},
"branch": {
"description": "Filter by branch name",
"type": "string"
},
"status": {
"description": "Filter by status. Defaults to unresolved.",
"type": "string",
"enum": [
"resolved",
"unresolved"
]
},
"page": {
"description": "Filter by page path (e.g. /docs) or glob (e.g. /docs*)",
"type": "string"
},
"search": {
"description": "Search text in comments",
"type": "string"
},
"limit": {
"description": "Maximum number of results to return. Defaults to 20.",
"type": "number"
},
"offset": {
"description": "Pagination offset",
"type": "number"
}
},
"required": [
"teamId"
]
}
}get_toolbar_thread
2 params · 2 required
Get a specific toolbar thread by ID, including all messages and context.
Get a specific toolbar thread by ID, including all messages and context.
Input schema
| Parameter | Type | Description & constraints |
|---|---|---|
| threadId* | string | The thread ID to retrieve |
| teamId* | string | The team ID to get the deployment events for. Alternatively the team slug can be used. Team IDs start with "team_". If you do not know the team ID or slug, it can be found through these mechanism: - Read the file .vercel/project.json if it exists and extract the orgId - Use the `list_teams` tool |
Raw schema JSON
{
"name": "get_toolbar_thread",
"description": "Get a specific toolbar thread by ID, including all messages and context.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"threadId": {
"type": "string",
"description": "The thread ID to retrieve"
},
"teamId": {
"type": "string",
"description": "The team ID to get the deployment events for. Alternatively the team slug can be used.\nTeam IDs start with \"team_\".\nIf you do not know the team ID or slug, it can be found through these mechanism:\n- Read the file .vercel/project.json if it exists and extract the orgId\n- Use the `list_teams` tool"
}
},
"required": [
"threadId",
"teamId"
]
}
}change_toolbar_thread_resolve_status
3 params · 3 required
Change the resolve status of a toolbar thread. Can be used to mark a thread as resolved or unresolve a previou…
Change the resolve status of a toolbar thread. Can be used to mark a thread as resolved or unresolve a previously resolved thread.
Input schema
| Parameter | Type | Description & constraints |
|---|---|---|
| threadId* | string | The thread ID to update |
| teamId* | string | The team ID to get the deployment events for. Alternatively the team slug can be used. Team IDs start with "team_". If you do not know the team ID or slug, it can be found through these mechanism: - Read the file .vercel/project.json if it exists and extract the orgId - Use the `list_teams` tool |
| resolved* | boolean | Set to true to resolve the thread, false to unresolve it |
Raw schema JSON
{
"name": "change_toolbar_thread_resolve_status",
"description": "Change the resolve status of a toolbar thread. Can be used to mark a thread as resolved or unresolve a previously resolved thread.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"threadId": {
"type": "string",
"description": "The thread ID to update"
},
"teamId": {
"type": "string",
"description": "The team ID to get the deployment events for. Alternatively the team slug can be used.\nTeam IDs start with \"team_\".\nIf you do not know the team ID or slug, it can be found through these mechanism:\n- Read the file .vercel/project.json if it exists and extract the orgId\n- Use the `list_teams` tool"
},
"resolved": {
"type": "boolean",
"description": "Set to true to resolve the thread, false to unresolve it"
}
},
"required": [
"threadId",
"teamId",
"resolved"
]
}
}reply_to_toolbar_thread
3 params · 3 required
Add a reply message to an existing toolbar thread.
Add a reply message to an existing toolbar thread.
Input schema
| Parameter | Type | Description & constraints |
|---|---|---|
| threadId* | string | The thread ID to reply to |
| teamId* | string | The team ID to get the deployment events for. Alternatively the team slug can be used. Team IDs start with "team_". If you do not know the team ID or slug, it can be found through these mechanism: - Read the file .vercel/project.json if it exists and extract the orgId - Use the `list_teams` tool |
| markdown* | string | The message content in markdown format |
Raw schema JSON
{
"name": "reply_to_toolbar_thread",
"description": "Add a reply message to an existing toolbar thread.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"threadId": {
"type": "string",
"description": "The thread ID to reply to"
},
"teamId": {
"type": "string",
"description": "The team ID to get the deployment events for. Alternatively the team slug can be used.\nTeam IDs start with \"team_\".\nIf you do not know the team ID or slug, it can be found through these mechanism:\n- Read the file .vercel/project.json if it exists and extract the orgId\n- Use the `list_teams` tool"
},
"markdown": {
"type": "string",
"description": "The message content in markdown format"
}
},
"required": [
"threadId",
"teamId",
"markdown"
]
}
}edit_toolbar_message
4 params · 4 required
Edit an existing message in a toolbar thread.
Edit an existing message in a toolbar thread.
Input schema
| Parameter | Type | Description & constraints |
|---|---|---|
| threadId* | string | The thread ID containing the message |
| messageId* | string | The message ID to edit |
| teamId* | string | The team ID to get the deployment events for. Alternatively the team slug can be used. Team IDs start with "team_". If you do not know the team ID or slug, it can be found through these mechanism: - Read the file .vercel/project.json if it exists and extract the orgId - Use the `list_teams` tool |
| markdown* | string | The updated message content in markdown format |
Raw schema JSON
{
"name": "edit_toolbar_message",
"description": "Edit an existing message in a toolbar thread.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"threadId": {
"type": "string",
"description": "The thread ID containing the message"
},
"messageId": {
"type": "string",
"description": "The message ID to edit"
},
"teamId": {
"type": "string",
"description": "The team ID to get the deployment events for. Alternatively the team slug can be used.\nTeam IDs start with \"team_\".\nIf you do not know the team ID or slug, it can be found through these mechanism:\n- Read the file .vercel/project.json if it exists and extract the orgId\n- Use the `list_teams` tool"
},
"markdown": {
"type": "string",
"description": "The updated message content in markdown format"
}
},
"required": [
"threadId",
"messageId",
"teamId",
"markdown"
]
}
}add_toolbar_reaction
4 params · 4 required
Add an emoji reaction to a message in a toolbar thread.
Add an emoji reaction to a message in a toolbar thread.
Input schema
| Parameter | Type | Description & constraints |
|---|---|---|
| threadId* | string | The thread ID containing the message |
| messageId* | string | The message ID to react to |
| teamId* | string | The team ID to get the deployment events for. Alternatively the team slug can be used. Team IDs start with "team_". If you do not know the team ID or slug, it can be found through these mechanism: - Read the file .vercel/project.json if it exists and extract the orgId - Use the `list_teams` tool |
| emoji* | string | The emoji to add as a reaction (e.g. 👍) |
Raw schema JSON
{
"name": "add_toolbar_reaction",
"description": "Add an emoji reaction to a message in a toolbar thread.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"threadId": {
"type": "string",
"description": "The thread ID containing the message"
},
"messageId": {
"type": "string",
"description": "The message ID to react to"
},
"teamId": {
"type": "string",
"description": "The team ID to get the deployment events for. Alternatively the team slug can be used.\nTeam IDs start with \"team_\".\nIf you do not know the team ID or slug, it can be found through these mechanism:\n- Read the file .vercel/project.json if it exists and extract the orgId\n- Use the `list_teams` tool"
},
"emoji": {
"type": "string",
"description": "The emoji to add as a reaction (e.g. 👍)"
}
},
"required": [
"threadId",
"messageId",
"teamId",
"emoji"
]
}
}use_vercel_cli
2 params · 1 required
Instructs the LLM to use Vercel CLI commands with --help flag for information
Instructs the LLM to use Vercel CLI commands with --help flag for information
Input schema
| Parameter | Type | Description & constraints |
|---|---|---|
| command | string | Specific Vercel CLI command to run. |
| action* | string | What you want to accomplish with Vercel CLI |
Raw schema JSON
{
"name": "use_vercel_cli",
"description": "Instructs the LLM to use Vercel CLI commands with --help flag for information",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"command": {
"description": "Specific Vercel CLI command to run.",
"type": "string"
},
"action": {
"type": "string",
"description": "What you want to accomplish with Vercel CLI"
}
},
"required": [
"action"
]
}
}list_supported_tlds
1 param
Get a list of TLDs supported by Vercel
Get a list of TLDs supported by Vercel
Input schema
| Parameter | Type | Description & constraints |
|---|---|---|
| teamId | string | Team ID to use for this operation. |
Raw schema JSON
{
"name": "list_supported_tlds",
"description": "Get a list of TLDs supported by Vercel",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"teamId": {
"description": "Team ID to use for this operation.",
"type": "string",
"example": "team_1a2b3c4d5e6f7g8h9i0j1k2l"
}
}
}
}get_tld
2 params · 1 required
Get the metadata for a specific TLD.
Get the metadata for a specific TLD.
Input schema
| Parameter | Type | Description & constraints |
|---|---|---|
| tld* | string | A valid TLD name |
| teamId | string | Team ID to use for this operation. |
Raw schema JSON
{
"name": "get_tld",
"description": "Get the metadata for a specific TLD.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"tld": {
"type": "string",
"description": "A valid TLD name"
},
"teamId": {
"description": "Team ID to use for this operation.",
"type": "string",
"example": "team_1a2b3c4d5e6f7g8h9i0j1k2l"
}
},
"required": [
"tld"
]
}
}get_tld_price
3 params · 1 required
Get price data for a specific TLD. This only reflects base prices for the given TLD. Premium domains may have …
Get price data for a specific TLD. This only reflects base prices for the given TLD. Premium domains may have different prices. Use the [Get price data for a domain](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/get-price-data-for-a-domain) endpoint to get the price data for a specific domain.
Input schema
| Parameter | Type | Description & constraints |
|---|---|---|
| tld* | string | A valid TLD name |
| years | string | The number of years to get the price for. If not provided, the minimum number of years for the TLD will be used. |
| teamId | string | Team ID to use for this operation. |
Raw schema JSON
{
"name": "get_tld_price",
"description": "Get price data for a specific TLD. This only reflects base prices for the given TLD. Premium domains may have different prices. Use the [Get price data for a domain](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/get-price-data-for-a-domain) endpoint to get the price data for a specific domain.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"tld": {
"type": "string",
"description": "A valid TLD name"
},
"years": {
"type": "string",
"description": "The number of years to get the price for. If not provided, the minimum number of years for the TLD will be used."
},
"teamId": {
"description": "Team ID to use for this operation.",
"type": "string",
"example": "team_1a2b3c4d5e6f7g8h9i0j1k2l"
}
},
"required": [
"tld"
]
}
}get_contact_info_schema
2 params · 1 required
Some TLDs require additional contact information. Use this endpoint to get the schema for the tld-specific con…
Some TLDs require additional contact information. Use this endpoint to get the schema for the tld-specific contact information for a domain.
Input schema
| Parameter | Type | Description & constraints |
|---|---|---|
| domain* | string | A valid domain name |
| teamId | string | Team ID to use for this operation. |
Raw schema JSON
{
"name": "get_contact_info_schema",
"description": "Some TLDs require additional contact information. Use this endpoint to get the schema for the tld-specific contact information for a domain.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"domain": {
"type": "string",
"description": "A valid domain name"
},
"teamId": {
"description": "Team ID to use for this operation.",
"type": "string",
"example": "team_1a2b3c4d5e6f7g8h9i0j1k2l"
}
},
"required": [
"domain"
]
}
}get_domain_price
3 params · 1 required
Get price data for a specific domain
Get price data for a specific domain
Input schema
| Parameter | Type | Description & constraints |
|---|---|---|
| domain* | string | A valid domain name |
| years | string | The number of years to get the price for. If not provided, the minimum number of years for the TLD will be used. |
| teamId | string | Team ID to use for this operation. |
Raw schema JSON
{
"name": "get_domain_price",
"description": "Get price data for a specific domain",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"domain": {
"type": "string",
"description": "A valid domain name"
},
"years": {
"type": "string",
"description": "The number of years to get the price for. If not provided, the minimum number of years for the TLD will be used."
},
"teamId": {
"description": "Team ID to use for this operation.",
"type": "string",
"example": "team_1a2b3c4d5e6f7g8h9i0j1k2l"
}
},
"required": [
"domain"
]
}
}get_domain_availability
2 params · 1 required
Get availability for a specific domain. If the domain is available, it can be purchased using the [Buy a domai…
Get availability for a specific domain. If the domain is available, it can be purchased using the [Buy a domain](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/buy-a-domain) endpoint or the [Buy multiple domains](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/buy-multiple-domains) endpoint.
Input schema
| Parameter | Type | Description & constraints |
|---|---|---|
| domain* | string | A valid domain name |
| teamId | string | Team ID to use for this operation. |
Raw schema JSON
{
"name": "get_domain_availability",
"description": "Get availability for a specific domain. If the domain is available, it can be purchased using the [Buy a domain](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/buy-a-domain) endpoint or the [Buy multiple domains](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/buy-multiple-domains) endpoint.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"domain": {
"type": "string",
"description": "A valid domain name"
},
"teamId": {
"description": "Team ID to use for this operation.",
"type": "string",
"example": "team_1a2b3c4d5e6f7g8h9i0j1k2l"
}
},
"required": [
"domain"
]
}
}get_bulk_price
2 params · 1 required
Get price data for multiple domains in a single request.
Get price data for multiple domains in a single request.
Input schema
| Parameter | Type | Description & constraints |
|---|---|---|
| teamId | string | Team ID to use for this operation. |
| requestBody* | object | — |
| requestBody.domains* | array<string> | an array of at most 50 item(s) |
| requestBody.years | number | The number of years to get the price for. If not provided, the minimum number of years for the TLD will be used. |
Raw schema JSON
{
"name": "get_bulk_price",
"description": "Get price data for multiple domains in a single request.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"teamId": {
"description": "Team ID to use for this operation.",
"type": "string",
"example": "team_1a2b3c4d5e6f7g8h9i0j1k2l"
},
"requestBody": {
"type": "object",
"properties": {
"domains": {
"minItems": 1,
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"description": "A valid domain name"
},
"title": "maxItems(50)",
"description": "an array of at most 50 item(s)"
},
"years": {
"type": "number",
"description": "The number of years to get the price for. If not provided, the minimum number of years for the TLD will be used."
}
},
"required": [
"domains"
],
"additionalProperties": false
}
},
"required": [
"requestBody"
]
}
}get_bulk_availability
2 params · 1 required
Get availability for multiple domains. If the domains are available, they can be purchased using the [Buy a do…
Get availability for multiple domains. If the domains are available, they can be purchased using the [Buy a domain](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/buy-a-domain) endpoint or the [Buy multiple domains](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/buy-multiple-domains) endpoint.
Input schema
| Parameter | Type | Description & constraints |
|---|---|---|
| teamId | string | Team ID to use for this operation. |
| requestBody* | object | — |
| requestBody.domains* | array<string> | an array of at most 50 item(s) |
Raw schema JSON
{
"name": "get_bulk_availability",
"description": "Get availability for multiple domains. If the domains are available, they can be purchased using the [Buy a domain](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/buy-a-domain) endpoint or the [Buy multiple domains](https://vercel.com/docs/rest-api/reference/endpoints/domains-registrar/buy-multiple-domains) endpoint.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"teamId": {
"description": "Team ID to use for this operation.",
"type": "string",
"example": "team_1a2b3c4d5e6f7g8h9i0j1k2l"
},
"requestBody": {
"type": "object",
"properties": {
"domains": {
"minItems": 1,
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"description": "A valid domain name"
},
"title": "maxItems(50)",
"description": "an array of at most 50 item(s)"
}
},
"required": [
"domains"
],
"additionalProperties": false
}
},
"required": [
"requestBody"
]
}
}search_domains
2 params · 1 required
Start domain research here. Get registration availability and pricing for 1–200 exact domain names. Returns re…
Start domain research here. Get registration availability and pricing for 1–200 exact domain names. Returns results in input order, with registration and renewal prices in USD for available domains. No authentication required.
Input schema
| Parameter | Type | Description & constraints |
|---|---|---|
| teamId | string | Team ID to use for this operation. |
| requestBody* | object | — |
| requestBody.domains* | array<string> | an array of at most 200 item(s) |
Raw schema JSON
{
"name": "search_domains",
"description": "Start domain research here. Get registration availability and pricing for 1–200 exact domain names. Returns results in input order, with registration and renewal prices in USD for available domains. No authentication required.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"teamId": {
"description": "Team ID to use for this operation.",
"type": "string",
"example": "team_1a2b3c4d5e6f7g8h9i0j1k2l"
},
"requestBody": {
"type": "object",
"properties": {
"domains": {
"minItems": 1,
"maxItems": 200,
"type": "array",
"items": {
"type": "string",
"description": "A valid domain name"
},
"title": "maxItems(200)",
"description": "an array of at most 200 item(s)"
}
},
"required": [
"domains"
],
"additionalProperties": false
}
},
"required": [
"requestBody"
]
}
}Resources 0
No resources advertised.
Prompts 13
| Name | Arguments | Description |
|---|---|---|
system_instructions |
— | System instructions for Vercel MCP Server - guides the LLM to prefer MCP tools over CLI when working with Vercel tasks. |
explain_vercel_concept |
question* | Answer user questions using search results from Vercel documentation. Use this when you need authoritative information about Vercel features, configuration options, best practices, or troubleshooting guidance. This tool will search the official Vercel documentation and provide accurate, up-to-date information with examples and references. |
fix_recent_build |
projectId, includeLogs, logLimit | Analyze and fix issues with the most recent deployment by fetching deployment details and build logs. Use this when your build fails, deployment is stuck, or you need to understand what went wrong. This tool will automatically fetch the latest deployment, analyze its status, retrieve build logs, and provide specific fixes. |
analyze_deployment_performance |
deploymentId, includeMetrics | Analyze deployment performance metrics and provide optimization recommendations. Use this to identify bottlenecks, slow builds, and opportunities to speed up your deployment pipeline. Perfect for CI/CD optimization and cost reduction. |
debug_deployment_issues |
deploymentId, includeEnvironment, includeDependencies | Comprehensive debugging of deployment issues with detailed analysis. Use this when you're experiencing mysterious deployment problems, intermittent failures, or need deep technical analysis of what's going wrong. This tool will perform thorough investigation and provide detailed solutions. |
get_project_status |
projectId, includeDeployments, includeDomains | Get a comprehensive overview of the current project including status, latest deployment, and key metrics. Use this to quickly understand your project's current state, recent activity, and any issues that need attention. Perfect for daily standups, status reports, or when onboarding to a project. |
list_team_projects |
teamId, includeArchived, limit | List all projects in the current team with their status and latest deployments. Use this to get an overview of all projects your team is working on, identify projects that need attention, or when managing multiple projects. Perfect for team leads, project managers, or when switching between projects. |
project_health_check |
projectId, includeRecommendations, checkEnvironment | Perform a comprehensive health check of the project including deployments, configuration, and potential issues. Use this for regular project maintenance, before major deployments, or when you suspect there might be underlying issues. This tool will provide a detailed health assessment with specific recommendations. |
quick_status |
includeAlerts, includeMetrics | Get a quick overview of the current project status, latest deployment, and any immediate issues. Use this for daily check-ins, quick status updates, or when you need a fast overview without deep analysis. Perfect for busy developers who need instant project insights. |
troubleshoot_common_issues |
issue, includeSolutions, checkLogs | Help identify and resolve common Vercel deployment and configuration issues. Use this when you're experiencing problems with your deployment, build failures, or configuration issues. This tool will guide you through systematic troubleshooting and provide specific solutions. |
optimize_deployment |
includeAnalysis, includeRecommendations | Analyze and suggest optimizations for faster builds and better deployment performance. Use this when you want to improve your deployment speed, reduce costs, or enhance your CI/CD pipeline efficiency. This tool will identify bottlenecks and provide specific optimization strategies. |
vercel_help |
topic, includeExamples, includeDocumentation | Get help and guidance on Vercel features, best practices, and configuration options. Use this when you need to learn about Vercel features, understand best practices, or get guidance on implementation. This tool will provide comprehensive help with examples and documentation references. |
purchase_vercel_product |
product, teamId | Guide a real-money Vercel purchase safely. Use this whenever the user wants to BUY something on Vercel. It enforces the two-step preview→confirm flow so the cost is surfaced and approved before any charge. |
Inventory recorded Sep 25, 2026 — 1:25 AM as rev 2. Listing calls only — tools are never invoked.
Canonical contract hash
sha256:8328f5b8ff6d35c3db69b127adac4c0625beead6428ae1221f6fc64657f3ba51
Computed centrally from the normalized capability inventory (normalizer v1). Scanners submit raw observations; the control plane normalizes and hashes, so every scanner agrees on the same value.
Revisions 2
| Rev | Observed | Hash |
|---|---|---|
| rev 2 | Sep 25, 2026 — 1:25 AM (38 d ago) | |
| rev 1 baseline | Sep 24, 2026 — 11:20 PM (38 d ago) |
Contract changes 1
Full snapshots are stored only when the canonical hash changes — unchanged observations update freshness without duplicating the contract.
Recent observations latest 30
| Observed | Result | Latency |
|---|---|---|
| Nov 2, 2026 — 1:50 AM (35 min ago) | Authentication required | 150 ms |
| Nov 2, 2026 — 12:45 AM (2 h ago) | Authentication required | 160 ms |
| Nov 1, 2026 — 11:35 PM (3 h ago) | Authentication required | 158 ms |
| Nov 1, 2026 — 10:30 PM (4 h ago) | Authentication required | 126 ms |
| Nov 1, 2026 — 9:25 PM (5 h ago) | Authentication required | 359 ms |
| Nov 1, 2026 — 8:20 PM (6 h ago) | Authentication required | 140 ms |
| Nov 1, 2026 — 7:15 PM (7 h ago) | Authentication required | 158 ms |
| Nov 1, 2026 — 6:15 PM (8 h ago) | Authentication required | 117 ms |
| Nov 1, 2026 — 5:10 PM (9 h ago) | Authentication required | 213 ms |
| Nov 1, 2026 — 4:05 PM (10 h ago) | Authentication required | 139 ms |
| Nov 1, 2026 — 3:00 PM (11 h ago) | Authentication required | 135 ms |
| Nov 1, 2026 — 1:55 PM (12 h ago) | Authentication required | 116 ms |
| Nov 1, 2026 — 12:50 PM (14 h ago) | Authentication required | 133 ms |
| Nov 1, 2026 — 11:40 AM (15 h ago) | Authentication required | 120 ms |
| Nov 1, 2026 — 10:35 AM (16 h ago) | Authentication required | 136 ms |
| Nov 1, 2026 — 9:30 AM (17 h ago) | Authentication required | 121 ms |
| Nov 1, 2026 — 8:25 AM (18 h ago) | Authentication required | 100 ms |
| Nov 1, 2026 — 7:20 AM (19 h ago) | Authentication required | 119 ms |
| Nov 1, 2026 — 6:15 AM (20 h ago) | Authentication required | 110 ms |
| Nov 1, 2026 — 5:10 AM (21 h ago) | Authentication required | 136 ms |
| Nov 1, 2026 — 4:05 AM (22 h ago) | Authentication required | 103 ms |
| Nov 1, 2026 — 3:00 AM (23 h ago) | Authentication required | 137 ms |
| Nov 1, 2026 — 1:50 AM (1 d ago) | Authentication required | 115 ms |
| Nov 1, 2026 — 12:45 AM (1 d ago) | Authentication required | 116 ms |
| Oct 31, 2026 — 11:40 PM (1 d ago) | Authentication required | 182 ms |
| Oct 31, 2026 — 10:35 PM (1 d ago) | Authentication required | 108 ms |
| Oct 31, 2026 — 9:30 PM (1 d ago) | Authentication required | 386 ms |
| Oct 31, 2026 — 8:25 PM (1 d ago) | Authentication required | 132 ms |
| Oct 31, 2026 — 7:20 PM (1 d ago) | Authentication required | 124 ms |
| Oct 31, 2026 — 6:15 PM (1 d ago) | Authentication required | 143 ms |
Latest check — evidence & validation Nov 2, 2026 — 1:50 AM
{
"server": "cloudflare",
"content-type": "application/json",
"www-authenticate": "Bearer error=\"invalid_token\", error_description=\"No authorization provided\", resource_metadata=\"https://mcp.vercel.com/.well-known/oauth-protected-resource\""
}{
"httpStatus": 401,
"wwwAuthenticate": "Bearer error=\"invalid_token\", error_description=\"No authorization provided\", resource_metadata=\"https://mcp.vercel.com/.well-known/oauth-protected-resource\"",
"discovery": {
"resource": "https://mcp.vercel.com/",
"authorization_servers": [
"https://vercel.com"
],
"scopes_supported": [
"openid"
]
}
}Publisher supplied
unverified| Name | Vercel MCP |
| Vendor | Vercel |
| Category | infrastructure |
| Docs | https://vercel.com/docs/mcp/vercel-mcp |
| Repository | — |
| Auth expected | OAuth expected |
Registry and publisher metadata from the deployment seed. Displayed as supplied — MCP Tools does not verify it.
Independently observed
verified| Server name | Vercel MCP Server |
| Server version | 0.1.0 |
| Transport | Streamable HTTP |
| Protocol version | 2025-06-18 |
| First observed | Sep 24, 2026 |
| Last observed | 35 min ago |
| Last successful | 35 min ago |
| Origin | Registry seed |
Facts recorded by scanners during passive observation — initialize and list calls only, never tool invocation.