mirror of
https://github.com/simstudioai/sim.git
synced 2026-09-24 15:45:35 +08:00
fix(vercel): align integration with live Vercel REST API docs (#5370)
* fix(vercel): align integration with live Vercel REST API docs - add missing teamId/slug scoping to 29 tools (deployments, checks, projects, env vars) - add DNS SRV/HTTPS record support (nested srv/https objects) to create/update_dns_record - add decrypt/gitBranch filters to get_env_vars, autoUpdate to rerequest_check - add redirect param to create_alias, comment to create_dns_record - add missing customNameservers/userId/teamId/transferStartedAt fields to list_domains output - wire pagination filters (limit/since/until/search/app) into block subBlocks for list_deployments, list_teams, list_team_members, list_dns_records, list_project_domains - wire previously-unexposed tool params into block UI: withGitRepoInfo, gitSource, forceNew, externalId, rerequestable, output, direction, follow - fix duplicate projectId subBlock id collision between list_deployments and other project-scoped operations - fix teamId scope field incorrectly hidden for check operations * fix(vercel): address review findings on DNS/deployment param handling - fix withGitRepoInfo 'No' dropdown sending withGitRepoInfo=false instead of omitting the param - remove redundant duplicate 'Forward' option from eventsDirection dropdown - fix mxPriority being silently dropped in update_dns_record when record type is left unset * fix(vercel): fix pagination token type mismatch and clarify DNS update UX - fix list_projects nextFrom being stored as a number despite string typing, which threw TypeError on .trim() when chained into a follow-up list_projects call - clarify that the DNS update Value field has no effect on existing SRV/HTTPS records unless Record Type is explicitly reselected * fix(vercel): fix zero-value SRV/HTTPS/MX numeric fields being dropped - SRV weight/port/priority, HTTPS priority, and MX priority use truthy checks that silently drop legitimate 0 values; switch to explicit empty/null checks - add missing MX Priority field to create_dns_record block UI (tool already required it for MX records but there was no way to set it) * fix(vercel): fix stale cross-operation field leaks in block params - fix list_deployments/create_deployment/update_check/list_team_members/update_dns_record/update_env_var conditionally spreading into keys that collide with unrelated operations' non-destructured literal subBlock fields (projectId, deploymentId, target, name, search) - a stale value left over from switching operations in the UI would silently leak into the wrong tool call since the conditional spread only overrides when the current operation's own field has a value - fix now always assigns these keys directly so they deterministically override any stale base value * feat(vercel): close remaining input/output completeness gaps - add missing slug (team-slug) param to 13 domain/DNS/alias tools that were skipped in an earlier fix pass, matching the pattern used everywhere else in this integration - add rootDirectory, nodeVersion, devCommand params to create_project/update_project (verified against Vercel's live OpenAPI spec — high-value fields for monorepo support and runtime pinning) - surface rootDirectory/nodeVersion in get_project/list_projects outputs, since the API already returns them - wire all new fields into the block UI as advanced fields * fix(vercel): fix remaining No->false truthy-string dropdown bugs - checkRerequestable, checkAutoUpdate, envVarsDecrypt dropdowns used id: 'false' for their No option (a truthy non-empty string), causing the conditional spread to always fire and explicitly send false instead of omitting the param - swept the whole file for this pattern; checkBlocking correctly keeps 'false' since it's a required field that's always sent directly, not conditionally * fix(vercel): fix silent project-rename leak in update_project - update_project had no dedicated rename field and just returned base directly, so a stale value from create_deployment's unrelated 'name' subBlock (Project Name for the deployment) could silently flow through and rename a project on update - add a dedicated 'New Project Name' field for update_project, wired with a direct override so it always takes precedence over any stale leaked value
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -26,12 +26,19 @@ export const vercelAddDomainTool: ToolConfig<VercelAddDomainParams, VercelAddDom
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team ID to scope the request',
|
||||
},
|
||||
slug: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team slug to scope the request (alternative to teamId)',
|
||||
},
|
||||
},
|
||||
|
||||
request: {
|
||||
url: (params: VercelAddDomainParams) => {
|
||||
const query = new URLSearchParams()
|
||||
if (params.teamId) query.set('teamId', params.teamId.trim())
|
||||
if (params.slug) query.set('slug', params.slug.trim())
|
||||
const qs = query.toString()
|
||||
return `https://api.vercel.com/v7/domains${qs ? `?${qs}` : ''}`
|
||||
},
|
||||
|
||||
@@ -56,12 +56,19 @@ export const vercelAddProjectDomainTool: ToolConfig<
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team ID to scope the request',
|
||||
},
|
||||
slug: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team slug to scope the request (alternative to teamId)',
|
||||
},
|
||||
},
|
||||
|
||||
request: {
|
||||
url: (params: VercelAddProjectDomainParams) => {
|
||||
const query = new URLSearchParams()
|
||||
if (params.teamId) query.set('teamId', params.teamId.trim())
|
||||
if (params.slug) query.set('slug', params.slug.trim())
|
||||
const qs = query.toString()
|
||||
return `https://api.vercel.com/v10/projects/${params.projectId.trim()}/domains${qs ? `?${qs}` : ''}`
|
||||
},
|
||||
|
||||
@@ -32,12 +32,19 @@ export const vercelCancelDeploymentTool: ToolConfig<
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team ID to scope the request',
|
||||
},
|
||||
slug: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team slug to scope the request (alternative to teamId)',
|
||||
},
|
||||
},
|
||||
|
||||
request: {
|
||||
url: (params: VercelCancelDeploymentParams) => {
|
||||
const query = new URLSearchParams()
|
||||
if (params.teamId) query.set('teamId', params.teamId.trim())
|
||||
if (params.slug) query.set('slug', params.slug.trim())
|
||||
const qs = query.toString()
|
||||
return `https://api.vercel.com/v12/deployments/${params.deploymentId.trim()}/cancel${qs ? `?${qs}` : ''}`
|
||||
},
|
||||
|
||||
@@ -27,18 +27,32 @@ export const vercelCreateAliasTool: ToolConfig<VercelCreateAliasParams, VercelCr
|
||||
visibility: 'user-or-llm',
|
||||
description: 'The domain or subdomain to assign as an alias',
|
||||
},
|
||||
redirect: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description:
|
||||
'Hostname to 307-redirect the alias to instead of serving the deployment directly',
|
||||
},
|
||||
teamId: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team ID to scope the request',
|
||||
},
|
||||
slug: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team slug to scope the request (alternative to teamId)',
|
||||
},
|
||||
},
|
||||
|
||||
request: {
|
||||
url: (params: VercelCreateAliasParams) => {
|
||||
const query = new URLSearchParams()
|
||||
if (params.teamId) query.set('teamId', params.teamId.trim())
|
||||
if (params.slug) query.set('slug', params.slug.trim())
|
||||
const qs = query.toString()
|
||||
return `https://api.vercel.com/v2/deployments/${params.deploymentId.trim()}/aliases${qs ? `?${qs}` : ''}`
|
||||
},
|
||||
@@ -47,9 +61,13 @@ export const vercelCreateAliasTool: ToolConfig<VercelCreateAliasParams, VercelCr
|
||||
Authorization: `Bearer ${params.apiKey}`,
|
||||
'Content-Type': 'application/json',
|
||||
}),
|
||||
body: (params: VercelCreateAliasParams) => ({
|
||||
alias: params.alias.trim(),
|
||||
}),
|
||||
body: (params: VercelCreateAliasParams) => {
|
||||
const body: Record<string, unknown> = { alias: params.alias.trim() }
|
||||
if (params.redirect != null && params.redirect !== '') {
|
||||
body.redirect = params.redirect.trim()
|
||||
}
|
||||
return body
|
||||
},
|
||||
},
|
||||
|
||||
transformResponse: async (response: Response) => {
|
||||
|
||||
@@ -62,12 +62,19 @@ export const vercelCreateCheckTool: ToolConfig<VercelCreateCheckParams, VercelCh
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team ID to scope the request',
|
||||
},
|
||||
slug: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team slug to scope the request (alternative to teamId)',
|
||||
},
|
||||
},
|
||||
|
||||
request: {
|
||||
url: (params: VercelCreateCheckParams) => {
|
||||
const query = new URLSearchParams()
|
||||
if (params.teamId) query.set('teamId', params.teamId.trim())
|
||||
if (params.slug) query.set('slug', params.slug.trim())
|
||||
const qs = query.toString()
|
||||
return `https://api.vercel.com/v1/deployments/${params.deploymentId.trim()}/checks${qs ? `?${qs}` : ''}`
|
||||
},
|
||||
|
||||
@@ -64,6 +64,12 @@ export const vercelCreateDeploymentTool: ToolConfig<
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team ID to scope the request',
|
||||
},
|
||||
slug: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team slug to scope the request (alternative to teamId)',
|
||||
},
|
||||
},
|
||||
|
||||
request: {
|
||||
@@ -71,6 +77,7 @@ export const vercelCreateDeploymentTool: ToolConfig<
|
||||
const query = new URLSearchParams()
|
||||
if (params.forceNew) query.set('forceNew', params.forceNew)
|
||||
if (params.teamId) query.set('teamId', params.teamId.trim())
|
||||
if (params.slug) query.set('slug', params.slug.trim())
|
||||
const qs = query.toString()
|
||||
return `https://api.vercel.com/v13/deployments${qs ? `?${qs}` : ''}`
|
||||
},
|
||||
|
||||
@@ -40,9 +40,9 @@ export const vercelCreateDnsRecordTool: ToolConfig<
|
||||
},
|
||||
value: {
|
||||
type: 'string',
|
||||
required: true,
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'The value of the DNS record',
|
||||
description: 'The value of the DNS record (not used for SRV/HTTPS records)',
|
||||
},
|
||||
ttl: {
|
||||
type: 'number',
|
||||
@@ -56,18 +56,73 @@ export const vercelCreateDnsRecordTool: ToolConfig<
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Priority for MX records',
|
||||
},
|
||||
srvTarget: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Target hostname for SRV records (required when recordType is SRV)',
|
||||
},
|
||||
srvWeight: {
|
||||
type: 'number',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Weight for SRV records (required when recordType is SRV)',
|
||||
},
|
||||
srvPort: {
|
||||
type: 'number',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Port for SRV records (required when recordType is SRV)',
|
||||
},
|
||||
srvPriority: {
|
||||
type: 'number',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Priority for SRV records (required when recordType is SRV)',
|
||||
},
|
||||
httpsTarget: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Target hostname for HTTPS records (required when recordType is HTTPS)',
|
||||
},
|
||||
httpsPriority: {
|
||||
type: 'number',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Priority for HTTPS records (required when recordType is HTTPS)',
|
||||
},
|
||||
httpsParams: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Optional service parameters for HTTPS records (e.g. "alpn=h2,h3")',
|
||||
},
|
||||
comment: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'A comment to add context on what this DNS record is for (max 500 characters)',
|
||||
},
|
||||
teamId: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team ID to scope the request',
|
||||
},
|
||||
slug: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team slug to scope the request (alternative to teamId)',
|
||||
},
|
||||
},
|
||||
|
||||
request: {
|
||||
url: (params: VercelCreateDnsRecordParams) => {
|
||||
const query = new URLSearchParams()
|
||||
if (params.teamId) query.set('teamId', params.teamId.trim())
|
||||
if (params.slug) query.set('slug', params.slug.trim())
|
||||
const qs = query.toString()
|
||||
return `https://api.vercel.com/v2/domains/${params.domain.trim()}/records${qs ? `?${qs}` : ''}`
|
||||
},
|
||||
@@ -77,13 +132,32 @@ export const vercelCreateDnsRecordTool: ToolConfig<
|
||||
'Content-Type': 'application/json',
|
||||
}),
|
||||
body: (params: VercelCreateDnsRecordParams) => {
|
||||
const type = params.recordType.trim().toUpperCase()
|
||||
const body: Record<string, unknown> = {
|
||||
name: params.recordName.trim(),
|
||||
type: params.recordType.trim(),
|
||||
value: params.value.trim(),
|
||||
type,
|
||||
}
|
||||
if (params.ttl != null) body.ttl = params.ttl
|
||||
if (params.mxPriority != null) body.mxPriority = params.mxPriority
|
||||
|
||||
if (type === 'SRV') {
|
||||
body.srv = {
|
||||
target: params.srvTarget?.trim(),
|
||||
weight: params.srvWeight,
|
||||
port: params.srvPort,
|
||||
priority: params.srvPriority,
|
||||
}
|
||||
} else if (type === 'HTTPS') {
|
||||
body.https = {
|
||||
target: params.httpsTarget?.trim(),
|
||||
priority: params.httpsPriority,
|
||||
...(params.httpsParams ? { params: params.httpsParams.trim() } : {}),
|
||||
}
|
||||
} else {
|
||||
if (params.value != null) body.value = params.value.trim()
|
||||
if (type === 'MX' && params.mxPriority != null) body.mxPriority = params.mxPriority
|
||||
}
|
||||
|
||||
if (params.comment != null && params.comment !== '') body.comment = params.comment
|
||||
return body
|
||||
},
|
||||
},
|
||||
|
||||
@@ -65,12 +65,19 @@ export const vercelCreateEnvVarTool: ToolConfig<
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team ID to scope the request',
|
||||
},
|
||||
slug: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team slug to scope the request (alternative to teamId)',
|
||||
},
|
||||
},
|
||||
|
||||
request: {
|
||||
url: (params: VercelCreateEnvVarParams) => {
|
||||
const query = new URLSearchParams()
|
||||
if (params.teamId) query.set('teamId', params.teamId.trim())
|
||||
if (params.slug) query.set('slug', params.slug.trim())
|
||||
const qs = query.toString()
|
||||
return `https://api.vercel.com/v10/projects/${params.projectId.trim()}/env${qs ? `?${qs}` : ''}`
|
||||
},
|
||||
|
||||
@@ -53,18 +53,43 @@ export const vercelCreateProjectTool: ToolConfig<
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Custom install command',
|
||||
},
|
||||
rootDirectory: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Subdirectory of the repository the project lives in (for monorepos)',
|
||||
},
|
||||
nodeVersion: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Node.js version to use (e.g. 22.x, 20.x, 18.x)',
|
||||
},
|
||||
devCommand: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Custom dev server command',
|
||||
},
|
||||
teamId: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team ID to scope the request',
|
||||
},
|
||||
slug: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team slug to scope the request (alternative to teamId)',
|
||||
},
|
||||
},
|
||||
|
||||
request: {
|
||||
url: (params: VercelCreateProjectParams) => {
|
||||
const query = new URLSearchParams()
|
||||
if (params.teamId) query.set('teamId', params.teamId.trim())
|
||||
if (params.slug) query.set('slug', params.slug.trim())
|
||||
const qs = query.toString()
|
||||
return `https://api.vercel.com/v11/projects${qs ? `?${qs}` : ''}`
|
||||
},
|
||||
@@ -80,6 +105,9 @@ export const vercelCreateProjectTool: ToolConfig<
|
||||
if (params.buildCommand) body.buildCommand = params.buildCommand.trim()
|
||||
if (params.outputDirectory) body.outputDirectory = params.outputDirectory.trim()
|
||||
if (params.installCommand) body.installCommand = params.installCommand.trim()
|
||||
if (params.rootDirectory) body.rootDirectory = params.rootDirectory.trim()
|
||||
if (params.nodeVersion) body.nodeVersion = params.nodeVersion.trim()
|
||||
if (params.devCommand) body.devCommand = params.devCommand.trim()
|
||||
return body
|
||||
},
|
||||
},
|
||||
|
||||
@@ -27,12 +27,19 @@ export const vercelDeleteAliasTool: ToolConfig<VercelDeleteAliasParams, VercelDe
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team ID to scope the request',
|
||||
},
|
||||
slug: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team slug to scope the request (alternative to teamId)',
|
||||
},
|
||||
},
|
||||
|
||||
request: {
|
||||
url: (params: VercelDeleteAliasParams) => {
|
||||
const query = new URLSearchParams()
|
||||
if (params.teamId) query.set('teamId', params.teamId.trim())
|
||||
if (params.slug) query.set('slug', params.slug.trim())
|
||||
const qs = query.toString()
|
||||
return `https://api.vercel.com/v2/aliases/${params.aliasId.trim()}${qs ? `?${qs}` : ''}`
|
||||
},
|
||||
|
||||
@@ -32,12 +32,19 @@ export const vercelDeleteDeploymentTool: ToolConfig<
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team ID to scope the request',
|
||||
},
|
||||
slug: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team slug to scope the request (alternative to teamId)',
|
||||
},
|
||||
},
|
||||
|
||||
request: {
|
||||
url: (params: VercelDeleteDeploymentParams) => {
|
||||
const query = new URLSearchParams()
|
||||
if (params.teamId) query.set('teamId', params.teamId.trim())
|
||||
if (params.slug) query.set('slug', params.slug.trim())
|
||||
const id = params.deploymentId.trim()
|
||||
if (id.includes('.')) {
|
||||
query.set('url', id)
|
||||
|
||||
@@ -38,12 +38,19 @@ export const vercelDeleteDnsRecordTool: ToolConfig<
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team ID to scope the request',
|
||||
},
|
||||
slug: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team slug to scope the request (alternative to teamId)',
|
||||
},
|
||||
},
|
||||
|
||||
request: {
|
||||
url: (params: VercelDeleteDnsRecordParams) => {
|
||||
const query = new URLSearchParams()
|
||||
if (params.teamId) query.set('teamId', params.teamId.trim())
|
||||
if (params.slug) query.set('slug', params.slug.trim())
|
||||
const qs = query.toString()
|
||||
return `https://api.vercel.com/v2/domains/${params.domain.trim()}/records/${params.recordId.trim()}${qs ? `?${qs}` : ''}`
|
||||
},
|
||||
|
||||
@@ -29,12 +29,19 @@ export const vercelDeleteDomainTool: ToolConfig<
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team ID to scope the request',
|
||||
},
|
||||
slug: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team slug to scope the request (alternative to teamId)',
|
||||
},
|
||||
},
|
||||
|
||||
request: {
|
||||
url: (params: VercelDeleteDomainParams) => {
|
||||
const query = new URLSearchParams()
|
||||
if (params.teamId) query.set('teamId', params.teamId.trim())
|
||||
if (params.slug) query.set('slug', params.slug.trim())
|
||||
const qs = query.toString()
|
||||
return `https://api.vercel.com/v6/domains/${params.domain.trim()}${qs ? `?${qs}` : ''}`
|
||||
},
|
||||
|
||||
@@ -35,12 +35,19 @@ export const vercelDeleteEnvVarTool: ToolConfig<
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team ID to scope the request',
|
||||
},
|
||||
slug: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team slug to scope the request (alternative to teamId)',
|
||||
},
|
||||
},
|
||||
|
||||
request: {
|
||||
url: (params: VercelDeleteEnvVarParams) => {
|
||||
const query = new URLSearchParams()
|
||||
if (params.teamId) query.set('teamId', params.teamId.trim())
|
||||
if (params.slug) query.set('slug', params.slug.trim())
|
||||
const qs = query.toString()
|
||||
return `https://api.vercel.com/v9/projects/${params.projectId.trim()}/env/${params.envId.trim()}${qs ? `?${qs}` : ''}`
|
||||
},
|
||||
|
||||
@@ -29,12 +29,19 @@ export const vercelDeleteProjectTool: ToolConfig<
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team ID to scope the request',
|
||||
},
|
||||
slug: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team slug to scope the request (alternative to teamId)',
|
||||
},
|
||||
},
|
||||
|
||||
request: {
|
||||
url: (params: VercelDeleteProjectParams) => {
|
||||
const query = new URLSearchParams()
|
||||
if (params.teamId) query.set('teamId', params.teamId.trim())
|
||||
if (params.slug) query.set('slug', params.slug.trim())
|
||||
const qs = query.toString()
|
||||
return `https://api.vercel.com/v9/projects/${params.projectId.trim()}${qs ? `?${qs}` : ''}`
|
||||
},
|
||||
|
||||
@@ -26,12 +26,19 @@ export const vercelGetAliasTool: ToolConfig<VercelGetAliasParams, VercelGetAlias
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team ID to scope the request',
|
||||
},
|
||||
slug: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team slug to scope the request (alternative to teamId)',
|
||||
},
|
||||
},
|
||||
|
||||
request: {
|
||||
url: (params: VercelGetAliasParams) => {
|
||||
const query = new URLSearchParams()
|
||||
if (params.teamId) query.set('teamId', params.teamId.trim())
|
||||
if (params.slug) query.set('slug', params.slug.trim())
|
||||
const qs = query.toString()
|
||||
return `https://api.vercel.com/v4/aliases/${params.aliasId.trim()}${qs ? `?${qs}` : ''}`
|
||||
},
|
||||
|
||||
@@ -32,12 +32,19 @@ export const vercelGetCheckTool: ToolConfig<VercelGetCheckParams, VercelCheckRes
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team ID to scope the request',
|
||||
},
|
||||
slug: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team slug to scope the request (alternative to teamId)',
|
||||
},
|
||||
},
|
||||
|
||||
request: {
|
||||
url: (params: VercelGetCheckParams) => {
|
||||
const query = new URLSearchParams()
|
||||
if (params.teamId) query.set('teamId', params.teamId.trim())
|
||||
if (params.slug) query.set('slug', params.slug.trim())
|
||||
const qs = query.toString()
|
||||
return `https://api.vercel.com/v1/deployments/${params.deploymentId.trim()}/checks/${params.checkId.trim()}${qs ? `?${qs}` : ''}`
|
||||
},
|
||||
|
||||
@@ -35,6 +35,12 @@ export const vercelGetDeploymentTool: ToolConfig<
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team ID to scope the request',
|
||||
},
|
||||
slug: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team slug to scope the request (alternative to teamId)',
|
||||
},
|
||||
},
|
||||
|
||||
request: {
|
||||
@@ -42,6 +48,7 @@ export const vercelGetDeploymentTool: ToolConfig<
|
||||
const query = new URLSearchParams()
|
||||
if (params.withGitRepoInfo) query.set('withGitRepoInfo', params.withGitRepoInfo)
|
||||
if (params.teamId) query.set('teamId', params.teamId.trim())
|
||||
if (params.slug) query.set('slug', params.slug.trim())
|
||||
const qs = query.toString()
|
||||
return `https://api.vercel.com/v13/deployments/${params.deploymentId.trim()}${qs ? `?${qs}` : ''}`
|
||||
},
|
||||
|
||||
@@ -62,6 +62,12 @@ export const vercelGetDeploymentEventsTool: ToolConfig<
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team ID to scope the request',
|
||||
},
|
||||
slug: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team slug to scope the request (alternative to teamId)',
|
||||
},
|
||||
},
|
||||
|
||||
request: {
|
||||
@@ -73,6 +79,7 @@ export const vercelGetDeploymentEventsTool: ToolConfig<
|
||||
if (params.since !== undefined) query.set('since', String(params.since))
|
||||
if (params.until !== undefined) query.set('until', String(params.until))
|
||||
if (params.teamId) query.set('teamId', params.teamId.trim())
|
||||
if (params.slug) query.set('slug', params.slug.trim())
|
||||
const qs = query.toString()
|
||||
return `https://api.vercel.com/v3/deployments/${params.deploymentId.trim()}/events${qs ? `?${qs}` : ''}`
|
||||
},
|
||||
|
||||
@@ -26,12 +26,19 @@ export const vercelGetDomainTool: ToolConfig<VercelGetDomainParams, VercelGetDom
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team ID to scope the request',
|
||||
},
|
||||
slug: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team slug to scope the request (alternative to teamId)',
|
||||
},
|
||||
},
|
||||
|
||||
request: {
|
||||
url: (params: VercelGetDomainParams) => {
|
||||
const query = new URLSearchParams()
|
||||
if (params.teamId) query.set('teamId', params.teamId.trim())
|
||||
if (params.slug) query.set('slug', params.slug.trim())
|
||||
const qs = query.toString()
|
||||
return `https://api.vercel.com/v5/domains/${params.domain.trim()}${qs ? `?${qs}` : ''}`
|
||||
},
|
||||
|
||||
@@ -32,12 +32,19 @@ export const vercelGetDomainConfigTool: ToolConfig<
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team ID to scope the request',
|
||||
},
|
||||
slug: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team slug to scope the request (alternative to teamId)',
|
||||
},
|
||||
},
|
||||
|
||||
request: {
|
||||
url: (params: VercelGetDomainConfigParams) => {
|
||||
const query = new URLSearchParams()
|
||||
if (params.teamId) query.set('teamId', params.teamId.trim())
|
||||
if (params.slug) query.set('slug', params.slug.trim())
|
||||
const qs = query.toString()
|
||||
return `https://api.vercel.com/v6/domains/${params.domain.trim()}/config${qs ? `?${qs}` : ''}`
|
||||
},
|
||||
|
||||
@@ -20,18 +20,40 @@ export const vercelGetEnvVarsTool: ToolConfig<VercelGetEnvVarsParams, VercelGetE
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Project ID or name',
|
||||
},
|
||||
decrypt: {
|
||||
type: 'boolean',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'If true, decrypted variable values are returned instead of ciphertext',
|
||||
},
|
||||
gitBranch: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description:
|
||||
'Filter results to the environment variables for this git branch (must have target=preview)',
|
||||
},
|
||||
teamId: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team ID to scope the request',
|
||||
},
|
||||
slug: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team slug to scope the request (alternative to teamId)',
|
||||
},
|
||||
},
|
||||
|
||||
request: {
|
||||
url: (params: VercelGetEnvVarsParams) => {
|
||||
const query = new URLSearchParams()
|
||||
if (params.decrypt) query.set('decrypt', 'true')
|
||||
if (params.gitBranch) query.set('gitBranch', params.gitBranch.trim())
|
||||
if (params.teamId) query.set('teamId', params.teamId.trim())
|
||||
if (params.slug) query.set('slug', params.slug.trim())
|
||||
const qs = query.toString()
|
||||
return `https://api.vercel.com/v10/projects/${params.projectId.trim()}/env${qs ? `?${qs}` : ''}`
|
||||
},
|
||||
|
||||
@@ -26,12 +26,19 @@ export const vercelGetProjectTool: ToolConfig<VercelGetProjectParams, VercelGetP
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team ID to scope the request',
|
||||
},
|
||||
slug: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team slug to scope the request (alternative to teamId)',
|
||||
},
|
||||
},
|
||||
|
||||
request: {
|
||||
url: (params: VercelGetProjectParams) => {
|
||||
const query = new URLSearchParams()
|
||||
if (params.teamId) query.set('teamId', params.teamId.trim())
|
||||
if (params.slug) query.set('slug', params.slug.trim())
|
||||
const qs = query.toString()
|
||||
return `https://api.vercel.com/v9/projects/${params.projectId.trim()}${qs ? `?${qs}` : ''}`
|
||||
},
|
||||
@@ -50,6 +57,8 @@ export const vercelGetProjectTool: ToolConfig<VercelGetProjectParams, VercelGetP
|
||||
id: data.id,
|
||||
name: data.name,
|
||||
framework: data.framework ?? null,
|
||||
rootDirectory: data.rootDirectory ?? null,
|
||||
nodeVersion: data.nodeVersion ?? null,
|
||||
createdAt: data.createdAt,
|
||||
updatedAt: data.updatedAt,
|
||||
link: data.link
|
||||
@@ -67,6 +76,8 @@ export const vercelGetProjectTool: ToolConfig<VercelGetProjectParams, VercelGetP
|
||||
id: { type: 'string', description: 'Project ID' },
|
||||
name: { type: 'string', description: 'Project name' },
|
||||
framework: { type: 'string', description: 'Project framework', optional: true },
|
||||
rootDirectory: { type: 'string', description: 'Root directory of the project', optional: true },
|
||||
nodeVersion: { type: 'string', description: 'Node.js version', optional: true },
|
||||
createdAt: { type: 'number', description: 'Creation timestamp' },
|
||||
updatedAt: { type: 'number', description: 'Last updated timestamp' },
|
||||
link: {
|
||||
|
||||
@@ -39,6 +39,12 @@ export const vercelListAliasesTool: ToolConfig<VercelListAliasesParams, VercelLi
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team ID to scope the request',
|
||||
},
|
||||
slug: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team slug to scope the request (alternative to teamId)',
|
||||
},
|
||||
},
|
||||
|
||||
request: {
|
||||
@@ -48,6 +54,7 @@ export const vercelListAliasesTool: ToolConfig<VercelListAliasesParams, VercelLi
|
||||
if (params.domain) query.set('domain', params.domain.trim())
|
||||
if (params.limit) query.set('limit', String(params.limit))
|
||||
if (params.teamId) query.set('teamId', params.teamId.trim())
|
||||
if (params.slug) query.set('slug', params.slug.trim())
|
||||
const qs = query.toString()
|
||||
return `https://api.vercel.com/v4/aliases${qs ? `?${qs}` : ''}`
|
||||
},
|
||||
|
||||
@@ -26,12 +26,19 @@ export const vercelListChecksTool: ToolConfig<VercelListChecksParams, VercelList
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team ID to scope the request',
|
||||
},
|
||||
slug: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team slug to scope the request (alternative to teamId)',
|
||||
},
|
||||
},
|
||||
|
||||
request: {
|
||||
url: (params: VercelListChecksParams) => {
|
||||
const query = new URLSearchParams()
|
||||
if (params.teamId) query.set('teamId', params.teamId.trim())
|
||||
if (params.slug) query.set('slug', params.slug.trim())
|
||||
const qs = query.toString()
|
||||
return `https://api.vercel.com/v1/deployments/${params.deploymentId.trim()}/checks${qs ? `?${qs}` : ''}`
|
||||
},
|
||||
|
||||
@@ -32,12 +32,19 @@ export const vercelListDeploymentFilesTool: ToolConfig<
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team ID to scope the request',
|
||||
},
|
||||
slug: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team slug to scope the request (alternative to teamId)',
|
||||
},
|
||||
},
|
||||
|
||||
request: {
|
||||
url: (params: VercelListDeploymentFilesParams) => {
|
||||
const query = new URLSearchParams()
|
||||
if (params.teamId) query.set('teamId', params.teamId.trim())
|
||||
if (params.slug) query.set('slug', params.slug.trim())
|
||||
const qs = query.toString()
|
||||
return `https://api.vercel.com/v6/deployments/${params.deploymentId.trim()}/files${qs ? `?${qs}` : ''}`
|
||||
},
|
||||
|
||||
@@ -69,6 +69,12 @@ export const vercelListDeploymentsTool: ToolConfig<
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team ID to scope the request',
|
||||
},
|
||||
slug: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team slug to scope the request (alternative to teamId)',
|
||||
},
|
||||
},
|
||||
|
||||
request: {
|
||||
@@ -82,6 +88,7 @@ export const vercelListDeploymentsTool: ToolConfig<
|
||||
if (params.until) query.set('until', String(params.until))
|
||||
if (params.limit) query.set('limit', String(params.limit))
|
||||
if (params.teamId) query.set('teamId', params.teamId.trim())
|
||||
if (params.slug) query.set('slug', params.slug.trim())
|
||||
const qs = query.toString()
|
||||
return `https://api.vercel.com/v7/deployments${qs ? `?${qs}` : ''}`
|
||||
},
|
||||
|
||||
@@ -35,6 +35,12 @@ export const vercelListDnsRecordsTool: ToolConfig<
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team ID to scope the request',
|
||||
},
|
||||
slug: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team slug to scope the request (alternative to teamId)',
|
||||
},
|
||||
},
|
||||
|
||||
request: {
|
||||
@@ -42,6 +48,7 @@ export const vercelListDnsRecordsTool: ToolConfig<
|
||||
const query = new URLSearchParams()
|
||||
if (params.limit) query.set('limit', String(params.limit))
|
||||
if (params.teamId) query.set('teamId', params.teamId.trim())
|
||||
if (params.slug) query.set('slug', params.slug.trim())
|
||||
const qs = query.toString()
|
||||
return `https://api.vercel.com/v5/domains/${params.domain.trim()}/records${qs ? `?${qs}` : ''}`
|
||||
},
|
||||
|
||||
@@ -27,6 +27,12 @@ export const vercelListDomainsTool: ToolConfig<VercelListDomainsParams, VercelLi
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team ID to scope the request',
|
||||
},
|
||||
slug: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team slug to scope the request (alternative to teamId)',
|
||||
},
|
||||
},
|
||||
|
||||
request: {
|
||||
@@ -34,6 +40,7 @@ export const vercelListDomainsTool: ToolConfig<VercelListDomainsParams, VercelLi
|
||||
const query = new URLSearchParams()
|
||||
if (params.limit) query.set('limit', String(params.limit))
|
||||
if (params.teamId) query.set('teamId', params.teamId.trim())
|
||||
if (params.slug) query.set('slug', params.slug.trim())
|
||||
const qs = query.toString()
|
||||
return `https://api.vercel.com/v5/domains${qs ? `?${qs}` : ''}`
|
||||
},
|
||||
@@ -65,6 +72,10 @@ export const vercelListDomainsTool: ToolConfig<VercelListDomainsParams, VercelLi
|
||||
email: d.creator.email ?? null,
|
||||
}
|
||||
: null,
|
||||
customNameservers: d.customNameservers ?? [],
|
||||
userId: d.userId ?? null,
|
||||
teamId: d.teamId ?? null,
|
||||
transferStartedAt: d.transferStartedAt ?? null,
|
||||
}))
|
||||
|
||||
return {
|
||||
@@ -117,6 +128,18 @@ export const vercelListDomainsTool: ToolConfig<VercelListDomainsParams, VercelLi
|
||||
email: { type: 'string', description: 'Creator email' },
|
||||
},
|
||||
},
|
||||
customNameservers: {
|
||||
type: 'array',
|
||||
description: 'Custom nameservers',
|
||||
items: { type: 'string' },
|
||||
},
|
||||
userId: { type: 'string', description: 'Owner user ID', optional: true },
|
||||
teamId: { type: 'string', description: 'Owner team ID', optional: true },
|
||||
transferStartedAt: {
|
||||
type: 'number',
|
||||
description: 'Transfer start timestamp',
|
||||
optional: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
@@ -32,6 +32,12 @@ export const vercelListProjectDomainsTool: ToolConfig<
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team ID to scope the request',
|
||||
},
|
||||
slug: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team slug to scope the request (alternative to teamId)',
|
||||
},
|
||||
limit: {
|
||||
type: 'number',
|
||||
required: false,
|
||||
@@ -44,6 +50,7 @@ export const vercelListProjectDomainsTool: ToolConfig<
|
||||
url: (params: VercelListProjectDomainsParams) => {
|
||||
const query = new URLSearchParams()
|
||||
if (params.teamId) query.set('teamId', params.teamId.trim())
|
||||
if (params.slug) query.set('slug', params.slug.trim())
|
||||
if (params.limit) query.set('limit', String(params.limit))
|
||||
const qs = query.toString()
|
||||
return `https://api.vercel.com/v9/projects/${params.projectId.trim()}/domains${qs ? `?${qs}` : ''}`
|
||||
|
||||
@@ -29,12 +29,25 @@ export const vercelListProjectsTool: ToolConfig<
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Maximum number of projects to return',
|
||||
},
|
||||
from: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description:
|
||||
"Continuation token for pagination, taken from the previous response's pagination.next value. Query only projects updated after this timestamp or continuation token.",
|
||||
},
|
||||
teamId: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team ID to scope the request',
|
||||
},
|
||||
slug: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team slug to scope the request (alternative to teamId)',
|
||||
},
|
||||
},
|
||||
|
||||
request: {
|
||||
@@ -42,7 +55,9 @@ export const vercelListProjectsTool: ToolConfig<
|
||||
const query = new URLSearchParams()
|
||||
if (params.search) query.set('search', params.search)
|
||||
if (params.limit) query.set('limit', String(params.limit))
|
||||
if (params.from) query.set('from', params.from.trim())
|
||||
if (params.teamId) query.set('teamId', params.teamId.trim())
|
||||
if (params.slug) query.set('slug', params.slug.trim())
|
||||
const qs = query.toString()
|
||||
return `https://api.vercel.com/v10/projects${qs ? `?${qs}` : ''}`
|
||||
},
|
||||
@@ -59,6 +74,8 @@ export const vercelListProjectsTool: ToolConfig<
|
||||
id: p.id,
|
||||
name: p.name,
|
||||
framework: p.framework ?? null,
|
||||
rootDirectory: p.rootDirectory ?? null,
|
||||
nodeVersion: p.nodeVersion ?? null,
|
||||
createdAt: p.createdAt,
|
||||
updatedAt: p.updatedAt,
|
||||
}))
|
||||
@@ -69,6 +86,7 @@ export const vercelListProjectsTool: ToolConfig<
|
||||
projects,
|
||||
count: projects.length,
|
||||
hasMore: data.pagination?.next != null,
|
||||
nextFrom: data.pagination?.next != null ? String(data.pagination.next) : null,
|
||||
},
|
||||
}
|
||||
},
|
||||
@@ -83,6 +101,12 @@ export const vercelListProjectsTool: ToolConfig<
|
||||
id: { type: 'string', description: 'Project ID' },
|
||||
name: { type: 'string', description: 'Project name' },
|
||||
framework: { type: 'string', description: 'Framework', optional: true },
|
||||
rootDirectory: {
|
||||
type: 'string',
|
||||
description: 'Root directory of the project',
|
||||
optional: true,
|
||||
},
|
||||
nodeVersion: { type: 'string', description: 'Node.js version', optional: true },
|
||||
createdAt: { type: 'number', description: 'Creation timestamp' },
|
||||
updatedAt: { type: 'number', description: 'Last updated timestamp' },
|
||||
},
|
||||
@@ -96,5 +120,10 @@ export const vercelListProjectsTool: ToolConfig<
|
||||
type: 'boolean',
|
||||
description: 'Whether more projects are available',
|
||||
},
|
||||
nextFrom: {
|
||||
type: 'string',
|
||||
description: 'Continuation token to pass as `from` to fetch the next page',
|
||||
optional: true,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@@ -29,12 +29,19 @@ export const vercelPauseProjectTool: ToolConfig<
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team ID to scope the request',
|
||||
},
|
||||
slug: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team slug to scope the request (alternative to teamId)',
|
||||
},
|
||||
},
|
||||
|
||||
request: {
|
||||
url: (params: VercelPauseProjectParams) => {
|
||||
const query = new URLSearchParams()
|
||||
if (params.teamId) query.set('teamId', params.teamId.trim())
|
||||
if (params.slug) query.set('slug', params.slug.trim())
|
||||
const qs = query.toString()
|
||||
return `https://api.vercel.com/v1/projects/${params.projectId.trim()}/pause${qs ? `?${qs}` : ''}`
|
||||
},
|
||||
|
||||
@@ -38,12 +38,19 @@ export const vercelPromoteDeploymentTool: ToolConfig<
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team ID to scope the request',
|
||||
},
|
||||
slug: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team slug to scope the request (alternative to teamId)',
|
||||
},
|
||||
},
|
||||
|
||||
request: {
|
||||
url: (params: VercelPromoteDeploymentParams) => {
|
||||
const query = new URLSearchParams()
|
||||
if (params.teamId) query.set('teamId', params.teamId.trim())
|
||||
if (params.slug) query.set('slug', params.slug.trim())
|
||||
const qs = query.toString()
|
||||
return `https://api.vercel.com/v10/projects/${params.projectId.trim()}/promote/${params.deploymentId.trim()}${qs ? `?${qs}` : ''}`
|
||||
},
|
||||
|
||||
@@ -38,12 +38,19 @@ export const vercelRemoveProjectDomainTool: ToolConfig<
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team ID to scope the request',
|
||||
},
|
||||
slug: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team slug to scope the request (alternative to teamId)',
|
||||
},
|
||||
},
|
||||
|
||||
request: {
|
||||
url: (params: VercelRemoveProjectDomainParams) => {
|
||||
const query = new URLSearchParams()
|
||||
if (params.teamId) query.set('teamId', params.teamId.trim())
|
||||
if (params.slug) query.set('slug', params.slug.trim())
|
||||
const qs = query.toString()
|
||||
return `https://api.vercel.com/v9/projects/${params.projectId.trim()}/domains/${params.domain.trim()}${qs ? `?${qs}` : ''}`
|
||||
},
|
||||
|
||||
@@ -35,12 +35,26 @@ export const vercelRerequestCheckTool: ToolConfig<
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team ID to scope the request',
|
||||
},
|
||||
slug: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team slug to scope the request (alternative to teamId)',
|
||||
},
|
||||
autoUpdate: {
|
||||
type: 'boolean',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Whether to mark the check as running immediately on rerequest',
|
||||
},
|
||||
},
|
||||
|
||||
request: {
|
||||
url: (params: VercelRerequestCheckParams) => {
|
||||
const query = new URLSearchParams()
|
||||
if (params.teamId) query.set('teamId', params.teamId.trim())
|
||||
if (params.slug) query.set('slug', params.slug.trim())
|
||||
if (params.autoUpdate !== undefined) query.set('autoUpdate', String(params.autoUpdate))
|
||||
const qs = query.toString()
|
||||
return `https://api.vercel.com/v1/deployments/${params.deploymentId.trim()}/checks/${params.checkId.trim()}/rerequest${qs ? `?${qs}` : ''}`
|
||||
},
|
||||
|
||||
@@ -23,6 +23,7 @@ export interface VercelListDeploymentsParams {
|
||||
until?: number
|
||||
limit?: number
|
||||
teamId?: string
|
||||
slug?: string
|
||||
}
|
||||
|
||||
export interface VercelGetDeploymentParams {
|
||||
@@ -30,19 +31,23 @@ export interface VercelGetDeploymentParams {
|
||||
deploymentId: string
|
||||
withGitRepoInfo?: string
|
||||
teamId?: string
|
||||
slug?: string
|
||||
}
|
||||
|
||||
export interface VercelListProjectsParams {
|
||||
apiKey: string
|
||||
search?: string
|
||||
limit?: number
|
||||
from?: string
|
||||
teamId?: string
|
||||
slug?: string
|
||||
}
|
||||
|
||||
export interface VercelGetProjectParams {
|
||||
apiKey: string
|
||||
projectId: string
|
||||
teamId?: string
|
||||
slug?: string
|
||||
}
|
||||
|
||||
export interface VercelCreateDeploymentParams {
|
||||
@@ -54,18 +59,23 @@ export interface VercelCreateDeploymentParams {
|
||||
gitSource?: string
|
||||
forceNew?: string
|
||||
teamId?: string
|
||||
slug?: string
|
||||
}
|
||||
|
||||
export interface VercelListDomainsParams {
|
||||
apiKey: string
|
||||
limit?: number
|
||||
teamId?: string
|
||||
slug?: string
|
||||
}
|
||||
|
||||
export interface VercelGetEnvVarsParams {
|
||||
apiKey: string
|
||||
projectId: string
|
||||
decrypt?: boolean
|
||||
gitBranch?: string
|
||||
teamId?: string
|
||||
slug?: string
|
||||
}
|
||||
|
||||
export interface VercelListDeploymentsResponse extends ToolResponse {
|
||||
@@ -134,11 +144,14 @@ export interface VercelListProjectsResponse extends ToolResponse {
|
||||
id: string
|
||||
name: string
|
||||
framework: string | null
|
||||
rootDirectory: string | null
|
||||
nodeVersion: string | null
|
||||
createdAt: number
|
||||
updatedAt: number
|
||||
}>
|
||||
count: number
|
||||
hasMore: boolean
|
||||
nextFrom: string | null
|
||||
}
|
||||
}
|
||||
|
||||
@@ -147,6 +160,8 @@ export interface VercelGetProjectResponse extends ToolResponse {
|
||||
id: string
|
||||
name: string
|
||||
framework: string | null
|
||||
rootDirectory: string | null
|
||||
nodeVersion: string | null
|
||||
createdAt: number
|
||||
updatedAt: number
|
||||
link: {
|
||||
@@ -189,6 +204,10 @@ export interface VercelListDomainsResponse extends ToolResponse {
|
||||
boughtAt: number | null
|
||||
transferredAt: number | null
|
||||
creator: VercelDomainCreator | null
|
||||
customNameservers: string[]
|
||||
userId: string | null
|
||||
teamId: string | null
|
||||
transferStartedAt: number | null
|
||||
}>
|
||||
count: number
|
||||
hasMore: boolean
|
||||
@@ -216,6 +235,7 @@ export interface VercelCancelDeploymentParams {
|
||||
apiKey: string
|
||||
deploymentId: string
|
||||
teamId?: string
|
||||
slug?: string
|
||||
}
|
||||
|
||||
export interface VercelCancelDeploymentResponse extends ToolResponse {
|
||||
@@ -234,6 +254,7 @@ export interface VercelDeleteDeploymentParams {
|
||||
apiKey: string
|
||||
deploymentId: string
|
||||
teamId?: string
|
||||
slug?: string
|
||||
}
|
||||
|
||||
export interface VercelDeleteDeploymentResponse extends ToolResponse {
|
||||
@@ -252,6 +273,7 @@ export interface VercelGetDeploymentEventsParams {
|
||||
since?: number
|
||||
until?: number
|
||||
teamId?: string
|
||||
slug?: string
|
||||
}
|
||||
|
||||
export interface VercelGetDeploymentEventsResponse extends ToolResponse {
|
||||
@@ -281,6 +303,7 @@ export interface VercelCreateEnvVarParams {
|
||||
gitBranch?: string
|
||||
comment?: string
|
||||
teamId?: string
|
||||
slug?: string
|
||||
}
|
||||
|
||||
export interface VercelCreateEnvVarResponse extends ToolResponse {
|
||||
@@ -308,6 +331,7 @@ export interface VercelUpdateEnvVarParams {
|
||||
gitBranch?: string
|
||||
comment?: string
|
||||
teamId?: string
|
||||
slug?: string
|
||||
}
|
||||
|
||||
export interface VercelUpdateEnvVarResponse extends ToolResponse {
|
||||
@@ -329,6 +353,7 @@ export interface VercelDeleteEnvVarParams {
|
||||
projectId: string
|
||||
envId: string
|
||||
teamId?: string
|
||||
slug?: string
|
||||
}
|
||||
|
||||
export interface VercelDeleteEnvVarResponse extends ToolResponse {
|
||||
@@ -341,6 +366,7 @@ export interface VercelListDeploymentFilesParams {
|
||||
apiKey: string
|
||||
deploymentId: string
|
||||
teamId?: string
|
||||
slug?: string
|
||||
}
|
||||
|
||||
export interface VercelListDeploymentFilesResponse extends ToolResponse {
|
||||
@@ -365,7 +391,11 @@ export interface VercelCreateProjectParams {
|
||||
buildCommand?: string
|
||||
outputDirectory?: string
|
||||
installCommand?: string
|
||||
rootDirectory?: string
|
||||
nodeVersion?: string
|
||||
devCommand?: string
|
||||
teamId?: string
|
||||
slug?: string
|
||||
}
|
||||
|
||||
export interface VercelCreateProjectResponse extends ToolResponse {
|
||||
@@ -386,7 +416,11 @@ export interface VercelUpdateProjectParams {
|
||||
buildCommand?: string
|
||||
outputDirectory?: string
|
||||
installCommand?: string
|
||||
rootDirectory?: string
|
||||
nodeVersion?: string
|
||||
devCommand?: string
|
||||
teamId?: string
|
||||
slug?: string
|
||||
}
|
||||
|
||||
export interface VercelUpdateProjectResponse extends ToolResponse {
|
||||
@@ -402,6 +436,7 @@ export interface VercelDeleteProjectParams {
|
||||
apiKey: string
|
||||
projectId: string
|
||||
teamId?: string
|
||||
slug?: string
|
||||
}
|
||||
|
||||
export interface VercelDeleteProjectResponse extends ToolResponse {
|
||||
@@ -414,6 +449,7 @@ export interface VercelPauseProjectParams {
|
||||
apiKey: string
|
||||
projectId: string
|
||||
teamId?: string
|
||||
slug?: string
|
||||
}
|
||||
|
||||
export interface VercelPauseProjectResponse extends ToolResponse {
|
||||
@@ -428,6 +464,7 @@ export interface VercelUnpauseProjectParams {
|
||||
apiKey: string
|
||||
projectId: string
|
||||
teamId?: string
|
||||
slug?: string
|
||||
}
|
||||
|
||||
export interface VercelUnpauseProjectResponse extends ToolResponse {
|
||||
@@ -442,6 +479,7 @@ export interface VercelListProjectDomainsParams {
|
||||
apiKey: string
|
||||
projectId: string
|
||||
teamId?: string
|
||||
slug?: string
|
||||
limit?: number
|
||||
}
|
||||
|
||||
@@ -472,6 +510,7 @@ export interface VercelAddProjectDomainParams {
|
||||
redirectStatusCode?: number
|
||||
gitBranch?: string
|
||||
teamId?: string
|
||||
slug?: string
|
||||
}
|
||||
|
||||
export interface VercelAddProjectDomainResponse extends ToolResponse {
|
||||
@@ -494,6 +533,7 @@ export interface VercelRemoveProjectDomainParams {
|
||||
projectId: string
|
||||
domain: string
|
||||
teamId?: string
|
||||
slug?: string
|
||||
}
|
||||
|
||||
export interface VercelRemoveProjectDomainResponse extends ToolResponse {
|
||||
@@ -506,6 +546,7 @@ export interface VercelGetDomainParams {
|
||||
apiKey: string
|
||||
domain: string
|
||||
teamId?: string
|
||||
slug?: string
|
||||
}
|
||||
|
||||
export interface VercelGetDomainResponse extends ToolResponse {
|
||||
@@ -533,6 +574,7 @@ export interface VercelAddDomainParams {
|
||||
apiKey: string
|
||||
name: string
|
||||
teamId?: string
|
||||
slug?: string
|
||||
}
|
||||
|
||||
export interface VercelAddDomainResponse extends ToolResponse {
|
||||
@@ -557,6 +599,7 @@ export interface VercelDeleteDomainParams {
|
||||
apiKey: string
|
||||
domain: string
|
||||
teamId?: string
|
||||
slug?: string
|
||||
}
|
||||
|
||||
export interface VercelDeleteDomainResponse extends ToolResponse {
|
||||
@@ -570,6 +613,7 @@ export interface VercelGetDomainConfigParams {
|
||||
apiKey: string
|
||||
domain: string
|
||||
teamId?: string
|
||||
slug?: string
|
||||
}
|
||||
|
||||
export interface VercelGetDomainConfigResponse extends ToolResponse {
|
||||
@@ -587,10 +631,19 @@ export interface VercelCreateDnsRecordParams {
|
||||
domain: string
|
||||
recordName: string
|
||||
recordType: string
|
||||
value: string
|
||||
value?: string
|
||||
ttl?: number
|
||||
mxPriority?: number
|
||||
srvTarget?: string
|
||||
srvWeight?: number
|
||||
srvPort?: number
|
||||
srvPriority?: number
|
||||
httpsTarget?: string
|
||||
httpsPriority?: number
|
||||
httpsParams?: string
|
||||
comment?: string
|
||||
teamId?: string
|
||||
slug?: string
|
||||
}
|
||||
|
||||
export interface VercelCreateDnsRecordResponse extends ToolResponse {
|
||||
@@ -605,6 +658,7 @@ export interface VercelListDnsRecordsParams {
|
||||
domain: string
|
||||
limit?: number
|
||||
teamId?: string
|
||||
slug?: string
|
||||
}
|
||||
|
||||
export interface VercelListDnsRecordsResponse extends ToolResponse {
|
||||
@@ -633,6 +687,7 @@ export interface VercelDeleteDnsRecordParams {
|
||||
domain: string
|
||||
recordId: string
|
||||
teamId?: string
|
||||
slug?: string
|
||||
}
|
||||
|
||||
export interface VercelDeleteDnsRecordResponse extends ToolResponse {
|
||||
@@ -772,6 +827,7 @@ export interface VercelListAliasesParams {
|
||||
domain?: string
|
||||
limit?: number
|
||||
teamId?: string
|
||||
slug?: string
|
||||
}
|
||||
|
||||
export interface VercelListAliasesResponse extends ToolResponse {
|
||||
@@ -796,6 +852,7 @@ export interface VercelGetAliasParams {
|
||||
apiKey: string
|
||||
aliasId: string
|
||||
teamId?: string
|
||||
slug?: string
|
||||
}
|
||||
|
||||
export interface VercelGetAliasResponse extends ToolResponse {
|
||||
@@ -816,7 +873,9 @@ export interface VercelCreateAliasParams {
|
||||
apiKey: string
|
||||
deploymentId: string
|
||||
alias: string
|
||||
redirect?: string
|
||||
teamId?: string
|
||||
slug?: string
|
||||
}
|
||||
|
||||
export interface VercelCreateAliasResponse extends ToolResponse {
|
||||
@@ -832,6 +891,7 @@ export interface VercelDeleteAliasParams {
|
||||
apiKey: string
|
||||
aliasId: string
|
||||
teamId?: string
|
||||
slug?: string
|
||||
}
|
||||
|
||||
export interface VercelDeleteAliasResponse extends ToolResponse {
|
||||
@@ -997,6 +1057,7 @@ export interface VercelCreateCheckParams {
|
||||
externalId?: string
|
||||
rerequestable?: boolean
|
||||
teamId?: string
|
||||
slug?: string
|
||||
}
|
||||
|
||||
export interface VercelCheckResponse extends ToolResponse {
|
||||
@@ -1025,12 +1086,14 @@ export interface VercelGetCheckParams {
|
||||
deploymentId: string
|
||||
checkId: string
|
||||
teamId?: string
|
||||
slug?: string
|
||||
}
|
||||
|
||||
export interface VercelListChecksParams {
|
||||
apiKey: string
|
||||
deploymentId: string
|
||||
teamId?: string
|
||||
slug?: string
|
||||
}
|
||||
|
||||
export interface VercelListChecksResponse extends ToolResponse {
|
||||
@@ -1069,6 +1132,7 @@ export interface VercelUpdateCheckParams {
|
||||
path?: string
|
||||
output?: string
|
||||
teamId?: string
|
||||
slug?: string
|
||||
}
|
||||
|
||||
export interface VercelRerequestCheckParams {
|
||||
@@ -1076,6 +1140,8 @@ export interface VercelRerequestCheckParams {
|
||||
deploymentId: string
|
||||
checkId: string
|
||||
teamId?: string
|
||||
slug?: string
|
||||
autoUpdate?: boolean
|
||||
}
|
||||
|
||||
export interface VercelRerequestCheckResponse extends ToolResponse {
|
||||
@@ -1092,8 +1158,16 @@ export interface VercelUpdateDnsRecordParams {
|
||||
type?: string
|
||||
ttl?: number
|
||||
mxPriority?: number
|
||||
srvTarget?: string
|
||||
srvWeight?: number
|
||||
srvPort?: number
|
||||
srvPriority?: number
|
||||
httpsTarget?: string
|
||||
httpsPriority?: number
|
||||
httpsParams?: string
|
||||
comment?: string
|
||||
teamId?: string
|
||||
slug?: string
|
||||
}
|
||||
|
||||
export interface VercelUpdateDnsRecordResponse extends ToolResponse {
|
||||
@@ -1149,6 +1223,7 @@ export interface VercelUpdateProjectDomainParams {
|
||||
redirectStatusCode?: number
|
||||
gitBranch?: string
|
||||
teamId?: string
|
||||
slug?: string
|
||||
}
|
||||
|
||||
export interface VercelUpdateProjectDomainResponse extends ToolResponse {
|
||||
@@ -1171,6 +1246,7 @@ export interface VercelVerifyProjectDomainParams {
|
||||
projectId: string
|
||||
domain: string
|
||||
teamId?: string
|
||||
slug?: string
|
||||
}
|
||||
|
||||
export interface VercelVerifyProjectDomainResponse extends ToolResponse {
|
||||
@@ -1192,6 +1268,7 @@ export interface VercelPromoteDeploymentParams {
|
||||
projectId: string
|
||||
deploymentId: string
|
||||
teamId?: string
|
||||
slug?: string
|
||||
}
|
||||
|
||||
export interface VercelPromoteDeploymentResponse extends ToolResponse {
|
||||
|
||||
@@ -29,12 +29,19 @@ export const vercelUnpauseProjectTool: ToolConfig<
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team ID to scope the request',
|
||||
},
|
||||
slug: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team slug to scope the request (alternative to teamId)',
|
||||
},
|
||||
},
|
||||
|
||||
request: {
|
||||
url: (params: VercelUnpauseProjectParams) => {
|
||||
const query = new URLSearchParams()
|
||||
if (params.teamId) query.set('teamId', params.teamId.trim())
|
||||
if (params.slug) query.set('slug', params.slug.trim())
|
||||
const qs = query.toString()
|
||||
return `https://api.vercel.com/v1/projects/${params.projectId.trim()}/unpause${qs ? `?${qs}` : ''}`
|
||||
},
|
||||
|
||||
@@ -74,12 +74,19 @@ export const vercelUpdateCheckTool: ToolConfig<VercelUpdateCheckParams, VercelCh
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team ID to scope the request',
|
||||
},
|
||||
slug: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team slug to scope the request (alternative to teamId)',
|
||||
},
|
||||
},
|
||||
|
||||
request: {
|
||||
url: (params: VercelUpdateCheckParams) => {
|
||||
const query = new URLSearchParams()
|
||||
if (params.teamId) query.set('teamId', params.teamId.trim())
|
||||
if (params.slug) query.set('slug', params.slug.trim())
|
||||
const qs = query.toString()
|
||||
return `https://api.vercel.com/v1/deployments/${params.deploymentId.trim()}/checks/${params.checkId.trim()}${qs ? `?${qs}` : ''}`
|
||||
},
|
||||
|
||||
@@ -56,6 +56,48 @@ export const vercelUpdateDnsRecordTool: ToolConfig<
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Priority for MX records',
|
||||
},
|
||||
srvTarget: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Target hostname for SRV records (required together when updating SRV data)',
|
||||
},
|
||||
srvWeight: {
|
||||
type: 'number',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Weight for SRV records (required together when updating SRV data)',
|
||||
},
|
||||
srvPort: {
|
||||
type: 'number',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Port for SRV records (required together when updating SRV data)',
|
||||
},
|
||||
srvPriority: {
|
||||
type: 'number',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Priority for SRV records (required together when updating SRV data)',
|
||||
},
|
||||
httpsTarget: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Target hostname for HTTPS records (required together when updating HTTPS data)',
|
||||
},
|
||||
httpsPriority: {
|
||||
type: 'number',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Priority for HTTPS records (required together when updating HTTPS data)',
|
||||
},
|
||||
httpsParams: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Optional service parameters for HTTPS records (e.g. "alpn=h2,h3")',
|
||||
},
|
||||
comment: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
@@ -68,12 +110,19 @@ export const vercelUpdateDnsRecordTool: ToolConfig<
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team ID to scope the request',
|
||||
},
|
||||
slug: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team slug to scope the request (alternative to teamId)',
|
||||
},
|
||||
},
|
||||
|
||||
request: {
|
||||
url: (params: VercelUpdateDnsRecordParams) => {
|
||||
const query = new URLSearchParams()
|
||||
if (params.teamId) query.set('teamId', params.teamId.trim())
|
||||
if (params.slug) query.set('slug', params.slug.trim())
|
||||
const qs = query.toString()
|
||||
return `https://api.vercel.com/v1/domains/records/${params.recordId.trim()}${qs ? `?${qs}` : ''}`
|
||||
},
|
||||
@@ -85,16 +134,35 @@ export const vercelUpdateDnsRecordTool: ToolConfig<
|
||||
body: (params: VercelUpdateDnsRecordParams) => {
|
||||
const body: Record<string, unknown> = {}
|
||||
if (params.name != null && params.name !== '') body.name = params.name
|
||||
if (params.value != null && params.value !== '') body.value = params.value
|
||||
if (params.type != null && params.type !== '') body.type = params.type
|
||||
const type =
|
||||
params.type != null && params.type !== '' ? params.type.trim().toUpperCase() : null
|
||||
if (type != null) body.type = type
|
||||
if (params.ttl != null) {
|
||||
const ttl = Number(params.ttl)
|
||||
if (!Number.isNaN(ttl)) body.ttl = ttl
|
||||
}
|
||||
if (params.mxPriority != null) {
|
||||
const mxPriority = Number(params.mxPriority)
|
||||
if (!Number.isNaN(mxPriority)) body.mxPriority = mxPriority
|
||||
|
||||
if (type === 'SRV') {
|
||||
body.srv = {
|
||||
target: params.srvTarget?.trim(),
|
||||
weight: params.srvWeight,
|
||||
port: params.srvPort,
|
||||
priority: params.srvPriority,
|
||||
}
|
||||
} else if (type === 'HTTPS') {
|
||||
body.https = {
|
||||
target: params.httpsTarget?.trim(),
|
||||
priority: params.httpsPriority,
|
||||
...(params.httpsParams ? { params: params.httpsParams.trim() } : {}),
|
||||
}
|
||||
} else {
|
||||
if (params.value != null && params.value !== '') body.value = params.value
|
||||
if (params.mxPriority != null) {
|
||||
const mxPriority = Number(params.mxPriority)
|
||||
if (!Number.isNaN(mxPriority)) body.mxPriority = mxPriority
|
||||
}
|
||||
}
|
||||
|
||||
if (params.comment != null && params.comment !== '') body.comment = params.comment
|
||||
return body
|
||||
},
|
||||
|
||||
@@ -71,12 +71,19 @@ export const vercelUpdateEnvVarTool: ToolConfig<
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team ID to scope the request',
|
||||
},
|
||||
slug: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team slug to scope the request (alternative to teamId)',
|
||||
},
|
||||
},
|
||||
|
||||
request: {
|
||||
url: (params: VercelUpdateEnvVarParams) => {
|
||||
const query = new URLSearchParams()
|
||||
if (params.teamId) query.set('teamId', params.teamId.trim())
|
||||
if (params.slug) query.set('slug', params.slug.trim())
|
||||
const qs = query.toString()
|
||||
return `https://api.vercel.com/v9/projects/${params.projectId.trim()}/env/${params.envId.trim()}${qs ? `?${qs}` : ''}`
|
||||
},
|
||||
|
||||
@@ -53,18 +53,43 @@ export const vercelUpdateProjectTool: ToolConfig<
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Custom install command',
|
||||
},
|
||||
rootDirectory: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Subdirectory of the repository the project lives in (for monorepos)',
|
||||
},
|
||||
nodeVersion: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Node.js version to use (e.g. 22.x, 20.x, 18.x)',
|
||||
},
|
||||
devCommand: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Custom dev server command',
|
||||
},
|
||||
teamId: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team ID to scope the request',
|
||||
},
|
||||
slug: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team slug to scope the request (alternative to teamId)',
|
||||
},
|
||||
},
|
||||
|
||||
request: {
|
||||
url: (params: VercelUpdateProjectParams) => {
|
||||
const query = new URLSearchParams()
|
||||
if (params.teamId) query.set('teamId', params.teamId.trim())
|
||||
if (params.slug) query.set('slug', params.slug.trim())
|
||||
const qs = query.toString()
|
||||
return `https://api.vercel.com/v9/projects/${params.projectId.trim()}${qs ? `?${qs}` : ''}`
|
||||
},
|
||||
@@ -80,6 +105,9 @@ export const vercelUpdateProjectTool: ToolConfig<
|
||||
if (params.buildCommand) body.buildCommand = params.buildCommand.trim()
|
||||
if (params.outputDirectory) body.outputDirectory = params.outputDirectory.trim()
|
||||
if (params.installCommand) body.installCommand = params.installCommand.trim()
|
||||
if (params.rootDirectory) body.rootDirectory = params.rootDirectory.trim()
|
||||
if (params.nodeVersion) body.nodeVersion = params.nodeVersion.trim()
|
||||
if (params.devCommand) body.devCommand = params.devCommand.trim()
|
||||
return body
|
||||
},
|
||||
},
|
||||
|
||||
@@ -56,12 +56,19 @@ export const vercelUpdateProjectDomainTool: ToolConfig<
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team ID to scope the request',
|
||||
},
|
||||
slug: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team slug to scope the request (alternative to teamId)',
|
||||
},
|
||||
},
|
||||
|
||||
request: {
|
||||
url: (params: VercelUpdateProjectDomainParams) => {
|
||||
const query = new URLSearchParams()
|
||||
if (params.teamId) query.set('teamId', params.teamId.trim())
|
||||
if (params.slug) query.set('slug', params.slug.trim())
|
||||
const qs = query.toString()
|
||||
return `https://api.vercel.com/v9/projects/${params.projectId.trim()}/domains/${params.domain.trim()}${qs ? `?${qs}` : ''}`
|
||||
},
|
||||
|
||||
@@ -38,12 +38,19 @@ export const vercelVerifyProjectDomainTool: ToolConfig<
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team ID to scope the request',
|
||||
},
|
||||
slug: {
|
||||
type: 'string',
|
||||
required: false,
|
||||
visibility: 'user-or-llm',
|
||||
description: 'Team slug to scope the request (alternative to teamId)',
|
||||
},
|
||||
},
|
||||
|
||||
request: {
|
||||
url: (params: VercelVerifyProjectDomainParams) => {
|
||||
const query = new URLSearchParams()
|
||||
if (params.teamId) query.set('teamId', params.teamId.trim())
|
||||
if (params.slug) query.set('slug', params.slug.trim())
|
||||
const qs = query.toString()
|
||||
return `https://api.vercel.com/v9/projects/${params.projectId.trim()}/domains/${params.domain.trim()}/verify${qs ? `?${qs}` : ''}`
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user