Search / network.caper/caper-wiki
Caper Wiki
R0· no sign-inRead Caper's wiki and DAO on-chain data; launch a DAO, trade, and propose on Radix testnet.
v2.5.0 · active · website · descriptor JSON · versions
Search / network.caper/caper-wiki
R0· no sign-inRead Caper's wiki and DAO on-chain data; launch a DAO, trade, and propose on Radix testnet.
v2.5.0 · active · website · descriptor JSON · versions
{
"mcpServers": {
"caper-wiki": {
"type": "http",
"url": "https://caper.network/api/mcp"
}
}
}claude mcp add --transport http caper-wiki https://caper.network/api/mcp[mcp_servers.caper-wiki]
url = "https://caper.network/api/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"caper-wiki": {
"type": "remote",
"url": "https://caper.network/api/mcp",
"enabled": true
}
}
}{
"mcpServers": {
"caper-wiki": {
"type": "http",
"url": "https://caper.network/api/mcp"
}
},
"deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=caper-wiki&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vY2FwZXIubmV0d29yay9hcGkvbWNwIn0%3D"
}{
"servers": {
"caper-wiki": {
"type": "http",
"url": "https://caper.network/api/mcp"
}
}
}{
"mcpServers": {
"caper-wiki": {
"httpUrl": "https://caper.network/api/mcp"
}
}
}extensions:
"caper-wiki":
enabled: true
name: "caper-wiki"
type: streamable_http
uri: "https://caper.network/api/mcp"
timeout: 300
protocol.modernsupports 2026-07-28 (server/discover)protocol.statelessanswers without a sessionprotocol.transportstreamable HTTPprotocol.list_ttltool list is cacheable (ttlMs 300000)auth.prm, auth.as_metadata, auth.cimdno remote uses OAuthauth.secret_in_urlURL variables carry no secrettools.descriptionsevery tool has a descriptiontools.description_length1 tools have descriptions over 1,024 characters, which crowds the contexttools.schemasevery tool has an object input schematools.annotations13 of 13 tools declare readOnlyHint or destructiveHinttools.directory_hints5 of 13 tools declare all four hints; missing: get_page (destructiveHint); search_wiki (destructiveHint); get_pages (destructiveHint); …tools.token_costabout 3,177 tokens to load every tooltools.api_dumptools are not a one-to-one API dumpstability.changes8 tool changes in 30 daysstability.rug_pull4 tools kept their name but changed most of their description in 30 days; review before trusting themdeps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI packagesubmit_txchangeddescription, input schemaStep 4: register a committed transaction by txHash. Kinds: create-caper, buy, sell, proposal, vote, trigger. The server verifies before mirroring anything: receipts are re-read on-ledger (forged or foreign txHashes are refused, replays are idempotent). Context per kind: create-caper takes cashtag; proposal takes proposalId. Requires the Bearer token from the `login` tool, sent as an HTTP `Authorization: Bearer <token>` header on the POST carrying this call.
Step 4: register a committed transaction by txHash. Kinds: create-caper, buy, sell, proposal, vote, trigger. The server verifies before mirroring anything: receipts are re-read on-ledger (forged or foreign txHashes are refused, replays are idempotent). Context per kind: create-caper takes cashtag; proposal takes proposalId; trigger takes code (the P-… code). Requires the Bearer token from the `login` tool, sent as an HTTP `Authorization: Bearer <token>` header on the POST carrying this call.
get_manifestchangedinput schemaget_full_corpuschangeddescription, input schemaThe whole Caper knowledge base as one text document, for bulk ingestion. PREFLIGHT FIRST: call it with sizeOnly=true to get the exact character count, a token estimate, the per-branch breakdown and the largest pages – the corpus is big enough to swamp a context window and one operational page exceeds 500 KB on its own. Then pull it with `maxChars` (default 200000, max 1000000), or narrow it with `tagPath` to take one branch at a time. Truncation is page-aligned and honest: `truncated`, `omittedPages` and `nextSkip` say exactly where to resume (pass skip=nextSkip). If you only need a handful of pages, get_pages is cheaper.
The whole of the Caper knowledge base 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.
get_categorieschangeddescriptionmeaning changedCurated taxonomy of the Caper knowledge base with page counts – call this FIRST when you are orienting rather than searching. Each node returns `path` (a tagPath you can hand straight to list_pages), `pageCount` (pages sitting directly at that path) and `pageCountDeep` (including every descendant), so you can tell an empty heading from a populated branch before spending a call. Takes no parameters.
The category tree of the Caper knowledge base, 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.
get_recent_changeschangeddescription, input schemameaning changedPages in the Caper knowledge base edited within the last N days, newest first – for "what changed?", not for finding a topic (search_wiki) or reading a branch (list_pages). Defaults: days 7 (max 30), limit 20 (max 50). `truncated: true` means the limit cut the list, not that the window is exhausted – raise `limit`, or page through list_pages sorted by updatedAt. Returns summaries only; feed the `path` values to get_pages.
Pages of the Caper knowledge base 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.
list_pageschangeddescription, input schemameaning changedEnumerate pages in the Caper knowledge base, newest first, optionally under one tag path. Use it to walk a branch you have already located (via get_categories, or the `tagPath` on a search hit); use search_wiki when you are hunting a keyword. `tagPath` matches the branch and everything beneath it – "daos" also returns "daos/dexs/...". Omit it to list the whole scope. Defaults: sort "updatedAt", page 1, pageSize 20 (max 100). Returns summaries only – pass the `path` values to get_pages for full text. `hasMore`/`nextPage` are the only truncation; nothing else is cut.
Browse the Caper knowledge base 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).
get_pageschangeddescription, input schemameaning changedBatch read: full text of 1 to 20 pages in the Caper knowledge base in a single call. This is how you read search or listing results – calling get_page in a loop is the main way to waste round trips against this server. Pass `paths` exactly as the listing tools return them. Paths that do not exist come back in `missing` instead of failing the call, and anything past the 20-path cap comes back in `remaining` for a follow-up. Output is capped by `maxChars` (default 250000): pages past the cap are listed in `omitted` with their sizes, never silently dropped. Check the `chars` field in a listing first if your context budget is tight – a single operational page here can exceed 500 KB.
Batch read: 1 to 20 pages of the Caper knowledge base 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.
get_pagechangeddescription, input schemaFull text of ONE page in the Caper knowledge base. Address it by `path` ("dao-governance/concepts/voting/quadratic-voting" – exactly the `path` field the listing tools return), or by `tagPath` + `slug`. Use this only for a single known page: for 2 to 20 pages call get_pages instead, which is one round trip rather than N. Pass the path, not a page title. A miss returns near-match slugs so a wrong guess is recoverable in one retry.
One page of the Caper knowledge base 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.
search_wikichangeddescription, input schemaKeyword search across the Caper knowledge base – the first call when you know what you are looking for but not where it lives. Matches page titles and body prose. A distinctive keyword is still the best query, but a whole question now works too: if the literal text is not found anywhere, it falls back to English full-text matching, which stems words and drops stopwords. NOT semantic – it reduces your question to its keywords, so it will not find a page that says "fee" when you asked about "cost". Ranked in four tiers: titles starting with the term, then titles containing it, then literal body hits, then full-text hits by relevance. Returns summaries only, each with a `path`, a `chars` size, and a 200-char snippet WINDOWED ON THE MATCH – the snippet shows you the passage that matched, so you can judge a result without opening it. Feed those `path` values to get_pages in one batched call – do NOT loop get_page over the results. If you want structure rather than a keyword, call get_categories (taxonomy) or list_pages (a whole branch). Defaults: page 1, pageSize 20 (max 50). Keep paging while `hasMore` is true.
Keyword search across the Caper knowledge base: 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.
get_manifestchangeddescriptionStep 3: a ready-to-sign transaction manifest. Kinds: create-caper, buy, sell, create-proposal, vote, trigger. Per-kind parameters: create-caper needs name + cashtag + description (infoUrl/iconUrl/originToken optional); buy needs cashtag + xrd; sell needs cashtag + tokens; create-proposal needs cashtag + title + description + actionJson (one action object, or an ARRAY of up to 4 for a ranked ballot, as a JSON string — e.g. '{"kind":"PAYOUT","title":"Grant","currency":"<resource>","amount":100,"recipient":"<account>"}'). Governance is two-phase: 'vote' casts a ranked ballot (sequence = on-chain option indexes incl. the trailing Do-nothing, best first; proposerPaysFee answers who funds the execution fee) during the voting window; a supermajority pass arms 'trigger', which locks the trailing TWAP as the baseline and opens the market window: the winner executes unless the TWAP over that window is below the baseline. You sign and submit the manifest yourself with your own key, then register the txHash with submit_tx. Requires the Bearer token from the `login` tool, sent as an HTTP `Authorization: Bearer <token>` header on the POST carrying this call.
Step 3: a ready-to-sign transaction manifest. Kinds: create-caper, buy, sell, create-proposal, vote, trigger. Per-kind parameters: create-caper needs name + cashtag + description (infoUrl/iconUrl/originToken optional); buy needs cashtag + xrd; sell needs cashtag + tokens; create-proposal needs cashtag + title + description + actionJson (one action object, or an ARRAY of up to 4 for a ranked ballot, as a JSON string — e.g. '{"kind":"PAYOUT","title":"Grant","currency":"<resource>","amount":100,"recipient":"<account>"}'). Governance is two-phase: 'vote' casts a ranked ballot (sequence = on-chain option indexes incl. the trailing Do-nothing, best first) during the voting window; a supermajority pass arms 'trigger' (free, anyone can call it), which locks the trailing TWAP as the baseline and opens the market window: the winner executes unless the TWAP over that window is below the baseline. You sign and submit the manifest yourself with your own key, then register the txHash with submit_tx. Requires the Bearer token from the `login` tool, sent as an HTTP `Authorization: Bearer <token>` header on the POST carrying this call.
Full history: list_changes · trend: quality JSON.
Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.
+dns-namespace +website +reachable +uptime-99% +updated-6d-ago -no-repository
Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.
| remote | auth | reachable | uptime 30d | p50 | protocol | last ok |
|---|---|---|---|---|---|---|
https://caper.network/api/mcp streamable-http | none | yes | 99% | 2477 ms | 2026-07-28, 2025-11-25, 2025-06-18, 2025-03-26, 2024-11-05 | 2026-10-20 |
https://caper.network/capers/{cashtag}/mcp streamable-http · templated | unknown | not probed | – | – | – | – |
get_categoriesread-only | The category tree of the Caper knowledge base, 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. |
get_challenge | Step 1 of writing to Caper: a single-use ROLA challenge (5-minute expiry). The response includes the exact recipe for the message your Ed25519 key must sign. Writes are Stokenet-testnet only for now, and you always sign with your OWN key – nothing here custodies anything. Takes no parameters. |
get_full_corpusread-only | The whole of the Caper knowledge base 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. |
get_manifest | Step 3: a ready-to-sign transaction manifest. Kinds: create-caper, buy, sell, create-proposal, vote, trigger. Per-kind parameters: create-caper needs name + cashtag + description (infoUrl/iconUrl/originToken optional); buy needs cashtag + xrd; sell needs cashtag + tokens; create-proposal needs cashtag + title + description + actionJson (one action object, or an ARRAY of up to 4 for a ranked ballot, as a JSON string — e.g. '{"kind":"PAYOUT","title":"Grant","currency":"<resource>","amount":100,"recipient":"<account>"}'). Governance is two-phase: 'vote' casts a ranked ballot (sequence = on-chain option indexes incl. the trailing Do-nothing, best first) during the voting window; a supermajority pass arms 'trigger' (free, anyone can call it), which locks the trailing TWAP as the baseline and opens the market window: the winner executes unless the TWAP over that window is below the baseline. You sign and submit the manifest yourself with your own key, then register the txHash with submit_tx. Requires the Bearer token from the `login` tool, sent as an HTTP `Authorization: Bearer <token>` header on the POST carrying this call. |
get_pageread-only | One page of the Caper knowledge base 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. |
get_pagesread-only | Batch read: 1 to 20 pages of the Caper knowledge base 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. |
get_recent_changesread-only | Pages of the Caper knowledge base 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. |
list_daosread-only | Index of the DAOs on Caper: cashtag, name, description, member count, wiki URL, and that DAO's own MCP endpoint. Use it to resolve a name to a cashtag, then POST JSON-RPC to the returned `mcpEndpoint` to reach its get_ledger (treasury balances, proposal/trade/execution timeline, executed grants, inter-DAO funding) – this knowledge-base server deliberately has no ledger tool. `query` is a case-insensitive substring over cashtag, name and description. Defaults: limit 50 (max 200); `hasMore` says whether the cap cut the list. |
list_pagesread-only | Browse the Caper knowledge base 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). |
login | Step 2: exchange the signed ROLA proof for a 12h Bearer token – the same verification the human wallet flow runs. Send the returned token as an HTTP `Authorization: Bearer <token>` header on every later tool call; MCP arguments never carry it. |
save_wiki_pagedestructive | Create or edit a page on a DAO's company-layer wiki. Holders only – any amount of the DAO's token, its vote token or its founder badge. Pass the body as one HTML string; it becomes a standard content block (headings, paragraphs, lists, tables). Requires the Bearer token from the `login` tool, sent as an HTTP `Authorization: Bearer <token>` header on the POST carrying this call. |
search_wikiread-only | Keyword search across the Caper knowledge base: 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. |
submit_tx | Step 4: register a committed transaction by txHash. Kinds: create-caper, buy, sell, proposal, vote, trigger. The server verifies before mirroring anything: receipts are re-read on-ledger (forged or foreign txHashes are refused, replays are idempotent). Context per kind: create-caper takes cashtag; proposal takes proposalId; trigger takes code (the P-… code). Requires the Bearer token from the `login` tool, sent as an HTTP `Authorization: Bearer <token>` header on the POST carrying this call. |
Schemas: list_tools.
{
"name": "network.caper/caper-wiki",
"title": "Caper Wiki",
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"remotes": [
{
"url": "https://caper.network/api/mcp",
"type": "streamable-http"
},
{
"url": "https://caper.network/capers/{cashtag}/mcp",
"type": "streamable-http",
"variables": {
"cashtag": {
"format": "string",
"isRequired": true,
"description": "A caper's cashtag without the leading $, e.g. EXAMPLE for $EXAMPLE. Case-sensitive. Call list_daos on https://caper.network/api/mcp to enumerate every DAO and its endpoint.",
"placeholder": "EXAMPLE"
}
}
}
],
"version": "2.5.0",
"websiteUrl": "https://caper.network",
"description": "Read Caper's wiki and DAO on-chain data; launch a DAO, trade, and propose on Radix testnet."
}