stuntdouble-mcp
Deploys AI user personas to validate user journeys at scale, surfacing UX friction before real users encounter it.
README
Stunt Double MCP Server
Deploy AI user personas to validate user journeys at scale. Find UX friction before real users do.
Stunt Double deploys AI agents with realistic user personas to validate user journeys at scale. Create actors, run automated workflows and checklists against any web app, and surface friction points before real users encounter them. Integrates with Claude, Linear, GitHub, and Slack.
This repository
This repo holds plugin and MCP configuration (.cursor-plugin/plugin.json, root mcp.json, server.json), plus skills, agents, and Cursor rules. There is no package.json and no runnable server here — the MCP endpoint is hosted at https://app.stuntdouble.io/api/mcp from the main Stunt Double codebase. See CONTRIBUTING.md for how to validate edits and avoid confusing this folder with a Node package.
Quick Start
Claude Code
claude mcp add --transport http stuntdouble https://app.stuntdouble.io/api/mcp
Claude Desktop
Go to Settings → Connectors → Add and paste:
https://app.stuntdouble.io/api/mcp
Cursor / Windsurf
Add the mcpServers block below to an MCP config file:
- Project-local (recommended for this repo clone):
.cursor/mcp.jsonat the root of your project. - Global (all projects):
~/.cursor/mcp.jsonon macOS/Linux (see Cursor MCP docs for your OS).
{
"mcpServers": {
"stuntdouble": {
"url": "https://app.stuntdouble.io/api/mcp"
}
}
}
Use only url for remote servers (Streamable HTTP is negotiated automatically). Extra keys such as "type": "streamable-http" are not part of Cursor's documented mcp.json shape and can break plugin validation.
Cursor marketplace (one-click install) expects a plugin layout: .cursor-plugin/plugin.json plus root mcp.json. Those files are in this repo. The plugin logo path is assets/logo.png (bundled in this repository). The server.json file is the separate MCP registry manifest for mcp-publisher and directory listings; Cursor's installer does not use it.
Authentication
Authentication is handled automatically via OAuth 2.1 with PKCE. The first time your AI client connects, a browser window will open for you to sign in and authorise access to your Stunt Double account. No API keys or tokens required.
For Cursor, the OAuth redirect URI is fixed to cursor://anysphere.cursor-mcp/oauth/callback (docs).
Available Tools
Workspaces
| Tool | Description |
|---|---|
list_workspaces |
List your workspaces |
get_workspace |
Get workspace details by ID or slug |
list_workspace_members |
List members of a workspace |
Projects
| Tool | Description |
|---|---|
list_projects |
List projects in a workspace |
get_project |
Get a project (the product tracked by checklists, workflows, feedback) |
create_project |
Create a project (a product to track with checklists, workflows, feedback) |
Actors
| Tool | Description |
|---|---|
list_actors |
List active actors in a workspace |
get_actor |
Get actor details including system prompt and capabilities |
create_actor |
Create a new actor in a workspace |
update_actor |
Update actor name, description, system prompt, capabilities, or status. Set status to "archived" to soft-delete |
Knowledge
| Tool | Description |
|---|---|
list_actor_knowledge |
List knowledge entries for an actor |
add_actor_knowledge |
Add a knowledge entry to an actor |
remove_actor_knowledge |
Remove a knowledge entry |
Conversations
| Tool | Description |
|---|---|
list_conversations |
List conversations, optionally filtered by actor |
get_conversation |
Get a conversation with its messages |
Checklists
| Tool | Description |
|---|---|
list_checklists |
List checklists in a workspace |
get_checklist |
Get checklist details, checks, and recent runs |
get_checklist_run |
Get a checklist run with per-check results |
run_checklist |
Trigger a checklist run (async). Returns run ID |
create_checklist |
Create a browser-based QA checklist (host via project or URL, actor, instructions, checks) |
update_checklist |
Update a checklist (pass checks to replace the full set) |
delete_checklist |
Delete a checklist and its checks and runs |
Workflows
| Tool | Description |
|---|---|
list_workflows |
List workflows in a workspace |
get_workflow |
Get workflow details with steps and recent runs |
run_workflow |
Trigger a workflow run (async). Returns run ID |
get_workflow_run |
Get a workflow run with step-level details |
create_workflow |
Create a workflow (multi-step automation) |
update_workflow |
Update a workflow's name, description, or trigger |
toggle_workflow |
Activate or pause a workflow |
delete_workflow |
Delete a workflow and its steps and runs |
add_workflow_step |
Append a step to a workflow |
update_workflow_step |
Update a workflow step type, config, or sort order |
remove_workflow_step |
Remove a step from a workflow |
Feedback
| Tool | Description |
|---|---|
list_feedback |
List feedback for a project, newest first |
get_feedback |
Get a feedback submission with its replies |
update_feedback_status |
Update feedback status |
GitHub
| Tool | Description |
|---|---|
list_pull_requests |
List pull requests for a GitHub repository |
get_pull_request |
Get details for a GitHub pull request (title, author, branches, stats) |
comment_on_pr |
Post a comment on a GitHub pull request |
Interviews
Structured user interviews — actors or generated personas run through a discussion guide (sections + questions/tasks) against a target URL, then Stunt Double synthesises themes and recommendations.
| Tool | Description |
|---|---|
list_interviews |
List interviews in a workspace, optionally filtered by project |
get_interview |
Get an interview with its discussion guide (sections + items) and participants |
create_interview |
Create a new interview in a project (name, target URL, research brief) |
update_interview |
Update an interview's name, target URL, research brief, or status |
add_interview_section |
Add a section to the discussion guide |
add_interview_item |
Add a question or task to a section |
add_interview_participant |
Attach a participant — either an existing actor or an ad-hoc persona_spec |
get_interview_participant |
Get a participant including their full transcript from the run |
get_interview_report |
Get the current synthesised report (summary, themes, recommendations, per-question rollup) |
launch_interview |
Launch the interview round (async). Returns the trigger run ID |
regenerate_interview_report |
Re-run synthesis on existing transcripts (async). Returns the trigger run ID |
Prompts
Most MCP clients (Claude, Claude Code, Cursor) surface these as slash commands. Each is a self-contained recipe: which tools to call, in what order, and how to report back.
| Prompt | Description |
|---|---|
validate_design |
Validate a live design, prototype, or preview URL (Figma Make, Claude artifact, v0, staging) with AI personas |
verify_change |
Verify a shipped or previewed code change by running an actor through the affected flows, optionally commenting on the PR |
run_user_research |
Run a structured multi-persona interview study and synthesise themes and recommendations |
triage_feedback |
Triage user feedback on a project: cluster it, reproduce issues with an actor, and update statuses |
setup_guardrails |
Stand up checklists for critical flows plus a workflow that re-runs them on a schedule or on deploy/PR events |
check_brand |
Audit a product against brand and tone-of-voice guidelines, flagging deviations with evidence |
check_design_system |
Audit a live product against its design system (typography, colour, spacing, components) on rendered pages |
check_compliance |
Check a product against legal and compliance requirements and collect evidence for counsel to review |
check_continuity |
Check continuity across surfaces (pricing, terminology, promises) between marketing, product, docs, and emails |
stuntdouble_guide |
Orientation for Stunt Double: what it does, when to reach for it, and the full tool catalogue |
Workspace member administration (inviting/removing members) is available in the web dashboard.
Transport
This server uses Streamable HTTP transport. The endpoint is:
https://app.stuntdouble.io/api/mcp
Links
Verifying changes
From the repo root:
node scripts/validate-json.mjs
npx --yes prettier@3.4.2 --check README.md mcp.json server.json .cursor-plugin/plugin.json
More context in CONTRIBUTING.md. GitHub Actions runs the same checks on push and pull requests.
License
MIT
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。