Skip to main content
Glama
echelonlabs-sf

@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

  1. Generate an API key at https://app.runehand.co/settings/api-keys (requires a Pro or Enterprise plan, and the owner or admin role in the workspace). The plaintext key is shown once — copy it.

  2. 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_..." }
    }
  }
}
  1. Restart your MCP client. It should now list 9 Runehand tools.

Related MCP server: eduframe-mcp

Configuration

Env var

Required

Default

Purpose

RUNEHAND_API_KEY

Yes

Bearer token from /settings/api-keys.

RUNEHAND_API_BASE_URL

No

https://app.runehand.co/api/v1

Override for local/staging testing only.

Tools

Tool

Description

list_bots

List the bots that belong to the workspace that owns the API key.

list_flows

List the flows that belong to a bot, given the bot's UUID.

get_flow

Get a single flow, including its nodes in executable format.

list_conversations

List conversations, optionally filtered by bot_id and/or status.

get_conversation

Get a single conversation, including its messages.

send_message

Send a message as the agent in an existing conversation.

list_leads

List leads, optionally filtered by bot_id and/or status.

create_lead

Create a lead directly, without an associated conversation.

get_analytics

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

unauthenticated

401

Missing header, invalid/revoked/expired token

workspace_inactive

403

Workspace is frozen or subscription lapsed

plan_upgrade_required

403

Workspace's plan doesn't include API access

validation_failed

422

Request data failed validation

not_found

404

Resource doesn't exist or doesn't belong to the key's workspace

rate_limited

429

Plan's requests-per-minute limit exceeded

server_error

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

Available Tools

9 tools
create_leadCreate leadB

Create a lead directly, without an associated conversation. Does not trigger the LeadCaptured event.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
tagsNo
emailNo
notesNo
phoneNo
bot_idYesUUID of the bot this lead belongs to.
sourceNoDefaults to 'api' when omitted.
custom_fieldsNo

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full transparency burden. It usefully discloses a key side-effect — "Does not trigger the LeadCaptured event" — which is genuinely valuable for orchestration. However, it omits return value, idempotency, error behavior, and any permission requirements, leaving meaningful behavioral gaps for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two dense sentences, both earning their place: the first front-loads the action and scope, the second discloses a critical behavioral caveat. No wasted words or repetition of schema content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter mutation tool with no annotations and no output schema, the description is minimally viable: it establishes purpose and one pivotal side-effect. But it never explains what the tool returns on success, how custom_fields is handled, or failure behavior, which is a clear gap given the absence of any output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is low (25%, covering only bot_id and source), so the description must compensate for parameter meaning, but it mentions no parameters at all. The remaining six parameters (name, tags, email, notes, phone, custom_fields) are only inferable by their names and types, and custom_fields' object semantics are entirely unspecified.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource ("Create a lead") and adds valuable scope: "directly, without an associated conversation." This distinguishes the tool from conversation-based lead creation and from the read-only sibling list_leads, though it does not explicitly name an alternative tool, so it falls just short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is implied: use this tool when you want a lead untethered to a conversation and when avoiding the LeadCaptured event is acceptable. However, there is no explicit when-not-to-use guidance or named alternative (e.g., how leads normally get created), so the guidance remains implicit rather than directive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_analyticsGet analytics dashboardA

Get workspace KPIs and quick stats for a date range, same data as the in-app dashboard.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoRange end (YYYY-MM-DD). Defaults to today.
fromNoRange start (YYYY-MM-DD). Defaults to 30 days before "to".

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry full burden. It indicates a read-only analytics retrieval ('Get workspace KPIs') and references the in-app dashboard but does not disclose permission requirements, rate limits, pagination, or whether the response is a single report or a stream of data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded with the verb and resource. It wastes no words and includes a useful clarifying note about being the same data as the in-app dashboard.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a simple read-only tool with fully documented date parameters, but it lacks explicit information about the output structure or metrics returned. Since there is no output schema and no annotations, the description's vague 'KPIs and quick stats' leaves some ambiguity about what the agent can expect.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, already documenting both 'from' and 'to' date params with defaults. The description only says 'for a date range', adding no new parameter semantics beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the specific resource 'workspace KPIs and quick stats for a date range'. This distinguishes it from all sibling tools, which focus on bots, flows, conversations, conversations, or leads.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this tool is used to retrieve workspace analytics for a date range but provides no explicit exclusions or alternative tool recommendations. The phrase 'same data as the in-app dashboard' gives some context but doesn't clearly specify 'when to use this vs. something else'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_conversationGet conversation detailA

