Skip to main content
Glama
dappros

Ethora MCP Server

by dappros

Ethora MCP Server (Model Context Protocol)

npm Node License

Add to Cursor Install in VS Code Install in VS Code Insiders

One-click install for Cursor and VS Code (buttons above). For Claude Code, Claude Desktop, GitHub Copilot, Gemini CLI, Codex CLI, Windsurf, and Cline, see Using with MCP Clients below.

An MCP (Model Context Protocol) CLI/server that connects popular MCP clients to the Ethora platform β€” an open-source chat & messaging platform with a built-in AI agent / chatbot framework. This runs locally on a developer machine via stdio rather than as a hosted Ethora service.
Use it from Cursor, VS Code MCP, Claude Desktop, or Windsurf/Cline to manage apps and chat rooms, broadcast messages, deploy AI agents / chatbots with RAG sources, and automate B2B provisioning workflows. (ERC-20 wallet tools are also included β€” see the tool list below.)

Part of the Ethora SDK ecosystem β€” see all SDKs, tools, and sample apps. Follow cross-SDK updates in the Release Notes.


✨ What you get

  • Talk to the Ethora platform directly from your IDE or AI agent client (Cursor, VS Code MCP, Claude Desktop, Windsurf / Cline).

  • Both user-auth flows (login/register, files, owner/admin endpoints) and B2B / app-token flows (tenant provisioning, broadcast jobs, async user batches, AI bot config).

  • Built-in recipes, prompts, and generators for the most common Ethora workflows (Vite/Next chat-component setup, B2B bootstrap, AI-bot enablement, RAG sources).

  • Standard tool response envelope ({ ok, ts, meta, data | error }) so agent code can reason about success/failure consistently.

Related MCP server: Etsy MCP Server

🚦 Just trying it? (60-second quickstart)

Don't read the auth modes yet. Once the server is connected in your client, ask your agent to run, in order:

  1. ethora-doctor β€” confirms the server is up and can reach the Ethora API. No credentials needed.

  2. ethora-configure with your appJwt β†’ ethora-auth-use-user β†’ ethora-user-login with an email + password.

  3. ethora-app-list β€” you're in; this lists your apps.

That's the local-developer path. Need server-side automation instead? Jump to B2B mode. Lost at any point, call ethora-help β€” it reads your current state and tells you the next call.

πŸ” Two typical usage modes

1) User Auth mode

Best for:

  • developers trying Ethora locally

  • tenant admins / app owners using MCP manually

  • flows that start with ethora-user-login

How it works:

  • configure ETHORA_APP_JWT once for login/register bootstrap

  • switch to ethora-auth-use-user

  • call ethora-user-login

  • use user-auth tools such as files and legacy owner/admin endpoints

2) B2B mode

Best for:

  • permanent backend integrations

  • partner provisioning flows

  • autonomous agents operating Ethora without a human user session

How it works:

  • configure ETHORA_B2B_TOKEN

  • switch to ethora-auth-use-b2b for explicit tenant-actor /v2/apps/:appId/... routes

  • optionally switch into ethora-auth-use-app after ethora-app-select when you want app-scoped convenience routes powered by appToken

Rule of thumb:

  • first-time local use usually starts with User Auth

  • repeatable automation usually starts with B2B, then often moves into app-token mode for one selected app

Prompts & Resources (P2: dev-facing docs)

  • Resources (loadable docs into context)

    • ethora://docs/auth-map β€” appJwt vs appToken vs b2bToken

    • ethora://docs/chat-component/quickstart β€” Vite/Next quickstart + replacing demo tokens

    • ethora://docs/sdk-backend/quickstart β€” backend integration quickstart

    • ethora://docs/recipes β€” common tool sequences (broadcast/sources/files/bot)

  • Prompts

    • ethora-auth-map

    • ethora-vite-quickstart

    • ethora-nextjs-quickstart

    • ethora-backend-sdk-quickstart

    • ethora-recipes

Generators (no shell, no file writes)

  • ethora-generate-chat-component-app-tsx β€” ready-to-paste App.tsx snippet for @ethora/chat-component

  • ethora-generate-env-examples β€” .env.example templates for:

    • frontend chat component

    • backend SDK integration

    • MCP usage (ETHORA_API_URL, ETHORA_APP_JWT, ETHORA_B2B_TOKEN)

  • ethora-generate-b2b-bootstrap-runbook β€” minimal β€œcall these MCP tools in order” runbook for B2B bootstrap

