interviews
Give your AI agents the ability to ask real users why
What it can do
- Create Study: Create an interview study when you already know what happened and still need to learn why. Returns study_id and interview_link. Do not share the link yet. Call list_studies first and reu
- Update Study: Edit an existing study's slots, interview mode, languages, voice, link context, guide text, questions, or media. Use this after review_study or a failed simulation names a guide change,
- Get Study Status: Check whether a study is running, analyzing, or complete while interviews are in progress. running and analyzing mean wait and call this again. Do not treat those payloads as finding
What data it sees
Do you need an account
No: the server works without sign-in
Give your AI agents the ability to ask real users why
How to connect
How to connect interviews to Claude
The server address to paste into Claude settings:
https://interviews--usercall.run.tools
- Open Claude (claude.ai or the desktop app).
- Go to Settings → Connectors.
- Click Add custom connector.
- Paste the server address copied below into Remote MCP server URL and click Add.
- In a chat, click + → Connectors and switch the new connector on.
Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.
Authorization
After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.
How to connect interviews to ChatGPT
The server address to paste into ChatGPT settings:
https://interviews--usercall.run.tools
- Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
- Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
- Open Settings → Connectors and click Create.
- Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
- Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
- In a new chat open + → Apps/Connectors and enable the connector.
OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.
Authorization
On first use ChatGPT opens the service's sign-in window. Sign in and approve access.
How to connect interviews to Cursor
The server address to paste into Cursor settings:
https://interviews--usercall.run.tools
Fastest: click Open in Cursor below and confirm the prompt.
Manually:
- In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
- Paste the JSON copied below into
~/.cursor/mcp.json(per project:.cursor/mcp.jsonin the repo root). - Save the file. The server appears in the MCP list; authorize it there if asked.
Authorization
If the service needs sign-in, an authorize button appears next to the server in the MCP list.
Server tool list (17)
Raw names from tools/list. Only developers need these.
| create_study | Create an interview study when you already know what happened and still need to learn why. Returns study_id and interview_link. Do not share the link yet. Call list_studies first and reuse a study that already asks this question. key_research_goal is required. business_context is optional. One active agent study per account. On 402, surface checkout_url to a human. This does not run the interview. Call simulate_interview next. |
| update_study | Edit an existing study's slots, interview mode, languages, voice, link context, guide text, questions, or media. Use this after review_study or a failed simulation names a guide change, or when the link is disabled and you are about to share. You cannot change key_research_goal. Delete the study and call create_study for a new question. One locale turns the language picker off. Two or more turn it on. Query params on interview_link are ignored until enable_link_context is true. This does not simulate or share. Call simulate_interview again before sharing. |
| get_study_status | Check whether a study is running, analyzing, or complete while interviews are in progress. running and analyzing mean wait and call this again. Do not treat those payloads as findings. When status is complete, call get_study_results. The response includes interview_link and next_step. This does not return themes and it does not change the study. For a dry run before anyone is invited, call simulate_interview instead. |
| get_study_results | Read findings after get_study_status is complete. Use this when you need why, not another status check. Prefer format=summary for themes, insights, and risks. Use format=full only when a verbatim transcript is required. Summary is the evidence to place beside the original metric. Empty themes while the study is still running are not a finding. This does not create interviews or edit the guide. |
| simulate_interview | Dry-run the interview after you create or edit a study, and before any real invite. Omit simulation_id to start. Pass that id on a later call to read the result. The start returns immediately with running. Cap is 5 simulations per account per UTC day. A 429 means stop for the day. A simulation is not a completed interview and does not change completed_interviews. On pass, share or call review_study. On fail, call update_study, then simulate again. This does not invite a participant. |
| review_study | Check the interview guide before sharing it with a real participant. Use this when you want a read of the guide only. It does not read transcripts and it does not apply edits. It costs 1 credit and works when the in-app review control is hidden. On 402, surface checkout_url to a human. Write suggested changes with update_study. Stop after one review unless the guide changed. This is not simulate_interview and it is not get_study_results. |
| delete_study | Permanently delete a study when it asks the wrong question or you must free the one active agent study. This removes the study and its interview calls and releases unused reserved credits. It cannot be undone. To stop new interviews without deleting evidence, call update_study with is_link_disabled true. This does not delete a research trigger. Call delete_research_trigger for that. |
| get_trigger_capabilities | Check what Research Triggers can do before you design one. Use this when you are about to decide who gets invited. Supported: one event, an exact property or trait match, a URL rule, and page dwell. Unsupported: counts, sequences, absence, time windows, and not-equals. If the condition you need is unsupported, send interview_link instead of calling create_research_trigger. This does not create a trigger. |
| get_trigger_sdk_setup | Get the SDK install snippet when list_trigger_events is empty and the product event must reach Usercall before a trigger can exist. Returns the install snippet, an identify snippet, and install status. Never includes secret keys. If you can edit the codebase, apply the snippet. Otherwise show it to a person. Then call list_trigger_events again. If nobody can install the SDK, send interview_link instead. This does not create a trigger. |
| list_trigger_events | List event names Usercall has received for this account in the last 30 days. Call this before create_research_trigger. Only an observed event can be used. If the list is empty, call get_trigger_sdk_setup. If your event is missing, send interview_link instead. This does not create a trigger. For filter fields, call get_trigger_event_schema. |
| get_trigger_event_schema | Read observed properties and traits for one event, with types and sample values. Use this after list_trigger_events shows the event and you need a filter. Put each filter under the right key. Matching is case-sensitive and type-sensitive. Stop if the value you need was never observed. Do not invent a filter. This does not create a trigger. For which filters are allowed at all, call get_trigger_capabilities. |
| list_studies | List studies before you create one. Use this to reuse a study_id and interview_link, or to pick a study for a trigger. Reuse a study that already asks the question. trigger_eligible is false when the study has no interview link. Call create_study only when none of these studies fit. This does not create or edit a study. |
| create_research_trigger | Create a paused invite that asks people why after an event you have already observed. Use this only after a study exists and list_trigger_events has seen the event. Call get_trigger_event_schema first if you need a filter. Returns activation_url for a human to open. Agents cannot activate the trigger and cannot send the link. If the event is not in Usercall yet, share interview_link instead. Unsupported filters are rejected. |
| list_research_triggers | List research triggers with status and activation_url. Use this to recover a paused trigger's activation link for a human. The activation link is empty after a human activates the trigger. Agents cannot activate. Call create_research_trigger only when no trigger matches this study and event. This does not change a trigger. |
| get_research_trigger | Read one trigger when you already have trigger_id and need its status or activation_url while it is paused. Hand activation_url to a human. Agents cannot activate. Do not poll this for interview evidence. Call get_study_status for that. This does not change the trigger. To see every trigger, call list_research_triggers. |
| update_research_trigger | Edit a trigger's targeting, sampling, cooldown, daily cap, intercept copy, or delivery. Use this to change who is invited or to pause a trigger. Never set status to active. That returns 409 with activation_url for a human. Editing an active trigger pauses it until a human re-approves. This does not activate a trigger. To delete it, call delete_research_trigger. |
| delete_research_trigger | Permanently delete a research trigger when the event or the study is wrong. Interviews already completed are kept. This cannot be undone. To pause without deleting, call update_research_trigger with status paused. This does not delete the study. Call delete_study for that. |