Get a single conversation, including its messages in chronological order.

ParametersJSON Schema
NameRequiredDescriptionDefault
conversation_idYesUUID of the conversation to fetch.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It explicitly states that the conversation includes its messages in chronological order, which is meaningful behavioral context beyond just 'get'. It doesn't discuss error handling, but for a read-only fetch, this is acceptable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, front-loaded with the core action, and contains no redundant or filler words. Every word contributes to understanding the tool's purpose and behavior.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter read tool, the description effectively covers the essential behavior: retrieving one conversation with its messages in order. It doesn't enumerate all returned fields, but without an output schema and with a straightforward use case, this is adequately complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, with the only parameter 'conversation_id' clearly documented as 'UUID of the conversation to fetch.' The description adds no additional parameter-level meaning, so the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and a specific resource ('a single conversation'), and adds that it includes messages in chronological order. This clearly distinguishes it from the sibling 'list_conversations' tool, which implies a list operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'single conversation' implies this is for fetching one specific conversation, contrasting with 'list_conversations'. However, it does not explicitly name an alternative or provide when-to-use versus when-not-to-use guidance, so it remains at the 'implied usage' level.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_flowGet flow detailB

Get a single flow, including its nodes in executable format.

ParametersJSON Schema
NameRequiredDescriptionDefault
flow_idYesUUID of the flow to fetch.

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It adds one behavioral detail ('in executable format') but does not disclose error behavior, permission needs, or side effects. As a read operation, safety is implied but not stated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence that front-loads the main action and adds a valuable detail about node format. No redundant words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given it is a simple read operation with one well-schemaed parameter and no output schema, the description is adequate but not rich. It notes executable nodes but lacks details on return structure or errors, which could be important for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides 100% coverage with a clear description of flow_id as a UUID. The tool description adds no additional parameter meaning, but the schema fully compensates, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it fetches a single flow and includes nodes in executable format, distinguishing it from list_flows which lists multiple flows. However, it does not explicitly differentiate from other get_* siblings like get_conversation, though the resource type is clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this vs alternatives. The description implies it is for fetching one flow by ID, but there is no mention of when not to use it or when to prefer sibling tools like list_flows.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_botsList botsB

List the bots that belong to the workspace that owns the API key.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
per_pageNo

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It states the scope (workspace owning the API key) but does not disclose pagination behavior, rate limits, or what happens if no bots exist. For a read-only list operation, it's minimal but not misleading.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that directly states the tool's purpose. No wasted words, and it's front-loaded with the action 'List'.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no output schema, no nested objects, only two optional pagination params), the description is mostly complete. However, it lacks any mention of pagination behavior or response format, which could be useful for an agent. It's adequate for a simple list tool but could be slightly more informative.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the parameters (page, per_page) are self-explanatory from their names and types. The description does not add any detail about pagination semantics, but the schema provides basic constraints. Since there are only two simple parameters, the description's lack of detail is acceptable but not ideal.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists bots belonging to the workspace, which is a specific verb+resource. It distinguishes from siblings like list_flows and list_conversations by specifying 'bots' and the workspace scope, though it doesn't explicitly contrast with them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for listing bots in the current workspace, but provides no explicit guidance on when to use this tool versus alternatives like list_flows or list_conversations. It doesn't mention any exclusions or prerequisites, so it's adequate but lacks explicit context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_conversationsList conversationsA

List conversations for the workspace, optionally filtered by bot_id and/or status.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
bot_idNoFilter by bot UUID.
statusNo
per_pageNo

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden of behavioral disclosure. It only restates the basic list/filter behavior and fails to mention pagination, response shape, or any operational details beyond the obvious reading of the tool name.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one short, front-loaded sentence. It communicates the core scope and optional filters without redundancy, earning its place fully.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is minimal for a paged list endpoint with no output schema. It omits pagination semantics, return format details, and enough contextual guidance to fully cover the tool's behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 25%, with bot_id described in the schema and status exposed via enum. The description adds the optionality and combination of bot_id/status but does not help with page or per_page parameters, leaving significant parameter semantics unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('List conversations'), the resource ('conversations'), and the workspace scope. It also distinguishes the tool from sibling list tools by resource type and mentions optional filters, making its purpose specific and identifiable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for use: listing workspace conversations with optional bot_id/status filtering. It does not explicitly mention alternatives like get_conversation for single conversations, but the behavior and scope are clear enough to imply the appropriate use case.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_flowsList flowsC

