50heads

com.50headsv2026.1006.1Updated Oct 6, 2026

Ask fifty verified real people a five-second question and get the split back.

VerifiedStreamable HTTPWeb executableBusiness & CommerceData & Analytics

Overview

AI-generated overview

Lets an assistant ask fifty verified real people a short question and return the split of answers, with pricing and results tools.

What it does
The server exposes tools to price a question (estimate), ask it to a panel of fifty verified people (ask), and read results as they arrive (get_results, wait_for_results, get_answers). It also lists past questions, cancels a question with a refund of unanswered heads, adds more heads, flags an answer for review, and exports results as CSV, PDF or PNG. Supporting tools cover templates, audiences, targeting options, balance, image upload, a shareable ask link, help search and feedback.
When to use it
Use it when you want quick human opinion or preference data from a real panel rather than a model's guess, for example choosing between two names or checking how a short claim lands. It fits agents that need to run small surveys and read the split back inside a conversation.
Requirements
Either the hosted endpoint at with OAuth sign-in in a browser, or the local npm package run with npx, which needs Node 20 or later. The local route needs an API key in FIFTYHEADS_API_KEY (keys start fh_live_) or a one-time login command; the hosted route can instead take an Authorization bearer header. A 50heads account and credits are required to ask.
Before you install
Asking spends credits: 50 answers at Tier 1 cost about 1000 credits, and each connection has a daily spend cap (default 5,000 credits) that OAuth sign-in sets. The API key FIFTYHEADS_API_KEY and the Authorization bearer header are secrets shown once; keep them out of shared configs. Tools write and change data: ask, add_heads, cancel, upload_image, flag_answer and send_feedback act on your account, and question text and uploaded images go to 50heads and its panel.

Installation

In SourceWeft

  1. Open 50heads in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "mcp": {
      "type": "http",
      "url": "https://mcp.50heads.com/mcp"
    }
  }
}

README

50heads MCP

Ask fifty verified real people a five-second question from Claude, ChatGPT, Cursor or your own agent, and get the split back. 50 answers at Tier 1: about 10 minutes and 1000 credits, priced in your account's currency.

There are two ways in, with the same tools:

  • Hosted (recommended): https://mcp.50heads.com/mcp. Streamable HTTP, sign in with OAuth in the browser. Nothing to install.
  • Local: npx -y @50heads/mcp, a stdio server for hosts that launch a command. Needs Node 20 or later and an API key (or a one-time login).

Install

Pick your host below. The hosted server needs nothing installed: add the URL and sign in with OAuth in the browser, which also sets the connection's daily spend cap. The local server (npx -y @50heads/mcp) needs Node 20 or later and an API key.

Make an API key, if you need one, on the Developers page of the dashboard: https://50heads.com/app/developers. Keys start fh_live_ and are shown once. Or run npx -y @50heads/mcp login once and leave the key out.

npx -y @50heads/mcp config [host] prints any of these. The same instructions are on https://50heads.com/en-us/docs/mcp.

Claude (claude.ai and Claude Desktop)

Hosted, sign in with OAuth. Settings, Connectors, Add custom connector. Paste the URL and sign in when asked. On Team and Enterprise plans an owner adds it for the organisation first.

text
https://mcp.50heads.com/mcp

Or with an API key, in claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude).

json
{  "mcpServers": {    "50heads": {      "command": "npx",      "args": [        "-y",        "@50heads/mcp"      ],      "env": {        "FIFTYHEADS_API_KEY": "fh_live_…"      }    }  }}

Claude Code

Hosted, sign in with OAuth. Run in a terminal, then /mcp in Claude Code to sign in.

sh
claude mcp add --transport http 50heads https://mcp.50heads.com/mcp

Or with an API key (CI and scripts):

sh
claude mcp add --transport http 50heads https://mcp.50heads.com/mcp --header "Authorization: Bearer fh_live_…"

Cursor

Hosted, sign in with OAuth. ~/.cursor/mcp.json (or .cursor/mcp.json in a project). Cursor opens the sign-in page.

json
{  "mcpServers": {    "50heads": {      "url": "https://mcp.50heads.com/mcp"    }  }}

Or with an API key:

json
{  "mcpServers": {    "50heads": {      "url": "https://mcp.50heads.com/mcp",      "headers": {        "Authorization": "Bearer fh_live_…"      }    }  }}

ChatGPT

Hosted, sign in with OAuth. Settings, Apps and Connectors, Advanced settings, turn on Developer mode, then Create. Paste the URL and choose OAuth. On Business and Enterprise plans an admin turns on Developer mode first.

text
https://mcp.50heads.com/mcp

VS Code

Hosted, sign in with OAuth. .vscode/mcp.json in the workspace, or MCP: Add Server from the command palette.

json
{  "servers": {    "50heads": {      "type": "http",      "url": "https://mcp.50heads.com/mcp"    }  }}

Or from a terminal:

sh
code --add-mcp '{"name":"50heads","type":"http","url":"https://mcp.50heads.com/mcp"}'

Windsurf

Local, with an API key. ~/.codeium/windsurf/mcp_config.json, or Windsurf Settings, Cascade, MCP servers, View raw config.

json
{  "mcpServers": {    "50heads": {      "command": "npx",      "args": [        "-y",        "@50heads/mcp"      ],      "env": {        "FIFTYHEADS_API_KEY": "fh_live_…"      }    }  }}

Or the hosted server with an API key:

json
{  "mcpServers": {    "50heads": {      "serverUrl": "https://mcp.50heads.com/mcp",      "headers": {        "Authorization": "Bearer fh_live_…"      }    }  }}

Any other host

Local, with an API key. Hosts that launch a local command. Needs Node 20 or later and an API key from the dashboard.

