pollbolt
AI-native survey & form builder. Manage surveys, responses, analytics, and webhooks.
Should I use this
Quality & Safety
Findings (2)
- LOWin list_webhooks
- LOWin delete_webhook
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"pollbolt": {
"url": "https://api.pollbolt.com/mcp"
}
}
}Remote endpoints
https://api.pollbolt.com/mcpstreamable-httpWhat it can do
Tool inventory
Tools (15)
🟡create_survey(title, questions, settings, hidden_fields, variables, ...)
Create a new survey. Returns the survey details including share_url. Supported question types: short_text, long_text, multiple_choice, checkbox, checkbox_list, numeric, star_rating, picture_choice, opinion_scale, date, email, contact_info, poll_question, statement.
Input Schema
{
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "Survey title"
},
"questions": {
"type": "array",
"description": "Array of questions",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string",
"description": "Question type (e.g. multiple_choice, short_text, opinion_scale)"
},
"text": {
"type": "string",
"description": "Question text"
},
"required": {
"type": "boolean",
"description": "Whether the question is required"
},
"options": {
"type": "array",
"items": {
"type": "string"
},
"description": "Options for multiple_choice, checkbox_list, poll_question"
},
"description": {
"type": "string",
"description": "Optional help text"
},
"placeholder": {
"type": "string",
"description": "Optional placeholder for input questions"
},
"scale_start": {
"type": "number",
"description": "Opinion scale start value (opinion_scale only)"
},
"scale_end": {
"type": "number",
"description": "Opinion scale end value (opinion_scale only)"
},
"scale_start_label": {
"type": "string",
"description": "Opinion scale start label (opinion_scale only)"
},
"scale_end_label": {
"type": "string",
"description": "Opinion scale end label (opinion_scale only)"
},
"contact_fields": {
"type": "array",
"description": "Contact info fields (contact_info only)",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"label": {
"type": "string"
},
"placeholder": {
"type": "string"
},
"type": {
"type": "string"
},
"required": {
"type": "boolean"
},
"enabled": {
"type": "boolean"
}
},
"required": [
"label"
]
}
},
"button_text": {
"type": "string",
"description": "Continue button text for statement questions"
},
"logic": {
"type": "object",
"description": "Per-question branching logic (goto / calculation).",
"properties": {
"default_target": {
"type": "string",
"description": "Default target question/ending ID"
},
"default_target_type": {
"type": "string",
"enum": [
"question",
"ending"
]
},
"rules": {
"type": "array",
"items": {
"type": "object",
"properties": {
"rule_id": {
"type": "string"
},
"rule_type": {
"type": "string",
"enum": [
"if",
"always"
]
},
"matching_conditions": {
"type": "array",
"description": "Array of condition objects or 'and'/'or' strings",
"items": {
"anyOf": [
{
"type": "string",
"enum": [
"and",
"or"
]
},
{
"type": "object"
}
]
}
},
"result_type": {
"type": "string",
"enum": [
"logic",
"calculation"
]
},
"result_name": {
"type": "string",
"enum": [
"goto",
"add",
"devide",
"subtract",
"multiply"
]
},
"result_value": {
"type": "number"
},
"target_variable": {
"type": "string"
},
"target_type": {
"type": "string",
"enum": [
"question",
"ending"
]
},
"target_id": {
"type": "string"
}
},
"required": [
"rule_type",
"result_type",
"result_name"
]
}
}
}
}
},
"required": [
"type",
"text"
]
}
},
"settings": {
"type": "object",
"properties": {
"is_open": {
"type": "boolean",
"description": "Whether survey accepts responses (default: true)"
},
"is_published": {
"type": "boolean",
"description": "Whether survey is publicly published"
},
"allow_multiple_submissions": {
"type": "boolean",
"description": "Allow multiple submissions per user"
}
}
},
"hidden_fields": {
"type": "array",
"description": "Hidden fields for URL parameters or custom data, passed through the survey URL.",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string",
"description": "Field name (used as URL param name)"
},
"default_value": {
"type": "string"
},
"source": {
"type": "string",
"enum": [
"url_param",
"manual"
]
}
},
"required": [
"name"
]
}
},
"variables": {
"type": "array",
"description": "Custom variables for scoring, calculations, and recall.",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string",
"description": "Variable name"
},
"type": {
"type": "string",
"enum": [
"number",
"text"
]
},
"default_value": {
"type": "number",
"description": "Default value"
}
},
"required": [
"name"
]
}
},
"styles": {
"type": "object",
"description": "Optional styling configuration for branding and visual design.",
"properties": {
"font_family": {
"type": "string"
},
"title_size": {
"type": "string",
"enum": [
"xl",
"2xl",
"4xl",
"6xl"
]
},
"question_size": {
"type": "string",
"enum": [
"base",
"xl",
"2xl"
]
},
"submit_button_color": {
"type": "string",
"description": "Hex color, e.g. #4F46E5"
},
"submit_button_text_color": {
"type": "string",
"description": "Hex color, e.g. #FFFFFF"
},
"next_button_text": {
"type": "string"
},
"submit_button_text": {
"type": "string"
},
"background_color": {
"type": "string",
"description": "Hex color, e.g. #FFFFFF"
},
"question_text_color": {
"type": "string",
"description": "Hex color"
},
"option_text_color": {
"type": "string",
"description": "Hex color"
},
"corner_radius": {
"type": "string",
"enum": [
"none",
"medium",
"large"
]
},
"rtl_enabled": {
"type": "boolean"
},
"use_number_labels": {
"type": "boolean"
},
"show_next_button": {
"type": "boolean"
},
"logo": {
"type": "object",
"properties": {
"url": {
"type": "string"
},
"size": {
"type": "string",
"enum": [
"sm",
"md",
"lg"
]
},
"alignment": {
"type": "string",
"enum": [
"left",
"center",
"right"
]
}
}
}
}
},
"welcome_screen": {
"type": [
"object",
"null"
],
"description": "Optional welcome screen configuration.",
"properties": {
"id": {
"type": "string"
},
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"button_text": {
"type": "string"
},
"estimated_time": {
"type": "string"
},
"show_estimated_time": {
"type": "boolean"
},
"show_submissions_count": {
"type": "boolean"
},
"background_image": {
"type": "string"
},
"background_video": {
"type": "string"
},
"background_alignment": {
"type": "string",
"enum": [
"cover",
"left",
"right",
"inline"
]
},
"background_alignment_mobile": {
"type": "string",
"enum": [
"cover",
"top",
"bottom",
"inline"
]
},
"overlay_color": {
"type": "string"
},
"overlay_opacity": {
"type": "number"
}
}
},
"ending_screens": {
"type": "array",
"description": "Optional ending screens list.",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"button_text": {
"type": "string"
},
"button_url": {
"type": "string"
},
"buttons": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"text": {
"type": "string"
},
"url": {
"type": "string"
},
"style": {
"type": "string",
"enum": [
"primary",
"secondary"
]
}
}
}
},
"is_default": {
"type": "boolean"
},
"score_range": {
"type": "object",
"properties": {
"min": {
"type": "number"
},
"max": {
"type": "number"
}
}
},
"background_image": {
"type": "string"
},
"background_video": {
"type": "string"
},
"background_alignment": {
"type": "string",
"enum": [
"cover",
"left",
"right"
]
},
"background_alignment_mobile": {
"type": "string",
"enum": [
"cover",
"top",
"bottom"
]
},
"overlay_color": {
"type": "string"
},
"overlay_opacity": {
"type": "number"
}
},
"required": [
"id"
]
}
}
},
"required": [
"title",
"questions"
]
}🟢list_surveys(page, per_page, status)
List all surveys in your PollBolt account with pagination.
Input Schema
{
"type": "object",
"properties": {
"page": {
"type": "number",
"description": "Page number (default: 1)"
},
"per_page": {
"type": "number",
"description": "Results per page (default: 20, max: 100)"
},
"status": {
"type": "string",
"enum": [
"open",
"closed",
"all"
],
"description": "Filter by status"
}
}
}🟢get_survey(survey_id)
Get full details of a specific survey including all questions.
Input Schema
{
"type": "object",
"properties": {
"survey_id": {
"type": "string",
"description": "The survey ID"
}
},
"required": [
"survey_id"
]
}🔴update_survey(survey_id, title, questions, settings, hidden_fields, ...)
Update a survey's title, questions, settings, styles, screens, or logic. Providing questions replaces all existing questions.
Input Schema
{
"type": "object",
"properties": {
"survey_id": {
"type": "string",
"description": "The survey ID"
},
"title": {
"type": "string",
"description": "New title"
},
"questions": {
"type": "array",
"description": "Replacement questions array (replaces all questions)",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string"
},
"text": {
"type": "string"
},
"required": {
"type": "boolean"
},
"options": {
"type": "array",
"items": {
"type": "string"
}
},
"description": {
"type": "string"
},
"placeholder": {
"type": "string"
},
"scale_start": {
"type": "number"
},
"scale_end": {
"type": "number"
},
"scale_start_label": {
"type": "string"
},
"scale_end_label": {
"type": "string"
},
"contact_fields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"label": {
"type": "string"
},
"placeholder": {
"type": "string"
},
"type": {
"type": "string"
},
"required": {
"type": "boolean"
},
"enabled": {
"type": "boolean"
}
},
"required": [
"label"
]
}
},
"button_text": {
"type": "string"
},
"logic": {
"type": "object",
"properties": {
"default_target": {
"type": "string"
},
"default_target_type": {
"type": "string",
"enum": [
"question",
"ending"
]
},
"rules": {
"type": "array",
"items": {
"type": "object",
"properties": {
"rule_id": {
"type": "string"
},
"rule_type": {
"type": "string",
"enum": [
"if",
"always"
]
},
"matching_conditions": {
"type": "array",
"items": {
"anyOf": [
{
"type": "string",
"enum": [
"and",
"or"
]
},
{
"type": "object"
}
]
}
},
"result_type": {
"type": "string",
"enum": [
"logic",
"calculation"
]
},
"result_name": {
"type": "string",
"enum": [
"goto",
"add",
"devide",
"subtract",
"multiply"
]
},
"result_value": {
"type": "number"
},
"target_variable": {
"type": "string"
},
"target_type": {
"type": "string",
"enum": [
"question",
"ending"
]
},
"target_id": {
"type": "string"
}
},
"required": [
"rule_type",
"result_type",
"result_name"
]
}
}
}
}
},
"required": [
"type",
"text"
]
}
},
"settings": {
"type": "object",
"properties": {
"is_open": {
"type": "boolean"
},
"is_published": {
"type": "boolean"
},
"allow_multiple_submissions": {
"type": "boolean"
}
}
},
"hidden_fields": {
"type": "array",
"description": "Replace all hidden fields.",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"default_value": {
"type": "string"
},
"source": {
"type": "string",
"enum": [
"url_param",
"manual"
]
}
},
"required": [
"name"
]
}
},
"variables": {
"type": "array",
"description": "Replace all variables.",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"number",
"text"
]
},
"default_value": {
"type": "number"
}
},
"required": [
"name"
]
}
},
"styles": {
"type": "object",
"description": "Partial styling update. Only provided fields are changed.",
"properties": {
"font_family": {
"type": "string"
},
"title_size": {
"type": "string",
"enum": [
"xl",
"2xl",
"4xl",
"6xl"
]
},
"question_size": {
"type": "string",
"enum": [
"base",
"xl",
"2xl"
]
},
"submit_button_color": {
"type": "string"
},
"submit_button_text_color": {
"type": "string"
},
"next_button_text": {
"type": "string"
},
"submit_button_text": {
"type": "string"
},
"background_color": {
"type": "string"
},
"question_text_color": {
"type": "string"
},
"option_text_color": {
"type": "string"
},
"corner_radius": {
"type": "string",
"enum": [
"none",
"medium",
"large"
]
},
"rtl_enabled": {
"type": "boolean"
},
"use_number_labels": {
"type": "boolean"
},
"show_next_button": {
"type": "boolean"
},
"logo": {
"type": "object",
"properties": {
"url": {
"type": "string"
},
"size": {
"type": "string",
"enum": [
"sm",
"md",
"lg"
]
},
"alignment": {
"type": "string",
"enum": [
"left",
"center",
"right"
]
}
}
}
}
},
"welcome_screen": {
"type": [
"object",
"null"
],
"description": "Replace welcome screen (set null to remove).",
"properties": {
"id": {
"type": "string"
},
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"button_text": {
"type": "string"
},
"estimated_time": {
"type": "string"
},
"show_estimated_time": {
"type": "boolean"
},
"show_submissions_count": {
"type": "boolean"
},
"background_image": {
"type": "string"
},
"background_video": {
"type": "string"
},
"background_alignment": {
"type": "string",
"enum": [
"cover",
"left",
"right",
"inline"
]
},
"background_alignment_mobile": {
"type": "string",
"enum": [
"cover",
"top",
"bottom",
"inline"
]
},
"overlay_color": {
"type": "string"
},
"overlay_opacity": {
"type": "number"
}
}
},
"ending_screens": {
"type": "array",
"description": "Replace all ending screens.",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"button_text": {
"type": "string"
},
"button_url": {
"type": "string"
},
"buttons": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"text": {
"type": "string"
},
"url": {
"type": "string"
},
"style": {
"type": "string",
"enum": [
"primary",
"secondary"
]
}
}
}
},
"is_default": {
"type": "boolean"
},
"score_range": {
"type": "object",
"properties": {
"min": {
"type": "number"
},
"max": {
"type": "number"
}
}
},
"background_image": {
"type": "string"
},
"background_video": {
"type": "string"
},
"background_alignment": {
"type": "string",
"enum": [
"cover",
"left",
"right"
]
},
"background_alignment_mobile": {
"type": "string",
"enum": [
"cover",
"top",
"bottom"
]
},
"overlay_color": {
"type": "string"
},
"overlay_opacity": {
"type": "number"
}
},
"required": [
"id"
]
}
}
},
"required": [
"survey_id"
]
}🔴delete_survey(survey_id)
Permanently delete a survey and all its responses.
Input Schema
{
"type": "object",
"properties": {
"survey_id": {
"type": "string",
"description": "The survey ID to delete"
}
},
"required": [
"survey_id"
]
}🟢list_responses(survey_id, page, per_page, status, since, ...)
List responses for a survey with pagination and filters. Returns response metadata and answers.
Input Schema
{
"type": "object",
"properties": {
"survey_id": {
"type": "string",
"description": "The survey ID"
},
"page": {
"type": "number",
"description": "Page number (default: 1)"
},
"per_page": {
"type": "number",
"description": "Results per page (default: 20, max: 50)"
},
"status": {
"type": "string",
"enum": [
"completed",
"partial",
"all"
],
"description": "Filter by response status (default: completed)"
},
"since": {
"type": "string",
"description": "ISO date - only responses after this date"
},
"until": {
"type": "string",
"description": "ISO date - only responses before this date"
}
},
"required": [
"survey_id"
]
}🟢get_response(survey_id, response_id)
Get a single response by ID.
Input Schema
{
"type": "object",
"properties": {
"survey_id": {
"type": "string",
"description": "The survey ID"
},
"response_id": {
"type": "string",
"description": "The response ID"
}
},
"required": [
"survey_id",
"response_id"
]
}🟡submit_response(survey_id, answers, user_id, completion_time)
Submit a response to a survey programmatically. Answers is a map of question_id to answer value.
Input Schema
{
"type": "object",
"properties": {
"survey_id": {
"type": "string",
"description": "The survey ID"
},
"answers": {
"type": "object",
"description": "Map of question_id -> answer value"
},
"user_id": {
"type": "string",
"description": "Optional user identifier"
},
"completion_time": {
"type": "number",
"description": "Completion time in milliseconds"
}
},
"required": [
"survey_id",
"answers"
]
}🟢get_analytics(survey_id)
Get analytics summary for a survey (views, responses, completion rate).
Input Schema
{
"type": "object",
"properties": {
"survey_id": {
"type": "string",
"description": "The survey ID"
}
},
"required": [
"survey_id"
]
}🟢list_media_library_images(search, limit)
List images from the account's media library, including brandkits, uploaded media, logos, and theme backgrounds.
Input Schema
{
"type": "object",
"properties": {
"search": {
"type": "string",
"description": "Optional search term to filter images by name/URL."
},
"limit": {
"type": "number",
"description": "Max images to return (default 100, max 500)."
}
}
}🟡duplicate_survey(survey_id, title)
Create a copy of an existing survey with all its questions, styles, logic, and screens. Returns the new survey details including share_url.
Input Schema
{
"type": "object",
"properties": {
"survey_id": {
"type": "string",
"description": "The survey ID to duplicate"
},
"title": {
"type": "string",
"description": "Optional title for the copy (defaults to 'Original Title (Copy)')"
}
},
"required": [
"survey_id"
]
}🟡create_webhook(url, events, survey_id, secret)
Register a webhook to receive notifications when survey events occur.
Input Schema
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Webhook URL to receive POST requests"
},
"events": {
"type": "array",
"items": {
"type": "string",
"enum": [
"response.completed",
"response.created",
"survey.opened",
"survey.closed"
]
},
"description": "Events to subscribe to (default: response.completed)"
},
"survey_id": {
"type": "string",
"description": "Specific survey ID or '*' for all surveys"
},
"secret": {
"type": "string",
"description": "Secret for HMAC-SHA256 webhook signatures"
}
},
"required": [
"url"
]
}🟢list_webhooks(survey_id)
List all registered webhooks for your account.
Input Schema
{
"type": "object",
"properties": {
"survey_id": {
"type": "string",
"description": "Optional: filter by survey ID"
}
}
}🟡update_webhook(webhook_id, url, events, is_active, secret)
Update a webhook's URL, events, active status, or secret.
Input Schema
{
"type": "object",
"properties": {
"webhook_id": {
"type": "string",
"description": "The webhook ID"
},
"url": {
"type": "string"
},
"events": {
"type": "array",
"items": {
"type": "string",
"enum": [
"response.completed",
"response.created",
"survey.opened",
"survey.closed"
]
}
},
"is_active": {
"type": "boolean"
},
"secret": {
"type": "string"
}
},
"required": [
"webhook_id"
]
}🔴delete_webhook(webhook_id)
Delete a registered webhook.
Input Schema
{
"type": "object",
"properties": {
"webhook_id": {
"type": "string",
"description": "The webhook ID to delete"
}
},
"required": [
"webhook_id"
]
}Community
Evidence