List the flows that belong to a bot, given the bot's UUID.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
bot_idYesUUID of the bot whose flows to list.
per_pageNo

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the behavioral burden. It does not disclose pagination behavior despite page/per_page parameters, nor whether it returns only metadata or internal flow details, or if any authentication requirements exist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise clause, but it lacks elaboration on pagination; conciseness is not an issue. However, it is adequately brief and front-loaded, earning a 4.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations and output schema, the description is incomplete. It does not mention pagination behavior, response structure, or error conditions, leaving significant gaps for a potentially paginated list operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 33% (only bot_id described). The description repeats bot_id but does not explain page/per_page semantics, which are nondescriptive in schema, thus failing to compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists flows belonging to a bot identified by UUID. It is specific enough to distinguish from siblings (e.g., list_bots, get_flow) but does not explicitly contrast with them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. While the description implies it is for fetching all flows of a bot, it does not mention alternatives like get_flow for single flow details or how pagination works.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_leadsList leadsB

List leads for the workspace, optionally filtered by bot_id and/or status.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
bot_idNoFilter by bot UUID.
statusNo
per_pageNo

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only restates the basic action and filters, without mentioning pagination behavior, default ordering, return format, or any other operational details needed for a safe invocation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence of 12 words. It states the verb, resource, scope, and optional filters with zero wasted words, making it highly concise and structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with no annotations or output schema, the description covers purpose and filter options but omits pagination behavior, return value details, and any safety hints. It is minimally viable but leaves gaps an agent would need to infer.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 25% (only bot_id has a description). The description adds that bot_id and status are optional filters and can be combined, but it says nothing about page or per_page semantics, leaving half the parameters effectively undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists leads for the workspace, using a specific verb ('list') and resource ('leads') with a scope. It distinguishes from sibling list tools by naming the distinct resource type, though it doesn't explicitly mention alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool (when leads are needed for the workspace) and mentions optional filters, but provides no explicit guidance on when not to use it or direct references to alternatives among sibling list tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send_messageSend messageA

Send a message as the agent in an existing conversation. Delivers to the external channel (WhatsApp, Telegram, etc.) when the conversation is not on the web channel.

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYesMessage text, max 4096 characters.
conversation_idYesUUID of the conversation to send the message in.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses the core behavior and the channel-specific delivery nuance, which adds value. However, it does not mention potential side effects, required permissions, or failure scenarios. For a write operation, more behavioral context could be expected.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the main action, and includes only essential additional context about channel delivery. Every word earns its place, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with two parameters and no output schema, the description adequately covers the main purpose and the only exception (web vs. external channel). It does not over-explain trivial details, and the lack of an output schema means return values are not required to be described. Slightly more detail on delivery status would improve completeness, but it is generally sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both content and conversation_id having descriptive text in the schema. The tool description adds no additional parameter details beyond what the schema already provides, so it meets the baseline but does not enhance understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: 'Send a message as the agent in an existing conversation.' This is a specific verb+resource combination, and the channel delivery nuance further clarifies its scope. It is distinct from sibling tools like list_conversations or create_lead, which are not messaging tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is used for sending messages in existing conversations, and the external channel condition provides context on when delivery differs. It does not explicitly state when not to use it or mention alternatives, but since no sibling tool overlaps in function, this is adequate.

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.

  1. 9 tool updatesv0.1.0
    • First observedcreate_lead
    • First observedget_analytics
    • First observedget_conversation
    • First observedget_flow
    • First observedlist_bots
    • First observedlist_conversations
    • First observedlist_flows
    • First observedlist_leads
    • First observedsend_message

TDQS

A3.6/5.0

Scored across 9 tools

Disambiguation5/5

Each tool targets a distinct resource or action: bots, flows, conversations, analytics, messaging, and leads. The list/get pairs follow a clear resource-detail distinction, so an agent can reliably select the intended tool.

Naming Consistency5/5

All tools use lowercase snake_case verb_noun naming: list_*, get_*, send_message, create_lead. The pattern is consistent and predictable across the entire surface.

Tool Count5/5

Nine tools is well-scoped for a workspace/bot/conversation/lead management server. Each tool corresponds to a meaningful operation, and there is no redundant bloat.

Completeness4/5

Read/query coverage is strong across bots, flows, conversations, leads, and analytics, with messaging and lead creation included. Minor gaps exist—no lead status update, conversation creation/closure, or flow editing—but these are likely handled outside this server's read-and-engage scope.

Maintenance

ActivityMaintained
ResponsivenessNo issues

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

Related MCP Servers

Latest Blog Posts

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/echelonlabs-sf/runehand-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server