mcp-usercall
This server lets AI agents create and manage real user interview studies, share interview links, and retrieve structured insights with themes and verbatim quotes.
create_study: Create an interview study with a research goal, business context, target interviews, language, duration, interview mode (voice/text), optional metadata, and optional visual media (image or Figma prototype). Returns a study ID and shareable interview link.
update_study: Modify an existing study — change interview slots, disable the link, update media, or adjust the interview guide.
get_study_status: Check the lifecycle status of a study (running, analyzing, complete) and interview progress.
get_study_results: Retrieve analysis output after completion, in summary or full format, including themes and verbatim participant quotes.
delete_study: Permanently delete a study and all associated data (recordings, transcripts) and release unused reserved credits.
Supports both hosted OAuth connections and local/API-key stdio setups for machine-to-machine use.
Allows participants to view and interact with Figma prototypes as visual stimuli during AI-led user interviews by embedding prototype URLs directly into the study.
Usercall MCP - AI agents that run real user interviews
AI can build products. But it still doesn't talk to users.
Usercall MCP lets AI agents run user interviews via voice or text and return structured insights with themes and verbatim quotes.
Why this exists
AI agents can now build and ship products extremely quickly.
But most agents still rely on synthetic feedback or assumptions about users.
Usercall MCP lets agents gather real qualitative feedback directly from users.
Related MCP server: AI Survey Creator MCP Server
Choose a connection
Recommended: hosted MCP (Claude, ChatGPT, Cursor, Grok Bot)
Add https://mcp.usercall.co as a remote MCP connector / custom connector.
OAuth sign-in (no API key, no
npx)Same five tools as this package
Docs: app.usercall.co/docs/mcp
Cursor Directory / Grok Bot: this repo ships
.mcp.jsonso cursor.directory can install the hosted connector. Grok Bot cannot run the localnpxpackage.
This package: local / API-key / machine-to-machine
Use @usercall/mcp over stdio when you want a Bearer API key (scripts, local clients, M2M).
Sign in at app.usercall.co → Home → Developer → Create API key
Run
npx -y @usercall/mcpwithUSERCALL_API_KEY
Example workflow
Agent: "Why are users confused about onboarding?"
→ create_study
→ share interview_link with users
→ get_study_resultsThe returned interview_link can be shared with participants through email, Slack, Discord, or in-product prompts.
Example result:
{
"themes": [
{
"name": "Onboarding confusion",
"summary": "Users struggled to understand the second step.",
"quotes": [
"I wasn't sure what the app was asking me to do.",
"I didn't know I had to verify my email before continuing."
]
},
{
"name": "Pricing confusion",
"summary": "Free plan limits were not clearly communicated.",
"quotes": ["I wasn't sure if the free plan included analytics."]
}
]
}How it works
AI Agent
↓
Usercall MCP (hosted OAuth or this stdio package)
↓
Usercall Agent API
↓
Real user interviews
↓
Themes and verbatim quotes returned to the agent
Local install (API key)
1. Get an API key
Sign in at app.usercall.co → Home → Developer → Create API key
2. Add to your MCP client
Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"usercall": {
"command": "npx",
"args": ["-y", "@usercall/mcp"],
"env": {
"USERCALL_API_KEY": "your_key_here"
}
}
}
}Cursor (.cursor/mcp.json):
{
"mcpServers": {
"usercall": {
"command": "npx",
"args": ["-y", "@usercall/mcp"],
"env": {
"USERCALL_API_KEY": "your_key_here"
}
}
}
}For Claude, ChatGPT, or Cursor remote connectors, prefer https://mcp.usercall.co instead of this JSON config.
Restart your MCP client.
3. Ask your agent
Run user interviews to understand why users drop off during onboarding.
Context:
- B2B SaaS product
- 3-step signup flow
Goal:
Identify confusion points and friction.
Target interviews: 5
Language: ko
Interview mode: voice
Show participants this prototype during the interview:
https://www.figma.com/proto/abcd1234/onboarding-flowThe agent will:
create a study
return an interview link
collect responses
return themes and verbatim quotes
Structured tool example
Equivalent create_study tool call:
create_study
key_research_goal: "Understand why users drop off during onboarding"
business_context: "B2B SaaS signup flow"
target_interviews: 5
language: "en"
interview_mode: "voice"
study_media:
type: "prototype"
url: "https://www.figma.com/proto/abcd1234/onboarding-flow"
description: "New onboarding flow concept"Tools
create_study
Creates an interview study and returns study_id plus an interview_link to share with participants.
One active agent study is allowed per personal account. If credits are insufficient, the API returns 402 with checkout_url.
Field | Type | Required | Default |
| string (5–2000) | yes | |
| string (5–2000) | yes | |
| string | no | |
| number (1–200) | no |
|
|
| no |
|
| number (5–65) | no |
|
|
| no |
|
| object | no | |
| object | no |
Research goal cannot be changed after create.
study_media (optional) — visual stimulus shown during all interview questions:
Field | Type | Required |
|
| yes |
| string (URL) | yes |
| string (max 500 chars) | no |
image: Direct image URL (.png,.jpg,.gif,.webp)prototype: Figma prototype URL (converted to interactive embed)Media is only visible to web participants; phone callers won't see it
update_study
Updates an existing study. Use this to change interview slots, interview mode, guide copy, questions, or media. Research goal cannot be changed.
Field | Type | Required |
| uuid string | yes |
| number (1–200) | no |
| boolean | no |
| string | no |
| string | no |
| string | no |
| string[] | no |
|
| no |
| object or | no |
Pass study_media: null to clear media. The study_media object follows the same schema as in create_study.
get_study_status
Returns the current lifecycle status of a study.
Field | Type |
| uuid string |
Status values: running · analyzing · complete
Response includes interview progress fields, including
completed_interviews and target_interviews.
get_study_results
Returns analysis output once the study is complete.
Field | Type | Required |
| uuid string | yes |
|
| no |
Summary/full responses include study progress fields and analysis output.
delete_study
Permanently deletes a study and all associated data (recordings, transcripts). Releases unused reserved credits.
Field | Type | Required |
| uuid string | yes |
Example workflow
1. create_study
key_research_goal: "Why do users drop off during onboarding?"
business_context: "B2B SaaS, 3-step signup flow"
target_interviews: 5
language: "ko"
interview_mode: "voice"
→ returns { study_id, interview_link }
2. Share interview_link with participants
(email, Slack, in-product prompt, etc.)
3. get_study_status
→ "analyzing"
4. get_study_results
→ themes + verbatim quotes returned to the agentWith visual stimulus
1. create_study
key_research_goal: "Get feedback on new dashboard design"
business_context: "Redesigning analytics dashboard for power users"
study_media:
type: "image"
url: "https://example.com/dashboard-mockup.png"
description: "New dashboard design concept"
→ returns { study_id, interview_link }
2. Share interview_link — participants see the mockup during interviewFor Figma prototypes, use type: "prototype" with a Figma proto URL.
Requirements
Node.js 18+
A valid Usercall API key (local / API-key path only)
Self-hosting / development
pnpm install
pnpm build
USERCALL_API_KEY="your_key_here" pnpm startSmoke test:
USERCALL_API_KEY="your_key_here" pnpm smokeTroubleshooting
Error | Fix |
| Set the env var before starting this stdio package |
| Invalid or revoked API key |
| Open the returned |
| Verify your key has access to Agent API v1 |
Remote Claude / ChatGPT / Cursor connectors should use https://mcp.usercall.co (OAuth). This package is the API-key stdio path.
License
MIT
Available Tools
5 toolscreate_studyA
Creates a user interview study and returns an interview_link to share with participants. Starts with 1 interview slot. Optionally include study_media to show an image or Figma prototype during the interview.
| Name | Required | Description | Default |
|---|---|---|---|
| key_research_goal | Yes | ||
| business_context | Yes | ||
| additional_context_prompt | No | ||
| language | No | ||
| duration_minutes | No | ||
| metadata | No | ||
| study_media | No | Visual stimulus shown during all interview questions (web participants only) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full disclosure burden. Successfully discloses return value ('interview_link'), side effect ('Starts with 1 interview slot'), and optional media behavior. Missing: auth requirements, rate limits, or error conditions (e.g., duplicate study names).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two efficient sentences. First establishes core operation and return value; second covers default slot count and key optional feature. No redundant phrases or tautology despite null title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Explains return value (interview_link) compensating for missing output schema, and covers the nested study_media object. However, for 7 parameters with 86% lacking schema descriptions, description omits explanation of required parameters' semantics and relationships between context / research goals.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 14% (only study_media described at top level). Description mentions study_media functionality but fails to compensate for 6 undocumented parameters including required fields (key_research_goal, business_context). Does not explain what content belongs in research goals vs business context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ('Creates') + specific resource ('user interview study') clearly identifies the operation. Implicitly distinguishes from siblings delete_study/update_study through the creation verb, and from get_* tools by specifying it returns an interview_link.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies creation use case through verb choice and mentions it 'Starts with 1 interview slot,' suggesting initialization behavior. However, lacks explicit guidance on when to use update_study instead, or prerequisites for creation (e.g., workspace requirements).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_studyA
Permanently deletes a study and all associated data. Releases unused reserved credits.
| Name | Required | Description | Default |
|---|---|---|---|
| study_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full behavioral disclosure burden. It succeeds by warning of irreversibility ('Permanently'), scope of destruction ('all associated data'), and economic side effects ('Releases unused reserved credits'). Deducted one point for not indicating failure behavior (e.g., what happens if study_id doesn't exist).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste. Critical information ('Permanently') front-loaded. First sentence covers the core operation; second sentence covers the credit side effect. No redundancy or generic filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the essential risks (destruction, credits) for a destructive tool with no output schema. However, missing error handling patterns (404 behavior), authorization requirements, or confirmation requirements prevents a higher score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, requiring the description to compensate. It fails to mention the study_id parameter, its expected format (UUID), or how to obtain it, even though this is the sole parameter. While somewhat inferable from the tool name, the description adds zero semantic value beyond the schema structure.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Excellent specificity: 'Permanently deletes' provides a precise verb, 'study' identifies the resource, and 'all associated data' clarifies scope. The description clearly distinguishes this from sibling tools like update_study (modification vs destruction) and get_* (read-only).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The word 'Permanently' implicitly signals this is for complete removal, not modification (update_study) or creation (create_study). However, it lacks explicit guidance on when to prefer deletion over archival, or prerequisites like 'study must be in terminal state'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_study_resultsC
Returns analysis results. When presenting results, always quote specific participant responses verbatim using the quotes field in each theme.
| Name | Required | Description | Default |
|---|---|---|---|
| study_id | Yes | ||
| format | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It partially succeeds by revealing the result structure contains 'themes' with 'quotes fields', hinting at a nested qualitative data format. However, it omits critical operational details: whether this is read-only (implied by 'Returns' but not confirmed), caching behavior, result size limits, or latency characteristics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief (two sentences), but awkwardly mixes concerns: the first states functionality tersely ('Returns analysis results'), while the second jumps to post-invocation presentation guidelines. This structural confusion places output formatting instructions in a field meant for capability description, creating a minor organizational misfit despite brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema, the description partially compensates by describing the result contents (themes containing quote fields), which helps the agent understand what data structure to expect. However, with zero annotations and zero parameter schema coverage, significant gaps remain for a complete invocation context, particularly regarding the optional 'format' parameter's impact on result granularity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description text compensates not at all. Neither 'study_id' (despite being a required UUID) nor 'format' (despite having enum values 'summary'/'full' with unclear semantic differences) are mentioned in the text. The agent must rely solely on parameter names, which is insufficient for the 'format' option distinctions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states it 'Returns analysis results' which is vague, though the mention of 'participant responses', 'themes', and 'quotes field' provides domain context about qualitative research data. However, it fails to distinguish clearly from sibling 'get_study_status' (which likely returns metadata vs. actual results), leaving ambiguity about which tool retrieves substantive data versus operational status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is provided on when to use this tool versus alternatives like 'get_study_status' or 'create_study'. The second sentence provides presentation instructions ('always quote specific participant responses verbatim') rather than invocation guidelines, failing to clarify prerequisites or selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_study_statusD
| Name | Required | Description | Default |
|---|---|---|---|
| study_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_studyB
Updates an existing study. Use this to increase interview slots, add/update media, or modify the interview guide.
| Name | Required | Description | Default |
|---|---|---|---|
| study_id | Yes | ||
| target_interviews | No | Total number of interview slots for this study. | |
| is_link_disabled | No | ||
| study_media | No | Visual stimulus shown during all interview questions (web participants only) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. States it's an update operation but lacks critical behavioral details: partial vs full replacement, validation rules, error handling for non-existent studies, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste. Front-loaded with main action ('Updates'), followed by specific use cases. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and 50% param coverage, gaps remain. Description covers primary use cases but doesn't compensate for missing behavioral details or undocumented parameters. Adequate but incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% (target_interviews and study_media have descriptions; study_id and is_link_disabled do not). Description maps use cases to the two documented parameters but fails to explain the undocumented boolean 'is_link_disabled' or required 'study_id'. Baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb ('Updates') and resource ('existing study'). Lists specific use cases (interview slots, media). Distinguishes from siblings implicitly (update vs create/delete/get), though 'modify interview guide' doesn't map clearly to any schema parameter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides specific usage scenarios ('Use this to increase interview slots...'), but lacks explicit differentiation from siblings (e.g., when to use create_study vs this) and no guidance on when not to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
5 tool updates
v0.1.1- First observed
create_study - First observed
delete_study - First observed
get_study_results - First observed
get_study_status - First observed
update_study
TDQS
Each tool has a clearly distinct purpose targeting different aspects of study management: create, delete, get results, get status, and update. There is no overlap in functionality, and the descriptions clearly differentiate their roles, making it easy for an agent to select the correct tool.
All tool names follow a consistent verb_noun pattern (e.g., create_study, delete_study, get_study_results, get_study_status, update_study). This predictability enhances readability and usability, with no deviations in naming conventions.
With 5 tools, the server is well-scoped for managing user interview studies. Each tool earns its place by covering essential CRUD operations and status/results retrieval, avoiding bloat while providing complete functionality for the domain.
The tool set offers strong coverage for study lifecycle management, including create, read (results and status), update, and delete. A minor gap exists in the lack of a tool for listing or searching studies, which could limit discovery in scenarios with multiple studies, but core workflows are well-supported.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Run in-product voice interviews with AI agents and analyze source-linked evidence.
Run user research from any AI tool. Create studies, recruit participants, query insights.
AI-moderated research platform: create and launch studies and query interview results.
AI-powered user research for everyone
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceRun conjoint experiments and causal research through AI powered behavioral simulations5-
- AlicenseNot gradedqualityDmaintenanceMCP server for creating AI-moderated interviews and surveys, deployable with shareable links2MIT
- AlicenseNot gradedqualityCmaintenanceEnables semantic search and grounded answering over customer-research interviews, with every answer traceable to source quotes.MIT
- AlicenseAqualityDmaintenanceSimulates real users navigating your app and delivers qualitative UX feedback, including persona-driven testing, auto-friction detection, and WCAG accessibility audits.14301MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/junetic/usercall-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server