surveymonkey-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SURVEYMONKEY_TOKEN | Yes | Your SurveyMonkey personal access token from the Developer Portal. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| surveymonkey_get_meA | Returns information about the current SurveyMonkey user. Useful to verify the token is working and to see the username and email. |
| surveymonkey_list_surveysA | Lists surveys in the account with pagination and optional filters. Args: page: Page number (default 1). per_page: Results per page, max 1000 (default 50). sort_by: Sort field: "title", "date_modified", "num_responses" (default: date_modified). sort_order: Sort direction: "asc" or "desc" (default: desc). title: Filter surveys by title (substring match). start_modified_at: ISO 8601 — surveys modified after this date. end_modified_at: ISO 8601 — surveys modified before this date. folder_id: Filter by folder ID. |
| surveymonkey_get_surveyA | Returns metadata for a specific survey (title, response count, dates, etc.). Does NOT include questions — use surveymonkey_get_survey_details for that. Args: survey_id: Survey ID. |
| surveymonkey_get_survey_detailsB | Returns the full survey definition including all pages and questions. Args: survey_id: Survey ID. |
| surveymonkey_create_surveyA | Creates a new SurveyMonkey survey. Args: survey_definition: Survey definition as a JSON object. Structure: { "title": "My Survey", (required) "nickname": "Internal name", (optional) "language": "en", (optional, default: "en") "folder_id": "123", (optional) "category": "general", (optional) "pages": [ (optional — add pages at creation) { "title": "Page 1", "questions": [ { "headings": [{"heading": "Question text"}], "family": "single_choice", "subtype": "vertical", "answers": { "choices": [ {"text": "Option A"}, {"text": "Option B"} ] } } ] } ] } |
| surveymonkey_update_surveyA | Fully replaces a survey's definition (PUT). Use surveymonkey_patch_survey for partial updates. Args: survey_id: ID of the survey to update. survey_definition: New complete definition (same schema as surveymonkey_create_survey). |
| surveymonkey_patch_surveyA | Partially updates a survey (PATCH). Args: survey_id: ID of the survey. patch: Object with only the fields to change. Common fields: "title", "nickname", "language", "folder_id", "category". Example: {"title": "New title", "language": "it"} |
| surveymonkey_delete_surveyA | Permanently deletes a survey and all its responses. WARNING: irreversible operation. Args: survey_id: ID of the survey to delete. |
| surveymonkey_list_pagesA | Lists the pages of a survey. Args: survey_id: Survey ID. page: Page number (default 1). per_page: Results per page (default 50). |
| surveymonkey_get_pageA | Returns the details of a specific survey page. Args: survey_id: Survey ID. page_id: Page ID. |
| surveymonkey_create_pageA | Creates a new page in a survey. Args: survey_id: Survey ID. payload: Page definition. Structure: { "title": "Page title", (optional) "description": "Description", (optional) "position": 1 (optional) } |
| surveymonkey_update_pageA | Updates a page in a survey (PATCH). Args: survey_id: Survey ID. page_id: Page ID. payload: Fields to update: "title", "description", "position". |
| surveymonkey_delete_pageA | Deletes a page and all its questions from a survey. WARNING: irreversible operation. Args: survey_id: Survey ID. page_id: Page ID. |
| surveymonkey_list_questionsB | Lists questions on a specific page of a survey. Args: survey_id: Survey ID. page_id: Page ID. page: Page number for pagination (default 1). per_page: Results per page (default 50). |
| surveymonkey_get_questionB | Returns the full definition of a question, including answer choices. Args: survey_id: Survey ID. page_id: Page ID. question_id: Question ID. |
| surveymonkey_create_questionA | Creates a new question on a survey page. Args: survey_id: Survey ID. page_id: Page ID. payload: Question definition. Structure: { "headings": [{"heading": "Question text"}], (required) "family": "single_choice", (required) "subtype": "vertical", (optional) "position": 1, (optional) "required": false, (optional) "answers": { "choices": [ {"text": "Option A"}, {"text": "Option B"} ], "other": {"text": "Other (please specify)", "visible": true} } } |
| surveymonkey_update_questionA | Updates an existing question (PATCH). Args: survey_id: Survey ID. page_id: Page ID. question_id: Question ID. payload: Fields to update (same schema as surveymonkey_create_question). |
| surveymonkey_delete_questionA | Deletes a question from a survey page. WARNING: irreversible operation. Args: survey_id: Survey ID. page_id: Page ID. question_id: Question ID. |
| surveymonkey_list_responsesA | Lists responses for a survey (metadata only, no answers). Use surveymonkey_list_responses_bulk to include answer data. Args: survey_id: Survey ID. page: Page number (default 1). per_page: Results per page, max 1000 (default 50). start_created_at: ISO 8601 — responses created after this date. end_created_at: ISO 8601 — responses created before this date. status: Filter by status: "completed", "partial", "overquota", "disqualified". email: Filter by respondent email. sort_by: Sort field: "date_modified". sort_order: Sort direction: "asc" or "desc". |
| surveymonkey_list_responses_bulkA | Lists responses for a survey including all answer data. Args: survey_id: Survey ID. page: Page number (default 1). per_page: Results per page, max 1000 (default 50). simple: If true, returns simplified answer format (default false). start_created_at: ISO 8601 — responses created after this date. end_created_at: ISO 8601 — responses created before this date. status: Filter: "completed", "partial", "overquota", "disqualified". collector_ids: Comma-separated collector IDs to filter by. page_ids: Comma-separated page IDs to include. question_ids: Comma-separated question IDs to include. |
| surveymonkey_get_responseA | Returns metadata for a specific response (no answers). Use surveymonkey_get_response_details for answers. Args: survey_id: Survey ID. response_id: Response ID. |
| surveymonkey_get_response_detailsA | Returns a specific response with all answer data. Args: survey_id: Survey ID. response_id: Response ID. page_ids: Comma-separated page IDs to include (empty = all pages). question_ids: Comma-separated question IDs to include (empty = all questions). simple: If true, returns simplified answer format (default false). |
| surveymonkey_delete_responseA | Permanently deletes a specific response. WARNING: irreversible operation. Args: survey_id: Survey ID. response_id: Response ID to delete. |
| surveymonkey_export_responses_csvA | Exports all responses for a survey as CSV (includes all answers). Handles pagination automatically, collecting up to 10,000 responses. Args: survey_id: Survey ID. start_created_at: ISO 8601 — export responses created after this date. end_created_at: ISO 8601 — export responses created before this date. status: Filter by status: "completed", "partial", etc. (empty = all). Returns: CSV text with headers in the first row. |
| surveymonkey_list_collectorsA | Lists all collectors for a survey. Args: survey_id: Survey ID. page: Page number (default 1). per_page: Results per page (default 50). |
| surveymonkey_get_collectorB | Returns the details of a specific collector. Args: collector_id: Collector ID. |
| surveymonkey_create_collectorB | Creates a new collector for a survey. Args: survey_id: Survey ID. payload: Collector definition. Structure: { "type": "weblink", (required: "weblink", "email", "sms", "popup") "name": "Collector name", (optional) "status": "open", (optional: "open" | "closed") "thank_you_message": "...", (optional) "close_date": "2026-12-31", (optional — ISO 8601 date) "redirect_url": "https://...", (optional — redirect after completion) "allow_multiple_responses": false (optional) } |
| surveymonkey_update_collectorA | Updates a collector (PATCH). Args: collector_id: Collector ID. payload: Fields to update. Common fields: "name", "status" ("open"|"closed"), "close_date", "redirect_url", "allow_multiple_responses". |
| surveymonkey_delete_collectorA | Deletes a collector and all its responses. WARNING: irreversible operation. Args: collector_id: Collector ID. |
| surveymonkey_list_collector_messagesA | Lists email messages for a collector. Args: collector_id: Collector ID (must be of type "email"). page: Page number (default 1). per_page: Results per page (default 50). |
| surveymonkey_create_collector_messageA | Creates a new email message for a collector. Args: collector_id: Collector ID (must be of type "email"). payload: Message definition. Structure: { "type": "invite", (required: "invite" | "reminder" | "thank_you" | "custom") "subject": "Please take our survey", (optional) "body_text": "Click here: [SurveyLink]", (optional) "from_name": "Sender Name", (optional) "reply_to": "reply@example.com" (optional) } |
| surveymonkey_send_collector_messageA | Sends an email message to all recipients of a collector. Args: collector_id: Collector ID. message_id: Message ID to send. scheduled_date: ISO 8601 datetime to schedule the send (empty = send immediately). |
| surveymonkey_list_collector_recipientsB | Lists email recipients for a collector. Args: collector_id: Collector ID. page: Page number (default 1). per_page: Results per page (default 50). |
| surveymonkey_list_webhooksA | Lists all webhooks in the account. Args: page: Page number (default 1). per_page: Results per page (default 50). |
| surveymonkey_get_webhookB | Returns the details of a specific webhook. Args: webhook_id: Webhook ID. |
| surveymonkey_create_webhookA | Creates a new webhook. Args: payload: Webhook definition. Structure: { "name": "My Webhook", (required) "event_type": "response_completed", (required) "object_type": "survey", (required: "survey" | "collector") "object_ids": ["12345678"], (required — list of survey/collector IDs) "subscription_url": "https://...", (required — HTTPS endpoint) "authorization": "Bearer token_for_your_url" (optional — sent in callback header) } |
| surveymonkey_update_webhookA | Updates a webhook (PATCH). Args: webhook_id: Webhook ID. payload: Fields to update (same schema as surveymonkey_create_webhook). |
| surveymonkey_delete_webhookB | Deletes a webhook. Args: webhook_id: Webhook ID. |
| surveymonkey_list_contactsA | Lists contacts in the account. Args: page: Page number (default 1). per_page: Results per page (default 50). status: Filter by status: "active", "optedout", "bounced". search_by: Field to search by: "email", "first_name", "last_name". search: Search term. sort_by: Sort field: "email", "first_name", "last_name". sort_order: Sort direction: "asc" or "desc". |
| surveymonkey_get_contactB | Returns the details of a specific contact. Args: contact_id: Contact ID. |
| surveymonkey_create_contactB | Creates a new contact. Args: email: Contact email address (required). first_name: First name (optional). last_name: Last name (optional). |
| surveymonkey_update_contactA | Updates an existing contact (PATCH). Args: contact_id: Contact ID. payload: Fields to update. Common fields: "email", "first_name", "last_name". Example: {"first_name": "Jane", "last_name": "Doe"} |
| surveymonkey_delete_contactB | Deletes a contact. Args: contact_id: Contact ID. |
| surveymonkey_list_contact_listsA | Lists all contact lists in the account. Args: page: Page number (default 1). per_page: Results per page (default 50). |
| surveymonkey_get_contact_listA | Returns the details of a specific contact list. Args: list_id: Contact list ID. |
| surveymonkey_create_contact_listB | Creates a new contact list. Args: name: Name for the new contact list. |
| surveymonkey_delete_contact_listC | Deletes a contact list. Args: list_id: Contact list ID. |
| surveymonkey_list_contact_list_membersA | Lists contacts that belong to a specific contact list. Args: list_id: Contact list ID. page: Page number (default 1). per_page: Results per page (default 50). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 48 tools
Each tool targets a distinct resource and action, with clear separation between list/get/create/update/delete operations. Pairs like list_responses/list_responses_bulk and get_survey/get_survey_details are explicitly differentiated in their descriptions.
All tools follow a consistent surveymonkey_<verb>_<noun> pattern, using standard verbs like list, get, create, update, patch, delete, and send. There is no mixing of naming conventions or irregular verb styles.
48 tools is well above the 25+ threshold that indicates an overly large tool surface. The tools are not redundant, but the sheer count makes the server feel heavy and harder for an agent to navigate efficiently.
The toolkit covers broad CRUD/lifecycle operations across surveys, pages, questions, responses, collectors, webhooks, and contacts. Minor gaps exist, such as no update/delete for collector messages and no add/remove contact-to-list membership operations.