Tip: to list runnable recipes without calling ethora-help, call ethora-run-recipe with goal: "auto" and omit recipeId.

  • Session / Config

    • ethora-configure β€” set API URL plus App JWT / B2B token / appToken for this MCP session

    • ethora-status β€” show configured API URL, active auth mode, and which credentials are present

    • ethora-help β€” task-oriented help (recommended next calls + β€œone-click recipes” based on current state)

    • ethora-run-recipe β€” execute a built-in recipe by id (sequential steps; no shell, no file writes)

    • ethora-doctor β€” validate config + ping the configured Ethora API for both user and B2B usage

    • ethora-app-select β€” select current appId and optionally set appToken

    • ethora-auth-use-app β€” switch to app-token auth mode for app-scoped operations

    • ethora-auth-use-user β€” switch to user-session auth mode

    • ethora-auth-use-b2b β€” switch to tenant-actor B2B x-custom-token auth mode

  • Chats (v2)

    • ethora-chats-broadcast-v2 β€” enqueue broadcast job using app-token auth or B2B + explicit appId

    • ethora-chats-broadcast-job-v2 β€” get broadcast job status/results using app-token auth or B2B + explicit appId

    • ethora-wait-broadcast-job-v2 β€” poll broadcast job until completed/failed using app-token auth or B2B + explicit appId

    • ethora-chats-message-v2 β€” send a test/automation message through the app chat surface (requires app-token auth)

    • ethora-chats-history-v2 β€” read persisted automation/test history for private or group sessions (requires app-token auth)

  • Users (v2 async batch)

    • ethora-users-batch-create-v2 β€” create async users batch job (requires B2B auth)

    • ethora-users-batch-job-v2 β€” get users batch job status/results (requires B2B auth)

    • ethora-wait-users-batch-job-v2 β€” poll users batch job until completed/failed (requires B2B auth)

  • Files (v2)

  • Bot / Agent (v2)

    • ethora-bot-get-v2 β€” get bot status/settings using app-token auth or B2B + explicit appId

    • ethora-bot-update-v2 β€” update bot settings using app-token auth or B2B + explicit appId

    • ethora-bot-enable-v2 β€” enable bot using app-token auth or B2B + explicit appId

    • ethora-bot-disable-v2 β€” disable bot using app-token auth or B2B + explicit appId

    • ethora-bot-widget-v2 β€” get widget/embed config and public widget URL metadata (app-token auth)

    • ethora-agents-list-v2 β€” list reusable saved agents for the current app owner (app-token auth)

    • ethora-agents-get-v2 β€” get one reusable saved agent (app-token auth)

    • ethora-agents-create-v2 β€” create a reusable saved agent (app-token auth)

    • ethora-agents-update-v2 β€” update a reusable saved agent (app-token auth)

    • ethora-agents-clone-v2 β€” clone a reusable saved agent (app-token auth)

    • ethora-agents-activate-v2 β€” bind a saved agent as the active bot for the selected app (app-token auth)

    • ethora-bot-message-v2 β€” compatibility alias for ethora-chats-message-v2

    • ethora-bot-history-v2 β€” compatibility alias for ethora-chats-history-v2

    • ethora-files-upload-v2 β€” upload files (requires user auth)

    • ethora-files-get-v2 β€” list/get files (requires user auth)

    • ethora-files-delete-v2 β€” delete file by id (requires user auth)

  • Sources

    • ethora-sources-docs-upload β€” upload docs for ingestion (requires user auth)

    • ethora-sources-docs-delete β€” delete ingested doc by id (requires user auth)

    • ethora-sources-site-crawl-v2 β€” crawl a URL using app-token auth or B2B + explicit appId

    • ethora-sources-site-reindex-v2 β€” reindex URL by urlId using app-token auth or B2B + explicit appId

    • ethora-sources-site-crawl-v2-wait β€” single-call long-timeout helper for crawl (app-token auth)

    • ethora-sources-site-reindex-v2-wait β€” single-call long-timeout helper for reindex (app-token auth)

    • ethora-sources-site-list-v2 β€” list crawled site sources and current tags using app-token auth or B2B + explicit appId

    • ethora-sources-site-tags-update-v2 β€” set/update tags for a crawled site source using app-token auth or B2B + explicit appId

    • ethora-sources-site-delete-url-v2 β€” delete one crawled URL by URL using app-token auth or B2B + explicit appId

    • ethora-sources-site-delete-url-v2-batch β€” batch delete crawled source records by id using app-token auth or B2B + explicit appId

    • ethora-sources-docs-upload-v2 β€” upload docs for ingestion using app-token auth or B2B + explicit appId

    • ethora-sources-docs-list-v2 β€” list indexed documents and current tags using app-token auth or B2B + explicit appId

    • ethora-sources-docs-tags-update-v2 β€” set/update tags for an indexed document using app-token auth or B2B + explicit appId

    • ethora-sources-docs-delete-v2 β€” delete doc by id using app-token auth or B2B + explicit appId

  • Auth & Accounts

    • ethora-user-login β€” login user (email + password)

    • ethora-user-register β€” register user (email + first/last name)

  • Applications

    • ethora-app-create β€” create app

    • ethora-app-update β€” update app

    • ethora-app-delete β€” delete app

    • ethora-app-list β€” list apps

    • ethora-b2b-app-create β€” create app using B2B auth (x-custom-token)

    • ethora-b2b-app-bootstrap-ai β€” create app β†’ index sources β†’ configure/enable bot, including runtime LLM selection (B2B automation)

    • ethora-app-tokens-list-v2 β€” list app token metadata (B2B auth)

    • ethora-app-tokens-create-v2 β€” create new app token (returned once) (B2B auth)

    • ethora-app-tokens-rotate-v2 β€” rotate token (revoke old, return new once) (B2B auth)

    • ethora-app-tokens-revoke-v2 β€” revoke token by tokenId (idempotent) (B2B auth)

    • ethora-b2b-app-provision β€” create app + create tokens + provision rooms + configure bot, including runtime LLM selection (B2B orchestrator)

  • Chat & Rooms

    • ethora-app-get-default-rooms β€” list default rooms

    • ethora-app-get-default-rooms-with-app-id β€” rooms for a given app

    • ethora-app-create-chat β€” create chat for app

    • ethora-app-delete-chat β€” delete chat

  • Wallet

    • ethora-wallet-get-balance β€” get balance

    • ethora-wallet-erc20-transfer β€” send ERC-20 tokens

