Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Connect AI agents to Vercel

Scalekit connector
Open markdown

The Vercel connector lets your AI agent act in each user's Vercel account. Each user signs in to Vercel once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 83 tools.

Tools
83
What they doRead · write · destructive
38 · 29 · 1638 read29 write16 destructive
Users sign in with
OAuth app
Scalekit's or your own

Setup

  1. Install the SDK

    Terminal window
    npm install @scalekit-sdk/node dotenv
  2. Set your credentials

    Add your Scalekit credentials to your .env file. Find values in app.scalekit.com > Developers > API Credentials.

    .env
    SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
    SCALEKIT_CLIENT_ID=<your-client-id>
    SCALEKIT_CLIENT_SECRET=<your-client-secret>
  3. Create the Vercel connection

    In AgentKit > Connections, create a Vercel connection. The name you give it is the connection_name your code passes. See Configure connections.

    Scalekit credentials are available for Vercel, so you don't need to register an OAuth app. To show your own app on the consent screen, use your own credentials instead.

    Use your own OAuth app

    Register your Scalekit environment with the Vercel connector so Scalekit handles the OAuth flow and token lifecycle for your users. Follow every step below from start to finish — by the end you will have a working connection.

    1. Create a Vercel OAuth integration

      You need a Vercel OAuth integration to get the Client ID and Client Secret that Scalekit will use to authorize your users.

      Go to the Vercel Integrations Console:

      • Open vercel.com/dashboard/integrations/console in your browser and sign in.

      • Click Create Integration (top right of the page).

      • Fill in the form:

        FieldWhat to enter
        Integration NameA recognizable name, e.g. My Vercel AI Agent
        URL SlugAuto-generated from the name — you can leave it as-is
        Website URLYour app’s public URL. For testing you can use https://localhost
        Short DescriptionBrief description of your integration
      • Leave the Redirects section empty for now. You will add the Scalekit callback URL in the next step.

      • Click Create →.

      After the integration is created, Vercel takes you to the integration’s settings page. Keep this tab open.

      Create a new OAuth integration in the Vercel Integrations Console

    2. Copy the redirect URI from Scalekit

      Scalekit gives you a callback URL that Vercel will redirect users back to after they authorize your app. You need to register this URL in your Vercel integration.

      In the Scalekit dashboard:

      • Go to app.scalekit.com and sign in.
      • In the left sidebar, click AgentKit > Connections > Create Connection.
      • Search for Vercel and click Create.
      • A connection details panel opens. Find the Redirect URI field — it looks like:
        https://<YOUR_ENV>.scalekit.cloud/sso/v1/oauth/conn_<ID>/callback
      • Click the copy icon next to the Redirect URI to copy it to your clipboard.

      Copy the redirect URI from the Scalekit dashboard

    3. Add the redirect URI and copy credentials from Vercel

      Switch back to the Vercel integration tab you left open.

      Register the redirect URI:

      • In the left sidebar of your integration settings, click Credentials.
      • Scroll down to the Redirect URIs section.
      • Paste the redirect URI you copied from Scalekit into the input field.
      • Click Add URI — the URI appears highlighted in the list.
      • Click Save Changes.

      Copy your credentials:

      • Scroll up to the OAuth Credentials section.
      • Client ID — shown in plain text. Click Copy ID to copy it.
      • Client Secret — click Reveal to show the secret, then copy it.

      Paste both values somewhere safe (a password manager or secrets vault). You will enter them into Scalekit in the next step.

      Vercel integration Credentials tab showing Client ID, Client Secret, and Redirect URIs

    4. Configure permissions in Vercel

      Permissions (scopes) control which Vercel API resources your integration can access on behalf of the user.

      • In the Vercel integration settings sidebar, click Permissions.

      • Enable the scopes your integration needs:

        ScopeAccess granted
        openidRequired to issue an ID token for user identification
        emailUser’s email address
        profileUser’s name, username, and profile picture
        offline_accessRefresh token for long-lived access without re-authorization
      • Click Save Changes.

    5. Add credentials in Scalekit

      Switch back to the Scalekit dashboard tab.

      • Go to AgentKit > Connections and click the Vercel connection you created in Step 2.

      • Fill in the credentials form:

        FieldValue
        Client IDPaste the Client ID from Step 3
        Client SecretPaste the Client Secret from Step 3
        ScopesEnter the scopes you enabled in Step 4, e.g. openid profile email offline_access
      • Click Save.

      Add credentials in Scalekit dashboard

      Your Vercel connection is now configured. Scalekit will use these credentials to run the OAuth flow whenever a user connects their Vercel account.

  4. Authorize a user and make your first call

    quickstart.mts
    import { ScalekitClient } from '@scalekit-sdk/node'
    import 'dotenv/config'
    import { createInterface } from 'node:readline/promises'
    const scalekit = new ScalekitClient(
    process.env.SCALEKIT_ENVIRONMENT_URL,
    process.env.SCALEKIT_CLIENT_ID,
    process.env.SCALEKIT_CLIENT_SECRET,
    )
    const actions = scalekit.actions
    const connector = 'vercel'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
    console.log('Authorize Vercel:', link)
    const rl = createInterface({ input: process.stdin, output: process.stdout })
    await rl.question('Press Enter after authorizing...')
    rl.close()
    // Make your first call
    const result = await actions.executeTool({
    connector,
    identifier,
    toolName: 'vercel_aliases_list',
    toolInput: {},
    })
    console.log(result)
    Terminal window
    npx tsx quickstart.mts

    Each user signs in once. See Authorize a user for the full flow and statuses.

