Human Survey MCP server
io.github.sunsiyuan/human-survey·v1.2.0·1 starsSelf-reported attribution: which channel and which creator your users first heard you from.
1 stars36 downloads/wk
Reviews
Write oneNobody has reviewed Human Survey yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
Human Survey tools (10, 1 write)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
configure_formcreate_formwrite actionCreate a form and return its id, its respondent URL, and the iframe and postMessage listener to embed that URL in a host page. The form has no questions yet and shows nothing to respondents until it is configured. allowed_origins restricts which sites may embed it; leaving it empty allows any site, which means any site can spend this account\u2019s response quota.
get_attributionWhat respondents said, aggregated. Reports, per question, how many completed responses named each candidate out of how many answered that question, the unresolved answers in the same list, how often a follow-up question failed to find an answer, and revenue where conversion events have been recorded. Computed fresh on every call, including any mappings made since \u2014 so a rollup of a past windo
get_catalogList the platforms HumanSurvey knows: the slug to use as catalog_slug, the display label, and which class of channel it is. These are the named channels a respondent can be shown \u2014 TikTok, ChatGPT, LinkedIn, Reddit and so on \u2014 plus the descriptive options that have no brand behind them, like "a friend or colleague told me". No API key needed.
get_formRead one form: its settings, and the question configuration currently shown to respondents \u2014 every question, every candidate, and the order mode. Returns the configuration as JSON, because that is the exact shape a configuration write takes.
list_formsList the forms on this account: id, name, respondent URL, whether it is active or paused, whether it has been configured with questions yet, and how many responses it has collected.
list_unresolvedThe answers respondents typed instead of picking from the list, grouped by the exact text and ordered by how often it was typed. Reports the spelling variants seen, when each was first and last typed, and whether a mapping already covers it. These are verbatim words. Two texts that read alike may be different people, and a text may name somebody who is not on the candidate list at all.
loginSign in with an email address and store an API key on this machine. Called with only an email, it mails a six-digit code and returns nothing usable \u2014 the code has to come from the person, out of their inbox. Called with the email and that code, it stores a key at ~/.humansurvey/credentials and reports where it was written. The key itself is never printed. Signing in and signing up are the sam
remapRecord that a specific typed answer means a specific candidate. It applies to every response already carrying that text as well as every future one, so numbers reported for past windows change. The original text is never altered and a mapping can be revoked, but a report may already have been read. Only map a text whose meaning is established \u2014 a text that merely resembles a candidate\u2019s
revoke_remapStop a mapping from applying. The typed answers it covered return to the unresolved list \u2014 in past windows as well as future ones, because rollups join mappings when they are read rather than when they are made. Numbers already reported for those windows will therefore change. Nothing is deleted: the mapping is marked revoked and kept, so a report produced while it was live can still be expla
Public scan report
scanner v0.1.9 · 2026-09-24 · same rubric, same numbers if you re-run it
- Code scan2 source files scanned25/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitystatic API keys via environment variables6/15
- Maintenancelast push 54 days ago12/15
- Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10
How Human Survey compares
Against every graded MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 78/100
- higher than 57% of 48,255 servers
- Tools
- 10
- the typical server has 7
- Tools that change things
- 10%
- typical: 0%. Fewer write tools means less an agent can break
- GitHub stars
- 1
- more than 65% of 28,688 servers
- Downloads a week
- 36
- more than 26% of 12,191 servers with a package
What its tools let an agent do: 8 read · 1 create · 1 delete
Install Human Survey in Claude Code, Cursor or VS Code
Runs npx -y humansurvey-mcp on your machine. Read the scan report first; the gateway never runs local packages.
claude mcp add human-survey -- npx -y humansurvey-mcp
What the publisher says
From the Human Survey repository's README, as published. We do not edit it. Read it on GitHub
HumanSurvey
Website: humansurvey.co · Docs: humansurvey.co/docs · FAQ: humansurvey.co/faq
Attribution for the channels that have no referrer.
HumanSurvey asks one question — how did you hear about us — inside the host's own signup or payment flow, at a granularity that is actually actionable: the platform first, then which creator, podcast, event or store.
Agent configures a form → platforms from the catalog, creators supplied by the caller
Host embeds /s/{id} → in its signup flow, its payment flow, or both
Respondent answers → picks a platform; that pick expands the follow-up in place
Host pushes conversions → POST /api/attribution/events, keyed on its own user id
Agent reads back → rollup, raw response stream, free text awaiting a mappingWhat is this?
An API and MCP server for self-reported attribution. TikTok in-app, Instagram, podcasts, communities, word of mouth, AI assistants: the exposure happens where tracking cannot reach, and asking a human is the only always-on signal that survives every referrer leak.
Two placements answer different questions. In the payment flow, the respondent is already a paying customer, so the answer joins to revenue with no conversion ingest at all. In the signup flow, it is the only way to see the people a channel sends who never pay. Divide a channel's share of the paying population by its share of the signup population. Above 1 it converts better than your average, below 1 worse. Multiply that ratio by your overall signup-to-paid rate to get the channel's own rate.
It is designed for:
- hosts embedding a form in their own onboarding or checkout
- agents that keep the candidate list current and read the results back
It is not designed for:
logic were removed in the attribution pivot
- general-purpose surveys — arbitrary question types, Markdown authoring and conditional
the dashboard
- a human-facing analytics dashboard: the aggregates are an API resource, and the agent is
it offers (the /s/{id} URL and the iframe embed) are ones you control
- reaching your audience for you — HumanSurvey never contacts respondents; the transports
Features
follow-up. The first answer is durable before the second is asked, and a respondent who abandons the follow-up is still real data.
- Progressive disclosure, not pagination — POST the platform answer, PATCH the
by a client-minted render_id, so the raw share is unbiased by construction. fixed order exists for callers who want it and does not hide its bias.
- Rotation by default — the orderable candidates are permuted per respondent, seeded
table on every read, so one mapping fixes months of history with no backfill.
- Retroactive remapping — free text is stored verbatim and resolved against the remap
against, so reconfiguring cannot rewrite what history says was shown.
- Immutable config snapshots — a response is joined to the version it was rendered
per-user attribution back out to your own user table.
- One join key, both directions — external_id brings revenue in and carries
once, and is final when emitted. Nothing downstream has to upsert.
- Cursor reads — a response becomes visible once it is complete, is emitted exactly
Product Principles
Shortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
Human Survey: common questions
- Is Human Survey MCP server safe?
- Mostly: it is graded B (78/100). Read the Human Survey safety report
- How do I install Human Survey?
- It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
- Does Human Survey need an API key?
- Yes. The registry entry asks for
HUMANSURVEY_API_KEY. - Is Human Survey maintained?
- The last commit was 95 days ago (2026-08-01). The latest release is v1.2.0.
- How does Human Survey compare with other MCP servers?
- safety score 78/100 (higher than 57% of 48,255 servers); tools 10 (the typical server has 7); tools that change things 10% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.