
Human Survey
io.github.sunsiyuanPublished by GitHub account sunsiyuanv1.2.0Updated Oct 24, 2026
Self-reported attribution: which channel and which creator your users first heard you from.
The publisher's own server: TAP
Overview
MCP server for HumanSurvey, letting an assistant configure "how did you hear about us" attribution forms and read back responses and rollups.
- What you can do
- Create and configure attribution forms, setting platform candidates from the catalog and creator candidates supplied by the caller
- Read results back: rollups by candidate and date range, the raw response stream, and free text awaiting a mapping
- Resolve unresolved free-text answers retroactively through remaps
- Join responses to your own users and revenue through a single external_id key
- When to use it
- Useful when you want an assistant to set up and maintain a self-reported attribution question inside your signup or payment flow, and to pull channel and creator results back into your own analysis without a human dashboard.
- Requirements
- Runs locally via npx from the npm package humansurvey-mcp (Node.js). Requires a HumanSurvey account and an API key passed in the HUMANSURVEY_API_KEY environment variable; network access to the HumanSurvey API. Desktop only.
Installation
In SourceWeft
- Open Human Survey in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
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.
What 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:
- general-purpose surveys — arbitrary question types, Markdown authoring and conditional logic were removed in the attribution pivot
- a human-facing analytics dashboard: the aggregates are an API resource, and the agent is the dashboard
- reaching your audience for you — HumanSurvey never contacts respondents; the transports
it offers (the
/s/{id}URL and the iframe embed) are ones you control
Features
- Progressive disclosure, not pagination — POST the platform answer, PATCH the follow-up. The first answer is durable before the second is asked, and a respondent who abandons the follow-up is still real data.
- Rotation by default — the orderable candidates are permuted per respondent, seeded
by a client-minted
render_id, so the raw share is unbiased by construction.fixedorder exists for callers who want it and does not hide its bias. - Retroactive remapping — free text is stored verbatim and resolved against the remap table on every read, so one mapping fixes months of history with no backfill.
- Immutable config snapshots — a response is joined to the version it was rendered against, so reconfiguring cannot rewrite what history says was shown.
- One join key, both directions —
external_idbrings revenue in and carries per-user attribution back out to your own user table. - Cursor reads — a response becomes visible once it is complete, is emitted exactly once, and is final when emitted. Nothing downstream has to upsert.
Product Principles
- AI-first I/O: agents configure the form and consume the results; humans are in the middle.
- Everything is an API: creator functionality must be available over authenticated HTTP and MCP.
- Narrow scope wins: one question, asked well. A feature that mainly serves a human survey operator probably does not belong here.
- No confident percentages: every number ships beside the denominator it was computed over, and a number we cannot compute honestly is null rather than smoothed.
Quick Start
Get an API key
Anonymous key creation is gone. Every key belongs to an account from birth, which is what gives a lost key a recovery path and makes rotation free.
Create a form, then configure it
A form renders nothing until it has a config. PUT stores one as an immutable snapshot:
Platform labels, marks and aliases come from GET /api/attribution/catalog and are copied
into the snapshot. Creator candidates are yours: the product renders a candidate set and
returns the id that was chosen, and matching a vague description against a creator
database is upstream work.
Read the results
Also on the read side: GET /api/attribution/forms/{id}/responses (cursor stream, or one
identity via ?external_id=), .../unresolved for free text awaiting a mapping, and
POST .../remaps to resolve it retroactively. Full request and response shapes are in
the OpenAPI document.
Use with Claude Code
The server name stays survey and the package stays humansurvey-mcp — both sit inside
every existing user's config. Its ten tools now speak the attribution API — see
packages/mcp-server/README.md. npm publishes separately
from this repo, so the version on npm can lag what is here.
Public Surface
- Docs page:
https://www.humansurvey.co/docs - OpenAPI:
https://www.humansurvey.co/api/openapi.json - AI index:
https://www.humansurvey.co/llms.txt
Tech Stack
Project Structure
Contributing
Read CONTRIBUTING.md before opening a PR. The most important rule is scope discipline: new UI variants, analytics dashboards, and human-operator features are usually out of scope.
Development
License
MIT
Source: README.md at commit 5ad9b11
Tools
0Version history
1- v1.2.0LatestSep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts
Other Human integrations

TAP
tech.humanOfficial publisher
TAP is a hosted remote MCP endpoint that isolates AI agents' credentials using placeholder secrets, policy checks and optional human approval.
UGC, the Human Ad Network
africa.ugcOfficial publisher
Remote MCP endpoint for UGC, a "Human Ad Network", letting an assistant work with ad campaigns, clipping and Clip Studio from chat.

Woodstitch
com.woodstitch
Runs paid, blinded human listening tests on text-to-speech audio and returns preference or human-vs-AI scores with confidence intervals.

J-Dawgs AI Tool Store & Human Hands — Catalog MCP
Published by GitHub account joshuajdawg0350
Read-only catalog server for the J-Dawgs AI Tool Store and Human Hands for AIs, letting an assistant search tools, prices and bundles and learn how agents…

ActualHumanTake
Published by GitHub account magiautonomous
Submits a product for an honest, human-written review and lets an assistant check status or read the finished feedback using a secret receipt token.