Tools

Pass the exact name to execute_tool
Try in PlaygroundRequest a tool
  • vercel_alias_getReturns information about a specific alias by its ID or hostname.Read-only

    Get Alias

    Returns information about a specific alias by its ID or hostname.

    Inputs

    alias_or_idstringrequired
    The alias hostname or ID.
    team_idstring
    Team ID if the alias belongs to a team.
  • vercel_aliases_listReturns all aliases for the authenticated user or team, with optional domain and deployment filtering.Read-only

    List Aliases

    Returns all aliases for the authenticated user or team, with optional domain and deployment filtering.

    Inputs

    domainstring
    Filter aliases by domain.
    limitinteger
    Maximum number of aliases to return.
    sinceinteger
    Timestamp in ms for pagination.
    team_idstring
    Team ID to list aliases for.
  • vercel_auth_tokens_listRetrieve a list of the authenticated user's personal access tokens (metadata only — id, name, type, and timestamps; never the token value itself).Read-only

    List Auth Tokens

    Retrieve a list of the authenticated user's personal access tokens (metadata only — id, name, type, and timestamps; never the token value itself).

    Inputs

    This tool takes no inputs.

  • vercel_certs_listReturns all SSL certificates for the authenticated user or team, including their common names, auto-renew status, and expiration.Read-only

    List Certificates

    Returns all SSL certificates for the authenticated user or team, including their common names, auto-renew status, and expiration.

    Inputs

    team_idstring
    Team ID to list certificates for.
  • vercel_checks_listReturns all checks attached to a Vercel deployment (e.g.Read-only

    List Deployment Checks

    Returns all checks attached to a Vercel deployment (e.g. from third-party integrations).

    Inputs

    deployment_idstringrequired
    The deployment ID to list checks for.
    team_idstring
    Team ID if the deployment belongs to a team.
  • vercel_deployment_aliases_listReturns all aliases assigned to a specific Vercel deployment.Read-only

    List Deployment Aliases

    Returns all aliases assigned to a specific Vercel deployment.

    Inputs

    deployment_idstringrequired
    The deployment ID to get aliases for.
    team_idstring
    Team ID if the deployment belongs to a team.
  • vercel_deployment_events_listReturns build log events for a Vercel deployment.Read-only

    List Deployment Events

    Returns build log events for a Vercel deployment. Useful for debugging build errors.

    Inputs

    deployment_idstringrequired
    The deployment ID to get events for.
    limitinteger
    Maximum number of log events to return.
    sinceinteger
    Timestamp in ms to fetch events after.
    team_idstring
    Team ID if the deployment belongs to a team.
  • vercel_deployment_file_getRetrieve the base64-encoded content of a single file from a Vercel deployment by file ID.Read-only

    Get Deployment File Contents

    Retrieve the base64-encoded content of a single file from a Vercel deployment by file ID.

    Inputs

    deployment_idstringrequired
    The unique deployment identifier.
    file_idstringrequired
    The unique file identifier, from List Deployment Files.
    pathstring
    Path to the file to fetch (only applies to Git deployments).
    team_idstring
    Team ID if the deployment belongs to a team.

Workflows

Proxy API call
const result = await actions.request({
connectionName: 'vercel',
identifier: 'user_123',
path: '/v2/user',
method: 'GET',
});
console.log(result);
Execute a tool
const result = await actions.executeTool({
connector: 'vercel',
identifier: 'user_123',
toolName: 'vercel_alias_create',
toolInput: {},
});
console.log(result);