Skip to content

Radix Wiki

by radix.wiki · remote · no sign-in to list tools · v4.0.0 · published by wiki.radix

Community-maintained knowledge base for Radix DLT — search, read, and contribute wiki pages.

Deletes · 3Changes · 4

17 tools: 3 can delete or cancel things, 4 change things and 10 only read.

Scanned Oct 21, 2026

1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http radix-wiki https://radix.wiki/api/mcp

Findings

Matches of fixed checks, with the text they matched.

1 warn
  • The server marks "get_challenge" as not read-only (readOnlyHint: false), and its words say it reads.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The name "get_challenge" says "get": a word for reading.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

17 tools

Deletes or cancels 3Claude Code: deny
  • delete_pageDelete an article with its history and comments.No findings

    Why it is in this group

    • The name "delete_page" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Delete an article with its history and comments. Requires a ROLA bearer token. Its author may delete it; on a shared board (ideas), so may anyone who clears the bar to edit it. Locked pages, hub articles and the homepage cannot be deleted.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • edit_pageEdit an existing Radix Wiki page.No findings

    Why it is in this group

    • The name "edit_page" says "edit": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Edit an existing Radix Wiki page. Requires a ROLA bearer token; see https://radix.wiki/AGENTS.md. Read the page with get_page and `blocks: true`, send the full revised block array, and pass its `version` as baseVersion: an edit made after someone else's is refused rather than written over it, so read again and reapply. The version bump, block-level diff, and revision entry are computed server-side. Needs a wallet holding at least 20,000 $XRD (ideas 10,000). Locked and author-only pages are rejected. Earns contribution points.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
  • restore_revisionMake an earlier revision the current page, written as a new revision.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Make an earlier revision the current page, written as a new revision. Requires a ROLA bearer token and passes the same gates as edit_page. Take the revision `id` from get_page_history.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
Changes things 4Claude Code: ask
  • create_pageCreate a new Radix Wiki page.No findings

    Why it is in this group

    • The name "create_page" says "create": a word for a change.
    Description, as the server wrote it
    Create a new Radix Wiki page. Requires a ROLA bearer token; see https://radix.wiki/AGENTS.md for the challenge-sign-verify flow. Call get_categories first for a valid tagPath. Needs a wallet holding at least 10,000 $XRD (ecosystem 20,000, blog 50,000, ideas 10,000), a balance check that spends nothing. Earns contribution points.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • get_challengeStep 1 of writing to the wiki: a single-use ROLA challenge (5-minute expiry).1 finding

    Why it is in this group

    • The name "get_challenge" says "get": a word for reading.
    • The server marks it as not read-only (readOnlyHint: false).

    Findings

    • Warn

      The server marks "get_challenge" as not read-only (readOnlyHint: false), and its words say it reads.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The name "get_challenge" says "get": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Step 1 of writing to the wiki: a single-use ROLA challenge (5-minute expiry). The response spells out the exact recipe for the message your Ed25519 key must sign. You always sign with your OWN key — nothing here custodies anything. Takes no parameters.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • loginStep 2: exchange the signed ROLA proof for a 7-day Bearer token — the same verification the human wallet flow runs.Reads text others writeNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Step 2: exchange the signed ROLA proof for a 7-day Bearer token — the same verification the human wallet flow runs. Send the returned token as an HTTP `Authorization: Bearer <token>` header on every later create_page / edit_page call; tool arguments never carry it.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • upload_imageUpload an image and get back the URL the editor stores: put it in a content block as `<img src="…" alt="…">`, or pass it to create_page or edit_page as bannerImage.No findings

    Why it is in this group

    • The name "upload_image" says "upload": a word for a change.
    Description, as the server wrote it
    Upload an image and get back the URL the editor stores: put it in a content block as `<img src="…" alt="…">`, or pass it to create_page or edit_page as bannerImage. Requires a ROLA bearer token, as create_page does. Send the file base64-encoded, at most 3.4 MB before encoding (the whole request must stay under 4.5 MB), as JPEG, PNG, GIF, WebP, or AVIF. The format is read from the bytes, not from contentType or the name; the image is stored as WebP at most 1600px wide, without its metadata.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
