Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Connect AI agents to the Datacircle MCP server

Vendor MCP
Open markdown

The Datacircle MCP connector routes your AI agent's tool calls to Datacircle's own MCP server through Scalekit. Each user signs in to Datacircle once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 6 tools.

Tools
6
What they doRead · write · destructive
4 · 1 · 14 read1 write1 destructive
Users sign in with
OAuth app
Your own Datacircle MCP server app

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 Datacircle MCP connection

    In AgentKit > Connections, create a Datacircle MCP connection and copy its redirect URI. The name you give it is the connection_name your code passes. See Configure connections.

  4. Register an OAuth app

    Datacircle MCP server connections use your own OAuth app. Register one with Datacircle MCP server and add the redirect URI you copied.

    Then enter the app's Client ID and Client Secret on the Datacircle MCP connection.

  5. 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 = 'datacirclemcp'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
    console.log('Authorize Datacircle MCP:', 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: 'datacirclemcp_get_balance',
    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
  • datacirclemcp_get_balanceRead the Datacircle balance, in USD: balance_usd is everything calls can spend now, then what it is made of: signup_credit_usd (left of the sign-up credit), funds_usd (left of the funds added), manual_credit_usd, and temporary_credits, each with its campaign, credit_usd and expires_at.Read-only

    Get the balance

    Read the Datacircle balance, in USD: balance_usd is everything calls can spend now, then what it is made of: signup_credit_usd (left of the sign-up credit), funds_usd (left of the funds added), manual_credit_usd, and temporary_credits, each with its campaign, credit_usd and expires_at. Read it to know whether the balance covers the calls you are about to make. Free.

    Inputs

    This tool takes no inputs.

  • datacirclemcp_list_filesList the data files this account can download: the free 10M+ US B2B leads dataset (us_10m), the 50M+ US dataset (us_50m) and the co-op files (every profile anyone fetched through a provider, new every day).Read-only

    List files

    List the data files this account can download: the free 10M+ US B2B leads dataset (us_10m), the 50M+ US dataset (us_50m) and the co-op files (every profile anyone fetched through a provider, new every day). Each file comes with its id, dataset, filename, row_count, size_bytes, created_at and is_unlocked: whether this account may download it. Get one with get_download_link. Free.

    Inputs

    This tool takes no inputs.

  • datacirclemcp_get_linkedin_profileFetch one person's LinkedIn profile by its URL: name, headline, location, current company and title, positions, education, skills.Write

    Get a LinkedIn profile

    Fetch one person's LinkedIn profile by its URL: name, headline, location, current company and title, positions, education, skills. It costs the provider's own price, taken from the Datacircle balance with no markup: up2data $0.00125 per profile found, free when it isn't found, up to $1 a day per account; harvestapi $0.0037 per profile found, every section of the profile. Every call is live: the provider is asked each time, so the profile is as it is today. The answer is the provider's own JSON plus datacircle_meta {provider, cost_usd, balance_usd}. If up2data answers its daily limit (429), call again with provider harvestapi; if the balance is too low (402), add_funds. Details: https://docs.datacircle.dev/pricing

    Inputs

    urlstringrequired
    The profile's LinkedIn URL, like https://www.linkedin.com/in/williamhgates
    providerstring
    The data provider that fetches the profile, at its own price: up2data costs least; harvestapi returns every section of the profile, and answers when up2data is at its daily limitone of up2dataharvestapidefault up2data
  • datacirclemcp_add_fundsStart a Stripe Checkout that adds funds to the Datacircle balance.Destructive

    Add funds

    Start a Stripe Checkout that adds funds to the Datacircle balance. It answers checkout_url: give it to the user to open and pay; nothing is charged until they do. $50 or more in funds also unlocks the co-op files: the flat file of every API request, new every day.

    Inputs

    amount_usdintegerrequired
    The amount, in US dollars, the user pays at checkout and finds in their balance once paid