Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Connect AI agents to the Candid MCP server

Vendor MCP
Open markdown

The Candid MCP connector routes your AI agent's tool calls to Candid's own MCP server through Scalekit. Each user signs in to Candid 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
6 · 0 · 06 read0 write0 destructive
Users sign in with
OAuth app
Scalekit's or your own

What you can do

  • Search nonprofits and funders: find nonprofits and grantmaking organizations by name, mission, location, or type of work
  • Search sector research: find articles, research reports, and training content about the social and philanthropic sector
  • Identify organizations and places: resolve nonprofit names in text to Candid profiles and place names to location IDs
  • Classify by subject: tag text with philanthropy subject and population codes from Candid’s taxonomy

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

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

    Scalekit credentials are available for Candid MCP server, so you don't need to register an OAuth app.

  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 = 'candidmcp'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
    console.log('Authorize Candid 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: 'candidmcp_current_date',
    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
  • candidmcp_current_dateGet today's date for use in time-sensitive queries and data requests.Read-only

    Current Date

    Get today's date for use in time-sensitive queries and data requests.

    Inputs

    This tool takes no inputs.

  • candidmcp_identify_locationsDetect and resolve geographic names in text to Geonames IDs for use in organization search filters.Read-only

    Identify Locations

    Detect and resolve geographic names in text to Geonames IDs for use in organization search filters.

    Inputs

    textstringrequired
    No description.
  • candidmcp_identify_mentioned_organizationsResolve nonprofit names mentioned in text to Candid profile URLs.Read-only

    Identify Mentioned Organizations

    Resolve nonprofit names mentioned in text to Candid profile URLs.

    Inputs

    organizationsarrayrequired
    No description.
  • candidmcp_knowledge_resourcesSearch Candid's knowledge base for articles, blog posts, research reports, and training content about the social and philanthropic sector.Read-only

    Knowledge Resources

    Search Candid's knowledge base for articles, blog posts, research reports, and training content about the social and philanthropic sector.

    Inputs

    querystringrequired
    No description.
    sourcesarrayrequired
    No description.
    news_days_agointeger
    No description.default 60
  • candidmcp_search_organizationsSearch Candid's database for nonprofits and grantmaking organizations by name, mission, location, or type of work.Read-only

    Search Organizations

    Search Candid's database for nonprofits and grantmaking organizations by name, mission, location, or type of work.

    Inputs

    querystringrequired
    No description.
    geonameids_of_geographies_servedstring
    No description.
    geonameids_of_organization_locationstring
    No description.
    leader_demographicsstring
    No description.
    located_admin1string
    No description.
    located_postal_codestring
    No description.
    org_seal_statusstring
    No description.
    populations_served_codesstring
    No description.
    subject_codesstring
    No description.
  • candidmcp_taxonomy_termsClassify text using Candid's Philanthropy Classification System (PCS) taxonomy to get subject and population codes.Read-only

    Taxonomy Terms

    Classify text using Candid's Philanthropy Classification System (PCS) taxonomy to get subject and population codes.

    Inputs

    textstringrequired
    No description.