A human judgment, one tool call away.
Your agent can ask fifty verified people and get a distribution back in about ten minutes, from 15.2¢ an answer. The 50heads MCP server works with Claude, Cursor, ChatGPT and anything that speaks MCP.
Add it to your host
Claude
In Claude, open Settings, then Connectors, and add a custom connector with this URL. You'll sign in and set a daily spend cap.
https://mcp.50heads.com/mcpClaude Code
Run this in a terminal. Claude Code opens a browser for you to sign in and set a daily spend cap.
claude mcp add --transport http 50heads https://mcp.50heads.com/mcpCursor
Add this to ~/.cursor/mcp.json, then sign in when Cursor asks.
{
"mcpServers": {
"50heads": {
"url": "https://mcp.50heads.com/mcp"
}
}
}ChatGPT
In ChatGPT, open Settings, then Apps and connectors, then Advanced settings, and turn on Developer mode. Choose Create, paste this URL and pick OAuth.
https://mcp.50heads.com/mcpVS Code
Add this to .vscode/mcp.json in your workspace, or run MCP: Add Server. VS Code opens the sign-in page.
{
"servers": {
"50heads": {
"type": "http",
"url": "https://mcp.50heads.com/mcp"
}
}
}Windsurf
Add this to ~/.codeium/windsurf/mcp_config.json, with an API key from the portal.
{
"mcpServers": {
"50heads": {
"command": "npx",
"args": [
"-y",
"@50heads/mcp"
],
"env": {
"FIFTYHEADS_API_KEY": "fh_live_…"
}
}
}
}Other (npx)
For hosts that launch a local command. Needs Node 20 or later and an API key from the portal.
FIFTYHEADS_API_KEY=fh_live_… npx -y @50heads/mcpThree calls
Estimate is free and never spends. Ask reserves the credits. Waiting happens on our side, so your agent makes one call instead of polling.
> estimate({ type: "single_choice", text: "Which menu would you order from tonight?",
options: [{ label: "Menu A" }, { label: "Menu B" }], n: 50, tier: 1 })
12 credits × 50 = $7.62 · eta 10 min
> ask({ ...same question, idempotency_key: "4f9c…" })
task q_8k2f · working · 0 of 50 answered
> get_results("q_8k2f") # or wait_for_results on older hosts
complete · winner "Menu B" · margin 36 points · confidence highTools
estimate- Price, time and validation for a question. Never spends.
ask- Posts a question. Needs an idempotency key, so a retry is never a second ask.
get_results- The results so far, without waiting.
wait_for_results- Waits on our side until the question is answered.
list_questions- Recent questions, so an agent can reuse a result before re-asking.
cancel- Stops a live question and refunds the answers not given.
templates- Fixed-price question templates.
balance- Credits, and what's left under the connection's daily cap.
Safe to leave running
- Every connection has a daily spend cap, $63.5 unless you change it. An agent can't spend past it.
- Ask needs an idempotency key. The same key returns the same question.
- Questions pass the same content rules as everyone else's. A refused question costs nothing.
- Results never identify a head.
Or call the API
Everything the MCP server does is a plain HTTPS call. Keys start fh_live_ and are shown once.
curl https://api.50heads.com/v1/billing/estimate \
-H "Content-Type: application/json" \
-d '{"draft":{"type":"single_choice","text":"Which menu would you order from tonight?",
"options":[{"label":"Menu A"},{"label":"Menu B"}],"n":50,"tier":1}}'
curl https://api.50heads.com/v2/questions \
-H "Authorization: Bearer $FIFTYHEADS_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"draft":{"type":"single_choice","text":"Which menu would you order from tonight?",
"options":[{"label":"Menu A"},{"label":"Menu B"}],"n":50,"tier":1,"language":"en"}}'
curl "https://api.50heads.com/v2/questions/q_8k2f/wait?seconds=25" \
-H "Authorization: Bearer $FIFTYHEADS_API_KEY"