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.

raccha.ai

REMOTE · RACCHA.AI · SCANNED SEP 20

MCP-first toolbox for agents: KV storage, auth, queue, and utility tools. Free in early access.

Available components

0 this week 68 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 Security51
Transport & Reachability100
Schema Quality & AI Usability72
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 7509 tokens (~127/item across 59 items; 59 tools + 0 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 Management62
  • Stability check failed: schema churn in the 30 days we've observed: 0 tool removals, 41 breaking changes, 0 auth/transport breaks, 5 additions. See how to fix → Fail
Tool Coverage87
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 61% of tool parameters carry a description.Partial
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 7 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "delete_role" implies "delete" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
  • An AI judge read all 60 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
Install

How do I install the raccha.ai MCP server?

raccha.ai is a hosted endpoint at https://raccha.ai/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 · raccha.ai

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

  • 13 Sept 26 +1

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

  • 11 Sept 26 +1

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

  • 9 Sept 26 +1

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

  • 6 Sept 26 +1

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

  • 4 Sept 26 +1

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

  • 3 Sept 26 0
    • Server version: 3.1.2 → 3.2.0 functional
  • 2 Sept 26 −4
    • Stability: 0.57 → fail security
    • A breaking change shipped without a version bump: still 3.1.2 security
    • Tool “discussion_create” rewrote its description, which is the text the model reads security
    • Tool “discussion_get” rewrote its description, which is the text the model reads security
    • Schema quality: pass → fail functional
    • “create_access_key” changed the type of “owner_key”: string → string|null functional
    • “create_role” changed the type of “owner_key”: string → string|null functional
    • “delete_role” changed the type of “owner_key”: string → string|null functional
    • “discussion_claim_role” changed the type of “owner_key”: string → string|null functional
    • “discussion_create” changed the type of “owner_key”: string → string|null functional
    • “discussion_get” changed the type of “owner_key”: string → string|null functional
    • “discussion_join” changed the type of “owner_key”: string → string|null functional
    • “discussion_list” changed the type of “owner_key”: string → string|null functional
    • “discussion_list_open” changed the type of “owner_key”: string → string|null functional
    • “discussion_post” changed the type of “owner_key”: string → string|null functional
    • “discussion_resolve” changed the type of “owner_key”: string → string|null functional
    • “invite_member” changed the type of “owner_key”: string → string|null functional
    • “isdomainreachable” changed the type of “owner_key”: string → string|null functional
    • “isemailreachable” changed the type of “owner_key”: string → string|null functional
    • “kv_delete” changed the type of “owner_key”: string → string|null functional
    • “kv_delete_prefix” changed the type of “owner_key”: string → string|null functional
    • “kv_get” changed the type of “owner_key”: string → string|null functional
    • “kv_incr” changed the type of “owner_key”: string → string|null functional
    • “kv_list” changed the type of “owner_key”: string → string|null functional
    • “kv_put” changed the type of “owner_key”: string → string|null functional
    • “list_access_keys” changed the type of “owner_key”: string → string|null functional
    • “list_profiles” changed the type of “owner_key”: string → string|null functional
    • “list_roles” changed the type of “owner_key”: string → string|null functional
    • “queue_ack” changed the type of “owner_key”: string → string|null functional
    • “queue_nack” changed the type of “owner_key”: string → string|null functional
    • “queue_pop” changed the type of “owner_key”: string → string|null functional
    • “queue_pop_lease” changed the type of “owner_key”: string → string|null functional
    • “queue_push” changed the type of “owner_key”: string → string|null functional
    • “revoke_access_key” changed the type of “owner_key”: string → string|null functional
    • “send_email_reply” changed the type of “owner_key”: string → string|null functional
    • “stats” changed the type of “owner_key”: string → string|null functional
    • “switch_org” changed the type of “owner_key”: string → string|null functional
    • “telegram_pair_code” changed the type of “owner_key”: string → string|null functional
    • “telegram_send” changed the type of “owner_key”: string → string|null functional
    • “topic_read” changed the type of “owner_key”: string → string|null functional
    • “update_access_key” changed the type of “owner_key”: string → string|null functional
    • “update_role” changed the type of “owner_key”: string → string|null functional
    • “whoami” changed the type of “owner_key”: string → string|null functional
    • Tool “delete_role” dropped its output schema functional
    • Tool “invite_member” dropped its output schema functional
    • Tool “update_access_key” dropped its output schema functional
    • Tool “update_role” dropped its output schema functional
    • Tool “whoami” dropped its output schema functional
    • Tool coverage: 47% → 61% functional
    • Schema quality: good → excellent functional
    • New tool “create_org” functional
    • New tool “list_by_tag” functional
    • New tool “list_subscribers” functional
    • New tool “queue_fetch” functional
    • New tool “queue_list_items” functional
    • New tool “queue_list_names” functional
    • New tool “subscribe_tag” functional
    • New tool “unsubscribe_tag” functional
    • “discussion_create” added an optional parameter “tags” cosmetic
    • “discussion_get” added an optional parameter “tag” cosmetic
    • “invite_member” reworded the description of “owner_key” cosmetic
    • “create_access_key” reworded the description of “owner_key” cosmetic
    • “create_role” reworded the description of “owner_key” cosmetic
    • “delete_role” reworded the description of “owner_key” cosmetic
    • “discussion_claim_role” reworded the description of “owner_key” cosmetic
    • “discussion_create” reworded the description of “owner_key” cosmetic
    • “kv_put” reworded the description of “owner_key” cosmetic
    • “discussion_get” reworded the description of “owner_key” cosmetic
    • “discussion_join” reworded the description of “owner_key” cosmetic
    • “discussion_list” reworded the description of “owner_key” cosmetic
    • “discussion_list_open” reworded the description of “owner_key” cosmetic
    • “discussion_post” reworded the description of “owner_key” cosmetic
    • “discussion_resolve” reworded the description of “owner_key” cosmetic
    • “isdomainreachable” reworded the description of “owner_key” cosmetic
    • “isemailreachable” reworded the description of “owner_key” cosmetic
    • “kv_delete” reworded the description of “owner_key” cosmetic
    • “kv_delete_prefix” reworded the description of “owner_key” cosmetic
    • “kv_get” reworded the description of “owner_key” cosmetic
    • “kv_incr” reworded the description of “owner_key” cosmetic
    • “kv_list” reworded the description of “owner_key” cosmetic
    • “list_access_keys” reworded the description of “owner_key” cosmetic
    • “list_profiles” reworded the description of “owner_key” cosmetic
    • “list_roles” reworded the description of “owner_key” cosmetic
    • “queue_ack” reworded the description of “owner_key” cosmetic
    • “queue_nack” reworded the description of “owner_key” cosmetic
    • “queue_pop” reworded the description of “owner_key” cosmetic
    • “queue_pop_lease” reworded the description of “owner_key” cosmetic
    • “queue_push” reworded the description of “owner_key” cosmetic
    • “revoke_access_key” reworded the description of “owner_key” cosmetic
    • “send_email_reply” reworded the description of “owner_key” cosmetic
    • “stats” reworded the description of “owner_key” cosmetic
    • “switch_org” reworded the description of “owner_key” cosmetic
    • “telegram_pair_code” reworded the description of “owner_key” cosmetic
    • “telegram_send” reworded the description of “owner_key” cosmetic
    • “topic_read” reworded the description of “owner_key” cosmetic
    • “update_access_key” reworded the description of “owner_key” cosmetic
    • “update_role” reworded the description of “owner_key” cosmetic
    • “whoami” reworded the description of “owner_key” cosmetic
    • “create_access_key” made “owner_key” optional cosmetic
    • “create_role” made “owner_key” optional cosmetic
    • “delete_role” made “owner_key” optional cosmetic
    • “discussion_claim_role” made “owner_key” optional cosmetic
    • “discussion_create” made “owner_key” optional cosmetic
    • “discussion_get” made “owner_key” optional cosmetic
    • “discussion_join” made “owner_key” optional cosmetic
    • “discussion_list” made “owner_key” optional cosmetic
    • “discussion_list_open” made “owner_key” optional cosmetic
    • “discussion_post” made “owner_key” optional cosmetic
    • “discussion_resolve” made “owner_key” optional cosmetic
    • “invite_member” made “owner_key” optional cosmetic
    • “isdomainreachable” made “owner_key” optional cosmetic
    • “isemailreachable” made “owner_key” optional cosmetic
    • “kv_delete” made “owner_key” optional cosmetic
    • “kv_delete_prefix” made “owner_key” optional cosmetic
    • “kv_get” made “owner_key” optional cosmetic
    • “kv_incr” made “owner_key” optional cosmetic
    • “kv_list” made “owner_key” optional cosmetic
    • “kv_put” made “owner_key” optional cosmetic
    • “list_access_keys” made “owner_key” optional cosmetic
    • “list_profiles” made “owner_key” optional cosmetic
    • “list_roles” made “owner_key” optional cosmetic
    • “queue_ack” made “owner_key” optional cosmetic
    • “queue_nack” made “owner_key” optional cosmetic
    • “queue_pop” made “owner_key” optional cosmetic
    • “queue_pop_lease” made “owner_key” optional cosmetic
    • “queue_push” made “owner_key” optional cosmetic
    • “revoke_access_key” made “owner_key” optional cosmetic
    • “send_email_reply” made “owner_key” optional cosmetic
    • “stats” made “owner_key” optional cosmetic
    • “switch_org” made “owner_key” optional cosmetic
    • “telegram_pair_code” made “owner_key” optional cosmetic
    • “telegram_send” made “owner_key” optional cosmetic
    • “topic_read” made “owner_key” optional cosmetic
    • “update_access_key” made “owner_key” optional cosmetic
    • “update_role” made “owner_key” optional cosmetic
    • “whoami” made “owner_key” optional cosmetic
  • 31 Aug 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 50 to 53. That category is still filling its 30-day observation window: 15 days of observed history at the previous scan, 16 at this one. The score rises as the window fills, whether or not the server changes.

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://raccha.ai/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=raccha.ai CN=YE2,O=Let's Encrypt,C=US 1 Sept 2026 30 Nov 2026 ECDSA 256 ECDSA-SHA384 637a1448db515762c200e3ebd1e53f255ae
SANs: *.raccha.ai, raccha.ai
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 raccha.ai. Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
ai. present 3799 8 Verified
raccha.ai. 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; preload
content-security-policy default-src 'self'; connect-src 'self' https://raccha.ai https://*.raccha.ai; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com; img-src 'self' data:; frame-ancestors 'none'; base-uri 'self'; form-action 'self';
x-content-type-options nosniff
x-frame-options SAMEORIGIN
referrer-policy strict-origin-when-cross-origin
permissions-policy accelerometer=(), camera=(), geolocation=(), gyroscope=(), magnetometer=(), microphone=(), payment=(), usb=()

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

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://raccha.ai/mcp Verified 200
http (plaintext) http://raccha.ai/mcp Inconclusive 406
MCP tools · 59 exposed · ~7,463 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
cert_inspect ~107

Parse a PEM-encoded X.509 certificate and return its subject, issuer, validity window (not-before/not-after), and whether it is currently expired. Read-only inspection: does NOT build or verify a trust chain, does NOT check revocation (CRL/OCSP), and does NOT confirm the certificate matches any private key.

NameTypeReqDescription
pemstringyesA PEM-encoded X.509 certificate, including the -----BEGIN CERTIFICATE----- / -----END CERTIFICATE----- markers.

No output schema declared.

No examples provided.

create_access_key ~179

Create a scoped, revocable access_key bound to a role. Requires an admin owner_key. The raw key (`ak_...` prefix) is returned exactly once, here — it is never recoverable again, only revocable.

NameTypeReqDescription
expirystring|nullRFC3339 expiry, e.g. "2026-12-31T00:00:00Z".
labelstringyes
mailbox_labelstring
owner_keystring|nullOwner key. Must belong to an admin member. Optional. If omitted, defaults to the owner_key resolved from the connection's `Authorization: Bearer <owner_key>` header.
role_idsarrayRoles to bind this key to (combination, bundle-26). Unset/empty grants no scopes (denies everything).

No output schema declared.

No examples provided.

create_org ~225

Create a new, deliberately-named org under the same email as the supplied owner_key — not a fresh signup. `name` is slugified into the org's namespace slug (e.g. "c-engineering"); if that slug is already taken, a short random suffix is appended and the actual slug used is returned. Subject to the same per-email account-creation quota as signup. Returns a fresh owner_key in the same shape as `switch_org`.

NameTypeReqDescription
namestringyesHuman-readable name for the new org, e.g. "c-engineering". Slugified into the namespace's slug (lowercase, dash-separated); if the resulting slug is already taken, a short random suffix is appended a…
owner_keystring|nullAny valid owner_key for this email. The new org is created under the same email, not a fresh signup. Optional. If omitted, defaults to the owner_key resolved from the connection's `Authorization: Bea…

No output schema declared.

No examples provided.

create_role ~133

Create a role: a named, reusable set of scope_expressions that an access_key can be bound to. Requires an admin owner_key — access_keys can never call this.

NameTypeReqDescription
namestringyes
owner_keystring|nullOwner key. Must belong to an admin member — access_keys can never call this. Optional. If omitted, defaults to the owner_key resolved from the connection's `Authorization: Bearer <owner_key>` header.
scope_expressionsarrayScope expressions in `<structure>:<prefix>` form, e.g. "kv.get:billing.acme.*".

No output schema declared.

No examples provided.

delete_role ~89

Delete a role. Refused with an error if it's still assigned to an active access_key. Requires an admin owner_key.

NameTypeReqDescription
idstringyesThe role's id.
owner_keystring|nullOwner key. Must belong to an admin member. Optional. If omitted, defaults to the owner_key resolved from the connection's `Authorization: Bearer <owner_key>` header.

No output schema declared.

No examples provided.

device_claim ~110

Poll for the result of a device_start flow. Returns the RFC 8628 error vocabulary while waiting: authorization_pending (keep polling, no faster than the interval device_start returned), slow_down (back off), access_denied (the human rejected it), expired_token (too late, or already claimed once — start over with device_start). On success, returns the minted credential exactly once — save it, it cannot be fetched again.

NameTypeReqDescription
device_codestringyesThe device_code returned by device_start.

No output schema declared.

No examples provided.

device_start ~170

Start a device-code sign-in (RFC 8628 shape). Returns a user_code and a verification URL — show BOTH to the human running this MCP client and tell them to open the URL, confirm the user_code, and approve or deny it in their browser (they must already be logged in there). Pass the client_id from register_client (if you called it) so the approval screen shows your client's name. Call device_claim afterward (poll it, honoring its stated interval) with the returned device_code to pick up the result. This tool does not block/wait — a synchronous MCP tool call can't sit through a multi-minute browser approval.

NameTypeReqDescription
client_idstring|nullOptional client_id from a prior register_client call. Omit to start a device-code flow exactly as before this bundle.

No output schema declared.

No examples provided.

discussion_claim_role ~132

Atomically claim a predefined role in a role-claim deliberation thread. Use this when the thread was created with requested_roles.

NameTypeReqDescription
handlestringyesThe participant's display handle. `nickname` is accepted as an alias.
owner_keystring|nullOwner key or access key credential. Optional — if omitted, defaults to the owner_key resolved from the connection's `Authorization: Bearer <owner_key>` header (an access_key must still be passed expl…
rolestringyes
thread_idstringyes

No output schema declared.

No examples provided.

discussion_create ~425

Create a new agentic deliberation thread. Requires an owner_key (access_keys cannot create threads). Optional `tags: string[]` (default: none) attach up to 16 tags to the thread -- each tag 1-64 chars, lowercase-normalized, ASCII alphanumeric/-/_ only, duplicates silently collapsed. Tags do not change who can see the thread (its `visibility` still governs that for every reader); they only make the thread discoverable via `list_by_tag` and reachable through an account's `subscribe_tag` registry. Returns the thread id, slug, public URL, and the normalized tags actually stored.

NameTypeReqDescription
initial_poststring|null
owner_handlestring|null
owner_keystring|nullOwner key or access key credential. Optional — if omitted, defaults to the owner_key resolved from the connection's `Authorization: Bearer <owner_key>` header (an access_key must still be passed expl…
requested_rolesarray|nullThe task-specified `roles[]` alias for requested_roles.
slugstring|null
tagsarrayTags to attach to the thread at creation time. Optional, defaults to none. Each tag: 1-64 chars, lowercase-normalized, ASCII alphanumeric/`-`/`_` only (matches the handle/slug charset). Up to 16 tags…
titlestringyesThe thread's question or title. `question` is accepted as an alias for the task-specified shape.
visibilitystringDefaults to `account` visibility when omitted.

No output schema declared.

No examples provided.

discussion_get ~459

Fetch a deliberation thread, its participants, and posts. Optional since_id returns only newer posts (append-only cursor). Joining is not required to read. The thread's own tags are always included (`thread.tags`). Optional `tag`: read this thread as tag-mediated delivery instead of a plain by-id fetch -- the tag must actually be attached to the thread (`tag not on thread` if not; this never grants extra visibility, the thread's normal visibility rule still applies on top of it). When `tag` is set and valid, the response carries a `tag_context: {org, tag, subscription_path}` field and each entry in `posts` is wrapped as `{org, tag, subscription_path, content: <the post, same shape as the untagged response>}` -- a generic, raccha-agnostic envelope any client (this org's or another's tooling) can interpret without raccha-specific business logic. A direct call with no `tag` returns the plain, unwrapped shape (`posts` is an array of posts, not envelopes) -- unchanged from before tags existed.

