Docs

Indie Polls MCP server

Connect an AI assistant to your surveys, and ask it about your results or have it draft the next survey.

Overview

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.

Server URL
https://indiepolls.io/mcp

Connect

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.

Claude (claude.ai and the desktop app)

  1. Open Settings > Connectors and choose Add custom connector.
  2. Give it a name, such as Indie Polls, and paste the server URL.
  3. Click Connect, sign in to Indie Polls and approve.
  4. In a conversation, turn the connector on from the tools menu.

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.

ChatGPT

  1. Turn on developer mode under Settings > Apps & Connectors > Advanced settings. It is available on paid plans, and on Business and Enterprise workspaces an admin may need to allow it.
  2. Create a connector with the server URL and OAuth as the authentication.
  3. Sign in to Indie Polls and approve.
  4. In a chat, select the connector (or mention it) so ChatGPT uses its tools.

Claude Code

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.

Cursor

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.

VS Code

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"
    }
  }
}

Other clients, and clients without OAuth

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.

What it can do

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

    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 a survey

    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.

  • Summarise a survey's results

    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 a survey's responses

    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 a survey's AI insights

    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 a draft survey

    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 a draft survey

    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 questions to a draft survey

    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 a survey

    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 a survey

    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.

Examples

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

Permissions and privacy

  • Only admins can use it. It acts as you, on the surveys of the accounts you are an admin of: your own, and the team accounts where your role is admin. Each of those accounts must be on Max. A survey from any other account, including a team account where you are an editor or a viewer, is answered as though it did not exist.
  • Responses come with the same fields as the CSV export: every answer, the external id, submission time, device type, hidden fields and variables, and the respondent's name and email where they left them.
  • Typed answers are quoted as written, so an email question's answers are email addresses and open text can hold personal details. Your assistant sees them as you would.
  • It cannot delete anything. A survey's content changes only while it is a draft, and the only change to a live survey is closing it.
  • Each account can make 120 requests a minute. Past that, the server asks the assistant to slow down.

Managing access

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.

Open the MCP server settings

Troubleshooting

The Indie Polls MCP server is available to admins of an account on the Max plan
You are not an admin of any account on Max: your own account is not on Max, or its trial has ended, and you are not an admin of a team account on Max. Upgrade, ask a team admin to make you an admin, or connect with an account that is an admin on Max.
The token is invalid or has expired
Reconnect the client so it signs in again, or generate a new personal token. Tokens made for the API, such as the one Zapier uses, do not work here.
This app asked to return to an address it did not register.
The sign-in page was opened with an old or changed link. Start connecting again from the app.
Too many requests: slow down and try again shortly
The assistant went over the limit for your account. Wait a minute and ask again.
ChatGPT does not use the tools
Select the connector in the chat, or mention it, so ChatGPT knows to use it.