pollbolt

AI-native survey & form builder. Manage surveys, responses, analytics, and webhooks.

Should I use this

Quality & Safety

A
Description quality
97%
Schema completeness
97%
Naming quality
99%
Poisoning risk
100%
Permission match
80%
Protocol compliance
100%

Findings (2)

  • LOWTool 'list_webhooks' suggests web access but openWorldHint=falsein list_webhooks
  • LOWTool 'delete_webhook' suggests web access but openWorldHint=falsein delete_webhook

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~3,961Tokens (tool definitions)
~2.8 KBTypical response size
Significant attention impact (3.09% of 128k context)

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-http

What it can do

Tool inventory

Tools (15)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟡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

Rate this Server

Evidence

Recent observations

verifiedversion not recorded15 tools
verifiedversion not recorded15 tools