sh
FIFTYHEADS_API_KEY=fh_live_… npx -y @50heads/mcp

Hosts that speak Streamable HTTP: https://mcp.50heads.com/mcp with the header "Authorization: Bearer fh_live_…", or OAuth.

json
{  "mcpServers": {    "50heads": {      "url": "https://mcp.50heads.com/mcp",      "headers": {        "Authorization": "Bearer fh_live_…"      }    }  }}

Check it works

Ask your host to "use 50heads to estimate asking fifty people which of two names they prefer". estimate is free and never spends credits. In Claude Code, /mcp lists the server and its tools; elsewhere, look for 50heads in the host's tools or connectors list.

Signing in on the command line

sh
npx -y @50heads/mcp login     # opens the browser; the token goes in your keychainnpx -y @50heads/mcp statusnpx -y @50heads/mcp logout

login uses the OAuth device flow against https://auth.50heads.com. Tokens are kept in the macOS Keychain or the Secret Service on Linux, else in ~/.config/50heads/credentials.json (mode 600). An API key in FIFTYHEADS_API_KEY wins when both are present.

--proxy forwards stdio to the hosted server instead of running the tools locally.

VariableMeaning
FIFTYHEADS_API_KEYAPI key for CI and scripts
FIFTYHEADS_API_URLAPI base, default https://api.50heads.com
FIFTYHEADS_MCP_URLHosted endpoint for --proxy
FIFTYHEADS_AUTH_URLSign-in server for login
FIFTYHEADS_CREDENTIALS_STORE=fileKeep the sign-in in a file, not the keychain
FIFTYHEADS_DEBUG=1Log each call to stderr (never question text)

Tools

ToolScopeDoes
estimatequestions:writePrice, time and fixes for a question. Never spends. Call it first.
askquestions:writeAsks. Needs a fresh UUID as idempotency_key. Returns a task (or a question_id on older hosts).
get_resultsquestions:readResults so far, without waiting.
wait_for_resultsquestions:readOlder hosts only: waits up to 600 s on the server.
list_questionsquestions:readYour recent questions. Check before asking again.
cancelquestions:writeStops a question and refunds unanswered heads.
templatesnoneFixed-price templates. Works without signing in.
balanceaccount:readCredits, reserved credits and what is left under the connection's daily cap.
upload_imagequestions:writePuts an image into 50heads from base64 or an https link; returns an image_url for a question.
get_answersquestions:readIndividual answers a page at a time, filtered by option, tier, country, age band or keyword.
add_headsquestions:writeMore heads on the same question, merged into the same result. Needs an idempotency_key.
flag_answerquestions:writeReports one answer by its attestation_ref for review; upheld flags are refunded.
exportquestions:readThe results as a file: CSV, a one-page PDF report, or a PNG chart (square, wide or story).
build_ask_linknoneA portal link with the question filled in, for a person to check and ask. Spends nothing.
list_audiencesnoneInterest audiences you can ask instead of targeting, with prices by grade.
list_targetingnoneCountries, languages, pool bands and the tags you can target.
search_helpnoneSearches the help centre and returns articles with links.
send_feedbacknoneSends feedback or a problem to support as a ticket (signed out: add email).

Every connection has a daily spend cap (default 5,000 credits). Asking past it returns spend_cap_exceeded with what is left and when it resets.

Errors are JSON-RPC errors with error.data.code (validation, not_found, insufficient_credits, spend_cap_exceeded, idempotency_conflict, content_refused, rate_limited, unavailable) and a retryable hint.

Resources: 50heads://guide (the skill), 50heads://templates, 50heads://question-types, 50heads://pricing, 50heads://countries, 50heads://results/{question_id}. Prompts: ask_the_heads, read_results. Hosts that show MCP Apps get the estimate and the results as cards.

The Agent Skill

The package ships the 50heads Agent Skill in skills/50heads (@50heads/mcp/skills/50heads/SKILL.md): when to ask, the eight rules for a good question, how to read results, and references for question types and pricing. Copy the folder into your host's skills directory, or let a host that speaks the com.50heads/skills extension fetch it from the server.

As a library

ts
import { serveStdio } from "@modelcontextprotocol/server/stdio";import { serverFactory } from "@50heads/mcp";
serveStdio(serverFactory({ apiKey: process.env.FIFTYHEADS_API_KEY }));

serveStdioServer(options) runs the whole stdio server, tasks included. configSnippets() returns the install snippets above.

Versions

Releases use calendar versions, YYYY.MDD.N: 2026.924.1 is the first release on 24 September 2026, and a second that day is 2026.924.2. The npm package, the hosted server (serverInfo.version), the registry manifest, --version and the Agent Skill all carry the same number. See CHANGELOG.md.

server.json is ready for the official MCP Registry as com.50heads/mcp. The registry has no listing yet (a search returns no servers). Publishing it needs MCP_REGISTRY_ED25519_KEY on the release workflow. See docs/publishing.md. The npm package itself is published.

Development

This package lives in the 50heads monorepo. The hosted server (apps/mcp) and the stdio server share one module, src/server.ts, so they cannot drift.

sh
pnpm --filter @50heads/mcp generate   # skill module, skill references, server.json, README install sectionpnpm --filter @50heads/mcp testpnpm --filter @50heads/mcp build      # dist/cli.js, dist/index.js, types, skills/ and skills/50heads.zip

Releasing (npm with provenance from the public mirror, the MCP Registry and a GitHub Release) is described in docs/publishing.md.

MIT licence.

Source: README.md at commit 7f8ae79

Tools

0
Tool metadata has not been indexed yet.

Version history

1
  1. v2026.1006.1LatestOct 6, 2026