Docs
Connect an AI assistant to your surveys, and ask it about your results or have it draft the next survey.
The MCP server lets Claude, ChatGPT, Claude Code, Cursor, VS Code or another MCP client work with your Indie Polls surveys. It can list them, read their questions, results, individual responses and the AI insights already computed in the app, create draft surveys and add questions to them, and publish or close a survey when you ask. It cannot delete anything. It is part of the Max plan, the free trial includes it, and only an account's admins can use it.
https://indiepolls.io/mcp
Most clients sign in with OAuth: you add the server URL, a browser window opens, you sign in to Indie Polls and approve. Nothing to copy or paste after that. The menu names below are the ones these apps use today, and they change from time to time.
On Team and Enterprise plans, an owner adds the connector first under Admin settings > Connectors, then each member clicks Connect. Remote servers are added this way, not in claude_desktop_config.json.
Add the server from your terminal:
claude mcp add --transport http indie-polls https://indiepolls.io/mcp
Then run /mcp inside Claude Code and choose to authenticate. A browser opens for you to sign in to Indie Polls and approve.
Add this to ~/.cursor/mcp.json, or to .cursor/mcp.json in a project:
{
"mcpServers": {
"indie-polls": {
"url": "https://indiepolls.io/mcp"
}
}
}
Cursor then offers to sign in. If its built-in browser does not load the sign-in page, copy the link into your normal browser.
Open the Command Palette, run MCP: Add Server, choose HTTP and paste the server URL, then approve the sign-in. Or add it to .vscode/mcp.json:
{
"servers": {
"indie-polls": {
"type": "http",
"url": "https://indiepolls.io/mcp"
}
}
}
A client that supports OAuth only needs the server URL. One that only takes a header uses a personal token: generate it in Settings, under MCP server, and send it as Authorization: Bearer followed by the token.
{
"mcpServers": {
"indie-polls": {
"headers": {
"Authorization": "Bearer YOUR_TOKEN"
},
"url": "https://indiepolls.io/mcp"
}
}
}
A personal token lasts 90 days and only works with the MCP server, not with Zapier or the API.
These are the tools the server offers your assistant, read from the server itself. Tools marked Reads only look; tools marked Changes save something in your account.
list_surveys
Reads
Lists the surveys of every account the user is an admin of (their own, and team accounts where they have the admin role), newest first, with each one's id, account, status, dates and number of respondents, up to 200 of them (truncated says whether there are more). It also lists those accounts. Team accounts where the user is an editor or a viewer are not reached. Call this first: the other tools take a survey id.
get_survey
Reads
Gets one survey with its settings and its questions in order, each with its type and options. Use it to know what was asked before reading results or responses.
get_survey_results
Reads
Summarises a survey's results question by question: vote counts and shares for choice questions, the score for scale questions (NPS, CSAT, stars, Likert), average positions for rankings, and up to 25 of the latest typed answers for open-text, date, number and email questions. Typed answers are quoted as written, without who gave them, so an email question's answers are respondents' email addresses and open text can hold personal details.
list_survey_responses
Reads
Lists a survey's respondents, newest first, one page at a time: the same fields as the CSV export of the results. Each has every answer they gave, their external id, submission time, device type, the hidden fields and variables recorded with the response and, where they left them, their name and email.
get_survey_insights
Reads
Returns the AI analysis of a survey's responses as last computed in the app: themes in the open-text answers, sentiment, and a written report. Each says when it was computed and whether responses have arrived since (stale). Nothing is computed by this call; an insight never computed in the app is reported as missing.
create_draft_survey
Changes
Creates a new survey as a draft, with its questions, in the user's own account or in a team account they are an admin of, named by account_id. A draft takes no responses and is shown to no one until it is published. Choice and ranking questions need their options; scale and rating questions generate their own points. A key that belongs to another question type (options on a scale, scale_kind on a rating) is refused.
update_draft_survey
Changes
Changes a draft survey's title or description. Only a draft can be changed this way; a published survey is edited in the app. An empty description removes it.
add_draft_questions
Changes
Adds questions to the end of a draft survey, in the order given, built the same way as create_draft_survey's. All or nothing: if one question is wrong, none is added. Only a draft can take new questions this way.
publish_survey
Changes
Publishes a survey: it becomes active and starts collecting responses wherever it is shared or embedded, and the result has its share link. It is the same status change as in the app's editor, so a scheduled survey opens now instead of at its start date. An active one is left as it is (changed: false). Only call this when the user asks to publish.
close_survey
Changes
Closes a survey: it stops taking responses, and the ones it has are kept. A closed one is left as it is (changed: false). It can be published again later. Only call this when the user asks to close.
Things you can ask, and the tools the assistant uses for them.
“Draft a churn survey with five questions.”
It saves a new draft with the questions. Nobody sees a draft until it is published.
create_draft_survey
“What did people say in the onboarding survey this week?”
It finds the survey and reads its responses, newest first, each with when it was submitted.
list_surveys
list_survey_responses
“Summarise the insights for the pricing survey.”
It reads the themes, sentiment and report last computed on the insights page, and says if responses have arrived since. It does not compute new ones.
get_survey_insights
“What is the NPS of the feedback survey so far?”
It summarises the results question by question, with the score for NPS, CSAT, stars and Likert questions.
get_survey_results
“Add an NPS question to the churn draft and publish it.”
It adds the question to the end of the draft, then publishes the survey and gives you its share link.
add_draft_questions
publish_survey
“Close the pricing survey.”
It stops taking responses and keeps the ones it has. You can publish it again later.
close_survey
Every client you have connected, and every personal token, is listed under Connected in Settings, under MCP server. Revoke one and it stops working straight away, and the others keep working.
A client that signed in gets an access token that lasts an hour and is refreshed for it automatically, so you do not sign in again. If the client goes unused for 30 days, it has to sign in again. A personal token lasts 90 days; after that, generate a new one.