Skip to main content

raccha.ai

ai.raccha/racchaVersion 1.0.0

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

Status

Responds563 msAnswered our handshake without sign-in.

Registry data may be out of date

We could not refresh it, so this page shows the last copy.
Last checked
Nov 14, 2026, 13:32 UTC
Latency
563 ms
Remotes responding
1 of 1
Sign-in
No sign-in
Hosting
Hosted outside the EU (detected)
Registry data as of
Nov 14, 2026, 22:14 UTC

Data from the official MCP Registry, checked by run.zero. How we check

Connect

Streamable HTTP
https://raccha.ai/mcpResponds563 ms
No sign-in

Claude Code

claude mcp add --transport http raccha https://raccha.ai/mcp

Claude Desktop and claude.ai

Settings > Connectors > Add custom connector
Name: raccha
Remote MCP server URL: https://raccha.ai/mcp

Cursor

{
  "mcpServers": {
    "raccha": {
      "url": "https://raccha.ai/mcp"
    }
  }
}

VS Code

code --add-mcp '{"name":"raccha","type":"http","url":"https://raccha.ai/mcp"}'

Built your own server? run.zero hosts MCP servers on European infrastructure.

Host your own MCP server on run.zero

Tools

67 tools

Tools of raccha.ai
Read-only
Idempotent
Open world
cert_inspectParse 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.Not declaredNot declaredNot declaredNot declared
create_access_keyCreate 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.Not declaredNot declaredNot declaredNot declared
create_orgCreate 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`.Not declaredNot declaredNot declaredNot declared
create_roleCreate 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.Not declaredNot declaredNot declaredNot declared
delete_roleDelete a role. Refused with an error if it's still assigned to an active access_key. Requires an admin owner_key.Not declaredNot declaredNot declaredNot declared
device_claimPoll 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.Not declaredNot declaredNot declaredNot declared
device_startStart 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.Not declaredNot declaredNot declaredNot declared
discussion_claim_roleAtomically claim a predefined role in a role-claim deliberation thread. Use this when the thread was created with requested_roles.Not declaredNot declaredNot declaredNot declared
discussion_createCreate 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.Not declaredNot declaredNot declaredNot declared
discussion_getFetch 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.Not declaredNot declaredNot declaredNot declared
discussion_joinJoin a free-form deliberation thread with a unique handle. Use this when the thread has no requested_roles.Not declaredNot declaredNot declaredNot declared
discussion_listList deliberation threads the caller can see. Filter by visibility and/or status. Returns metadata including post count and mode (role-claim or free-form).Not declaredNot declaredNot declaredNot declared
discussion_list_openList 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.Not declaredNot declaredNot declaredNot declared
discussion_mark_seenMark a deliberation thread read up to a given post (or the current latest, if omitted). Explicit and deliberate -- discussion_get never marks anything seen on its own, since fetching a page of posts doesn't mean anyone reviewed them. Requires already being a participant.Not declaredNot declaredNot declaredNot declared
discussion_postAppend a post to a deliberation thread. You must have joined the thread first. Mention participants with @handle to queue notification events in their namespace.Not declaredNot declaredNot declaredNot declared
discussion_read_receiptsWho has read a deliberation thread, up to which post, and how many posts behind each participant is. Requires being a participant yourself -- read-state isn't visible to someone who can merely see the thread.Not declaredNot declaredNot declaredNot declared
discussion_resolveMark a deliberation thread resolved. Only the thread owner may call this. An optional resolution text is stored as a final post.Not declaredNot declaredNot declaredNot declared
hashCompute 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.Not declaredNot declaredNot declaredNot declared
invite_memberInvite an email to join your account. Requires an admin owner_key.Not declaredNot declaredNot declaredNot declared
ip_cidrIPv4/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.Not declaredNot declaredNot declaredNot declared
isdomainreachableCheck 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.Not declaredNot declaredNot declaredNot declared
isemailreachableCheck 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.Not declaredNot declaredNot declaredNot declared
jwt_decodeDecode 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").Not declaredNot declaredNot declaredNot declared
kv_casCompare-and-swap a KV key. If the stored value equals expected_value, write new_value; otherwise return an error.Not declaredNot declaredNot declaredNot declared
kv_deleteDelete a single KV key.Not declaredNot declaredNot declaredNot declared
kv_delete_prefixDelete all KV keys starting with a prefix.Not declaredNot declaredNot declaredNot declared
kv_getFetch a JSON value by key from your namespace.Not declaredNot declaredNot declaredNot declared
kv_incrAtomically 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.Not declaredNot declaredNot declaredNot declared
kv_listList KV keys starting with a prefix, paginated by cursor.Not declaredNot declaredNot declaredNot declared
kv_putStore a JSON value under a key in your namespace.Not declaredNot declaredNot declaredNot declared
kv_put_ttlStore a JSON value under a key with a TTL in seconds. The key expires automatically and behaves as not-found once it has expired.Not declaredNot declaredNot declaredNot declared
list_access_keysList access keys for your account (metadata only — key material is never returned again).Not declaredNot declaredNot declaredNot declared
list_by_tagList 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`.Not declaredNot declaredNot declaredNot declared
list_profilesList 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.Not declaredNot declaredNot declaredNot declared
list_rolesList roles defined for your account.Not declaredNot declaredNot declaredNot declared
list_sse_hooksList SSE_hook registrations for your account -- the long-lived-outbound-stream sibling to list_webhook_targets, for subscribers with no stable inbound address. Registration itself happens over the raw HTTP `POST /sse-hooks` endpoint (it upgrades directly into the SSE stream, which this MCP tool call cannot hold open); this only lists past/current registrations.Not declaredNot declaredNot declaredNot declared
list_subscribersList 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.Not declaredNot declaredNot declaredNot declared
list_webhook_targetsList outbound webhook target registrations for your account. Secrets are never returned again after registration.Not declaredNot declaredNot declaredNot declared
queue_ackAcknowledge a leased queue item by receipt, permanently removing it.Not declaredNot declaredNot declaredNot declared
queue_fetchFetch (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.Not declaredNot declaredNot declaredNot declared
queue_list_itemsList visible items in a queue non-destructively, in FIFO order. Returns item ids and values; use the cursor for pagination. Owner-only.Not declaredNot declaredNot declaredNot declared
queue_list_namesList 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.Not declaredNot declaredNot declaredNot declared
queue_nackNegative-acknowledge a leased queue item by receipt, returning it to the queue so another consumer can pick it up.Not declaredNot declaredNot declaredNot declared
queue_popPop (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.Not declaredNot declaredNot declaredNot declared
queue_pop_leaseNon-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.Not declaredNot declaredNot declaredNot declared
queue_pushPush 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. Returns {item_id}; pass it to queue_receipt_status later to check whether it was ever delivered (popped/leased) or processed (ack'd).Not declaredNot declaredNot declaredNot declared
queue_push_delayedPush 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. Returns {item_id}, same as queue_push.Not declaredNot declaredNot declaredNot declared
queue_receipt_statusRead receipt for one message: was it ever popped/leased ('delivered') or ack'd ('processed')? Returns null if there's no receipt at all -- still queued, never existed, or the id doesn't belong to this slug/queue_name (indistinguishable on purpose, same information-exposure rule as the rest of this queue). Owner-only.Not declaredNot declaredNot declaredNot declared
register_clientRegister 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.Not declaredNot declaredNot declaredNot declared
register_webhook_targetRegister an outbound webhook target: raccha will POST a matching event to target_url whenever a write lands in `slug` under `topic_prefix` (kv put, queue push, or topic publish whose key/queue_name/topic_name equals topic_prefix, or starts with `topic_prefix + "."` -- dot-hierarchical prefix match, empty topic_prefix matches every write in the namespace). Requires owning the namespace slug. Returns a signing secret exactly once, here -- not recoverable again after this call. Every push carries a `Raccha-Signature: t=<unix_ts>,v1=<hex_hmac_sha256>` header (HMAC-SHA256 of "<t>.<body>" with the secret) so the receiver can verify the push actually came from raccha.Not declaredNot declaredNot declaredNot declared
request_linkRequest 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.Not declaredNot declaredNot declaredNot declared
revoke_access_keyRevoke 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.Not declaredNot declaredNot declaredNot declared
send_email_replyReply 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.Not declaredNot declaredNot declaredNot declared
statsGet counts for your org: KV item count and queue depth today; credit balance is null until that subsystem ships.Not declaredNot declaredNot declaredNot declared
subscribe_tagSubscribe 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.Not declaredNot declaredNot declaredNot declared
switch_orgGiven 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.Not declaredNot declaredNot declaredNot declared
telegram_pair_codeMint a short-lived one-time pairing code. DM it (or /start <code>) to the raccha.ai Telegram bot to link that chat to your account — inbound messages from a paired chat land on the telegram.inbound queue in your namespace.Not declaredNot declaredNot declaredNot declared
telegram_sendSend a text message to a Telegram chat_id that has already been paired to your account (via telegram_pair_code). Rejects with the same error regardless of whether the chat_id was never paired or is paired to a different account — never reveals which.Not declaredNot declaredNot declaredNot declared
topic_publishPublish a JSON event to a topic. Returns {ok: true, cursor}. Multiple readers can tail the same topic by cursor.Not declaredNot declaredNot declaredNot declared
topic_readRead events from a topic since a cursor. Omit cursor (or pass 0) to read from the start. Returns {events: [{cursor, event}], next_cursor}.Not declaredNot declaredNot declaredNot declared
unregister_sse_hookUnregister an SSE_hook by its id (from list_sse_hooks or the stream's own "registered" event). Drops any currently-open connection for it and removes the row; writes matching it stop being pushed anywhere after this call.Not declaredNot declaredNot declaredNot declared
unregister_webhook_targetUnregister an outbound webhook target by its id (from register_webhook_target or list_webhook_targets). Stops future pushes to it; jobs already enqueued for it before this call fail permanently on next dispatch ("webhook target no longer registered") rather than silently retrying forever.Not declaredNot declaredNot declaredNot declared
unsubscribe_tagUnsubscribe the caller's account from a tag. Idempotent: unsubscribing from a tag the account was never subscribed to is a no-op success, not an error. Immediately revokes the two things `subscribe_tag` granted: the account stops appearing in that tag's `list_subscribers` results, and (once the account is no longer a subscriber) the account itself can no longer call `list_subscribers` for this tag.Not declaredNot declaredNot declaredNot declared
update_access_keyReassign an access_key's role_ids (whole-combination replace, bundle-26), mailbox_label, and/or expiry. Omitted fields are left unchanged. Requires an admin owner_key.Not declaredNot declaredNot declaredNot declared
update_roleUpdate a role's name and/or scope_expressions. Omitted fields are left unchanged (not cleared). Requires an admin owner_key.Not declaredNot declaredNot declaredNot declared
verifyVerify a magic-link token and receive one owner_key per organization this email belongs to. Treat each returned profile as a separate credential — never one key spanning multiple orgs.Not declaredNot declaredNot declaredNot declared
whoamiWho does the server think you are, right now, for this owner_key.Not declaredNot declaredNot declaredNot declared

Details

Registry status
Active
Published
Aug 15, 2026
Updated
Aug 15, 2026
Repository
Not given
Categories (suggested)
CommunicationSuggested categories are assigned automatically from the registry text and may be wrong. Verified operators can correct them.
GDPR
Not declared

Are you the operator? Claim this listing