@runehand/mcp-server
@runehand/mcp-server
MCP server that wraps the Runehand public API v1 as tools, so an MCP client (Claude Desktop, Claude Code, etc.) can operate Runehand bots directly: list bots and flows, read and reply to conversations, manage leads, and check analytics.
Setup
Generate an API key at
https://app.runehand.co/settings/api-keys(requires a Pro or Enterprise plan, and theowneroradminrole in the workspace). The plaintext key is shown once — copy it.Add this to your MCP client's config (example: Claude Desktop's
claude_desktop_config.json):
{
"mcpServers": {
"runehand": {
"command": "npx",
"args": ["-y", "@runehand/mcp-server"],
"env": { "RUNEHAND_API_KEY": "rh_live_..." }
}
}
}Restart your MCP client. It should now list 9 Runehand tools.
Configuration
Env var | Required | Default | Purpose |
| Yes | — | Bearer token from |
| No |
| Override for local/staging testing only. |
Tools
Tool | Description |
| List the bots that belong to the workspace that owns the API key. |
| List the flows that belong to a bot, given the bot's UUID. |
| Get a single flow, including its nodes in executable format. |
| List conversations, optionally filtered by |
| Get a single conversation, including its messages. |
| Send a message as the agent in an existing conversation. |
| List leads, optionally filtered by |
| Create a lead directly, without an associated conversation. |
| Get workspace KPIs and quick stats for a date range. |
Errors from the Runehand API surface as tool errors in the form "{code}: {message}" (e.g.
not_found: Not found.) — see the error codes table below.
Errors
All error responses from /api/v1/* use the same shape:
{
"error": {
"code": "plan_upgrade_required",
"message": "Your current plan does not include API access.",
"details": {
"required_tiers": ["pro", "enterprise"]
}
}
}details is null when not applicable.
Code | HTTP | When |
| 401 | Missing header, invalid/revoked/expired token |
| 403 | Workspace is frozen or subscription lapsed |
| 403 | Workspace's plan doesn't include API access |
| 422 | Request data failed validation |
| 404 | Resource doesn't exist or doesn't belong to the key's workspace |
| 429 | Plan's requests-per-minute limit exceeded |
| 500 | Unhandled internal error |
Development
npm install
npm run dev # run directly with tsx, no build step
npm test # vitest, mocks all HTTP via msw
npm run lint
npm run typecheck
npm run build # compiles to dist/License
MIT