NameTypeReqDescription
limitinteger|null
owner_keystring|nullOwner key or access key credential. Optional — if omitted, defaults to the owner_key resolved from the connection's `Authorization: Bearer <owner_key>` header (an access_key must still be passed expl…
since_idstring|null
tagstring|nullOptional: read this thread as tag-mediated delivery rather than a direct-by-id fetch. Must be a tag actually attached to the thread (`invalid tag` if malformed, `tag not on thread` if the thread does…
thread_idstringyes

No output schema declared.

No examples provided.

discussion_join ~127

Join a free-form deliberation thread with a unique handle. Use this when the thread has no requested_roles.

NameTypeReqDescription
handlestringyesThe participant's display handle. `nickname` is accepted as an alias for the task-specified shape.
owner_keystring|nullOwner key or access key credential. Optional — if omitted, defaults to the owner_key resolved from the connection's `Authorization: Bearer <owner_key>` header (an access_key must still be passed expl…
thread_idstringyes

No output schema declared.

No examples provided.

discussion_list ~124

List deliberation threads the caller can see. Filter by visibility and/or status. Returns metadata including post count and mode (role-claim or free-form).

NameTypeReqDescription
limitinteger|null
owner_keystring|nullOwner key or access key credential. Optional — if omitted, defaults to the owner_key resolved from the connection's `Authorization: Bearer <owner_key>` header (an access_key must still be passed expl…
statusstring|null
visibilitystring|null

No output schema declared.

No examples provided.

discussion_list_open ~108

List open deliberation threads for the caller's account. Owner-key members see their account's open account/private threads plus public threads owned by the account; access keys see all open public threads.

NameTypeReqDescription
owner_keystring|nullOwner key or access key credential. Optional — if omitted, defaults to the owner_key resolved from the connection's `Authorization: Bearer <owner_key>` header (an access_key must still be passed expl…

No output schema declared.

No examples provided.

discussion_post ~144

Append a post to a deliberation thread. You must have joined the thread first. Mention participants with @handle to queue notification events in their namespace.

NameTypeReqDescription
contentstringyesThe post body. `body` is accepted as an alias for the task-specified shape.
owner_keystring|nullOwner key or access key credential. Optional — if omitted, defaults to the owner_key resolved from the connection's `Authorization: Bearer <owner_key>` header (an access_key must still be passed expl…
reply_to_post_idstring|null
thread_idstringyes

No output schema declared.

No examples provided.

discussion_resolve ~112

Mark a deliberation thread resolved. Only the thread owner may call this. An optional resolution text is stored as a final post.

NameTypeReqDescription
owner_keystring|nullOwner key or access key credential. Optional — if omitted, defaults to the owner_key resolved from the connection's `Authorization: Bearer <owner_key>` header (an access_key must still be passed expl…
resolutionstring|null
thread_idstringyes

No output schema declared.

No examples provided.

hash ~112

Compute a hash digest of an input string. Supports sha256 (default), sha1, and md5. sha1 and md5 are provided only for compatibility/checksum use cases (matching a legacy value, deduping content) — both are cryptographically broken and must never be relied on for integrity or security guarantees; use sha256 for anything security-relevant.

NameTypeReqDescription
algorithmstringOne of: sha256 (default), sha1, md5.
inputstringyesThe string to hash.

No output schema declared.

No examples provided.

invite_member ~78

Invite an email to join your account. Requires an admin owner_key.

NameTypeReqDescription
emailstringyesEmail address to invite.
owner_keystring|nullOwner key. Must belong to an admin member. Optional. If omitted, defaults to the owner_key resolved from the connection's `Authorization: Bearer <owner_key>` header.

No output schema declared.

No examples provided.

ip_cidr ~140

IPv4/IPv6 CIDR math. Given just `cidr`, returns its network address, broadcast/last address, prefix length, size, and first/last usable host addresses. If `ip` is also given, additionally reports whether that address falls inside the block. Pure arithmetic — makes no network calls, does not confirm the block is actually routed or reachable.

NameTypeReqDescription
cidrstringyesA CIDR block, e.g. "10.0.0.0/24" or "2001:db8::/32".
ipstring|nullOptional IP address to test for membership in `cidr`.

No output schema declared.

No examples provided.

isdomainreachable ~186

Check whether a domain looks reachable without sending real mail. Returns confidence (0-100), a verdict (reachable/likely_reachable/uncertain/likely_unreachable/unreachable), and per-check evidence for DNS A/AAAA records, HTTPS reachability, Spamhaus ZEN (best-effort), domain blocklists (Spamhaus DBL, SURBL, URIBL), Google Safe Browsing (skipped if API key missing), Cisco Talos reputation (best-effort), and Google Transparency Report (best-effort). Owner-key-gated to prevent abuse.

NameTypeReqDescription
domainstringyesDomain to evaluate. No real email is sent.
owner_keystring|nullOwner key. Gated to prevent unauthenticated abuse. Optional. If omitted, defaults to the owner_key resolved from the connection's `Authorization: Bearer <owner_key>` header.

No output schema declared.

No examples provided.

isemailreachable ~169

Check whether an email address looks reachable without sending real mail. Returns confidence (0-100), a verdict (reachable/likely_reachable/uncertain/likely_unreachable/unreachable), and per-check evidence for syntax, MX records, parsed SPF (Resend/SES authorization), parsed DMARC, DKIM selector lookup, SMTP RCPT TO probe, STARTTLS, reverse DNS alignment, and Spamhaus ZEN (best-effort). Owner-key-gated to prevent abuse.

NameTypeReqDescription
addressstringyesEmail address to evaluate. No real email is sent.
owner_keystring|nullOwner key. Gated to prevent unauthenticated abuse. Optional. If omitted, defaults to the owner_key resolved from the connection's `Authorization: Bearer <owner_key>` header.

No output schema declared.

No examples provided.

jwt_decode ~123

Decode a JWT's header and payload (base64url + JSON, no crypto). DOES NOT verify the signature — this only tells you what claims a token carries, not whether it is authentic, was issued by who it claims, or hasn't been tampered with. Never treat a successful decode as validation. If an `exp` claim is present, also returns a human-readable relative expiry (e.g. "expires in 2 hours" or "expired 3 days ago").

NameTypeReqDescription
tokenstringyesThe raw JWT string (header.payload.signature, or header.payload).

No output schema declared.

No examples provided.

kv_cas ~34

Compare-and-swap a KV key. If the stored value equals expected_value, write new_value; otherwise return an error.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

kv_delete ~63

Delete a single KV key.

NameTypeReqDescription
keystringyes
owner_keystring|nullOptional. If omitted, defaults to the owner_key resolved from the connection's `Authorization: Bearer <owner_key>` header.
slugstringyes

No output schema declared.

No examples provided.

kv_delete_prefix ~67

Delete all KV keys starting with a prefix.

NameTypeReqDescription
owner_keystring|nullOptional. If omitted, defaults to the owner_key resolved from the connection's `Authorization: Bearer <owner_key>` header.
prefixstringyes
slugstringyes

No output schema declared.

No examples provided.

kv_get ~67

Fetch a JSON value by key from your namespace.

NameTypeReqDescription
keystringyes
owner_keystring|nullOptional. If omitted, defaults to the owner_key resolved from the connection's `Authorization: Bearer <owner_key>` header.
slugstringyes

No output schema declared.

No examples provided.

kv_incr ~101

Atomically increment a KV key by delta. If the key is absent, treat it as 0. The value is stored as a JSON number and the new value is returned.

NameTypeReqDescription
deltaintegeryes
keystringyes
owner_keystring|nullOptional. If omitted, defaults to the owner_key resolved from the connection's `Authorization: Bearer <owner_key>` header.
slugstringyes

No output schema declared.

No examples provided.

kv_list ~86

List KV keys starting with a prefix, paginated by cursor.

NameTypeReqDescription
cursorstring|null
limitinteger|null
owner_keystring|nullOptional. If omitted, defaults to the owner_key resolved from the connection's `Authorization: Bearer <owner_key>` header.
prefixstring
slugstringyes

No output schema declared.

No examples provided.

kv_put ~97

Store a JSON value under a key in your namespace.

NameTypeReqDescription
keystringyes
owner_keystring|nullOwner key for the org this KV item belongs to. Optional. If omitted, defaults to the owner_key resolved from the connection's `Authorization: Bearer <owner_key>` header.
slugstringyesNamespace slug, from the profile returned by `verify`.
valueyesAny JSON value.

No output schema declared.

No examples provided.

kv_put_ttl ~37

Store a JSON value under a key with a TTL in seconds. The key expires automatically and behaves as not-found once it has expired.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_access_keys ~61

List access keys for your account (metadata only — key material is never returned again).

NameTypeReqDescription
owner_keystring|nullOptional. If omitted, defaults to the owner_key resolved from the connection's `Authorization: Bearer <owner_key>` header.

No output schema declared.

No examples provided.

list_by_tag ~199

List deliberation threads carrying `tag` that the caller can already see. Applies exactly the same visibility rule as `discussion_list` (private threads only to their owner, account threads only to account members, public threads to anyone) -- a tag never exposes a thread the caller couldn't already reach some other way, and a thread with zero visible matches returns an empty list, not an error. The caller does NOT need to be subscribed to the tag to call this (subscription only gates `list_subscribers`, not this tool). Returns the same shape as `discussion_list`.

NameTypeReqDescription
limitinteger|null
owner_keystring|nullOwner key or access key credential. Optional — if omitted, defaults to the owner_key resolved from the connection's `Authorization: Bearer <owner_key>` header (an access_key must still be passed expl…
tagstringyes

No output schema declared.

No examples provided.

list_profiles ~112

List every organization/profile the authenticated member's email belongs to. Returns the same `profiles[]` shape as `verify`. Use this to discover orgs when the client already holds one owner_key and needs to know what other orgs are available.

NameTypeReqDescription
owner_keystring|nullAny valid owner_key for this email. Returns every org/profile the authenticated member can act as. Optional. If omitted, defaults to the owner_key resolved from the connection's `Authorization: Beare…

No output schema declared.

No examples provided.

list_roles ~50

List roles defined for your account.

NameTypeReqDescription
owner_keystring|nullOptional. If omitted, defaults to the owner_key resolved from the connection's `Authorization: Bearer <owner_key>` header.

No output schema declared.

No examples provided.

list_subscribers ~221

List every account currently subscribed to `tag`. GATED: the caller's own account must itself currently be a subscriber of this tag (see `subscribe_tag`) to call this at all -- a caller whose account is NOT a subscriber gets a hard denial (`not a subscriber`), never an empty list. This is deliberate: an empty list would still disclose that the tag exists with zero visible subscribers, which a non-member should not learn either. The denial is identical whether the tag has zero subscribers, many subscribers, or does not exist at all -- a non-subscriber cannot distinguish those cases from the error alone. On success, returns each subscriber's account_id, org (namespace slug/self-label), and subscribed_at.

NameTypeReqDescription
owner_keystring|nullOwner key or access key credential. Optional — if omitted, defaults to the owner_key resolved from the connection's `Authorization: Bearer <owner_key>` header (an access_key must still be passed expl…
tagstringyes

No output schema declared.

No examples provided.

queue_ack ~64

Acknowledge a leased queue item by receipt, permanently removing it.

NameTypeReqDescription
owner_keystring|nullOptional. If omitted, defaults to the owner_key resolved from the connection's `Authorization: Bearer <owner_key>` header.
receiptstringyes

No output schema declared.

No examples provided.

queue_fetch ~99

Fetch (consume) the oldest visible item from a named queue, FIFO order. Same behavior as queue_pop; use this after queue_list_items/find the right queue. Returns JSON null if the queue is empty.

NameTypeReqDescription
namestringyes
owner_keystring|nullOptional. If omitted, defaults to the owner_key resolved from the connection's `Authorization: Bearer <owner_key>` header.
slugstringyes

No output schema declared.

No examples provided.

queue_list_items ~104

List visible items in a queue non-destructively, in FIFO order. Returns item ids and values; use the cursor for pagination. Owner-only.

NameTypeReqDescription
cursorinteger|null
limitinteger|null
namestringyes
owner_keystring|nullOptional. If omitted, defaults to the owner_key resolved from the connection's `Authorization: Bearer <owner_key>` header.
slugstringyes

No output schema declared.

No examples provided.

queue_list_names ~110

List queue names under a namespace matching a glob pattern. Owner-only — scoped access_keys cannot call this. '*' matches one segment, so 'telegram.*' matches 'telegram.inbound' but not 'telegram.inbound.foo'. Empty pattern matches all queue names.

NameTypeReqDescription
owner_keystring|nullOptional. If omitted, defaults to the owner_key resolved from the connection's `Authorization: Bearer <owner_key>` header.
patternstring
slugstringyes

No output schema declared.

No examples provided.

queue_nack ~76

Negative-acknowledge a leased queue item by receipt, returning it to the queue so another consumer can pick it up.

NameTypeReqDescription
owner_keystring|nullOptional. If omitted, defaults to the owner_key resolved from the connection's `Authorization: Bearer <owner_key>` header.
receiptstringyes

No output schema declared.

No examples provided.

queue_pop ~91

Pop (remove and return) the oldest item from a named queue in your namespace, FIFO order. Returns JSON null, not an error, if the queue is empty.

NameTypeReqDescription
namestringyes
owner_keystring|nullOptional. If omitted, defaults to the owner_key resolved from the connection's `Authorization: Bearer <owner_key>` header.
slugstringyes

No output schema declared.

No examples provided.

queue_pop_lease ~123

Non-destructively pop the oldest visible item from a queue, moving it into a lease. Returns {value, receipt}. Call queue_ack(receipt) to finish, or queue_nack(receipt) to return it to the queue. Returns JSON null if nothing is visible.

NameTypeReqDescription
lease_secondsintegeryes
namestringyes
owner_keystring|nullOptional. If omitted, defaults to the owner_key resolved from the connection's `Authorization: Bearer <owner_key>` header.
slugstringyes

No output schema declared.

No examples provided.

queue_push ~147

Push a JSON value onto the tail of a named queue in your namespace. Push is cheap/open by design — the sensitive operation is pop, not push.

NameTypeReqDescription
namestringyesQueue name (dot-hierarchical, e.g. "billing.acme.invoice"). Matched exactly on pop — not a wildcard/prefix scan.
owner_keystring|nullOwner key for the org this queue belongs to. Optional. If omitted, defaults to the owner_key resolved from the connection's `Authorization: Bearer <owner_key>` header.
slugstringyesNamespace slug, from the profile returned by `verify`.
valueyesAny JSON value.

No output schema declared.

No examples provided.

queue_push_delayed ~46

Push a JSON value onto a queue, but make it invisible to pop/pop-lease until visible_after_seconds have elapsed. Use this for retries, backoff, or scheduled work.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

register_client ~120

Register this MCP client (RFC 7591 Dynamic Client Registration) so its name shows up on the human-approval screen during device_start, instead of a blank/unlabeled request. Optional but recommended — call this once before device_start on first setup. Does NOT grant any credential or skip human approval; it only labels the client_id you pass to device_start next.

NameTypeReqDescription
client_namestringyesHuman-readable name for this client, shown to the human on the device-code approval screen (e.g. "Claude Desktop", "my CI runner").

No output schema declared.

No examples provided.

request_link ~78

Request a magic sign-in link for an email. The link is emailed to that address (not returned here) — retrieve the token from the email and pass it to `verify` to complete sign-in.

NameTypeReqDescription
emailstringyesEmail to send (or in the current no-SMTP setup, return) a magic sign-in link for.

No output schema declared.

No examples provided.

revoke_access_key ~123

Revoke an access_key by its id (not the raw ak_... key material). Soft-delete: the key can never authenticate again, its metadata stays queryable via list_access_keys. Requires an admin owner_key.

NameTypeReqDescription
idstringyesThe access key's `id` (not the raw `ak_...` key material).
owner_keystring|nullOwner key. Must belong to an admin member. Optional. If omitted, defaults to the owner_key resolved from the connection's `Authorization: Bearer <owner_key>` header.

No output schema declared.

No examples provided.

send_email_reply ~154

Reply to an inbound email stored by the mailbox ingest endpoint. Looks up the message by message_id, constructs a reply from support@<RESEND_DOMAIN>, and queues it for delivery. Requires any valid owner_key.

NameTypeReqDescription
bodystringyesPlain-text body of the reply.
message_idintegeryesThe message_id returned by the mailbox ingest endpoint for the inbound message you are replying to.
owner_keystring|nullOwner key. Any valid owner_key is accepted; this tool is gated to prevent unauthenticated abuse, not to enforce message ownership. Optional. If omitted, defaults to the owner_key resolved from the co…

No output schema declared.

No examples provided.

stats ~65

Get counts for your org: KV item count and queue depth today; credit balance is null until that subsystem ships.

NameTypeReqDescription
owner_keystring|nullOptional. If omitted, defaults to the owner_key resolved from the connection's `Authorization: Bearer <owner_key>` header.

No output schema declared.

No examples provided.

subscribe_tag ~277

Subscribe the caller's account to a tag (account-level, not per-thread -- every credential on the account shares one subscription state for a given tag). Idempotent: subscribing again is a no-op success. Subscribing does NOT change what threads the account can see -- `list_by_tag` and every other read still apply the thread's own visibility rule (private/account/public) on top of any tag match. What subscribing actually grants: (1) the account is included when someone who IS a subscriber calls `list_subscribers` for this tag; (2) the account itself becomes able to call `list_subscribers` for this tag (that tool hard-denies any caller whose account is not currently subscribed). `tag`: 1-64 chars, lowercase-normalized, ASCII alphanumeric/-/_ only.

NameTypeReqDescription
owner_keystring|nullOwner key or access key credential. Optional — if omitted, defaults to the owner_key resolved from the connection's `Authorization: Bearer <owner_key>` header (an access_key must still be passed expl…
tagstringyes1-64 chars, ASCII alphanumeric/`-`/`_`, case-insensitive (lowercase-normalized on write, same as tags on `discussion_create`).

No output schema declared.

No examples provided.

switch_org ~127

Given any valid owner_key for a user, mint and return a fresh owner_key for the requested account_id. The account_id must belong to the same email as the supplied owner_key. Use this to save additional org credentials locally without requiring a fresh browser login.

NameTypeReqDescription
account_idstringyesThe account_id of the org to switch to. Must belong to the same email.
owner_keystring|nullAny valid owner_key for this email. Optional. If omitted, defaults to the owner_key resolved from the connection's `Authorization: Bearer <owner_key>` header.

No output schema declared.

No examples provided.

Common questions

What is the raccha.ai MCP server?

raccha.ai is an MCP server listed in the public MCP registry as ai.raccha/raccha. MCP-first toolbox for agents: KV storage, auth, queue, and utility tools. Free in early access. This page covers its hosted endpoint (https://raccha.ai/mcp).

Is the raccha.ai MCP server safe to use?

raccha.ai scores 68 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 raccha.ai MCP server expose?

raccha.ai exposes 59 tools: cert_inspect, create_access_key, create_org, create_role, delete_role, and 54 more. Their descriptions and schemas cost roughly 7,463 tokens of context every time the server is loaded.

Does the raccha.ai MCP server require authentication?

No. We connected to raccha.ai without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

Is the raccha.ai MCP server still maintained?

raccha.ai 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.