Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

io.github.dappros/ethora-mcp-server

REMOTE · MCP.CHAT.ETHORA.COM · 3 COMPONENTS · SCANNED SEP 20

Ethora chat platform MCP: apps, users, rooms, AI agents, chat widgets. Hosted or stdio.

67 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security63
Transport & Reachability100
Schema Quality & AI Usability77
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 21324 tokens (~224/item across 95 items; 91 tools + 4 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management15
  • Stability check failed: schema churn in the 5 days we've observed: 1 tool removals, 1 breaking changes, 0 auth/transport breaks, 2 additions. See how to fix → Fail
Tool Coverage97
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 90% of tool parameters carry a description.Partial
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 13 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 93 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities60
  • Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28. See how to fix → Fail
Install

How do I install the io.github.dappros/ethora-mcp-server server?

io.github.dappros/ethora-mcp-server is a hosted endpoint at https://mcp.chat.ethora.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · mcp.chat.ethora.com

# add to Claude Code
claude mcp add --transport http dappros-ethora-mcp-server 'https://mcp.chat.ethora.com/mcp'
// .cursor/mcp.json
{
  "mcpServers": {
    "dappros-ethora-mcp-server": {
      "url": "https://mcp.chat.ethora.com/mcp"
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "dappros-ethora-mcp-server": {
      "type": "http",
      "url": "https://mcp.chat.ethora.com/mcp"
    }
  }
}
# ~/.codex/config.toml
[mcp_servers.dappros-ethora-mcp-server]
url = "https://mcp.chat.ethora.com/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "dappros-ethora-mcp-server": {
      "type": "remote",
      "url": "https://mcp.chat.ethora.com/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add dappros-ethora-mcp-server --url 'https://mcp.chat.ethora.com/mcp' --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  dappros-ethora-mcp-server:
    url: "https://mcp.chat.ethora.com/mcp"
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "dappros-ethora-mcp-server": {
      "Transport": "http",
      "Url": "https://mcp.chat.ethora.com/mcp"
    }
  }
}
# add to Vellum
assistant mcp add dappros-ethora-mcp-server -t streamable-http -u 'https://mcp.chat.ethora.com/mcp'
// mcp.json
{
  "mcpServers": {
    "dappros-ethora-mcp-server": {
      "type": "http",
      "url": "https://mcp.chat.ethora.com/mcp"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 19 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 8 to 12.

  • 17 Sept 26 0
    • Stability: 0.03 → fail security
    • A breaking change shipped without a version bump: still 26.9.1 security
    • Tool “ethora-wallet-get-balance” was removed security
    • The server rewrote its instructions, which are the text every model session reads security
    • Tool “ethora-bot-disable-v2” rewrote its description, which is the text the model reads security
    • Tool “ethora-agents-clone-v2” rewrote its description, which is the text the model reads security
    • Tool “ethora-agents-create-v2” rewrote its description, which is the text the model reads security
    • Tool “ethora-agents-delete-v2” rewrote its description, which is the text the model reads security
    • Tool “ethora-agents-export-v2” rewrote its description, which is the text the model reads security
    • Tool “ethora-agents-get-v2” rewrote its description, which is the text the model reads security
    • Tool “ethora-agents-import-v2” rewrote its description, which is the text the model reads security
    • Tool “ethora-agents-update-v2” rewrote its description, which is the text the model reads security
    • Tool “ethora-api-key-revoke” rewrote its description, which is the text the model reads security
    • Tool “ethora-app-create” rewrote its description, which is the text the model reads security
    • Tool “ethora-app-create-chat” rewrote its description, which is the text the model reads security
    • Tool “ethora-app-delete” rewrote its description, which is the text the model reads security
    • Tool “ethora-app-delete-chat” rewrote its description, which is the text the model reads security
    • Tool “ethora-app-export-v2” rewrote its description, which is the text the model reads security
    • Tool “ethora-app-get-default-rooms-with-app-id” rewrote its description, which is the text the model reads security
    • Tool “ethora-app-import-v2” rewrote its description, which is the text the model reads security
    • Tool “ethora-app-list” rewrote its description, which is the text the model reads security
    • Tool “ethora-app-tokens-revoke-v2” rewrote its description, which is the text the model reads security
    • Tool “ethora-app-tokens-rotate-v2” rewrote its description, which is the text the model reads security
    • Tool “ethora-app-update” rewrote its description, which is the text the model reads security
    • Tool “ethora-b2b-bot-enable” rewrote its description, which is the text the model reads security
    • Tool “ethora-bot-enable-v2” rewrote its description, which is the text the model reads security
    • Tool “ethora-bot-get-v2” rewrote its description, which is the text the model reads security
    • Tool “ethora-bot-instance-diag” rewrote its description, which is the text the model reads security
    • Tool “ethora-bot-instance-leave-chat” rewrote its description, which is the text the model reads security
    • Tool “ethora-bot-instance-status” rewrote its description, which is the text the model reads security
    • Tool “ethora-bot-instance-test-message” rewrote its description, which is the text the model reads security
    • Tool “ethora-bot-instances-list” rewrote its description, which is the text the model reads security
    • Tool “ethora-bot-update-v2” rewrote its description, which is the text the model reads security
    • Tool “ethora-bot-widget-v2” rewrote its description, which is the text the model reads security
    • Tool “ethora-chats-broadcast-job-v2” rewrote its description, which is the text the model reads security
    • Tool “ethora-chats-broadcast-v2” rewrote its description, which is the text the model reads security
    • Tool “ethora-chats-history-v2” rewrote its description, which is the text the model reads security
    • Tool “ethora-chats-message-v2” rewrote its description, which is the text the model reads security
    • Tool “ethora-files-delete-v2” rewrote its description, which is the text the model reads security
    • Tool “ethora-files-get-v2” rewrote its description, which is the text the model reads security
    • Tool “ethora-generate-chat-component-app-tsx” rewrote its description, which is the text the model reads security
    • Tool “ethora-messages-context-v2” rewrote its description, which is the text the model reads security
    • Tool “ethora-messages-search-v2” rewrote its description, which is the text the model reads security
    • Tool “ethora-run-recipe” rewrote its description, which is the text the model reads security
    • Tool “ethora-sources-docs-delete” rewrote its description, which is the text the model reads security
    • Tool “ethora-sources-docs-delete-v2” rewrote its description, which is the text the model reads security
    • Tool “ethora-sources-docs-list-v2” rewrote its description, which is the text the model reads security
    • Tool “ethora-sources-docs-tags-update-v2” rewrote its description, which is the text the model reads security
    • Tool “ethora-sources-docs-upload” rewrote its description, which is the text the model reads security
    • Tool “ethora-sources-docs-upload-v2” rewrote its description, which is the text the model reads security
    • Tool “ethora-sources-site-crawl-v2” rewrote its description, which is the text the model reads security
    • Tool “ethora-sources-site-crawl-v2-wait” rewrote its description, which is the text the model reads security
    • Tool “ethora-sources-site-delete-url-v2” rewrote its description, which is the text the model reads security
    • Tool “ethora-sources-site-delete-url-v2-batch” rewrote its description, which is the text the model reads security
    • Tool “ethora-sources-site-list-v2” rewrote its description, which is the text the model reads security
    • Tool “ethora-sources-site-reindex-v2” rewrote its description, which is the text the model reads security
    • Tool “ethora-sources-site-reindex-v2-wait” rewrote its description, which is the text the model reads security
    • Tool “ethora-sources-site-tags-update-v2” rewrote its description, which is the text the model reads security
    • Tool “ethora-unread-counts-v2” rewrote its description, which is the text the model reads security
    • Tool “ethora-users-batch-job-v2” rewrote its description, which is the text the model reads security
    • Tool “ethora-wait-broadcast-job-v2” rewrote its description, which is the text the model reads security
    • Tool “ethora-wait-users-batch-job-v2” rewrote its description, which is the text the model reads security
    • Tool “ethora-widget-embed-snippet” rewrote its description, which is the text the model reads security
    • Tool “ethora-agent-invite-to-chat” rewrote its description, which is the text the model reads security
    • Tool “ethora-agent-set-visibility” rewrote its description, which is the text the model reads security
    • Tool “ethora-agent-soul-append” rewrote its description, which is the text the model reads security
    • Tool “ethora-agent-soul-set” rewrote its description, which is the text the model reads security
    • Tool “ethora-agents-activate-v2” rewrote its description, which is the text the model reads security
    • Schema quality: 192 → 224 functional
    • Schema quality: 192 → 222 functional
    • “ethora-agents-import-v2” made “bundle” required, so existing callers break functional
    • Server version: 26.9.1 → 26.9.3 functional
    • New tool “ethora-feedback-submit” functional
    • New tool “ethora-app-credentials” functional
    • “ethora-agents-activate-v2” added an optional parameter “agentIdOrAddress” cosmetic
    • “ethora-agents-clone-v2” added an optional parameter “agentIdOrAddress” cosmetic
    • “ethora-agents-create-v2” added an optional parameter “flowsYaml” cosmetic
    • “ethora-agents-delete-v2” added an optional parameter “agentId” cosmetic
    • “ethora-agents-export-v2” added an optional parameter “agentId” cosmetic
    • “ethora-agents-get-v2” added an optional parameter “agentIdOrAddress” cosmetic
    • “ethora-agents-update-v2” added an optional parameter “agentIdOrAddress” cosmetic
    • “ethora-agents-update-v2” added an optional parameter “flowsYaml” cosmetic
    • “ethora-app-update” added an optional parameter “appTagline” cosmetic
    • “ethora-bot-instance-diag” added an optional parameter “agentId” cosmetic
    • “ethora-bot-instance-leave-chat” added an optional parameter “agentId” cosmetic
    • “ethora-bot-instance-test-message” added an optional parameter “agentId” cosmetic
    • “ethora-bot-instances-list” added an optional parameter “agentIdOrAddress” cosmetic
    • “ethora-agent-invite-to-chat” added an optional parameter “agentId” cosmetic
    • “ethora-agent-set-visibility” added an optional parameter “agentId” cosmetic
    • “ethora-agent-soul-append” added an optional parameter “agentId” cosmetic
    • “ethora-agent-soul-set” added an optional parameter “agentId” cosmetic
    • “ethora-agents-import-v2” reworded the description of “bundle” cosmetic
    • “ethora-app-update” reworded the description of “appDescription” cosmetic
    • “ethora-sources-site-crawl-v2-wait” reworded the description of “timeoutMs” cosmetic
    • “ethora-sources-site-reindex-v2-wait” reworded the description of “timeoutMs” cosmetic
    • “ethora-agents-activate-v2” made “agentId” optional cosmetic
    • “ethora-agents-clone-v2” made “agentId” optional cosmetic
    • “ethora-agents-delete-v2” made “agentIdOrAddress” optional cosmetic
    • “ethora-agents-export-v2” made “agentIdOrAddress” optional cosmetic
    • “ethora-agents-get-v2” made “agentId” optional cosmetic
    • “ethora-agents-update-v2” made “agentId” optional cosmetic
    • “ethora-bot-instance-diag” made “agentIdOrAddress” optional cosmetic
    • “ethora-bot-instance-leave-chat” made “agentIdOrAddress” optional cosmetic
    • “ethora-bot-instance-test-message” made “agentIdOrAddress” optional cosmetic
    • “ethora-agent-invite-to-chat” made “agentIdOrAddress” optional cosmetic
    • “ethora-agent-set-visibility” made “agentIdOrAddress” optional cosmetic
    • “ethora-agent-soul-append” made “agentIdOrAddress” optional cosmetic
    • “ethora-agent-soul-set” made “agentIdOrAddress” optional cosmetic
  • 16 Sept 26 0
    • Stability: unverified → 0.03 functional
  • 15 Sept 26 66

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 20 Sept 2026 · Probed https://mcp.chat.ethora.com/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_256_GCM_SHA384 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=mcp.chat.ethora.com CN=YE2,O=Let's Encrypt,C=US 15 Sept 2026 14 Dec 2026 ECDSA 256 ECDSA-SHA384 618f0ebd601f360fb42066d97d6b7a7f882
SANs: mcp.chat.ethora.com
CN=YE2,O=Let's Encrypt,C=US (CA) CN=Root YE,O=ISRG,C=US 3 Sept 2025 2 Sept 2028 ECDSA 384 ECDSA-SHA384 4df3b15dd6c0784c507cd37b58e6f115
CN=Root YE,O=ISRG,C=US (CA) CN=ISRG Root X2,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 ECDSA 384 ECDSA-SHA384 872165fc34b6e5fba8add5b3705fb53a
CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) CN=ISRG Root X1,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 ECDSA 384 SHA256-RSA 6c8f1dc727c7117f7baf853ac980f9cd

Background: What to check on a remote MCP endpoint →

DNSSEC insecure

Validation of mcp.chat.ethora.com. Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
com. present 19718 13 Verified
ethora.com. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200
Header Value
strict-transport-security max-age=31536000; includeSubDomains
x-content-type-options nosniff

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://mcp.chat.ethora.com/mcp Verified 200
http (plaintext) http://mcp.chat.ethora.com/mcp HTTPS enforced 301 https://mcp.chat.ethora.com/mcp
MCP tools · 91 exposed · ~20,641 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
ethora-agent-invite-to-chat ~277

Invite an Agent into a chat room. Multiple agents can coexist in the same room — call this tool once per agent and they will all appear as members able to converse. Lazily creates a per-App BotInstance (an Ethora user with isBot:true) if one does not already exist for (agent, app). Spawns the XMPP client live; no ai-service restart required. For the full multi-agent recipe see the `ethora-agents-quickstart` prompt. Requires: an agent (`ethora-agents-create-v2`) and a room (`ethora-app-create-chat`) in the selected app.

NameTypeReqDescription
agentIdstringAlias for `agentIdOrAddress` - either name is accepted, pass whichever you have.
agentIdOrAddressstringEither Mongo _id (24 hex chars) or EOA-style address.
appIdstringRequired in B2B mode unless already selected via ethora-app-select.
chatIdstringMongo Chat _id (preferred when invoking from admin).
chatJidstringRoom JID `${appId}_${chatId}` (optionally with `@conference.<host>`), exactly the `jid` returned by `ethora-app-create-chat`. Preferred over `chatId`.

No output schema declared.

No examples provided.

ethora-agent-set-visibility ~109

Set an Agent's visibility (private | unlisted | public). Public agents can be invited cross-app by anyone who knows the address. Requires: an agent id or address from `ethora-agents-list-v2` or `ethora-agents-create-v2`.

NameTypeReqDescription
agentIdstringAlias for `agentIdOrAddress` - either name is accepted, pass whichever you have.
agentIdOrAddressstring
visibilitystringyes

No output schema declared.

No examples provided.

ethora-agent-soul-append ~122

Append a fragment to an Agent's SOUL.MD (its evolving identity / private notes). Operator-driven; the Agent itself can also self-edit via the same endpoint when called by ai-service. Requires: an agent id or address from `ethora-agents-list-v2` or `ethora-agents-create-v2`.

NameTypeReqDescription
agentIdstringAlias for `agentIdOrAddress` - either name is accepted, pass whichever you have.
agentIdOrAddressstring
appendstringyes

No output schema declared.

No examples provided.

ethora-agent-soul-set ~116

Replace an Agent's SOUL.MD with the provided markdown. Operator-driven; alternative to -append. Requires: an agent id or address from `ethora-agents-list-v2` or `ethora-agents-create-v2`.

NameTypeReqDescription
agentIdstringAlias for `agentIdOrAddress` - either name is accepted, pass whichever you have.
agentIdOrAddressstring
soulMdstringyesReplace SOUL.MD contents. Pass empty string to clear.

No output schema declared.

No examples provided.

ethora-agents-activate-v2 ~397

Make an agent the app's ACTIVE widget bot: sets `App.defaultBotInstanceId` (and `botStatus: on`), which is what `POST /v2/widget/sessions` uses to decide who answers website visitors. Required before an embedded widget can answer on an API-created app. Preconditions: the agent was invited into a room of this app with `ethora-agent-invite-to-chat` (that creates its bot instance). Works in user auth (app update route); falls back to the app-token `/v2/agents/:id/activate` route when an appToken is stored. Requires: an agent already invited into a room of the selected app (`ethora-agents-create-v2` -> `ethora-app-create-chat` -> `ethora-agent-invite-to-chat`); the invite creates the bot instance this tool binds as the app's default responder. Auth: user session (owner of the app). Errors: 404 no bot instance for this agent in the app (invite first); 403 not the app owner. Related: `ethora-widget-embed-snippet` next, `ethora-bot-instances-list` to inspect.

NameTypeReqDescription
agentIdstringId (or address) of the agent to activate. Get it from `ethora-agents-list-v2` / `ethora-agents-create-v2`.
agentIdOrAddressstringAlias for `agentId` - either name is accepted, pass whichever you have.
appIdstringApp to activate the agent for. Defaults to the app from `ethora-app-select`.
chatJidstringRoom JID `${appId}_${chatId}` (with or without `@conference...`) that becomes the widget chat. Required for API-created apps; omit only for dashboard-created apps that already have an AI Widget chat…

No output schema declared.

No examples provided.

ethora-agents-clone-v2 ~264

Duplicate an existing saved agent into a new agent, optionally overriding its name/slug/summary (`POST /v2/agents/:agentId/clone`). The source agent is unchanged; the new clone becomes the session's current agent context. Requires: an agent id or address from `ethora-agents-list-v2` or `ethora-agents-create-v2`. Auth: app-token mode (after `ethora-app-select` + `ethora-auth-use-app`). Errors: 401/403 wrong auth; 404 source `agentId` not found; 422 overridden `slug` collides.

NameTypeReqDescription
agentIdstringId of the source agent to clone. Get it from `ethora-agents-list-v2`.
agentIdOrAddressstringAlias for `agentId` - either name is accepted, pass whichever you have.
namestringName for the clone. Omit to inherit the source agent's name.
slugstringURL-safe unique slug for the clone. Omit to let the server derive one; must not collide with an existing agent.
summarystringSummary for the clone. Omit to inherit the source agent's summary.

No output schema declared.

No examples provided.

ethora-agents-create-v2 ~911

Create a reusable AI agent (POST /v2/apps/:appId/agents). Works in user auth mode (the normal hosted mode) or B2B mode; app-token mode is not accepted by the backend. Each agent is a persona — name, avatar, system prompt, LLM config, plus response-gate settings (responseMode, cooldownSec) that control when it speaks in a room. For multi-agent scenarios (two or more personas conversing in one chat) create each one separately, then `ethora-agent-invite-to-chat` them into the same room. See the `ethora-agents-quickstart` prompt for the end-to-end recipe. Requires: a selected app (`ethora-app-select`) or an explicit `appId`; the agent is owned by that app.

NameTypeReqDescription
appIdstring24-char hex appId the agent belongs to (`POST /v2/apps/:appId/agents`). Defaults to the app selected with `ethora-app-select`. Pass it when you just created an app so the agent lands there rather tha…
botAvatarUrlstringURL of the avatar image shown next to bot messages.
botDisplayNamestringDisplay name used inside the chat UI. Defaults to `name`.
categoriesarrayFree-form category tags for agent directory listings.
cooldownSecintegerMinimum seconds between this agent's replies in a given room. Damped 2x for bot-to-bot. Set 0 for quick turn-taking in multi-agent scenarios.
flowsYamlstringDeterministic scripted conversation for this agent, as YAML. Drives the agent through a fixed sequence (opening menu, appointment request, intake questionnaire, survey) instead of leaving every turn…
greetingMessagestringOptional message the agent posts when it first joins a room.
isPublishedbooleanConvenience alias for setting visibility='public'.
isRAGbooleanEnable retrieval-augmented generation from indexed sources.
llmModelstringLLM model override (e.g. 'gpt-4o-mini').
llmProviderstringLLM provider override (e.g. 'openai'). Defaults to the app's configured provider.
namestringShort display name. For multi-agent scenarios, prefer single-word names (e.g. 'Hannibal', 'Varro') — the @-mention matcher uses the exact display name with word-boundary matching.
promptstringSystem prompt — the agent's persona, role, style of speech, and behaviour rules. For multi-agent scenarios, instruct the agent to end every message with an @-mention of who speaks next; that's how tu…
ragTagsarrayOptional RAG tag filter — restrict retrieval to sources matching these tags.
responseModestringWhen the agent decides to reply. 'always' = every room message; 'mentioned' = only when @-mentioned by display name or via /bot (recommended for multi-agent turn-taking); 'smart' = a mini LLM gate de…
responseProbabilitynumberIf responseMode='probability', odds (0-1) of replying to each message. Damped 0.6x for bot-to-bot messages.
slugstringURL-safe slug (auto-generated from name if omitted).
summarystringShort bio shown in agent lists.
triggerstringLegacy trigger field. Prefer the newer `responseMode` for new agents.
visibilitystring'private' (only invitable inside the owning app) or 'public' (cross-app invitable).

No output schema declared.

No examples provided.

ethora-agents-delete-v2 ~131

Delete an Agent (DELETE /v2/agents/:idOrAddress). Destructive — removes the saved Agent and its BotInstances. Gated behind ETHORA_MCP_ENABLE_DANGEROUS_TOOLS. Requires: an agent id or address from `ethora-agents-list-v2` or `ethora-agents-create-v2`.

NameTypeReqDescription
agentIdstringAlias for `agentIdOrAddress` - either name is accepted, pass whichever you have.
agentIdOrAddressstringMongo _id (24 hex chars) or EOA-style address.

No output schema declared.

No examples provided.

ethora-agents-export-v2 ~145

Export an Agent as a portable bundle (GET /v2/agents/:idOrAddress/export). format=json returns the bundle object directly; feed it back to `ethora-agents-import-v2` to recreate the Agent in another App/tenant. Requires: an agent id or address from `ethora-agents-list-v2` or `ethora-agents-create-v2`.

NameTypeReqDescription
agentIdstringAlias for `agentIdOrAddress` - either name is accepted, pass whichever you have.
agentIdOrAddressstring
formatstringDefaults to json. Prefer json for MCP round-trips.

No output schema declared.

No examples provided.

ethora-agents-get-v2 ~201

Fetch one reusable saved agent's full config by id (`GET /v2/agents/:agentId`) — prompt, LLM, RAG settings, visibility. Also sets this agent as the session's current agent context (no server-side change). Requires: an agent id or address from `ethora-agents-list-v2` or `ethora-agents-create-v2`. Auth: app-token mode (after `ethora-app-select` + `ethora-auth-use-app`). Errors: 401/403 wrong auth; 404 `agentId` not an agent of the current app. Related: get ids from `ethora-agents-list-v2`.

NameTypeReqDescription
agentIdstringId of the saved agent to fetch. Get it from `ethora-agents-list-v2`.
agentIdOrAddressstringAlias for `agentId` - either name is accepted, pass whichever you have.

No output schema declared.

No examples provided.

ethora-agents-import-v2 ~129

Import an Agent from a bundle produced by `ethora-agents-export-v2` (POST /v2/agents/import, application/json body IS the bundle). Optionally scope the new Agent to an owning App via ownerAppId. Requires: a bundle produced by `ethora-agents-export-v2` with format json.

NameTypeReqDescription
bundleobjectyesThe bundle object returned by `ethora-agents-export-v2` with format=json. Pass it through unchanged.
ownerAppIdstringOwning App for the imported Agent (defaults server-side).

No output schema declared.

No examples provided.

ethora-agents-list-v2 ~173

List the reusable saved agents of an app (`GET /v2/apps/:appId/agents`, or `GET /v2/agents` for the token's own app) — a saved agent is a reusable bot definition. Returns an array of agents with ids, names, and config. Auth: app-token mode (after `ethora-app-select` + `ethora-auth-use-app`). Errors: 401/403 not in app-token mode or invalid appToken; empty list if the app has no saved agents.

NameTypeReqDescription
appIdstring24-char hex appId whose agents to list (`GET /v2/apps/:appId/agents`). Defaults to the app selected with `ethora-app-select`; without either, lists the agents of the token's own app.

No output schema declared.

No examples provided.

ethora-agents-update-v2 ~709

Update a saved AI agent (PUT /v2/agents/:agentId). All fields are optional — only what you pass is updated. Common uses: tune the system `prompt` after a test run, switch `responseMode` to control turn-taking in multi-agent rooms, or adjust `cooldownSec`. See `ethora-agents-quickstart` prompt for the end-to-end recipe. Requires: an agent id or address from `ethora-agents-list-v2` or `ethora-agents-create-v2`.

NameTypeReqDescription
agentIdstringMongo _id (24 hex chars) of the agent to update.
agentIdOrAddressstringAlias for `agentId` - either name is accepted, pass whichever you have.
botAvatarUrlstringAvatar image URL.
botDisplayNamestringDisplay name in chat UI.
categoriesarrayCategory tags for directory listings.
cooldownSecintegerMinimum seconds between this agent's replies in a given room. Damped 2x for bot-to-bot. Set 0 for quick turn-taking.
flowsYamlstringDeterministic scripted conversation for this agent, as YAML. Drives the agent through a fixed sequence (opening menu, appointment request, intake questionnaire, survey) instead of leaving every turn…
greetingMessagestringMessage the agent posts when it first joins a new room.
isPublishedbooleanConvenience alias for visibility='public'.
isRAGbooleanEnable RAG retrieval.
llmModelstringLLM model override.
llmProviderstringLLM provider override.
namestringNew display name. For multi-agent scenarios prefer single-word names — the @-mention matcher uses exact display-name match with word-boundary.
promptstringUpdated system prompt (persona + behaviour). For multi-agent rooms instruct the agent to end every message with an @-mention of the next speaker — that's how turn-handoff works through the response g…
ragTagsarrayRAG tag filter.
responseModestringWhen the agent replies. 'always' = every message; 'mentioned' = only @-mention or /bot (best for multi-agent turn-taking); 'smart' = mini-LLM decides; 'probability' = coin-flip using `responseProbabi…
responseProbabilitynumberIf responseMode='probability', odds (0-1) of replying. Damped 0.6x for bot-to-bot.
slugstringURL-safe slug.
summarystringShort bio.
triggerstringLegacy trigger field. Prefer `responseMode`.
visibilitystring'private' or 'public' (cross-app invitable).

No output schema declared.

No examples provided.

ethora-api-key-create ~143

Mint a long-lived, revocable API key for the currently logged-in user. The key is a user token: send it as `Authorization: Bearer <key>` to the hosted MCP endpoint (or set it in the stdio client) to skip `ethora-user-login`. Shown once. Auth: user auth (logged in). Errors: 401 not logged in; 404 on backends without API key support.

NameTypeReqDescription
namestringLabel to recognise the key later (e.g. `ci-runner`, `claude-desktop`).
ttlDaysintegerLifetime in days. Server default applies when omitted.

No output schema declared.

No examples provided.

ethora-api-key-list ~39

List the current user's API keys (id, name, createdAt, expiresAt). Token values are never returned. Auth: user auth.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

ethora-api-key-revoke ~92

Revoke one of the current user's API keys by id. Clients using that key stop working immediately. Requires: a key id from `ethora-api-key-list` or `ethora-api-key-create`. Auth: user auth. Errors: 404 unknown id.

NameTypeReqDescription
idstringyesAPI key id as returned by `ethora-api-key-create` / `ethora-api-key-list`.

No output schema declared.

No examples provided.

ethora-app-create ~184

Create a new Ethora app (tenant) owned by the currently logged-in user. Allocates a fresh 24-char hex `appId` and sets the caller as owner; counts against the owner's plan limit. Returns the new app object including `appId`. The returned app has its credential fields redacted; call `ethora-app-credentials { appId, confirm: true }` when a snippet needs the appToken. Auth: user-auth mode, active session (`ethora-user-login` first). Errors: 401 not logged in; 402/403 plan limit reached; 422 invalid `displayName`. Related: server-side provisioning uses `ethora-b2b-app-create`.

NameTypeReqDescription
displayNamestringyesHuman-readable app name shown to users in the app picker and on the public landing page. Not required to be unique across accounts.

No output schema declared.

No examples provided.

ethora-app-create-chat ~264

Create a new chat room (MUC room) inside an app the caller owns. Every room created this way is listed in the app's rooms (`defaultRooms`); `pinned: true` additionally makes new users auto-join it (existing users are not added), `pinned: false` (default) keeps it opt-in. Returns the new room object including its JID. Requires: a selected app (`ethora-app-select`) or an explicit `appId`. Auth: user-auth mode, active session; the caller must own the app. Errors: 401 not logged in; 403 not owner; 404 unknown `appId`; 422 invalid `title`.

NameTypeReqDescription
appIdstring24-char hex ObjectId of the app to create the chat room in. Optional — defaults to the app most recently passed to `ethora-app-select`.
pinnedbooleanIf `true`, the room is added to the app's default rooms list — every new user of the app auto-joins it. If `false`, the room exists but users must be added explicitly.
titlestringyesDisplay name for the new chat room. Visible to all members; not required to be unique within the app.

No output schema declared.

No examples provided.

ethora-app-credentials ~233

Reveal the appToken of an app the caller owns, for a chat-component snippet or a widget config. Every other tool redacts appToken, appSecret and tenantSecret from its results because tool output enters the model's context and client logs; this tool returns exactly { appId, appToken, note } and nothing else. The App Secret is never returned over MCP: it is shown only in the web dashboard (app settings, API tab), and backend integrations should use revocable server tokens from that tab instead of the secret. Requires: an app you own (`ethora-app-create` or `ethora-app-list`) and `confirm: true`. Auth: user auth (app owner). Errors: 401 not logged in; 403 not the owner; 404 unknown `appId`; validation error unless `confirm` is `true`.

NameTypeReqDescription
appIdstring24-char hex app id. Defaults to the app selected with `ethora-app-select`.
confirmbooleanyesMust be `true`: acknowledges that the token is a credential and will appear in this conversation.

No output schema declared.

No examples provided.

ethora-app-delete ~182

Permanently delete an Ethora app the caller owns — removes its chat rooms, files, indexed RAG sources, and bot config; end users are immediately signed out. Irreversible; gated behind ETHORA_MCP_ENABLE_DANGEROUS_TOOLS=true. Requires: an `appId` from `ethora-app-list` or `ethora-app-create`. Auth: user-auth mode, active session; the caller must own the app. Errors: 401 not logged in; 403 not owner; 404 unknown `appId`. Related: to just deactivate the bot use `ethora-app-update` with `botStatus: "off"`.

NameTypeReqDescription
appIdstringyes24-char hex MongoDB ObjectId of the app to delete. Obtain from `ethora-app-list` or the response of `ethora-app-create`.

No output schema declared.

No examples provided.

ethora-app-delete-chat ~217

Permanently delete a chat room from an app the caller owns — removes the MUC room, its message archive, and all member affiliations. Irreversible; gated behind ETHORA_MCP_ENABLE_DANGEROUS_TOOLS=true. Requires: a room from `ethora-app-get-default-rooms` or `ethora-app-create-chat`. Auth: user-auth mode, active session; the caller must own the app. Errors: 401 not logged in; 403 not owner; 404 `chatJid` not a room in the app.

NameTypeReqDescription
appIdstring24-char hex ObjectId of the app the chat room belongs to. Optional — defaults to the app most recently passed to `ethora-app-select`.
chatJidstringyesRoom JID (XMPP address) of the chat to delete, e.g. `<roomId>@conference.<host>`. Obtain from `ethora-app-get-default-rooms` or the response of `ethora-app-create-chat`.

No output schema declared.

No examples provided.

ethora-app-export-v2 ~146

Export an App as a portable bundle (GET /v2/apps/:appId/export). format=json returns the bundle object directly. Use `include` to select sections (e.g. 'chats,users,sources,botInstances'). Feed the result to `ethora-app-import-v2`. Requires: a selected app (`ethora-app-select`) or an explicit `appId`.

NameTypeReqDescription
appIdstringRequired in B2B mode unless already selected via ethora-app-select.
formatstring
includestringComma-separated sections to include, e.g. 'chats,users,sources,botInstances'.

No output schema declared.

No examples provided.

ethora-app-get-default-rooms ~106

List the default chat rooms (MUC rooms) of the currently selected Ethora app — every new user auto-joins these. Returns rooms with their JIDs and titles. Auth: user-auth mode, active session; operates against the app set via `ethora-app-select`. Errors: 400 no app currently selected; 401 not logged in. Related: `ethora-app-get-default-rooms-with-app-id` to pass `appId` explicitly.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

ethora-app-get-default-rooms-with-app-id ~163

List the default chat rooms of a specific Ethora app, passed via `appId` (or the currently selected app). Returns rooms with their JIDs and titles. Requires: an `appId` from `ethora-app-list` or `ethora-app-create`. Auth: user-auth mode, active session; the caller needs read access (ownership or room membership). Errors: 400 no `appId` and none selected; 401 not logged in; 403 no read access; 404 unknown `appId`.

NameTypeReqDescription
appIdstring24-char hex ObjectId of the app whose default rooms you want to read. Optional — defaults to the app most recently passed to `ethora-app-select`.

No output schema declared.

No examples provided.

ethora-app-import-v2 ~107

Import an App from a bundle produced by `ethora-app-export-v2` (POST /v2/apps/import, application/json body IS the bundle). B2B / tenant-actor auth. domainNameOverride renames the imported App's domain. Requires: a bundle produced by `ethora-app-export-v2`.

NameTypeReqDescription
bundleThe exported bundle object (the json export output).
domainNameOverridestringRename the imported App's domainName.

No output schema declared.

No examples provided.

ethora-app-list ~153

List all Ethora apps (tenants) owned by the currently logged-in user. Returns an array with `appId` (24-char hex), `displayName`, `domainName`, ownership and bot-status metadata. Credential fields (appSecret, tenantSecret, appToken, passwords) are redacted in the result; call `ethora-app-credentials { appId, confirm: true }` to reveal an app's appToken. Auth: user-auth mode, active session (`ethora-user-login` first). Errors: 401 not logged in; empty list if the user owns no apps. Related: feed `appId` into `ethora-app-update` / `ethora-app-select`.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

ethora-app-select ~239

Set the current app context for this session so app-scoped tools can omit their `appId` argument. Stores `currentAppId` and, if given, `appToken` (which defaults the auth mode to app-token unless `authMode` overrides). Auth: none required to set the context. Errors: effectively none — a non-existent `appId` is not validated here; the first app-scoped API call surfaces the 404. Related: pairs with `ethora-auth-use-app`.

NameTypeReqDescription
appIdstringyes24-char hex Ethora appId to set as the current context. Get it from `ethora-app-list`, `ethora-app-create`, or a B2B create/provision response.
appTokenstringPer-app appToken to store alongside the appId. If provided, the active auth mode switches to app-token (unless `authMode` says otherwise). Secret.
authModestringAuth mode to keep after selecting the app. Omit to let the mode default to app-token when an `appToken` is given, or stay unchanged otherwise.

No output schema declared.

No examples provided.

ethora-app-tokens-create-v2 ~232

Mint a new app token for an app. The secret token value is returned exactly once and cannot be retrieved again — capture it immediately. Returns the new token including its one-time secret value and `tokenId`. Auth: B2B mode (`ethora-auth-use-b2b` + a configured `b2bToken`). Errors: 401/403 not in B2B mode; 400 no `appId` and none selected; 404 unknown `appId`. Related: manage with `ethora-app-tokens-list-v2` / `-rotate-v2` / `-revoke-v2`.

NameTypeReqDescription
appIdstring24-char hex appId to mint the token for. Optional — defaults to the app set via `ethora-app-select`.
labelstringHuman-readable label to identify this token later (e.g. `staging`, `ci`). Shown in `ethora-app-tokens-list-v2`.
timeoutMsintegerHTTP timeout for this request, in milliseconds. Default 10000.

No output schema declared.

No examples provided.

ethora-app-tokens-list-v2 ~164

List the app tokens issued for an app — metadata only (`tokenId`, label, created/rotated timestamps, status); the secret token values are never returned (only shown once at create/rotate time). Auth: B2B mode (`ethora-auth-use-b2b` + a configured `b2bToken`). Errors: 401/403 not in B2B mode; 400 no `appId` and none selected; 404 unknown `appId`.

NameTypeReqDescription
appIdstring24-char hex appId to list tokens for. Optional — defaults to the app set via `ethora-app-select`.
timeoutMsintegerHTTP timeout for this request, in milliseconds. Default 10000.

No output schema declared.

No examples provided.

ethora-app-tokens-revoke-v2 ~238

Permanently revoke an app token by `tokenId` — it stops working immediately; any client, SDK, or MCP session still using it gets auth failures. No replacement is issued. Requires: a token id from `ethora-app-tokens-list-v2`. Auth: B2B mode (`ethora-auth-use-b2b` + a configured `b2bToken`). Errors: 401/403 not in B2B mode; 400 no `appId` and none selected; 404 unknown `appId`. Related: get `tokenId` from `ethora-app-tokens-list-v2`; `ethora-app-tokens-rotate-v2` for revoke-and-replace.

NameTypeReqDescription
appIdstring24-char hex appId the token belongs to. Optional — defaults to the app set via `ethora-app-select`.
timeoutMsintegerHTTP timeout for this request, in milliseconds. Default 10000.
tokenIdstringyesId of the token to revoke. Get it from `ethora-app-tokens-list-v2`.

No output schema declared.

No examples provided.

ethora-app-tokens-rotate-v2 ~262

Rotate an app token: revoke an existing token and issue a replacement in one step. The old `tokenId` is revoked immediately — anything using it stops working at once. The new secret value is returned exactly once — capture it immediately. Requires: a token id from `ethora-app-tokens-list-v2`. Auth: B2B mode (`ethora-auth-use-b2b` + a configured `b2bToken`). Errors: 401/403 not in B2B mode; 400 no `appId` and none selected; 404 unknown `appId` or `tokenId`. Related: `ethora-app-tokens-revoke-v2` to revoke without a replacement.

NameTypeReqDescription
appIdstring24-char hex appId the token belongs to. Optional — defaults to the app set via `ethora-app-select`.
labelstringLabel for the replacement token. Omit to inherit the old token's label.
timeoutMsintegerHTTP timeout for this request, in milliseconds. Default 10000.
tokenIdstringyesId of the token to revoke and replace. Get it from `ethora-app-tokens-list-v2`.

No output schema declared.

No examples provided.

ethora-app-update ~373

Update mutable fields on an app the caller owns (displayName, domainName, appTagline, primaryColor, botStatus). Partial update — omitted fields are left unchanged. Requires: an `appId` from `ethora-app-list` or `ethora-app-create`. Auth: user-auth mode, active session; the caller must own the app. Errors: 401 not logged in; 403 not owner; 404 unknown `appId`; 422 validation (e.g. `domainName` taken, `primaryColor` not `#RRGGBB`).

NameTypeReqDescription
appDescriptionstringDeprecated alias for `appTagline`, kept so older callers keep working. Prefer `appTagline`.
appIdstring24-char hex ObjectId of the app to update. Optional — defaults to the app most recently passed to `ethora-app-select`.
appTaglinestringShort tagline shown on the public app landing page.
botStatusstring`on` enables the AI bot for new conversations (requires a configured prompt — see `ethora-bot-update-v2`); `off` disables it. Does not change the bot's configured prompt or sources.
displayNamestringNew human-readable app name. Visible in the app picker and on the public landing page.
domainNamestringSubdomain to host the web app at. Setting `abcd` makes the web app available at `abcd.ethora.com`. Must be unique across all Ethora apps; lower-case alphanumerics and dashes only.
primaryColorstringPrimary brand color in hex `#RRGGBB` format (e.g. `#F54927`). Used throughout the app UI.

No output schema declared.

No examples provided.

ethora-auth-use-app ~93

Switch this session's active auth mode to app-token, so subsequent app-scoped calls authenticate with the configured `appToken`. Auth: requires an `appToken` to already be configured (via `ethora-configure`, ETHORA_APP_TOKEN env, or `ethora-app-select`). Errors: returns an error if no `appToken` is configured. Related: use after `ethora-app-select`.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

ethora-auth-use-b2b ~135

Switch this session's active auth mode to B2B, so subsequent calls authenticate as a tenant actor via the `x-custom-token` header. Auth: requires a `b2bToken` (JWT with `type=server`) to already be configured (via `ethora-configure` or ETHORA_B2B_TOKEN env). Errors: returns an error if no `b2bToken` is configured. Related: server-side automation — pairs with `ethora-b2b-app-create`, `ethora-users-batch-create-v2`, `ethora-app-tokens-*-v2`.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

ethora-auth-use-user ~94

Switch this session's active auth mode to user-session, so subsequent calls authenticate as a logged-in Ethora user. Auth: the switch needs nothing, but user-auth tools only work once `ethora-user-login` stores a user token (login also needs a configured `appJwt`). Errors: none on the switch; downstream tools return 401 until login succeeds. Related: follow with `ethora-user-login`.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

ethora-b2b-app-bootstrap-ai ~496

One-call B2B orchestrator: create an app, set it as the current context, index RAG sources, then configure and enable its AI bot. Source ingest and bot activation are best-effort (the app is still created if a later step fails); crawl/embedding continues asynchronously after this returns. Returns a per-step log including the new `appId`. Auth: B2B mode (`ethora-auth-use-b2b` + a configured `b2bToken`); internally switches to app-token mode for source-ingest steps. Errors: aborts with the partial step log if app creation fails; previous auth mode restored best-effort. Related: rooms+tokens variant is `ethora-b2b-app-provision`.

NameTypeReqDescription
agentDisplayNamestringPhase 1: create a new Agent with this display name as part of bootstrap.
agentPromptstringPhase 1: persona/instructions for the newly-created Agent.
agentVisibilitystringPhase 1: visibility for the newly-created Agent.
botTriggerstringOptional bot trigger (e.g. '/bot' or 'any_message')
crawlUrlstringOptional website URL to crawl and index into the new app's RAG sources.
displayNamestringyesDisplay name for the new app.
docsarrayOptional docs to ingest (base64)
enableBotbooleanIf true, enables botStatus=on (best-effort AI service activation)
followLinkbooleanFor `crawlUrl`: also follow in-domain links (default true). Can ingest many pages.
inviteToDefaultRoombooleanPhase 1: if true (default), invite the newly-created Agent into the App's first default room.
llmModelstringOptional generation model for the default AI bot (example: 'gpt-4o-mini').
llmProviderstringOptional generation provider for the default AI bot (example: 'openai' or 'openai-compatible').
savedAgentIdstringOptional saved agent to bind as the active bot for the new app.
setAsCurrentbooleanIf true (default), set the new app as the session's current app and switch to app-token auth so follow-up tools can omit appId.

No output schema declared.

No examples provided.

ethora-b2b-app-create ~180

Create a new Ethora app (tenant) server-side using B2B auth — the partner/integrator equivalent of `ethora-app-create`. Allocates a fresh 24-char hex `appId`; does not create tokens, rooms, or a bot. Returns the new app object including `appId`. Auth: B2B mode (`ethora-auth-use-b2b` + a configured `b2bToken`). Errors: 401/403 not in B2B mode or invalid `b2bToken`; 422 invalid `displayName`. Related: all-in-one path is `ethora-b2b-app-bootstrap-ai` / `ethora-b2b-app-provision`.

NameTypeReqDescription
displayNamestringyesHuman-readable app name shown to users in the app picker and on the public landing page.

No output schema declared.

No examples provided.

ethora-b2b-app-provision ~401

One-call B2B orchestrator: create an app, mint one or more app tokens, provision default chat rooms, then configure and enable its AI bot. Later-step failures don't undo earlier steps. Returns a per-step log including `appId` and the created tokens (returned once — capture them). Auth: B2B mode (`ethora-auth-use-b2b` + a configured `b2bToken`). Errors: aborts with the partial step log if app creation fails; previous auth mode restored best-effort. Related: `ethora-b2b-app-bootstrap-ai` does sources+bot but not tokens/rooms.

NameTypeReqDescription
botGreetingMessagestringGreeting message the bot posts when a conversation starts.
botPromptstringSystem prompt for the new app's bot.
botTriggerstringBot trigger: `any_message` (every message) or `/bot` (only /bot-prefixed messages).
displayNamestringyesDisplay name for the new app.
enableBotbooleanIf true, enable the new app's bot using the first minted app token.
llmModelstringLLM model id for the bot, e.g. `gpt-4o-mini`. Must be available for the chosen provider.
llmProviderstringLLM provider for the bot, e.g. `openai` or `openai-compatible`. Must be enabled in your Ethora backend.
roomsarrayDefault chat rooms to create in the new app. Up to 20.
savedAgentIdstringOptional id of an existing saved agent to bind as the new app's active bot, instead of setting prompt fields by hand.
tokenLabelsarrayLabels for the app tokens to mint, one token per label. Default: ['default']. 1–5 tokens.

No output schema declared.

No examples provided.

ethora-b2b-bot-enable ~259

Enable the LEGACY per-app aiBot (B2B auth). NOTE: apps created via the API/B2B no longer auto-provision a legacy aiBot, so this returns 422 BOT_NOT_INITIALIZED on a clean app. The forward path for B2B AI is the Agents API — use `ethora-b2b-app-bootstrap-ai` or `ethora-agents-create-v2` + `ethora-agent-invite-to-chat`. This tool remains valid for apps that already have a legacy aiBot (e.g. admin-panel apps created with a default chat). Requires: an app with a legacy per-app aiBot (dashboard-created). API-created apps have none: use `ethora-agents-create-v2` -> `ethora-agent-invite-to-chat` -> `ethora-agents-activate-v2` instead.

NameTypeReqDescription
appIdstring24-char hex appId whose bot to enable. Optional — defaults to the app set via `ethora-app-select`.
botTriggerstringWhen the bot responds: `/bot` (only messages starting with /bot) or `any_message` (every message). Omit to leave the existing trigger unchanged.

No output schema declared.

No examples provided.

ethora-bot-disable-v2 ~199

Turn the AI bot off for an app (sets bot `status: "off"`) — it stops responding. The configured prompt/LLM/RAG and any activated agent are preserved, so re-enabling restores the same behavior. Requires: an app with a legacy per-app aiBot (dashboard-created). API-created apps have none: use `ethora-agents-create-v2` -> `ethora-agent-invite-to-chat` -> `ethora-agents-activate-v2` instead. Auth: app-token mode OR B2B mode with an explicit `appId`. Errors: 401/403 wrong auth; 404 unknown `appId`. Related: `ethora-bot-enable-v2` to turn back on.

NameTypeReqDescription
appIdstring24-char hex appId. Required in B2B mode unless already set via `ethora-app-select`; ignored in app-token mode.

No output schema declared.

No examples provided.

ethora-bot-enable-v2 ~237

Enable the LEGACY per-app aiBot using app-token or B2B auth. NOTE: clean API/B2B-created apps have no legacy aiBot, so this returns 422 BOT_NOT_INITIALIZED there — use the Agents API (`ethora-agents-create-v2` + `ethora-agent-invite-to-chat`, or `ethora-b2b-app-bootstrap-ai`) for B2B AI. Valid for apps that already have a legacy aiBot. Requires: an app with a legacy per-app aiBot (dashboard-created). API-created apps have none: use `ethora-agents-create-v2` -> `ethora-agent-invite-to-chat` -> `ethora-agents-activate-v2` instead.

NameTypeReqDescription
appIdstring24-char hex appId. Required in B2B mode unless already set via `ethora-app-select`; ignored in app-token mode.
triggerstringWhen the bot responds: `any_message` (every message) or `/bot` (only /bot-prefixed messages). Omit to leave the existing trigger unchanged.

No output schema declared.

No examples provided.

ethora-bot-get-v2 ~186

Read the current AI bot configuration for an app: status, trigger, prompt, greeting, LLM provider/model, RAG settings, widget config. Requires: an app with a legacy per-app aiBot (dashboard-created). API-created apps have none: use `ethora-agents-create-v2` -> `ethora-agent-invite-to-chat` -> `ethora-agents-activate-v2` instead. Auth: app-token mode OR B2B mode with an explicit `appId`. Errors: 401/403 wrong auth; 404 unknown `appId`. Related: change config with `ethora-bot-update-v2`.

NameTypeReqDescription
appIdstring24-char hex appId. Required in B2B mode unless already set via `ethora-app-select`; ignored in app-token mode (the token determines the app).

No output schema declared.

No examples provided.

ethora-bot-instance-diag ~133

Diagnose a specific BotInstance for an Agent (GET /v2/agents/:idOrAddress/bot-instances/:botInstanceId/diag). Returns live XMPP/ai-service status and recent activity for troubleshooting. Requires: a bot instance id from `ethora-bot-instances-list` (instances are created by `ethora-agent-invite-to-chat`).

NameTypeReqDescription
agentIdstringAlias for `agentIdOrAddress` - either name is accepted, pass whichever you have.
agentIdOrAddressstring
botInstanceIdstringyes

No output schema declared.

No examples provided.

ethora-bot-instance-leave-chat ~149

Remove a BotInstance from a chat room (POST /v2/agents/:idOrAddress/bot-instances/:botInstanceId/leave-chat). The inverse of `ethora-agent-invite-to-chat`. Requires: a bot instance id from `ethora-bot-instances-list` (instances are created by `ethora-agent-invite-to-chat`).

NameTypeReqDescription
agentIdstringAlias for `agentIdOrAddress` - either name is accepted, pass whichever you have.
agentIdOrAddressstring
botInstanceIdstringyes
chatJidstringyesFully-qualified room JID to leave.

No output schema declared.

No examples provided.

ethora-bot-instance-status ~86

Turn a specific BotInstance on or off. Off detaches it from XMPP; on re-spawns the XMPP client live. Requires: a bot instance id from `ethora-bot-instances-list` (instances are created by `ethora-agent-invite-to-chat`).

NameTypeReqDescription
botInstanceIdstringyes
statusstringyes

No output schema declared.

No examples provided.

ethora-bot-instance-test-message ~184

Send a test message from a BotInstance (POST /v2/agents/:idOrAddress/bot-instances/:botInstanceId/test-message). Omit roomJid to fan out to every room the BotInstance is in. Requires the ai-service to be running. Requires: a bot instance id from `ethora-bot-instances-list` (instances are created by `ethora-agent-invite-to-chat`).

NameTypeReqDescription
agentIdstringAlias for `agentIdOrAddress` - either name is accepted, pass whichever you have.
agentIdOrAddressstring
botInstanceIdstringyes
roomJidstringTarget a specific room JID; omit to broadcast to all the bot's rooms.
textstringMessage body. Optional/empty is allowed.

No output schema declared.

No examples provided.

ethora-bot-instances-list ~101

List BotInstances. Filter by appId (caller's App by default) and/or agentId. Requires: at least one invited agent in the app (`ethora-agent-invite-to-chat`); otherwise the list is empty.

NameTypeReqDescription
agentIdstring
agentIdOrAddressstringAlias for `agentId` - either name is accepted, pass whichever you have.
appIdstring

No output schema declared.

No examples provided.

ethora-bot-update-v2 ~675

Configure the AI bot for an app — prompt, LLM, trigger, greeting, RAG behavior, identity, and public widget settings. Partial update — omitted fields are left unchanged. `status: "on"` activates the bot (best-effort; needs a prompt + LLM and a backend AI service). Requires: an app with a legacy per-app aiBot (dashboard-created). API-created apps have none: use `ethora-agents-create-v2` -> `ethora-agent-invite-to-chat` -> `ethora-agents-activate-v2` instead. Auth: app-token mode OR B2B mode with an explicit `appId`. Errors: 401/403 wrong auth; 404 unknown `appId`; 422 validation (e.g. an `llmProvider`/`llmModel` not enabled). Related: `ethora-bot-get-v2`, `ethora-agents-activate-v2`.

NameTypeReqDescription
appIdstring24-char hex appId. Required in B2B mode unless already set via `ethora-app-select`; ignored in app-token mode.
botAvatarUrlstringPublic URL of the bot's avatar image.
botDisplayNamestringBot's display name shown in chat.
botFirstNamestringBot's first name in its user profile.
botLastNamestringBot's last name in its user profile.
chatIdstringRestrict the bot to a single chat by id. Omit to apply app-wide.
greetingMessagestringMessage the bot posts when a conversation starts.
isRAGbooleanIf true, the bot retrieves from the app's indexed RAG sources (see the `ethora-sources-*` tools) when answering.
llmModelstringLLM model id, e.g. `gpt-4o-mini`. Must be available for the chosen `llmProvider`.
llmProviderstringLLM provider, e.g. `openai` or `openai-compatible`. Must be enabled in your Ethora backend's AI service config.
promptstringSystem prompt that defines the bot's persona and behavior.
ragTagsarrayRestrict RAG retrieval to sources tagged with these tags (see `ethora-sources-site-tags-update-v2` / `ethora-sources-docs-tags-update-v2`).
savedAgentIdstringId of a saved agent whose config should back this bot. Alternative to setting prompt/LLM/RAG fields individually.
statusstring`on` activates the bot, `off` deactivates it. Omit to leave the current status unchanged.
triggerstringWhen the bot responds: `any_message` (replies to every message) or `/bot` (only messages starting with /bot).
widgetPublicEnabledbooleanIf true, expose the bot through a public embeddable chat widget.
widgetPublicUrlstringPublic URL for the embeddable widget. Usually read via `ethora-bot-widget-v2` rather than set here.

No output schema declared.

No examples provided.

ethora-bot-widget-v2 ~201

LEGACY: read the per-app bot widget config (`GET /v2/bot/widget`); only apps that already have a legacy aiBot have one, API-created apps get 422. For the embeddable AI chat widget use `ethora-widget-embed-snippet` instead — the widget config and public widget URL metadata needed to embed the bot on a website. Requires: an app with a legacy per-app aiBot (dashboard-created). API-created apps have none: use `ethora-agents-create-v2` -> `ethora-agent-invite-to-chat` -> `ethora-agents-activate-v2` instead. Auth: app-token mode (after `ethora-app-select` + `ethora-auth-use-app`). Errors: 401/403 not in app-token mode or invalid appToken. Related: enable/disable via `widgetPublicEnabled` in `ethora-bot-update-v2`.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

ethora-chats-broadcast-job-v2 ~198

Fetch the current status and per-room results of a broadcast job by `jobId` (one-shot, no polling). Returns the job object with its `state` (pending/running/completed/failed). Requires: a selected app with at least one room (`ethora-app-create-chat`). Auth: app-token mode OR B2B mode with an explicit `appId` — must match the auth used to enqueue the job. Errors: 401/403 wrong auth; 404 unknown `jobId`. Related: `ethora-wait-broadcast-job-v2` for a blocking wait.

NameTypeReqDescription
appIdstring24-char hex appId the job belongs to. Required in B2B mode unless already set via `ethora-app-select`; ignored in app-token mode.
jobIdstringyesJob id returned by `ethora-chats-broadcast-v2`.

No output schema declared.

No examples provided.

Common questions

What is the io.github.dappros/ethora-mcp-server server?

io.github.dappros/ethora-mcp-server is listed in the public MCP registry as io.github.dappros/ethora-mcp-server. Ethora chat platform MCP: apps, users, rooms, AI agents, chat widgets. Hosted or stdio. This page covers its hosted endpoint (https://mcp.chat.ethora.com/mcp).

Is the io.github.dappros/ethora-mcp-server server safe to use?

io.github.dappros/ethora-mcp-server scores 67 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the io.github.dappros/ethora-mcp-server server expose?

io.github.dappros/ethora-mcp-server exposes 91 tools: ethora-configure, ethora-status, ethora-help, ethora-run-recipe, ethora-doctor, and 86 more. Their descriptions and schemas cost roughly 20,641 tokens of context every time the server is loaded.

Does the io.github.dappros/ethora-mcp-server server require authentication?

No. We connected to io.github.dappros/ethora-mcp-server without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

Is the io.github.dappros/ethora-mcp-server server still maintained?

io.github.dappros/ethora-mcp-server is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.