Tool names above reflect the functional areas exposed by the server. Your exact tool names may vary slightly by version; run the client’s β€œlist tools” to confirm.

πŸ“¦ Install / Run

Pre-requisites

Before you begin, ensure you have the following:

  • Node.js installed on your system (recommended version 18.x or higher).

Install

The server is distributed as an npm package and is typically launched by MCP clients via npx:

npx -y @ethora/mcp-server

No global install is required.


πŸ” Configuration (env vars)

This MCP server supports both the local user-auth flow and the server-side B2B flow.

Core values:

  • Ethora API URL (where to send requests)

  • Ethora App JWT (used only for login/register bootstrap in user-auth mode)

  • Ethora B2B Token (used for tenant-actor server-to-server flows)

You can provide these either:

  • via env vars, or

  • at runtime via the ethora-configure tool (in-memory; resets when MCP process restarts)

Supported env vars

  • ETHORA_API_URL: full API URL (example: https://api.chat.ethora.com/v1, http://localhost:8080/v1)

  • ETHORA_BASE_URL: base host URL (example: https://api.chat.ethora.com, http://localhost:8080)
    If provided, the server will default to .../v1.

  • ETHORA_APP_JWT: App JWT string, usually starting with JWT ...

  • ETHORA_B2B_TOKEN: B2B server token for x-custom-token auth (JWT with type=server)

  • ETHORA_MCP_ENABLE_DANGEROUS_TOOLS: enable destructive tools (default: disabled). Set to true to expose:

    • app deletion tools

    • wallet transfer tools

    • bulk delete tools

Security: never commit App JWTs, B2B tokens, or appTokens to git. Configure them via env vars, the MCP client secret store, or your own backend.


🧱 Standard response envelope (tools)

All tools return JSON in a consistent envelope:

  • Success: { ok: true, ts, meta, data }

  • Error: { ok: false, ts, meta, error }, where error includes:

    • code: stable string (prefer API code, otherwise inferred)

    • httpStatus: HTTP status when the failure came from an API call

    • requestId: request/correlation id if returned by API

    • hint: 1-line β€œwhat to do next”


πŸš€ Using with MCP Clients

Every client runs the same thing β€” npx -y @ethora/mcp-server over stdio. One-click buttons exist for Cursor and VS Code (top of this README). For the rest it's a short config block or a one-line command.

Cursor

Use the Add to Cursor button above, or manually: Settings β†’ MCP β†’ Add new global MCP server:

{
  "mcpServers": {
    "ethora": {
      "command": "npx",
      "args": ["-y", "@ethora/mcp-server"]
    }
  }
}

VS Code (and GitHub Copilot)

Use the Install in VS Code button above, or add a .vscode/mcp.json file (project-level) β€” note the key is servers:

{
  "servers": {
    "ethora": {
      "command": "npx",
      "args": ["-y", "@ethora/mcp-server"]
    }
  }
}

GitHub Copilot's agent mode in VS Code reads this same .vscode/mcp.json β€” no separate setup. (For a user-level install instead, put the servers block under "mcp" in your User Settings JSON.)

Claude Code

One command:

claude mcp add ethora -- npx -y @ethora/mcp-server

Add --scope user to make it available in every project. Verify with claude mcp list.

To pre-configure credentials, pass them as env vars with -e (recommended over the ethora-configure tool β€” see note below):

claude mcp add ethora \
  -e ETHORA_API_URL=https://api.chat.ethora.com/v1 \
  -e ETHORA_B2B_TOKEN=<your-b2b-token> \
  -- npx -y @ethora/mcp-server

Secrets note: prefer env vars (above) or your MCP client's secret store for credentials. The ethora-configure tool also works, but it passes secrets as tool arguments, which means they end up in the conversation transcript. Use it for quick local testing, not for tokens you care about.

Claude Desktop

Settings β†’ Developer β†’ Edit Config, open claude_desktop_config.json:

{
  "mcpServers": {
    "ethora": {
      "command": "npx",
      "args": ["-y", "@ethora/mcp-server"]
    }
  }
}

Gemini CLI

Add to ~/.gemini/settings.json (global) or .gemini/settings.json (per project):

{
  "mcpServers": {
    "ethora": {
      "command": "npx",
      "args": ["-y", "@ethora/mcp-server"]
    }
  }
}

Codex CLI

Add to ~/.codex/config.toml β€” note the table name is mcp_servers (underscore; mcp-servers is silently ignored):

[mcp_servers.ethora]
command = "npx"
args = ["-y", "@ethora/mcp-server"]

Windsurf

Settings β†’ Cascade β†’ MCP Servers β†’ View raw config (~/.codeium/windsurf/mcp_config.json):

{
  "mcpServers": {
    "ethora": {
      "command": "npx",
      "args": ["-y", "@ethora/mcp-server"]
    }
  }
}

Cline

Open the MCP servers panel and edit cline_mcp_settings.json:

{
  "mcpServers": {
    "ethora": {
      "command": "npx",
      "args": ["-y", "@ethora/mcp-server"]
    }
  }
}

πŸ§ͺ Quick test

After the server shows as connected in your client:

  • Run list tools (client command) to verify Ethora tools are available.

  • Check config/connectivity: call ethora-doctor (or ethora-status)

  • For a first local/manual test:

    • call ethora-configure with apiUrl / appJwt

    • call ethora-auth-use-user

    • call ethora-user-login

    • then try ethora-app-list or ethora-wallet-get-balance

  • For a server-side/B2B test:

    • call ethora-configure with apiUrl / b2bToken

    • call ethora-auth-use-b2b

    • then try ethora-b2b-app-create or ethora-app-tokens-list-v2


🧭 P1: B2B β€œcreate app β†’ index sources β†’ deploy bot” in one call

Pre-reqs:

  • Configure ETHORA_API_URL (or call ethora-configure)

  • Configure ETHORA_B2B_TOKEN (or call ethora-configure with b2bToken)

  • Ensure your Ethora backend is configured with AI service URL/secret (for bot activation)

Suggested flow:

  • Call ethora-auth-use-b2b

  • Call ethora-b2b-app-bootstrap-ai with:

    • displayName

    • optional savedAgentId

    • optional crawlUrl

    • optional docs[] (base64)

    • enableBot: true

    • optional llmProvider

    • optional llmModel

It will:

  • create the app (B2B)

  • set current app context (best-effort)

  • index sources via /v2/sources/* (app-token auth)

  • configure and/or enable bot (best-effort)

Example payloads

Minimal (create app only):

{
  "displayName": "Acme AI Demo",
  "setAsCurrent": true
}

Create app + crawl a website + enable bot:

{
  "displayName": "Acme AI Demo",
  "savedAgentId": "6790abc1234567890def1111",
  "crawlUrl": "https://example.com",
  "followLink": true,
  "enableBot": true,
  "botTrigger": "/bot",
  "llmProvider": "openai",
  "llmModel": "gpt-4o-mini"
}

Create app + upload docs + enable bot:

{
  "displayName": "Acme AI Demo",
  "docs": [
    {
      "name": "faq.pdf",
      "mimeType": "application/pdf",
      "base64": "BASE64_PDF_CONTENT_HERE"
    }
  ],
  "enableBot": true,
  "llmProvider": "openai",
  "llmModel": "gpt-4o-mini"
}

Provision app + token + default rooms + bot settings:

{
  "displayName": "Acme Support",
  "savedAgentId": "6790abc1234567890def1111",
  "tokenLabels": ["default", "staging"],
  "rooms": [
    { "title": "General" },
    { "title": "Support", "pinned": true }
  ],
  "enableBot": true,
  "botTrigger": "/bot",
  "botPrompt": "You are the Acme support assistant.",
  "botGreetingMessage": "Hello. How can I help?",
  "llmProvider": "openai",
  "llmModel": "gpt-4o-mini"
}

Provider/model note:

  • Common values are openai and openai-compatible.

  • The effective provider/model must also be enabled by your Ethora backend + AI service environment.


πŸ€– App automation loop

Once you already have an app selected with appToken auth:

  • call ethora-auth-use-app

  • call ethora-bot-get-v2 to inspect current bot status and prompt settings

  • call ethora-sources-site-list-v2 and ethora-sources-docs-list-v2 to inspect indexed sources

  • call ethora-sources-site-tags-update-v2 or ethora-sources-docs-tags-update-v2 to organize retrieval by tags

  • call ethora-chats-message-v2 / ethora-chats-history-v2 if your backend exposes the chat automation surface on the same API host

Example: apply retrieval tags to a crawled source

{
  "sourceId": "6790abc1234567890def1234",
  "tags": ["support", "faq", "billing"]
}

Example: apply retrieval tags to an indexed document

{
  "docId": "6790abc1234567890def1235",
  "tags": ["support", "faq"]
}

πŸ›‘οΈ Security notes

  • Never hardcode API keys in shared config. Prefer client-side secret stores.

  • Use least privilege keys and consider allowlists/rate limits on your Ethora backend.

  • Rotate credentials regularly in production use.

CI security scans (report-only)

This repo runs report-only scans on pushes/PRs:

  • gitleaks for secret scanning

  • semgrep for basic SAST


🧰 Development

Clone and run locally:

git clone https://github.com/dappros/ethora-mcp-server.git
cd ethora-mcp-server
npm install
npm run build
npm start

Suggested scripts (if not present):

{
  "scripts": {
    "build": "tsc -p .",
    "start": "node dist/index.js",
    "dev": "tsx src/index.ts"
  }
}

❓ Troubleshooting

  • Client can’t connect: Ensure npx @ethora/mcp-server runs locally without errors. Check Node β‰₯ 18.

  • Auth errors: Verify ETHORA_BASE_URL and any required secrets are set in the client’s environment.

  • Tools missing: Restart the MCP client and inspect server logs for registration errors.

  • Network: Confirm outbound access from the IDE to your Ethora host.



πŸ“œ License

See LICENSE.

Available Tools

12 tools
ethora-app-createC

Create a new app for the logged-in user.

ParametersJSON Schema
NameRequiredDescriptionDefault
displayNameYesdisplay name for app

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but offers minimal behavioral insight. It states this creates an app but doesn't disclose what 'app' means in this context, whether creation is irreversible, what permissions are required, or what happens after creation. For a mutation tool with zero annotation coverage, this is inadequate.

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, efficient sentence with no wasted words. It's appropriately sized for a simple creation tool and front-loads the essential information.

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?

For a mutation tool with no annotations and no output schema, the description is insufficient. It doesn't explain what an 'app' is in this system, what the creation entails, what permissions are needed, or what the result looks like. Given the complexity of app creation and lack of structured data, more context is needed.

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%, so the schema already fully documents the single 'displayName' parameter. The description adds no additional parameter context beyond what the schema provides, meeting the baseline for high schema coverage.

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 action ('Create') and resource ('new app'), specifying it's for the logged-in user. However, it doesn't differentiate from sibling 'ethora-app-create-chat', which appears to be a similar creation tool with chat-specific functionality.

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 like 'ethora-app-create-chat' or 'ethora-app-update'. The description mentions it's for the logged-in user, but doesn't specify prerequisites, permissions needed, or contextual constraints.

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

ethora-app-create-chatC

Create a new chat for the logged-in user who has created the app.

ParametersJSON Schema
NameRequiredDescriptionDefault
appIdYesappId for app
pinnedYespinned for chat
titleYestitle for chat

TDQS

C2.9/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 states the tool creates a chat, implying a mutation, but does not cover critical aspects like authentication requirements, error handling, rate limits, or what happens upon creation (e.g., response format). This leaves significant gaps in understanding the tool's behavior.

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, efficient sentence that directly states the tool's purpose without unnecessary words. It is front-loaded with the key action and context, making it easy to parse and understand quickly.

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 tool's complexity as a mutation tool with no annotations and no output schema, the description is insufficient. It lacks details on behavioral traits, return values, and usage context, leaving the agent with incomplete information to effectively invoke the tool. More context is needed to meet minimum viability for such operations.

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 clear descriptions for each parameter (appId, pinned, title). The description does not add any additional meaning beyond what the schema provides, such as explaining the purpose of 'pinned' or constraints on 'title'. Since the schema does the heavy lifting, the baseline score of 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 the action ('Create a new chat') and the resource ('for the logged-in user who has created the app'), making the purpose understandable. However, it does not explicitly differentiate this tool from sibling tools like 'ethora-app-create' or 'ethora-app-delete-chat', which would be needed for a score of 5.

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?

The description provides no guidance on when to use this tool versus alternatives, such as other chat-related tools in the sibling list. It mentions the user context ('logged-in user who has created the app'), but this is more of a prerequisite than usage guidance, leaving the agent without clear direction on tool selection.

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

ethora-app-deleteC

Delete an app by appId for the logged-in user

ParametersJSON Schema
NameRequiredDescriptionDefault
appIdYesappId for app

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action is 'Delete', implying a destructive mutation, but lacks details on permissions required, whether deletion is reversible, error handling, or side effects. This leaves significant gaps for a tool that performs a critical operation.

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, direct sentence that efficiently conveys the core action without unnecessary words. It is front-loaded and appropriately sized for the tool's complexity, making it easy to parse and understand quickly.

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 tool's destructive nature, lack of annotations, and absence of an output schema, the description is insufficient. It doesn't address critical aspects like what happens post-deletion, confirmation prompts, or return values, leaving the agent with incomplete information for safe and effective use.

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 single parameter 'appId' documented as 'appId for app'. The description adds no additional meaning beyond this, such as format examples or constraints. Since the schema fully covers the parameter, a baseline score of 3 is appropriate, as the description doesn't compensate but also doesn't detract.

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 action ('Delete') and target resource ('an app by appId for the logged-in user'), making the purpose unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'ethora-app-delete-chat', which might handle chat-specific deletions, leaving room for potential confusion.

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?

The description provides no guidance on when to use this tool versus alternatives, such as 'ethora-app-update' for modifications or 'ethora-app-delete-chat' for chat-related deletions. It mentions 'for the logged-in user', but this is part of the purpose statement rather than usage instructions, offering minimal contextual direction.

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

ethora-app-delete-chatC

Delete a chat for the logged-in user who has created the app.

ParametersJSON Schema
NameRequiredDescriptionDefault
appIdYesappId for app
chatJidYestitle for chat

TDQS

C2.9/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 mentions the user must be logged-in and have created the app, which adds some context about permissions, but it doesn't cover critical aspects like whether deletion is permanent, reversible, or has side effects (e.g., impact on related data), nor does it address rate limits or error handling. This leaves significant 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?

The description is a single, clear sentence that directly states the tool's purpose without unnecessary words. It is front-loaded and efficiently conveys the essential information, 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.

Completeness2/5

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

Given the tool is a mutation (delete operation) with no annotations and no output schema, the description is insufficient. It lacks details on behavioral traits (e.g., permanence, side effects), error conditions, or what happens post-deletion. For a destructive action, more context is needed to ensure safe and correct usage by an AI 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 schema description coverage is 100%, with both parameters ('appId' and 'chatJid') documented in the schema. The description doesn't add any additional meaning or clarification about the parameters beyond what the schema provides, such as format examples or usage context. This meets the baseline for high schema coverage.

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 action ('Delete a chat') and the resource ('chat for the logged-in user who has created the app'), making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'ethora-app-delete' or 'ethora-app-create-chat', which would require more specificity for a perfect score.

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?

The description provides minimal guidance by implying usage is limited to the logged-in user who created the app, but it doesn't specify when to use this tool versus alternatives (e.g., compared to 'ethora-app-delete' for deleting apps or other chat-related tools). No explicit when/when-not instructions or alternative tool references are included.

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

ethora-app-get-default-roomsC

Get the default rooms for Ethora application

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/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 states 'Get' implies a read operation, but doesn't specify whether this requires authentication, what the return format is (e.g., list of rooms, JSON structure), or any rate limits. For a tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.

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, efficient sentence with no wasted words. It's front-loaded with the core action ('Get the default rooms') and specifies the context ('for Ethora application'). Every part of the sentence contributes to understanding the tool's purpose.

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 tool's low complexity (0 parameters) but lack of annotations and output schema, the description is incomplete. It doesn't explain what 'default rooms' are, how they're returned, or any behavioral traits. For a tool that likely returns data, more context on the output would be helpful, especially since there's no output schema provided.

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

Parameters4/5

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

The tool has 0 parameters, and schema description coverage is 100% (since there are no parameters to describe). The description doesn't need to add parameter semantics, so it meets the baseline of 4 for tools with no parameters. It correctly implies no inputs are required.

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

Purpose3/5

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

The description states the tool's purpose ('Get the default rooms for Ethora application'), which is clear but vague. It specifies the verb 'Get' and resource 'default rooms', but doesn't distinguish it from its sibling 'ethora-app-get-default-rooms-with-app-id' or explain what 'default rooms' means in this context. The purpose is understandable but lacks specificity.

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. It doesn't mention its sibling 'ethora-app-get-default-rooms-with-app-id' (which likely requires an app ID parameter) or other related tools like 'ethora-app-list'. The description offers no context on prerequisites, exclusions, or typical use cases.

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

ethora-app-get-default-rooms-with-app-idB

Get the default rooms for the application by appId. You should have read access to the application.

ParametersJSON Schema
NameRequiredDescriptionDefault
appIdYesappId for app

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 of behavioral disclosure. It mentions a read access requirement, which adds some context, but fails to describe other important traits such as whether this is a read-only operation, potential rate limits, error handling, or what the return format looks like (e.g., list of rooms, pagination). For a tool with no annotation coverage, this leaves significant gaps in understanding its behavior.

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, efficient sentence that directly states the tool's purpose and a key prerequisite. It is front-loaded with the main action and resource, with no wasted words or redundant information, 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.

Completeness3/5

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

Given the tool's low complexity (one parameter, no output schema, no annotations), the description is minimally adequate. It covers the basic purpose and access requirement but lacks details on return values, error cases, or behavioral nuances. Without an output schema, the description should ideally hint at what is returned, but it does not, leaving some context incomplete.

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 single parameter 'appId' well-documented in the schema as 'appId for app'. The description adds no additional meaning beyond this, such as format examples or constraints, but since the schema already provides adequate coverage, the baseline score of 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 the verb 'Get' and the resource 'default rooms for the application by appId', making the purpose specific and understandable. However, it does not explicitly distinguish this tool from its sibling 'ethora-app-get-default-rooms' (which lacks the 'with-app-id' suffix), leaving some ambiguity about when to use one over the other.

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 provides implied usage guidance by mentioning 'You should have read access to the application', which suggests a prerequisite. However, it does not explicitly state when to use this tool versus alternatives like 'ethora-app-get-default-rooms' or other app-related tools, nor does it outline any exclusions or specific contexts for use.

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

ethora-app-listC

List application, user should login first

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions the login requirement (useful context), but doesn't describe what the tool returns (list format, pagination, error behavior) or any other behavioral traits like rate limits or authentication specifics. For a tool with zero annotation coverage, this is insufficient.

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 very brief (two short phrases) with zero wasted words. It's appropriately sized for a simple list tool, though it could be slightly more informative. The structure is straightforward with the main action stated first.

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 no annotations and no output schema, the description is incomplete. It mentions the login requirement but doesn't explain what the tool returns (application list format, fields included) or any other contextual details needed for proper use. For a tool in a family with multiple application-related tools, more context is needed.

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

Parameters4/5

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

The tool has 0 parameters with 100% schema description coverage, so the schema already fully documents the lack of parameters. The description doesn't need to compensate for any parameter gaps. Baseline is 4 for zero-parameter tools as the description doesn't have to explain parameters.

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

Purpose3/5

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

The description states the action ('List application') which is a clear verb, but it's vague about what exactly is being listed (applications in general? user's applications?). It doesn't distinguish from siblings like 'ethora-app-get-default-rooms' which also retrieves application-related data. The purpose is understandable but lacks specificity.

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?

The description includes a prerequisite ('user should login first') which provides some context, but offers no guidance on when to use this tool versus alternatives like 'ethora-app-create' or 'ethora-app-get-default-rooms'. There's no explicit when/when-not usage or comparison to sibling tools.

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

ethora-app-updateC

Updates the application fields for the logged-in user who has created the app.

ParametersJSON Schema
NameRequiredDescriptionDefault
appDescriptionNoSet the application description
appIdYesappId for app
botStatusYesSet the bot status to on or off, if on bot is enabled
displayNameNodisplayName of the application
domainNameNoIf the domainName is set to 'abcd', your web application will be available at abcd.ethora.com.
primaryColorNoSet thie color of the application in #F54927 format

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states this is an update operation, implying mutation, but doesn't cover permissions needed, whether changes are reversible, rate limits, or what the response looks like. This is inadequate for a mutation tool with zero annotation coverage.

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, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded, though it could be slightly more informative given the lack of annotations.

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?

For a mutation tool with 6 parameters, no annotations, and no output schema, the description is insufficient. It lacks details on behavioral traits, error handling, or return values, leaving significant gaps for an AI agent to understand how to use this tool effectively.

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%, so the schema already documents all parameters thoroughly. The description doesn't add any parameter-specific information beyond what's in the schema, such as formatting details or usage examples, meeting the baseline for high schema coverage.

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 verb 'updates' and the resource 'application fields', specifying it's for the logged-in user who created the app. However, it doesn't explicitly differentiate from sibling tools like 'ethora-app-create' or 'ethora-app-delete' beyond the update action.

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?

The description mentions it's for the logged-in user who created the app, providing some context, but offers no explicit guidance on when to use this tool versus alternatives like 'ethora-app-create' or 'ethora-app-delete', nor any prerequisites or exclusions.

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

ethora-user-loginC

Login to Ethora with email and password

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesemail for login
passwordYespassword for login

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions authentication ('Login') but doesn't specify what happens upon login (e.g., session creation, token return, error handling for invalid credentials). For a security-sensitive tool, this lack of detail is a significant gap.

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, efficient sentence that directly states the tool's function without unnecessary words. It's front-loaded with the core action, making it easy to parse quickly.

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 complexity of a login operation (involving authentication, potential session management, and error cases), the description is insufficient. With no annotations and no output schema, it fails to explain what the tool returns (e.g., a token, user data) or behavioral aspects like rate limits or security requirements, leaving critical gaps for an AI 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 description adds minimal semantic context beyond the input schema, which already has 100% coverage with clear descriptions for 'email' and 'password'. It implies these parameters are for authentication but doesn't provide additional details like format constraints or security considerations, meeting the baseline for high schema coverage.

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 action ('Login to Ethora') and the mechanism ('with email and password'), making the purpose immediately understandable. However, it doesn't differentiate this tool from its sibling 'ethora-user-register', which likely also involves user credentials but for a different purpose.

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?

The description provides no guidance on when to use this tool versus alternatives like 'ethora-user-register' for account creation, nor does it mention prerequisites (e.g., needing an existing account) or exclusions. It simply states what the tool does without contextual usage information.

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

ethora-user-registerEthora registrationC

Ethora registration with email (required), firstName (required), lastName (required)

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYes
firstNameYes
lastNameYes

TDQS

C2.9/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 states 'registration', implying a write operation that creates a new user, but doesn't disclose any behavioral traits like authentication requirements, rate limits, error handling, or what happens upon success (e.g., does it return a user ID or token?). For a mutation tool with zero annotation coverage, this is a significant gap.

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 extremely concise and front-loaded, consisting of a single sentence that directly states the tool's purpose and parameters. There's no wasted text, and every word earns its place by conveying essential information efficiently.

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 complexity of a user registration tool (a write operation with no annotations and no output schema), the description is incomplete. It doesn't explain what the tool returns, error conditions, or behavioral aspects like side effects. With no output schema and zero annotation coverage, the description should do more to compensate, but it only covers basic parameter requirements.

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 description lists the parameters (email, firstName, lastName) and marks them as required, which adds meaning beyond the input schema that has 0% description coverage. However, it doesn't provide additional semantics like format hints (e.g., email format is implied but not explained) or constraints beyond what's in the schema. With low schema coverage, this partially compensates but doesn't fully address gaps.

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's purpose: 'Ethora registration with email (required), firstName (required), lastName (required)'. It specifies the verb 'registration' and the resource 'Ethora', making the action clear. However, it doesn't explicitly differentiate from sibling tools like 'ethora-user-login', which is a related but distinct operation.

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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, such as whether this is for new users only, or how it relates to sibling tools like 'ethora-user-login' for existing users. There's no explicit when/when-not usage context provided.

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

ethora-wallet-erc20-transferC

Transfer ERC20 tokens to another wallet

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesamount for transfer
toWalletYesto address for transfer

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. While 'transfer' implies a write/mutation operation, the description doesn't mention critical aspects like whether this requires authentication, gas fees, transaction confirmation time, irreversible nature of blockchain transactions, or potential rate limits.

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, efficient sentence that communicates the core functionality without any wasted words. It's appropriately sized for a simple transfer operation and gets straight to the point.

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?

For a blockchain token transfer tool with no annotations and no output schema, the description is insufficient. It doesn't address authentication requirements, transaction costs, confirmation mechanisms, error scenarios, or what the tool returns. The description should provide more context given the complexity of blockchain operations.

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 parameters clearly documented in the schema. The description doesn't add any meaningful parameter semantics beyond what's already in the schema (amount and toWallet). This meets the baseline for high schema coverage.

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 action ('Transfer') and resource ('ERC20 tokens to another wallet'), making the purpose immediately understandable. It doesn't differentiate from sibling tools like 'ethora-wallet-get-balance', but the verb+resource combination is specific enough for basic understanding.

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?

The description provides no guidance on when to use this tool versus alternatives. There's no mention of prerequisites (like needing a wallet with sufficient balance), error conditions, or relationship to sibling tools like 'ethora-user-login' which might be required first.

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

ethora-wallet-get-balanceB

Retrieve the cryptocurrency wallet balance of the authenticated user

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions authentication but does not detail how authentication is handled, potential rate limits, error conditions, or the format of the returned balance. This leaves significant gaps in understanding the tool's behavior.

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, clear sentence that efficiently conveys the core functionality without unnecessary words. It is front-loaded with the main action and resource, making it easy for an AI agent to parse quickly.

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 (0 parameters, no output schema, no annotations), the description is adequate but not fully complete. It covers the basic purpose but lacks details on authentication mechanisms, return format, or error handling, which could be important for an AI agent to use it correctly in context.

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

Parameters4/5

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

The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately does not add parameter details, earning a high score as it avoids redundancy and focuses on the tool's purpose.

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 action ('Retrieve') and resource ('cryptocurrency wallet balance of the authenticated user'), making the purpose evident. However, it does not explicitly differentiate from sibling tools like 'ethora-wallet-erc20-transfer', which is a related but distinct operation, so it falls short of a perfect score.

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?

The description implies usage for authenticated users but provides no explicit guidance on when to use this tool versus alternatives, such as distinguishing it from other wallet-related tools or specifying prerequisites like authentication status. This lack of context reduces its helpfulness for an AI agent.

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. 12 tool updatesv1.0.0
    • First observedethora-app-create
    • First observedethora-app-create-chat
    • First observedethora-app-delete
    • First observedethora-app-delete-chat
    • First observedethora-app-get-default-rooms
    • First observedethora-app-get-default-rooms-with-app-id
    • First observedethora-app-list
    • First observedethora-app-update
    • First observedethora-user-login
    • First observedethora-user-register
    • First observedethora-wallet-erc20-transfer
    • First observedethora-wallet-get-balance

TDQS

B3.2/5.0
Disambiguation3/5

Tools are grouped by resource (app, user, wallet) with distinct actions, but there is some overlap between 'ethora-app-get-default-rooms' and 'ethora-app-get-default-rooms-with-app-id' which could cause confusion. Most tools have clear purposes within their groups, but the two 'get-default-rooms' variants may be ambiguous without careful reading of descriptions.

Naming Consistency4/5

Naming follows a consistent pattern of 'ethora-resource-action' with hyphens, which is predictable and readable. Minor deviations exist, such as 'ethora-wallet-erc20-transfer' including 'erc20' in the name while others do not specify subtypes, but overall the convention is well-maintained across all tools.

Tool Count5/5

With 12 tools, the count is well-scoped for a server handling app management, user authentication, and wallet operations. Each tool appears to serve a specific function without redundancy, fitting a typical range for such a domain and avoiding both thinness and bloat.

Completeness4/5

The tool set covers core CRUD operations for apps (create, list, update, delete) and chats, plus user login/registration and wallet balance/transfer. Minor gaps exist, such as no explicit logout or chat listing tools, but agents can likely work around these with the provided operations for basic workflows.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive

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

  • F
    license
    A
    quality
    F
    maintenance
    Enables interaction with Coolify applications and resources through the Coolify API via a standardized interface, supporting application management operations such as listing, starting, stopping, restarting, and deploying.
    11
    13
    -
  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables seamless integration with Etsy's marketplace API v3 to search listings, manage shop inventory, create and update products, optimize SEO, and access seller resources with OAuth support for authenticated operations.
    5
    -
  • F
    license
    A
    quality
    D
    maintenance
    Enables interaction with any REST API through token or login authentication, with automatic Swagger/OpenAPI documentation integration for endpoint discovery and comprehensive HTTP request support.
    7
    -

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/dappros/ethora-mcp-server'

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