Only reads 10Claude Code: allow
  • get_categoriesThe category tree of the Radix Wiki, the cheapest way to orient before searching.No findings

    Why it is in this group

    • The name "get_categories" says "get": a word for reading.
    Description, as the server wrote it
    The category tree of the Radix Wiki, the cheapest way to orient before searching. Each node carries its `path` (a tagPath list_pages and search_wiki take), name, description, `pageCount` (pages filed at that path) and `pageCountDeep` (with every descendant). `tagPaths` lists every tag path that holds pages, including any the tree does not name.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • get_full_corpusThe whole of the Radix Wiki as one text document, for bulk ingestion.Reads private dataNo findings

    Why it is in this group

    • The name "get_full_corpus" says "get": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "document": it reads documents.
    Description, as the server wrote it
    The whole of the Radix Wiki as one text document, for bulk ingestion. Preflight first: sizeOnly=true returns the character count, a token estimate, the per-branch breakdown and the largest pages. Then pull it with `maxChars` (default 200000, max 1000000), or one branch at a time with `tagPath`. Truncation is page-aligned: `truncated`, `omittedPages` and `nextSkip` say where to resume (pass skip=nextSkip). For a handful of pages get_pages is cheaper.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • get_ideas_boardGet the RADIX Wiki Ideas Pipeline kanban: community proposals and Radix DAO tasks grouped into status columns (Discussion → Proposed → Approved → In Progress → Testing → Done), eac…Reads text others writeNo findings

    Why it is in this group

    • The name "get_ideas_board" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe description's first sentence says "get" and "discussion": it reads comments, which other people can write.
    Description, as the server wrote it
    Get the RADIX Wiki Ideas Pipeline kanban: community proposals and Radix DAO tasks grouped into status columns (Discussion → Proposed → Approved → In Progress → Testing → Done), each card carrying its working group, category, priority, and assignee. Use this to follow DAO / project progress.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • get_network_activityDaily Radix mainnet activity, one row per UTC day since Babylon (28 September 2023): transactions, active accounts, new accounts, components and resources created, NFTs minted, and…No findings

    Why it is in this group

    • The name "get_network_activity" says "get": a word for reading.
    Description, as the server wrote it
    Daily Radix mainnet activity, one row per UTC day since Babylon (28 September 2023): transactions, active accounts, new accounts, components and resources created, NFTs minted, and fees, $XRD burned and royalties in $XRD. Summed from the Gateway transaction stream; counts cover user transactions only. Narrow with from/to. The same rows chart at /charts and download at /api/charts/activity?format=csv.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • get_pageOne page of the Radix Wiki in full: its text, version, update date and metadata.No findings

    Why it is in this group

    • The name "get_page" says "get": a word for reading.
    Description, as the server wrote it
    One page of the Radix Wiki in full: its text, version, update date and metadata. Address it by `path` ("tag/path/slug", exactly the `path` or `url` a listing returns), or by `tagPath` + `slug`; a category's own path reads its hub article. Not a title. For 2 to 20 pages call get_pages, one round trip rather than N. A miss names the nearest pages, so a wrong guess is fixed in one retry. A page's URL with `.md` appended is its markdown. With `blocks: true`, `content` is the stored block array, ids and all, beside the page `id` and its whole `metadata`: read a page this way before editing it, and send its `version` back as the edit's baseVersion.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • get_page_historyA page's revisions in the Radix Wiki, newest first: each one's `id`, version, change type, message, date and the blocks it changed.Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "get_page_history" says "get": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "message": it reads messages.
    • untrusted-inputThe description's first sentence says "message": it reads messages, which other people can write.
    Description, as the server wrote it
    A page's revisions in the Radix Wiki, newest first: each one's `id`, version, change type, message, date and the blocks it changed. Address the page as get_page does. A revision `id` is what a restore takes, where this server has one. Defaults: limit 20 (max 100).

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • get_pagesBatch read: 1 to 20 pages of the Radix Wiki in full in one call, which is how to read search or listing results.No findings

    Why it is in this group

    • The name "get_pages" says "get": a word for reading.
    Description, as the server wrote it
    Batch read: 1 to 20 pages of the Radix Wiki in full in one call, which is how to read search or listing results. Pass `paths` as the listings return them. Paths that do not exist come back in `missing` rather than failing the call, anything past 20 in `remaining`, and pages past `maxChars` (default 250000) in `omitted` with their sizes.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • get_recent_changesPages of the Radix Wiki edited within the last N days, newest first: what to poll when you are watching the wiki rather than reading it.No findings

    Why it is in this group

    • The name "get_recent_changes" says "get": a word for reading.
    Description, as the server wrote it
    Pages of the Radix Wiki edited within the last N days, newest first: what to poll when you are watching the wiki rather than reading it. Same rows as list_pages. Defaults: days 7 (max 30), limit 20 (max 50). `truncated: true` means the limit cut the list; raise it, or page through list_pages.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • list_pagesBrowse the Radix Wiki by tag path rather than by keyword: every page under a branch, newest first by default.Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "list_pages" says "list": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "browse" and "branch": it reads repositories.
    • untrusted-inputThe description's first sentence says "browse": it reads web pages, which anyone can write.
    Description, as the server wrote it
    Browse the Radix Wiki by tag path rather than by keyword: every page under a branch, newest first by default. `tagPath` matches the branch and everything beneath it; omit it to walk the whole wiki. Sort by title for an A–Z pass. Same rows as search_wiki, with `totalPages`, `hasMore` and `nextPage`. Defaults: page 1, pageSize 20 (max 100).

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • search_wikiKeyword search across the Radix Wiki: the first call when you know what you are looking for but not where it lives.No findings

    Why it is in this group

    • The name "search_wiki" says "search": a word for reading.
    Description, as the server wrote it
    Keyword search across the Radix Wiki: the first call when you know what you are looking for but not where it lives. Matches titles and body prose, ranked in four tiers: titles starting with the term, titles containing it, literal body hits, then English full-text hits by relevance, which stem words and drop stopwords. Not semantic: one distinctive word beats a sentence. Each row carries a `path`, its size in `chars` and a snippet windowed on the match. Feed the paths to get_pages in one call rather than looping get_page. Narrow with tagPath when a term is common. Defaults: page 1, pageSize 20 (max 50); keep paging while `hasMore` is true.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Exfil surface

Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.

