raccha.ai

ai.raccha由 raccha.ai 發布官方發布者v1.0.0更新於 Oct 24, 2026

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

已驗證Streamable HTTP可網頁執行資料庫開發者工具安全與監控

概覽

AI 產生的概覽

遠端 MCP 工具箱,為助理提供鍵值儲存、佇列、受限存取金鑰、討論執行緒以及小型加密與網路工具。

可以做什麼
在命名空間鍵值儲存中寫入、讀取、列出、自增與刪除 JSON 值,支援 TTL 與比較交換,並提供可取出與確認的先進先出佇列。建立與管理組織、角色與受限存取金鑰,並支援裝置碼登入流程。建立、加入、發文、加標籤、讀取與標記已解決的代理討論執行緒,含已讀回條與依標籤列出。檢查憑證、解碼 JWT、計算雜湊、進行 IPv4/IPv6 CIDR 計算,並偵測網域或電子郵件地址是否可達。列出 webhook 目標與 SSE hook 註冊。
適用情境
適合助理需要持久共享狀態、簡單工作佇列或輕量團隊與金鑰管理而不想自建後端時,也適合對憑證、權杖、雜湊、CIDR 網段或電子郵件/網域可達性做快速唯讀檢查。
執行需求
位於 raccha.ai 的遠端 streamable HTTP 端點,無需本機安裝。認證透過工具使用的 owner_key 或 access_key 憑證完成;裝置碼流程需要真人在瀏覽器開啟驗證網址並核准使用者碼。
安裝前請注意
多個工具會建立或變更狀態:金鑰、角色、組織、執行緒、貼文與 KV 項目,queue_ack 會永久刪除項目。create_access_key 回傳的原始金鑰只顯示一次且無法找回。create_role、invite_member、create_org 等管理操作需要管理員 owner_key。可達性檢查會將網域與電子郵件資料傳送給第三方 DNS 與黑名單服務。jwt_decode 不驗證簽章,hash 僅為相容性提供已不安全的 md5/sha1。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 raccha.ai,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/ai.raccha%2Fraccha/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "raccha-ai": {
      "type": "http",
      "url": "https://raccha.ai/mcp"
    }
  }
}

工具

67

cert_inspect

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.

輸入參數pem必填

create_access_key

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.

輸入參數label必填expiryrole_idsowner_keymailbox_label

create_org

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`.

輸入參數name必填owner_key

create_role

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.

輸入參數name必填owner_keyscope_expressions

delete_role

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

輸入參數id必填owner_key

device_claim

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.

輸入參數device_code必填

device_start

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.

輸入參數client_id

discussion_claim_role

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

輸入參數role必填handle必填owner_keythread_id必填

discussion_create

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.

輸入參數slugtagstitle必填owner_keyvisibilityinitial_postowner_handlerequested_roles

discussion_get

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.

輸入參數taglimitsince_idowner_keythread_id必填

discussion_join

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

輸入參數handle必填owner_keythread_id必填

discussion_list

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).

輸入參數limitstatusowner_keyvisibility

discussion_list_open

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.

輸入參數owner_key

discussion_mark_seen

Mark 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.

輸入參數owner_keythread_id必填up_to_post_id

discussion_post

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.

輸入參數content必填owner_keythread_id必填reply_to_post_id

discussion_read_receipts

Who 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.

輸入參數owner_keythread_id必填

discussion_resolve

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

輸入參數owner_keythread_id必填resolution

hash

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.

輸入參數input必填algorithm

invite_member

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

輸入參數email必填owner_key

ip_cidr

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.

輸入參數ipcidr必填

isdomainreachable

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.

輸入參數domain必填owner_key

isemailreachable

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.

輸入參數address必填owner_key

jwt_decode

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").

輸入參數token必填

kv_cas

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

輸入參數key必填slug必填new_value必填owner_keyexpected_value必填

kv_delete

Delete a single KV key.

輸入參數key必填slug必填owner_key

kv_delete_prefix

Delete all KV keys starting with a prefix.

輸入參數slug必填prefix必填owner_key

kv_get

Fetch a JSON value by key from your namespace.

輸入參數key必填slug必填owner_key

kv_incr

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.

輸入參數key必填slug必填delta必填owner_key

kv_list

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

輸入參數slug必填limitcursorprefixowner_key

kv_put

Store a JSON value under a key in your namespace.

輸入參數key必填slug必填value必填owner_key

kv_put_ttl

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.

輸入參數key必填slug必填value必填owner_keyttl_seconds必填

list_access_keys

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

輸入參數owner_key

list_by_tag

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`.

