Skip to content
plugmcp
DirectorySkillsCategoriesBlog
EN/中文
Sign inSign up
Home/Servers/50heads

50heads

by com.50heads

Ask fifty verified people a five-second question and see what they think.

Power your agent

Add this server

The publisher's own URL. Not a PlugMCP endpoint.

Server URL
https://mcp.50heads.com/mcp
Credentials from the publisher
  • FIFTYHEADS_API_KEY — A 50heads API key (fh_live_…) from the dashboard. Or run `npx @50heads/mcp login` once instead.
Provider
Add in Claude

Claude opens with the name and URL filled in. You still confirm it there.

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

Run in a terminal.

Claude Desktop
{
  "mcpServers": {
    "com.50heads-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://mcp.50heads.com/mcp"
      ]
    }
  }
}

claude_desktop_config.json

Step-by-step: add this in Claude

Remote URL or a command on your machine? How the two installs differ

Run on PlugMCP

Host a copy with our keys and logs.

A new server you create. It is not this listing's official endpoint. Use the publisher install when you want their URL and their credentials.

Launch

Related MCP

View more
  • Firecrawl🔥 Official Firecrawl MCP Server - Adds powerful web scraping and search to Cursor, Claude and any other LLM clients.
  • N
    NotionToken-auth Notion MCP: pages, databases, blocks, comments, files. Runs headless in CI and agents.
  • Context7Context7 Platform -- Up-to-date code documentation for LLMs and AI code editors

Related skills

View all
  • reaReverse engineer anything with agents, from app behavior down to native binaries.
  • rea-changelog-updatePrepare or rewrite REA release changelogs and GitHub release notes from pinned Git history, with verified contributor thanks and Release Please synchronization.
  • rea-tool-designDesign or change REA investigation tools, CLI/MCP contracts, provider capabilities, and Evidence semantics.

Questions

How do I install 50heads?
Copy the http config for Cursor, Claude Desktop, Claude Code, or VS Code on this page. It uses the publisher's install, not a PlugMCP proxy.
Does 50heads need an API key?
The publisher lists these environment variables: FIFTYHEADS_API_KEY.
What transport does 50heads use?
50heads is reached over HTTP.
When was 50heads last checked?
Last checked 2026-10-16. Ask fifty verified people a five-second question and see what they think.

Ask fifty verified people a five-second question and see what they think.

50heads MCP

Ask fifty verified people a five-second question from Claude, ChatGPT, Cursor or your own agent, and see what they think. 50 answers at Tier 1: 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 organization first.

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

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

