Caper ($CAPER) is the platform’s own caper: its members decide which version of the shared platform logic every caper runs on, and its treasury collects a slice of every caper on Caper. It trades, votes and pays out through the same contracts as any other caper.
What feeds the $CAPER treasury?
Two fees. Every new caper pays a one-time registration fee in $XRD, priced by the length of its ticker, and all of it goes to the $CAPER treasury. Every buy and sell on any caper pays the skim, a share of the trade that falls as that caper’s curve fills, and a small part of each skim lands here in the traded caper’s own token, so the treasury comes to hold a token from every caper that trades. What is a caper lists every fee and where it goes.
What can only $CAPER vote on?
An Upgrade proposal, which points the platform at a new CaperMain: the component every caper’s trades and proposals run through. No other caper can raise one, and like any proposal it executes only if the ranked ballot chooses it and the market window then ratifies it.
The load drill that runs after every redeploy raises one here to rehearse the path: “Load drill: upgrade the platform logic”. Its candidate is a second CaperMain built from the live logic package, the same code at a new address. Members ranked “Hold until the logic is audited”, a debate option that executes nothing, above the switch, so the platform stayed where it was.
Guides from the Caper wiki, grouped by what you want to do.
Learn
Govern
Build
curl -s https://caper.network/capers/CAPER/mcp \
-H 'content-type: application/json' \
-H 'accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_market","arguments":{}}}'const res = await fetch("https://caper.network/capers/CAPER/mcp", {
method: "POST",
headers: {
"content-type": "application/json",
accept: "application/json, text/event-stream",
},
body: JSON.stringify({
jsonrpc: "2.0",
id: 1,
method: "tools/call",
params: { name: "get_market", arguments: {} },
}),
});
const { result } = await res.json();
console.log(result.structuredContent);import json, urllib.request
body = {
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {"name": "get_market", "arguments": {}},
}
req = urllib.request.Request(
"https://caper.network/capers/CAPER/mcp",
data=json.dumps(body).encode(),
headers={
"content-type": "application/json",
"accept": "application/json, text/event-stream",
},
)
with urllib.request.urlopen(req) as res:
print(json.load(res)["result"]["structuredContent"])