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
- OAuth app
- Your own SurveyMonkey MCP server app
Setup
Install the SDK
Terminal window npm install @scalekit-sdk/node dotenvTerminal window pip install scalekit-sdk-python python-dotenvSet your credentials
Add your Scalekit credentials to your
.envfile. 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>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_nameyour code passes. See Configure connections.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.
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.actionsconst connector = 'surveymonkeymcp'const identifier = 'user_123'// Generate an authorization link for the userconst { 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 callconst result = await actions.executeTool({connector,identifier,toolName: 'surveymonkeymcp_get_question_types',toolInput: {},})console.log(result)Terminal window npx tsx quickstart.mtsquickstart.py import osfrom scalekit import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "surveymonkeymcp"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize SurveyMonkey MCP:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="surveymonkeymcp_get_question_types",connection_name=connection_name,identifier=identifier,)print(result)Terminal window python quickstart.pyEach user signs in once. See Authorize a user for the full flow and statuses.
Tools
Pass the exact name toexecute_toolsurveymonkeymcp_get_pageGet details about a specific page in a survey.Read-onlyGet 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-onlyList 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-onlyGet 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-onlyGet 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-onlyList 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-onlyGet 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-onlyGet 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-onlyGet 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
surveymonkeymcp_get_server_infoReturns information about the SurveyMonkey MCP server.Read-onlyGet MCP server information
Returns information about the SurveyMonkey MCP server.
Inputs
This tool takes no inputs.
surveymonkeymcp_get_surveyGet details about a specific survey including title, dates, language, and question count.Read-onlyGet survey details by ID
Get details about a specific survey including title, dates, language, and question count. Use search_surveys to find a survey_id first.
Inputs
survey_idstringrequired- The unique identifier of the survey to retrieve. Can be a string or integer. Use search_surveys to find the survey_id.
surveymonkeymcp_search_surveysGet a paginated list of surveys for the authenticated user.Read-onlySearch Surveys
Get a paginated list of surveys for the authenticated user. Supports text search, sorting, and filter criteria to narrow results.
Inputs
filtersobject- Optional key-value filter criteria to narrow survey results (e.g. by status or category). Omit to apply no additional filters.
pageinteger- Page number of results to return (1-based). Defaults to 1.default
1 per_pageinteger- Number of surveys to return per page. Defaults to 10.default
10 querystring- Text to search for within survey titles and metadata. Omit to return all surveys.
sort_bystring- Field to sort results by (e.g. 'date_created', 'date_modified', 'title'). Omit to use the API default sort.
sort_orderstring- Sort direction: 'asc' for ascending or 'desc' for descending. Omit to use the API default.
surveymonkeymcp_add_pageAdd a new page to a survey at the specified position.WriteAdd a page to a survey
Add a new page to a survey at the specified position. Only needed for multi-page surveys — new surveys already have a default page from create_survey. Blocked on surveys with existing responses.
Inputs
pageobjectrequired- Page object describing the new page. May include fields such as 'title', 'description', and 'questions'. Example: {"title": "Section 2", "description": "Follow-up questions"}.
positionintegerrequired- 1-based position at which to insert the new page within the survey. Use 1 to insert before all existing pages. Example: 2 to insert as the second page.
survey_idstringrequired- ID of the survey to add a page to. Returned by create_survey. Accepts string or integer. Example: '123456789'.
surveymonkeymcp_add_questionAdd a question to a survey page.WriteAdd a question to a survey page
Add a question to a survey page. Requires survey_id, page_id, position, and a question object specifying family, subtype, headings, and answers. Blocked on surveys with existing responses.
Inputs
page_idstringrequired- ID of the page within the survey to add the question to. Use the default_page_id returned by create_survey or a page_id returned by add_page. Accepts string or integer.
positionintegerrequired- 1-based position of the question on the page. Example: 1 to place the question first on the page.
questionobjectrequired- Question definition object. Must include 'family' (e.g. 'single_choice', 'open_ended', 'rating'), 'subtype', 'headings' (array with 'heading' text), and 'answers' (rows/choices). Example: {"family": "single_choice", "subtype": "vertical", "headings": [{"heading": "How satisfied are you?"}], "answers": {"choices": [{"text": "Very satisfied"}, {"text": "Satisfied"}]}}.
survey_idstringrequired- ID of the survey to add the question to. Returned by create_survey. Accepts string or integer. Example: '123456789'.
surveymonkeymcp_create_surveyCreate a new empty survey with the given title.WriteCreate a new survey
Create a new empty survey with the given title. Returns the survey ID and default_page_id. Use add_question with the default_page_id to add questions.
Inputs
titlestringrequired- Title of the new survey. This is displayed to respondents at the top of the survey. Example: 'Customer Satisfaction Survey Q3 2025'.
languagestring- Optional survey language code (e.g. 'fr', 'es', 'ja', 'de'). Defaults to 'en' if not specified.
surveymonkeymcp_create_weblink_collectorCreate a weblink collector for a survey, generating a public URL respondents can use to submit responses.WriteCreate a shareable survey link
Create a weblink collector for a survey, generating a public URL respondents can use to submit responses. The link is open and ready to collect responses immediately.
Inputs
namestringrequired- Display name for the collector (used internally to identify this link). Example: 'Web Link 1' or 'Customer Portal Link'.
survey_idstringrequired- ID of the survey to create a shareable link for. Returned by create_survey. Accepts string or integer. Example: '123456789'.
surveymonkeymcp_edit_questionEdit a single question's text, required status, answer choices, position, or move it to a different page.WriteEdit a question
Edit a single question's text, required status, answer choices, position, or move it to a different page. Blocked on surveys with existing responses.
Inputs
page_idstringrequired- ID of the page currently containing the question. Accepts string or integer. Example: '987654321'.
question_idstringrequired- ID of the question to edit. Accepts string or integer. Example: '456789123'.
survey_idstringrequired- ID of the survey containing the question to edit. Accepts string or integer. Example: '123456789'.
answersobject- Updated answers object containing choices, rows, or other answer structures appropriate to the question family. Omit to leave unchanged. Example: {"choices": [{"text": "Very satisfied"}, {"text": "Satisfied"}]}.
positioninteger- New 1-based position of the question on its page. Omit to leave unchanged. Example: 2 to move the question to second position.
requiredboolean- Whether the question is required for respondents to answer. Set to true to make it mandatory, false to make it optional. Omit to leave unchanged.
target_page_idstring- ID of a different page to move the question to. Omit to keep it on its current page. Accepts string or integer. Example: '111222333'.
textstring- New question heading text. Omit to leave unchanged. Example: 'How satisfied are you with our service?'.
validationobject- Validation rules for the question (e.g. min/max values for open-ended questions). Omit to leave unchanged. Example: {"type": "integer", "min": 1, "max": 10}.
surveymonkeymcp_generate_survey_planGenerate an AI-powered survey plan from a natural language description.WriteGenerate AI survey plan from description
Generate an AI-powered survey plan from a natural language description. Returns a suggested title and list of questions. The plan is NOT persisted — use create_survey and add_question to build the actual survey.
Inputs
descriptionstringrequired- Natural language description of the survey you want to create. The AI uses this to generate a suggested title and question list. Example: 'A customer satisfaction survey for a software product with questions about ease of use and support quality.'
surveymonkeymcp_reorder_questionsBulk reorder all questions on a survey page.WriteReorder all questions on a page
Bulk reorder all questions on a survey page. Requires the complete list of all question IDs in the desired order. Use get_questions first to get the current list. Blocked on surveys with existing responses.
Inputs
page_idstringrequired- ID of the page whose questions should be reordered. Accepts string or integer. Example: '987654321'.
question_orderarrayrequired- Complete ordered list of all question IDs on the page in the desired sequence. Must include every question ID currently on the page — omitting any ID may cause an error. Use get_questions first to retrieve the current question IDs. Each element accepts string or integer. Example: ['456789123', '456789124', '456789125'].
survey_idstringrequired- ID of the survey containing the page to reorder. Accepts string or integer. Example: '123456789'.
surveymonkeymcp_update_surveyUpdate survey properties such as title or nickname.WriteUpdate survey properties
Update survey properties such as title or nickname. Blocked on surveys with existing responses.
Inputs
patchobjectrequired- Object containing the survey properties to update. Supported fields include 'title' (string) and 'nickname' (string). Example: {"title": "Updated Survey Title"}.
survey_idstringrequired- ID of the survey to update. Accepts string or integer. Example: '123456789'.
surveymonkeymcp_delete_questionPermanently delete a question from a survey page.DestructiveDelete a question from a survey
Permanently delete a question from a survey page. Requires survey_id, page_id, and question_id. Blocked on surveys with existing responses.
Inputs
page_idstringrequired- ID of the page containing the question to delete. Accepts string or integer. Example: '987654321'.
question_idstringrequired- ID of the question to permanently delete. Accepts string or integer. Example: '456789123'. This action cannot be undone.
survey_idstringrequired- ID of the survey containing the question to delete. Accepts string or integer. Example: '123456789'.
No tools match.