{
  "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.

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

Or with an API key (CI and scripts):

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.

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

Or with an API key:

{
  "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.

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.

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

Or from a terminal:

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.

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

Or the hosted server with an API key:

{
  "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.

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.

{
  "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 (action quote) 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

npx -y @50heads/mcp login     # opens the browser; the token goes in your keychain
npx -y @50heads/mcp status
npx -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 (9, each takes an action)

There are nine tools, never more than ten. Each tool takes an action and that action's own arguments, validated per action (the input is a discriminated union on action), and tools/list documents every action in the tool's description. Scopes belong to actions, not tools: a connection that lacks the scope for an action is refused with insufficient_scope for that action alone, and a read-only grant never reaches an action that changes something. Tool annotations are true of every action in the tool: estimate, results, organization and audit are read-only (readOnlyHint: true); questions, projects and webhooks each hold a cancel or delete, so they carry destructiveHint: true; ask and help change something but destroy nothing. Each tool's _meta["com.50heads/scopes"] lists the scope of each action.

ToolHintsActionsDoes
estimateread-onlyquote, balance, templates, audiences, targetingPrice a question, check credits, and look up what you can ask for.
askwritesask, set, upload_image, build_linkAsk heads or your own audience, upload an image, build a link for a person to press Ask.
resultsread-onlyget, wait, answers, export, listRead results, wait for them, read single answers, export files, list your questions.
questionsdestructivecancel, add_heads, flag_answer, fileChange one question: cancel it, add heads, flag an answer, file it.
projectsdestructivelist, create, update, delete, labelsProjects and labels that keep questions findable.
webhooksdestructivelist, create, update, rotate_secret, test, deliveries, events, replay, deleteWebhook endpoints, deliveries and recent events.
organizationread-onlyget, domains, scim, member_sessions, service_accounts, appsThe organization, its domains, SCIM, member sessions, service accounts and workspace apps.
auditread-onlylist, exportThe organization audit log.
helpwritessearch, feedback, status, whoamiSearch the help center, send feedback, check whether 50heads is working, see who the connection acts as.

Actions and scopes

ToolActionScopeDoes
estimatequotequestions:writePrice and fixes for a question. Never spends. Call it first.
estimatebalanceaccount:readCredits, reserved credits and what is left under the connection's daily cap.
estimatetemplatesnoneFixed-price templates. Works without signing in.
estimateaudiencesnoneInterest audiences you can ask instead of targeting, with prices by grade.
estimatetargetingnoneCountries, languages, pool bands and the tags you can target.
askaskquestions:writeAsks verified heads. Needs a fresh UUID as idempotency_key. Returns a task (or a question_id on older hosts).
asksetquestions:writeTwo to ten questions for your own audience behind one shared link, answered in order. Needs an idempotency_key.
askupload_imagequestions:writePuts an image into 50heads from base64 or an https link; returns an image_url for a question.
askbuild_linknoneA portal link with the question filled in, for a person to check and ask. Spends nothing.
resultsgetquestions:readResults so far, without waiting: the share per option, a go or no go verdict against your own line on yes/no questions, and who beats whom on rankings and pairwise questions, with ranges.
resultswaitquestions:readWaits up to 600 s on the server for the answers (min_answers, timeout_seconds). For hosts without tasks.
resultsanswersquestions:readIndividual answers a page at a time, filtered by option, tier, country, age band or keyword.
resultsexportquestions:readThe results as a file: CSV, JSON lines (one answer per line, with option indexes and the cohort hash), a one-page PDF report, or a PNG chart.
resultslistquestions:readYour recent questions, filtered by status, project, label, reference, bookmark or set. Check before asking again.
questionscancelquestions:writeStops a live question and refunds unanswered heads. Destructive.
questionsadd_headsquestions:writeMore heads on the same question, merged into the same result. Needs an idempotency_key.
questionsflag_answerquestions:writeReports one answer by its attestation_ref for review; upheld flags are refunded.
questionsfilequestions:writeFiles a question: project, labels, bookmark, archive, and an external reference set once.
projectslistquestions:readProjects in the account, with include_archived for archived ones too.
projectscreatequestions:writeA new project to file questions in.
projectsupdatequestions:writeRenames, redescribes, archives or restores a project.
projectsdeletequestions:writeDeletes a project. Its questions stay, with their answers, outside any project. Destructive.
projectslabelsquestions:readLabels in use, most used first.
webhookslistwebhooks:readWebhook endpoints: address, events, filter, on or off, last delivery. Secrets masked.
webhookscreatewebhooks:writeSends the chosen events, signed, to an https address you own; filter by project or label. Returns the secret once.
webhooksupdatewebhooks:writeChanges address, events, description or filter (null clears it); pauses or resumes.
webhooksrotate_secretwebhooks:writeA new secret, returned once; the old one keeps signing for overlap_hours (default 24, up to 168).
webhookstestwebhooks:writeSends a signed webhook.test event now and says how the receiver answered.
webhooksdeliverieswebhooks:readThe latest 100 deliveries, by endpoint or state (failed is out of retries).
webhookseventswebhooks:readThe latest events of one type (up to 25), each exactly as a delivery carries it: sample payloads, or catching up by event id.
webhooksreplaywebhooks:writeSends a delivery's event again, with the same event id.
webhooksdeletewebhooks:writeDeletes an endpoint for good. Destructive.
organizationgetorganization:readThe organization of the workspace the key or app acts in: workspaces, verified domains, single sign-on, SCIM and sign-in rules.
organizationdomainsorganization:readThe organization's domains, each with its state and the DNS TXT record that proves it. Admins only.
organizationscimorganization:readSCIM provisioning: base URL, people and groups sent, default role, tokens by label and prefix. Admins only.
organizationmember_sessionsmembers:readOne member's live sessions and how each started. Admins only.
organizationservice_accountsorganization:readThe organization's service accounts: workspace, scopes, caps, today's spend and last token. Never their secrets.
organizationappsapps:readSlack workspaces and Microsoft Teams tenants 50heads is added to (provider says which) and Zapier connections: daily cap, today's spend, who added each, and each Zapier connection's hooks.
auditlistaudit:readWho did what in the organization and its workspaces, newest first, filtered by time, actor, event_action and workspace. Admins only.
auditexportaudit:readThe same events as JSON lines, oldest first, with a cursor to resume. Each export is recorded. Admins only.
helpsearchnoneSearches the help center and returns articles with links.
helpfeedbacknoneSends feedback or a problem to support as a ticket (signed out: add email).
helpstatusnoneWhether 50heads is working, and whether asking, answering, MCP asking or buying credits is paused. Works without signing in. Read-only.
helpwhoamiaccount:readWho the connection acts as (email masked), its scopes, caps and spend today, the account and organization it acts in, and its rate limits with what is used. Read-only.

Before and after

This release replaces the 44 single-purpose tools with the nine above (decision G12: at most ten tools, so a model can choose well). Every old tool is one action of one new tool, with the same arguments; two details changed: build_ask_link now takes its question fields inside draft, and the audit filter action is event_action (so it cannot clash with action). wait_for_results is now results with action: "wait" on every host.

Old toolNew toolAction
estimateestimatequote
askaskask
ask_setaskset
get_resultsresultsget
wait_for_resultsresultswait
list_questionsresultslist
cancelquestionscancel
templatesestimatetemplates
balanceestimatebalance
upload_imageaskupload_image
get_answersresultsanswers
add_headsquestionsadd_heads
flag_answerquestionsflag_answer
exportresultsexport
build_ask_linkaskbuild_link
list_audiencesestimateaudiences
list_targetingestimatetargeting
search_helphelpsearch
send_feedbackhelpfeedback
whoamihelpwhoami
service_statushelpstatus
list_webhookswebhookslist
create_webhookwebhookscreate
update_webhookwebhooksupdate
rotate_webhook_secretwebhooksrotate_secret
test_webhookwebhookstest
list_webhook_deliverieswebhooksdeliveries
list_webhook_eventswebhooksevents
replay_webhook_deliverywebhooksreplay
delete_webhookwebhooksdelete
list_projectsprojectslist
create_projectprojectscreate
update_projectprojectsupdate
delete_projectprojectsdelete
list_labelsprojectslabels
file_questionquestionsfile
list_appsorganizationapps
get_organizationorganizationget
list_domainsorganizationdomains
list_audit_eventsauditlist
export_audit_eventsauditexport
get_scim_statusorganizationscim
list_member_sessionsorganizationmember_sessions
list_service_accountsorganizationservice_accounts

The webhook and app scopes are not granted unless asked for: a connection made before them, or one that did not ask, gets insufficient_scope and can reconnect to add them.

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://webhook-events (event types, what each carries, links to their JSON Schemas and how deliveries are signed), 50heads://results/{question_id}. Prompts: ask_the_heads, read_results. Hosts that show MCP Apps get the estimate and the results as cards.

Tool annotations: read-only tools carry readOnlyHint: true; questions (cancel), projects (delete) and webhooks (delete) are the only tools marked destructiveHint: true; every tool has openWorldHint: true and an output schema (a union of its actions' outputs). Hosts that show MCP Apps get the quote and the results as cards: they appear for estimate and results, and only for the replies they were made for.

Privacy

Privacy policy: https://50heads.com/en-gb/legal/privacy. We don't use your questions, the answers you buy or the reasons heads write to train AI models, and we don't sell them: https://50heads.com/en-gb/help/privacy/ai-and-your-data. Answers never identify a head.

Where to find it

  • Hosted: https://mcp.50heads.com/mcp.
  • npm: @50heads/mcp.
  • Official MCP Registry, as com.50heads/mcp, and MCP directories: coming soon.

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

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.

pnpm --filter @50heads/mcp generate   # skill module, skill references, server.json, README install section
pnpm --filter @50heads/mcp test
pnpm --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 license.

Spelling

Everything the server says, accepts and returns is US English: tool names, actions, descriptions, arguments, outputs and error codes (organization, authorized, canceled). One word is not ours to spell: the status of an MCP task that was stopped is cancelled, because the MCP tasks protocol defines it that way and clients validate it. A question stopped through questions with action: "cancel" has status canceled.

How do I install 50heads?
Copy the http config for Cursor, Claude Desktop, Claude Code, or VS Code on this page. It uses the publisher's install, not a PlugMCP proxy.
Does 50heads need an API key?
The publisher lists these environment variables: FIFTYHEADS_API_KEY.
What transport does 50heads use?
50heads is reached over HTTP.
When was 50heads last checked?
Last checked 2026-10-16. Ask fifty verified people a five-second question and see what they think.

No tool list yet. Remote servers get one after the first health check.

plugmcp

Plug any tool into any agent. MCP servers for people who do not write servers. Gateway for volume, n8n for apps.

  • github.com/TODO
  • x.com/TODO
  • linkedin.com/company/TODO

PlugMCP, 2026

Product
  • Browse
  • Install
  • Host your own
  • Pricing
  • Voice mode
  • Browser
Directory
  • All MCP servers
  • MCP Apps
  • Tools
  • Agent skills
  • Categories
  • New
  • Voice
  • Submit a server
Developers
  • Docs
  • Blog
  • Club
  • Work with us
  • What is MCP
  • What is WebMCP
  • Status
Company
  • About
  • Contact
  • Terms
  • Privacy
  • DPA