AI can build products. But it still doesn't talk to users. Usercall MCP lets AI agents run user interviews via voice calls and return structured insights with themes and verbatim quotes. Works with Claude Desktop, Cursor, and any MCP-compatible client. AI agents can now build and ship products extremely quickly. But most agents still rely on synthetic feedback or assumptions about users. Usercall
Add this skill
npx mdskills install junetic/usercall-mcpEnables AI agents to conduct real user interviews and return structured qualitative insights
1# Usercall MCP - AI agents that run real user interviews23[](https://www.npmjs.com/package/@usercall/mcp)4[](LICENSE)56**AI can build products. But it still doesn't talk to users.**78Usercall MCP lets AI agents run user interviews via voice calls and return structured insights with themes and verbatim quotes.910Works with Claude Desktop, Cursor, and any MCP-compatible client.1112<video src="https://github.com/user-attachments/assets/8af1ccaf-25e6-4b73-b7aa-16c2753ad648" autoplay loop muted playsinline></video>131415## Why this exists1617AI agents can now build and ship products extremely quickly.1819But most agents still rely on synthetic feedback or assumptions about users.2021Usercall MCP lets agents gather real qualitative feedback directly from users.2223---2425## Example workflow2627```28Agent: "Why are users confused about onboarding?"2930→ create_study31→ share interview_link with users32→ get_study_results33```3435The returned `interview_link` can be shared with participants through email, Slack, Discord, or in-product prompts.3637Example result:3839```json40{41 "themes": [42 {43 "name": "Onboarding confusion",44 "summary": "Users struggled to understand the second step.",45 "quotes": [46 "I wasn't sure what the app was asking me to do.",47 "I didn't know I had to verify my email before continuing."48 ]49 },50 {51 "name": "Pricing confusion",52 "summary": "Free plan limits were not clearly communicated.",53 "quotes": ["I wasn't sure if the free plan included analytics."]54 }55 ]56}57```5859## How it works6061AI Agent6263↓6465Usercall MCP6667↓6869Usercall Agent API7071↓7273Real user interviews7475↓7677Themes and verbatim quotes returned to the agent7879---8081## Try it in 60 seconds8283### 1. Get an API key8485Sign in at [app.usercall.co](https://app.usercall.co) → **Home → Developer → Create API key**8687### 2. Add to your MCP client8889**Claude Desktop** (`~/Library/Application Support/Claude/claude_desktop_config.json`):9091```json92{93 "mcpServers": {94 "usercall": {95 "command": "npx",96 "args": ["-y", "@usercall/mcp"],97 "env": {98 "USERCALL_API_KEY": "your_key_here"99 }100 }101 }102}103```104105**Cursor** (`.cursor/mcp.json`):106107```json108{109 "mcpServers": {110 "usercall": {111 "command": "npx",112 "args": ["-y", "@usercall/mcp"],113 "env": {114 "USERCALL_API_KEY": "your_key_here"115 }116 }117 }118}119```120121Restart your MCP client.122123### 3. Ask your agent124125```126Run user interviews to understand why users drop off during onboarding.127128Context:129- B2B SaaS product130- 3-step signup flow131132Goal:133Identify confusion points and friction.134135Target interviews: 5136137Show participants this prototype during the interview:138https://www.figma.com/proto/abcd1234/onboarding-flow139```140141The agent will:1421431. create a study1442. return an interview link1453. collect responses1464. return themes and verbatim quotes147148---149150## Structured tool example151152Equivalent `create_study` tool call:153154```155create_study156key_research_goal: "Understand why users drop off during onboarding"157business_context: "B2B SaaS signup flow"158target_interviews: 5159language: "en"160161study_media:162 type: "prototype"163 url: "https://www.figma.com/proto/abcd1234/onboarding-flow"164 description: "New onboarding flow concept"165```166167---168169## Tools170171### `create_study`172173Creates an interview study and returns an `interview_link` to share with participants.174175| Field | Type | Required |176| --------------------------- | ------------------ | -------- |177| `key_research_goal` | string | yes |178| `business_context` | string | yes |179| `additional_context_prompt` | string | no |180| `target_interviews` | number | no |181| `language` | `auto \| en \| ko` | no |182| `duration_minutes` | number | no |183| `metadata` | object | no |184| `study_media` | object | no |185186**study_media** (optional) — visual stimulus shown during all interview questions:187188| Field | Type | Required |189| ------------- | ---------------------- | -------- |190| `type` | `image \| prototype` | yes |191| `url` | string (URL) | yes |192| `description` | string (max 500 chars) | no |193194- `image`: Direct image URL (`.png`, `.jpg`, `.gif`, `.webp`)195- `prototype`: Figma prototype URL (converted to interactive embed)196- Media is only visible to web participants; phone callers won't see it197198### `update_study`199200Updates an existing study. Use this to increase interview slots, add/update media, or disable the link.201202| Field | Type | Required |203| ------------------- | ----------- | -------- |204| `study_id` | uuid string | yes |205| `target_interviews` | number | no |206| `is_link_disabled` | boolean | no |207| `study_media` | object | no |208209The `study_media` object follows the same schema as in `create_study`.210211### `get_study_status`212213Returns the current lifecycle status of a study.214215| Field | Type |216| ---------- | ----------- |217| `study_id` | uuid string |218219Status values: `running` · `analyzing` · `complete`220221Response includes interview progress fields, including222`completed_interviews` and `target_interviews`.223224### `get_study_results`225226Returns analysis output once the study is complete.227228| Field | Type | Required |229| ---------- | ----------------- | -------- |230| `study_id` | uuid string | yes |231| `format` | `summary \| full` | no |232233Summary/full responses include study progress fields and analysis output.234235### `delete_study`236237Permanently deletes a study and all associated data (recordings, transcripts). Releases unused reserved credits.238239| Field | Type | Required |240| ---------- | ----------- | -------- |241| `study_id` | uuid string | yes |242243---244245## Example workflow246247```2481. create_study249 key_research_goal: "Why do users drop off during onboarding?"250 business_context: "B2B SaaS, 3-step signup flow"251252 → returns { study_id, interview_link }2532542. Share interview_link with participants255 (email, Slack, in-product prompt, etc.)2562573. get_study_status258 → "analyzing"2592604. get_study_results261 → themes + verbatim quotes returned to the agent262```263264### With visual stimulus265266```2671. create_study268 key_research_goal: "Get feedback on new dashboard design"269 business_context: "Redesigning analytics dashboard for power users"270 study_media:271 type: "image"272 url: "https://example.com/dashboard-mockup.png"273 description: "New dashboard design concept"274275 → returns { study_id, interview_link }2762772. Share interview_link — participants see the mockup during interview278```279280For Figma prototypes, use `type: "prototype"` with a Figma proto URL.281282---283284## Requirements285286- Node.js 18+287- A valid Usercall API key288289---290291## Self-hosting / development292293```bash294pnpm install295pnpm build296USERCALL_API_KEY="your_key_here" pnpm start297```298299Smoke test:300301```bash302USERCALL_API_KEY="your_key_here" pnpm smoke303```304305---306307## Troubleshooting308309| Error | Fix |310| -------------------------- | ------------------------------------------ |311| `Missing USERCALL_API_KEY` | Set the env var before starting |312| `401 Unauthorized` | Invalid or revoked API key |313| `402 Insufficient credits` | Add credits at app.usercall.co |314| `500` on create | Verify your key has access to Agent API v1 |315316---317318## License319320MIT321
Full transparency — inspect the skill content before installing.