SurveyMonkey MCP connector
OAuth2.1/DCRAnalyticsMarketingConnect to SurveyMonkey to manage surveys, collect responses, and analyze results. Create and update surveys, manage collectors and contacts, and retrieve...
SurveyMonkey MCP connector
-
Install the SDK
Section titled “Install the SDK”Terminal window npm install @scalekit-sdk/nodeTerminal window pip install scalekit -
Set your credentials
Section titled “Set 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> -
Authorize and make your first call
Section titled “Authorize and make your first call”quickstart.ts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENV_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)process.stdout.write('Press Enter after authorizing...')await new Promise(r => process.stdin.once('data', r))// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'surveymonkeymcp_get_question_types',toolInput: {},})console.log(result)quickstart.py import osfrom scalekit.client import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENV_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)
What you can do
Section titled “What you can do”Connect this agent connector to let your agent:
- Update survey — Update survey properties such as title or nickname
- Search surveys — Get a paginated list of surveys for the authenticated user
- Questions reorder — Bulk reorder all questions on a survey page
- Get survey, server info, responses — Get details about a specific survey including title, dates, language, and question count
- Plan generate survey — Generate an AI-powered survey plan from a natural language description
- Question edit, add — Edit a single question’s text, required status, answer choices, position, or move it to a different page
Tool list
Section titled “Tool list”Use the exact tool names from the Tool list below when you call execute_tool. If you’re not sure which name to use, list the tools available for the current user first.
surveymonkeymcp_add_page#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.3 params
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.
pageobjectrequiredPage object describing the new page. May include fields such as 'title', 'description', and 'questions'. Example: {"title": "Section 2", "description": "Follow-up questions"}.positionintegerrequired1-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_idstringrequiredID of the survey to add a page to. Returned by create_survey. Accepts string or integer. Example: '123456789'.surveymonkeymcp_add_question#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.4 params
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.
page_idstringrequiredID 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.positionintegerrequired1-based position of the question on the page. Example: 1 to place the question first on the page.questionobjectrequiredQuestion 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_idstringrequiredID of the survey to add the question to. Returned by create_survey. Accepts string or integer. Example: '123456789'.surveymonkeymcp_create_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.1 param
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.
titlestringrequiredTitle of the new survey. This is displayed to respondents at the top of the survey. Example: 'Customer Satisfaction Survey Q3 2025'.surveymonkeymcp_create_weblink_collector#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.2 params
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.
namestringrequiredDisplay name for the collector (used internally to identify this link). Example: 'Web Link 1' or 'Customer Portal Link'.survey_idstringrequiredID of the survey to create a shareable link for. Returned by create_survey. Accepts string or integer. Example: '123456789'.surveymonkeymcp_delete_question#Permanently delete a question from a survey page. Requires survey_id, page_id, and question_id. Blocked on surveys with existing responses.3 params
Permanently delete a question from a survey page. Requires survey_id, page_id, and question_id. Blocked on surveys with existing responses.
page_idstringrequiredID of the page containing the question to delete. Accepts string or integer. Example: '987654321'.question_idstringrequiredID of the question to permanently delete. Accepts string or integer. Example: '456789123'. This action cannot be undone.survey_idstringrequiredID of the survey containing the question to delete. Accepts string or integer. Example: '123456789'.surveymonkeymcp_edit_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.9 params
Edit a single question's text, required status, answer choices, position, or move it to a different page. Blocked on surveys with existing responses.
page_idstringrequiredID of the page currently containing the question. Accepts string or integer. Example: '987654321'.question_idstringrequiredID of the question to edit. Accepts string or integer. Example: '456789123'.survey_idstringrequiredID of the survey containing the question to edit. Accepts string or integer. Example: '123456789'.answersobjectoptionalUpdated 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"}]}.positionintegeroptionalNew 1-based position of the question on its page. Omit to leave unchanged. Example: 2 to move the question to second position.requiredbooleanoptionalWhether 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_idstringoptionalID of a different page to move the question to. Omit to keep it on its current page. Accepts string or integer. Example: '111222333'.textstringoptionalNew question heading text. Omit to leave unchanged. Example: 'How satisfied are you with our service?'.validationobjectoptionalValidation 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_plan#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.1 param
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.
descriptionstringrequiredNatural 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_get_page#Get details about a specific page in a survey. Requires both survey_id and page_id.2 params
Get details about a specific page in a survey. Requires both survey_id and page_id.
page_idstringrequiredThe unique identifier of the page to retrieve. Can be a string or integer. Use get_pages to find a page_id.survey_idstringrequiredThe unique identifier of the survey containing the page. Can be a string or integer. Use search_surveys to find a survey_id.surveymonkeymcp_get_pages#Get all pages in a survey. Use page IDs returned here with get_questions and other page-level tools.3 params
Get all pages in a survey. Use page IDs returned here with get_questions and other page-level tools.
survey_idstringrequiredThe unique identifier of the survey whose pages to list. Can be a string or integer. Use search_surveys to find a survey_id.pageintegeroptionalPage number of results to return (1-based). Defaults to 1.per_pageintegeroptionalNumber of pages to return per result page. Defaults to 50.surveymonkeymcp_get_question#Get details about a specific question. Requires survey_id, page_id (from get_pages), and question_id (from get_questions).3 params
Get details about a specific question. Requires survey_id, page_id (from get_pages), and question_id (from get_questions).
page_idstringrequiredThe unique identifier of the page containing the question. Can be a string or integer. Use get_pages to find page IDs.question_idstringrequiredThe unique identifier of the question to retrieve. Can be a string or integer. Use get_questions to find question IDs.survey_idstringrequiredThe 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_types#Get available SurveyMonkey question types and their schemas. Use this to discover valid question families and subtypes before calling add_question.0 params
Get available SurveyMonkey question types and their schemas. Use this to discover valid question families and subtypes before calling add_question.
surveymonkeymcp_get_questions#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.4 params
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.
page_idstringrequiredThe unique identifier of the page whose questions to list. Can be a string or integer. Use get_pages to find page IDs.survey_idstringrequiredThe unique identifier of the survey. Can be a string or integer. Use search_surveys to find a survey_id.pageintegeroptionalPage number of results to return (1-based). Defaults to 1.per_pageintegeroptionalNumber of questions to return per result page. Defaults to 50.surveymonkeymcp_get_response_count#Get the total number of responses received for a survey. Useful for determining if a survey has collected data or can still be modified.1 param
Get the total number of responses received for a survey. Useful for determining if a survey has collected data or can still be modified.
survey_idstringrequiredThe 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_responses#Retrieve paginated survey responses with full answer details including question headings and choice text. Requires responses_read and responses_read_detail scopes.3 params
Retrieve paginated survey responses with full answer details including question headings and choice text. Requires responses_read and responses_read_detail scopes.
survey_idstringrequiredThe unique identifier of the survey whose responses to retrieve. Can be a string or integer. Use search_surveys to find a survey_id.pageintegeroptionalPage number of results to return (1-based). Defaults to 1.per_pageintegeroptionalNumber of responses to return per page. Defaults to 10.surveymonkeymcp_get_server_info#Returns information about the SurveyMonkey MCP server.0 params
Returns information about the SurveyMonkey MCP server.
surveymonkeymcp_get_survey#Get details about a specific survey including title, dates, language, and question count. Use search_surveys to find a survey_id first.1 param
Get details about a specific survey including title, dates, language, and question count. Use search_surveys to find a survey_id first.
survey_idstringrequiredThe unique identifier of the survey to retrieve. Can be a string or integer. Use search_surveys to find the survey_id.surveymonkeymcp_reorder_questions#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.3 params
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.
page_idstringrequiredID of the page whose questions should be reordered. Accepts string or integer. Example: '987654321'.question_orderarrayrequiredComplete 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_idstringrequiredID of the survey containing the page to reorder. Accepts string or integer. Example: '123456789'.surveymonkeymcp_search_surveys#Get a paginated list of surveys for the authenticated user. Supports text search, sorting, and filter criteria to narrow results.6 params
Get a paginated list of surveys for the authenticated user. Supports text search, sorting, and filter criteria to narrow results.
filtersobjectoptionalOptional key-value filter criteria to narrow survey results (e.g. by status or category). Omit to apply no additional filters.pageintegeroptionalPage number of results to return (1-based). Defaults to 1.per_pageintegeroptionalNumber of surveys to return per page. Defaults to 10.querystringoptionalText to search for within survey titles and metadata. Omit to return all surveys.sort_bystringoptionalField to sort results by (e.g. 'date_created', 'date_modified', 'title'). Omit to use the API default sort.sort_orderstringoptionalSort direction: 'asc' for ascending or 'desc' for descending. Omit to use the API default.surveymonkeymcp_update_survey#Update survey properties such as title or nickname. Blocked on surveys with existing responses.2 params
Update survey properties such as title or nickname. Blocked on surveys with existing responses.
patchobjectrequiredObject containing the survey properties to update. Supported fields include 'title' (string) and 'nickname' (string). Example: {"title": "Updated Survey Title"}.survey_idstringrequiredID of the survey to update. Accepts string or integer. Example: '123456789'.