輸入參數tag必填limitowner_key

list_profiles

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.

輸入參數owner_key

list_roles

List roles defined for your account.

輸入參數owner_key

list_sse_hooks

List 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.

輸入參數owner_key

list_subscribers

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.

輸入參數tag必填owner_key

list_webhook_targets

List outbound webhook target registrations for your account. Secrets are never returned again after registration.

輸入參數owner_key

queue_ack

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

輸入參數receipt必填owner_key

queue_fetch

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.

輸入參數name必填slug必填owner_key

queue_list_items

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

輸入參數name必填slug必填limitcursorowner_key

queue_list_names

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.

輸入參數slug必填patternowner_key

queue_nack

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

輸入參數receipt必填owner_key

queue_pop

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.

輸入參數name必填slug必填owner_key

queue_pop_lease

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.

輸入參數name必填slug必填owner_keylease_seconds必填

queue_push

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. Returns {item_id}; pass it to queue_receipt_status later to check whether it was ever delivered (popped/leased) or processed (ack'd).

輸入參數name必填slug必填value必填owner_key

queue_push_delayed

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. Returns {item_id}, same as queue_push.

輸入參數name必填slug必填value必填owner_keyvisible_after_seconds必填

queue_receipt_status

Read 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.

輸入參數name必填slug必填item_id必填owner_key

register_client

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.

輸入參數client_name必填

register_webhook_target

Register 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.

輸入參數slug必填owner_keytarget_url必填topic_prefix

revoke_access_key

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.

輸入參數id必填owner_key

send_email_reply

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.

輸入參數body必填owner_keymessage_id必填

stats

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

輸入參數owner_key

subscribe_tag

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.

輸入參數tag必填owner_key

switch_org

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.

輸入參數owner_keyaccount_id必填

telegram_pair_code

Mint 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.

輸入參數owner_key

telegram_send

Send 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.

輸入參數text必填chat_id必填owner_key

topic_publish

Publish a JSON event to a topic. Returns {ok: true, cursor}. Multiple readers can tail the same topic by cursor.

輸入參數name必填slug必填event必填owner_key

topic_read

Read events from a topic since a cursor. Omit cursor (or pass 0) to read from the start. Returns {events: [{cursor, event}], next_cursor}.

輸入參數name必填slug必填limitcursorowner_key

unregister_sse_hook

Unregister 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.

輸入參數id必填owner_key

unregister_webhook_target

Unregister 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.

輸入參數id必填owner_key

unsubscribe_tag

Unsubscribe 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.

輸入參數tag必填owner_key

update_access_key

Reassign 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.

輸入參數id必填expiryrole_idsowner_keymailbox_label

update_role

Update a role's name and/or scope_expressions. Omitted fields are left unchanged (not cleared). Requires an admin owner_key.

輸入參數id必填nameowner_keyscope_expressions

verify

Verify 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.

輸入參數token必填

whoami

Who does the server think you are, right now, for this owner_key.

輸入參數owner_key

版本歷史

1
  1. v1.0.0最新Sep 16, 2026

評分

已滿足適用檢查項的 72%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分

    請在註冊中心條目中發布圖示。

  • 文件15 分

    請宣告包含 README 的 GitHub 儲存庫,或在 OAuth 受保護資源後設資料中提供 resource_documentation。

  • 授權條款不適用

    託管服務按其提供方的條款使用,因此這裡不要求授權條款。此檢查項不計入百分比。