User feedback widget + MCP server for AI coding agents. One command to install.
UserDispatch 
Add a feedback widget to any web app in one command.
Your AI coding agent triages feedback, drafts PRs, and responds to users — via MCP.
Quick start
npx userdispatch init
One command does everything:
- Installs a feedback widget in your app (auto-detects framework)
- Creates your org & app on userdispatch.com
- Configures your AI coding agent with the MCP server
- Sends a test submission to verify the full loop
Requires Node.js 18+. Full CLI reference: userdispatch.com/docs/cli
How it works
┌─────────────┐ ┌──────────────────┐ ┌─────────────────┐ ┌──────────────┐
│ 1. User │────▶│ 2. Agent reads │────▶│ 3. Agent drafts │────▶│ 4. Weekly │
│ submits │ │ via MCP │ │ PRs, replies, │ │ digest │
│ feedback │ │ │ │ triage │ │ summary │
└─────────────┘ └──────────────────┘ └─────────────────┘ └──────────────┘
- User submits feedback — the widget captures feedback, bug reports, or questions with browser metadata and file attachments
- Agent reads via MCP — your coding agent pulls new submissions using the
list_submissionsandget_submissiontools - Agent proposes — triages issues, updates statuses, sends replies via email, and opens PRs informed by feedback patterns
- Weekly digest — the
weekly-digestprompt generates a 7-day summary of submissions, trends, and actions taken
Framework support
The CLI auto-detects your framework and injects the widget into the right file.
| Framework | Auto-detect | Widget injection |
|-----------|:-----------:|------------------|
| Next.js (App Router) | Yes | <Script> in app/layout.tsx |
| Next.js (Pages Router) | Yes | <script> in pages/_document.tsx |
| Vite | Yes | <script> in index.html |
| Create React App | Yes | <script> in public/index.html |
| Nuxt | Yes | Manual (nuxt.config.ts shown) |
| SvelteKit | Yes | <script> in src/app.html |
| Astro | Yes | Manual (instructions shown) |
| Static HTML | Yes | <script> in index.html |
Override with --framework <type>. Full guide: userdispatch.com/docs/widget
MCP server
UserDispatch hosts the MCP server at https://userdispatch.com/api/mcp. The CLI configures this automatically — or add it manually:
// .mcp.json (Claude Code, Cursor)
{
"mcpServers": {
"userdispatch": {
"url": "https://userdispatch.com/api/mcp",
"headers": {
"Authorization": "Bearer ${USERDISPATCH_TOKEN}"
}
}
}
}
Agent compatibility
| Agent | Config file | Auto-configured |
|-------|-------------|:---------------:|
| Claude Code | .mcp.json | Yes |
| Cursor | .cursor/mcp.json | Yes |
| Windsurf | ~/.codeium/windsurf/mcp_config.json | Yes |
| VS Code Copilot | .vscode/mcp.json | Yes |
| Codex | .codex/config.toml | Yes |
| Claude Desktop | claude_desktop_config.json | Yes |
Tools (17)
| Tool | Description |
|------|-------------|
| list_submissions | List submissions with filters (app, type, status, date, search) |
| get_submission | Get full submission details with attachments and replies |
| update_submission | Update submission status |
| reply_to_submission | Send a reply via email or dashboard |
| delete_submission | Permanently delete a submission |
| list_apps | List all registered apps |
| create_app | Create a new app |
| update_app | Update app settings |
| delete_app | Delete an app and all its submissions |
| rotate_app_key | Rotate an app's API key |
| get_stats | Get submission statistics |
| get_org | Get organization details |
| update_org | Update organization settings |
| list_members | List all organization members |
| invite_member | Invite a new member |
| update_member | Update member settings or role |
| remove_member | Remove a member |
Plus 5 resources and 2 prompts (triage-submissions, weekly-digest). Full MCP reference: userdispatch.com/docs/mcp
Widget customization
<script
src="https://userdispatch.com/widget.js"
data-api-key="pk_your-api-key"
data-position="br"
data-trigger-label="Feedback"
data-collect-email="true"
data-collect-name="false"
data-enable-logs="false"
defer
></script>
| Attribute | Required | Default | Description |
|-----------|:--------:|---------|-------------|
| data-api-key | Yes | — | Your app's API key (starts with pk_) |
| data-position | No | "br" | Trigger button position: "br", "bl", "tr", "tl" |
| data-trigger-label | No | "Feedback" | Text on the trigger button |
| data-collect-email | No | "true" | Show email field. Set to "false" to hide. |
| data-collect-name | No | "false" | Show name field. Set to "true" to enable. |
| data-enable-logs | No | "false" | Enable console log collector. Requires app-level setting. |
| data-api-url | No | Auto-detected | Override the API base URL. |
The widget renders in a Shadow DOM for full style isolation. Under 30KB gzipped. Full reference: userdispatch.com/docs/widget
CLI reference
npx userdispatch init [flags]
| Flag | Description |
|------|-------------|
| --token <token> | Skip browser auth and use this ud_ token directly. Auto-promotes to CI mode in non-TTY environments. |
| --org <name> | Organization name (skips prompt). |
| --app <name> | App name (skips prompt). Slug is auto-generated. |
| --framework <type> | Override framework detection. Values: next-app, next-pages, vite, cra, nuxt, sveltekit, astro, static. |
| --agent <id> | Override agent detection. Values: claude-code, cursor, windsurf, claude-desktop, vscode. |
| --ci | Non-interactive mode. Skips all prompts, uses defaults or flag values. |
Full CLI docs: userdispatch.com/docs/cli
Security
UserDispatch is built with security at every layer — nonce-based CSP, SHA-256 hashed API tokens, PostgreSQL-backed rate limiting, Zod input validation, parameterized SQL, and constant-time token comparison. File uploads are validated by MIME type and magic bytes.
Full security architecture: userdispatch.com/docs/security
To report a vulnerability, email security@kiruna.ai. Please do not open public issues for security reports.
Pricing
Every tier includes the full MCP server, all 17 tools, and the feedback widget.
| | Free | Pro | Team | Enterprise | |---|:---:|:---:|:---:|:---:| | Price | $0 forever | $9/mo | $49/mo | Custom | | Submissions/mo | 100 | 250 | 2,500 | Unlimited | | Users | 1 | 1 | 5 | Unlimited | | Apps | 2 | 10 | Unlimited | Unlimited | | Data retention | 3 months | Unlimited | Unlimited | Unlimited | | MCP server & 17 tools | Yes | Yes | Yes | Yes | | Widget | Yes | Yes | Yes | Yes | | Agent-sent emails | Yes | Yes | Yes | Yes | | Log capture | Yes | Yes | Yes | Yes | | Custom branding | — | Yes | Yes | Yes | | Team roles | — | — | Yes | Yes | | SSO | — | — | — | Yes |
Links
License
MIT — Kiruna Labs