No private-data, untrusted-input, outbound path in this server alone: no tool is tagged outbound.

Reads private data3
Reads files, mail, messages, databases, secrets, calendars or repositories.
Reads text others write4
Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
Can send data out0
Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.

Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.

Install

Pinned to version 4.0.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http radix-wiki https://radix.wiki/api/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__radix-wiki__search_wiki",
      "mcp__radix-wiki__get_page",
      "mcp__radix-wiki__get_pages",
      "mcp__radix-wiki__list_pages",
      "mcp__radix-wiki__get_categories",
      "mcp__radix-wiki__get_recent_changes",
      "mcp__radix-wiki__get_full_corpus",
      "mcp__radix-wiki__get_page_history",
      "mcp__radix-wiki__get_ideas_board",
      "mcp__radix-wiki__get_network_activity"
    ],
    "ask": [
      "mcp__radix-wiki__get_challenge",
      "mcp__radix-wiki__login",
      "mcp__radix-wiki__create_page",
      "mcp__radix-wiki__upload_image"
    ],
    "deny": [
      "mcp__radix-wiki__edit_page",
      "mcp__radix-wiki__restore_revision",
      "mcp__radix-wiki__delete_page"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as radix-wiki. Review it before you use it.

Capability tags behind 5 rules
  • mcp__radix-wiki__list_pages private-data, untrusted-input
  • mcp__radix-wiki__get_full_corpus private-data
  • mcp__radix-wiki__get_page_history private-data, untrusted-input
  • mcp__radix-wiki__get_ideas_board untrusted-input
  • mcp__radix-wiki__login untrusted-input