Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Connect AI agents to the SurveyMonkey MCP server

Vendor MCP
Open markdown

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

Tools
20
What they doRead · write · destructive
11 · 8 · 111 read8 write1 destructive
Users sign in with
OAuth app
Your own SurveyMonkey 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 SurveyMonkey MCP connection

    In AgentKit > Connections, create a SurveyMonkey 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

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

    Then enter the app's Client ID and Client Secret on the SurveyMonkey 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 = 'surveymonkeymcp'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
    console.log('Authorize SurveyMonkey 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: 'surveymonkeymcp_get_question_types',
    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
  • surveymonkeymcp_get_pageGet details about a specific page in a survey.Read-only

    Get page details by ID

    Get details about a specific page in a survey. Requires both survey_id and page_id.

    Inputs

    page_idstringrequired
    The unique identifier of the page to retrieve. Can be a string or integer. Use get_pages to find a page_id.
    survey_idstringrequired
    The unique identifier of the survey containing the page. Can be a string or integer. Use search_surveys to find a survey_id.
  • surveymonkeymcp_get_pagesGet all pages in a survey.Read-only

    List pages in a survey

    Get all pages in a survey. Use page IDs returned here with get_questions and other page-level tools.

    Inputs

    survey_idstringrequired
    The unique identifier of the survey whose pages to list. Can be a string or integer. Use search_surveys to find a survey_id.
    pageinteger
    Page number of results to return (1-based). Defaults to 1.default 1
    per_pageinteger
    Number of pages to return per result page. Defaults to 50.default 50
  • surveymonkeymcp_get_questionGet details about a specific question.Read-only

    Get question details by ID

    Get details about a specific question. Requires survey_id, page_id (from get_pages), and question_id (from get_questions).

    Inputs

    page_idstringrequired
    The unique identifier of the page containing the question. Can be a string or integer. Use get_pages to find page IDs.
    question_idstringrequired
    The unique identifier of the question to retrieve. Can be a string or integer. Use get_questions to find question IDs.
    survey_idstringrequired
    The unique identifier of the survey containing the question. Can be a string or integer. Use search_surveys to find a survey_id.
  • surveymonkeymcp_get_question_typesGet available SurveyMonkey question types and their schemas.Read-only

    Get available question types

    Get available SurveyMonkey question types and their schemas. Use this to discover valid question families and subtypes before calling add_question.

    Inputs

    This tool takes no inputs.

  • surveymonkeymcp_get_questionsGet all questions for a specific page in a survey.Read-only

    List questions on a page

    Get all questions for a specific page in a survey. Both survey_id and page_id are required. Use get_pages first to find page IDs.

    Inputs

    page_idstringrequired
    The unique identifier of the page whose questions to list. Can be a string or integer. Use get_pages to find page IDs.
    survey_idstringrequired
    The unique identifier of the survey. Can be a string or integer. Use search_surveys to find a survey_id.
    pageinteger
    Page number of results to return (1-based). Defaults to 1.default 1
    per_pageinteger
    Number of questions to return per result page. Defaults to 50.default 50
  • surveymonkeymcp_get_response_countGet the total number of responses received for a survey.Read-only

    Get number of survey responses

    Get the total number of responses received for a survey. Useful for determining if a survey has collected data or can still be modified.

    Inputs

    survey_idstringrequired
    The unique identifier of the survey whose response count to retrieve. Can be a string or integer. Use search_surveys to find a survey_id.
  • surveymonkeymcp_get_response_summaryGet a pre-computed statistical summary of all responses to a survey, with numerically accurate counts, percentages, and human-readable choice labels already resolved for every question.Read-only

    Get response summary with statistics

    Get a pre-computed statistical summary of all responses to a survey, with numerically accurate counts, percentages, and human-readable choice labels already resolved for every question. Use this instead of get_responses/get_pages/get_questions for any counting, tallying, or aggregation of response data (e.g. 'how many people chose X', 'what percentage said yes', 'show me the breakdown'). Requires the responses_read_detail OAuth scope.

    Inputs

    survey_idstringrequired
    The unique identifier of the survey to summarize. Can be a string or integer. Use search_surveys to find a survey_id.
    statusstring
    Optional filter to only include responses with this status: completed, partial, disqualified, or overquota. Omit to include all responses.
  • surveymonkeymcp_get_responsesRetrieve paginated survey responses with full answer details including question headings and choice text.Read-only

    Get survey responses with answer data

    Retrieve paginated survey responses with full answer details including question headings and choice text. Requires responses_read and responses_read_detail scopes.

    Inputs

    survey_idstringrequired
    The unique identifier of the survey whose responses to retrieve. Can be a string or integer. Use search_surveys to find a survey_id.
    pageinteger
    Page number of results to return (1-based). Defaults to 1.default 1
    per_pageinteger
    Number of responses to return per page. Defaults to 10.default 10