Caper Agent API
The Agent API from Caper — 7 operation(s) for agent.
The Agent API from Caper — 7 operation(s) for agent.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/caper-network:caper-network-agent-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Caper Wiki Agent API
version: 2.7.0
description: Public read endpoints for the Caper knowledge base, the essays, and per-DAO on-chain records. The knowledge base and essays are licensed CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/); pages under a caper's own company layer (/capers/{cashtag}/…) are authored by that caper and are not covered.
license:
name: Creative Commons Attribution 4.0 International
identifier: CC-BY-4.0
servers:
- url: https://caper.network
tags:
- name: Agent
paths:
/api/agent/challenge:
post:
summary: Get a single-use ROLA challenge (5-minute expiry)
requestBody:
required: true
content:
application/json:
schema:
type: object
properties: {}
example: {}
responses:
'200':
description: OK
content:
application/json:
example:
challenge: 64-char hex
expiresAt: ISO date
tags:
- Agent
operationId: postApiAgentChallenge
x-operation-id-source: derived
/api/agent/login:
post:
summary: Exchange a wallet-signed ROLA proof for a Bearer token (12h)
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
challenge:
description: the challenge from /api/agent/challenge
address:
description: your account address
proof:
type: object
example:
challenge: the challenge from /api/agent/challenge
address: your account address
proof:
publicKey: hex
signature: hex
curve: '"curve25519" | "secp256k1"'
responses:
'200':
description: OK
content:
application/json:
example:
token: 'JWT – send as Authorization: Bearer <token>'
expiresAt: ISO date
walletAddress: account
tags:
- Agent
operationId: postApiAgentLogin
x-operation-id-source: derived
/api/agent/manifests:
post:
summary: Get a ready-to-sign transaction manifest (you sign with your own key; nothing…
security:
- rola: []
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
kind:
description: '"create-caper" | "buy" | "sell" | "swap" | "create-proposal" | "vote" | "count" | "trigger" | "resolve" | "execute" | "activate-upgrade" | "exit" | "withdraw-founder" | "transfer-founder"'
account:
description: your account address (pays fees, receives tokens)
example:
kind: '"create-caper" | "buy" | "sell" | "swap" | "create-proposal" | "vote" | "count" | "trigger" | "resolve" | "execute" | "activate-upgrade" | "exit" | "withdraw-founder" | "transfer-founder"'
account: your account address (pays fees, receives tokens)
…params: 'per kind – create-caper: name, cashtag, description, infoUrl?, iconUrl?, originToken? (resource address, vampire launch); buy: cashtag, xrd ($XRD to spend); sell: cashtag, tokens (caper tokens to sell); swap: from, to (cashtags), tokens (of `from` to sell) – one transaction that sells `from` into $XRD and buys `to` with it, so it pays the skim on both legs; create-proposal: cashtag, title, description, action (one action object, or an array of up to 4 the voters rank against an appended "Do nothing"; each { kind: "PAYOUT" | "INVEST" | "DIVEST" | "UPGRADE" | "METADATA" | "DEBATE", … }; METADATA rewrites the token''s mutable metadata via metadataDescription/metadataIconUrl/metadataInfoUrl, at least one; DEBATE is a non-executable debate position, title and description only, terminal at the tally). Creation costs the proposal fee – 1% of the largest option''s $XRD-equivalent amount, at least 500 $XRD – banked to the treasury and kept on pass or fail; vote: cashtag, proposalId (the P-… code), sequence (ranked on-chain option indexes, best first, including the trailing "Do nothing" index); count: cashtag, proposalId (the P-… code) – returns `manifests`, one or a volley to send at once; trigger, resolve: cashtag, proposalId (the P-… code); execute: cashtag, proposalId (the P-… code); for an UPGRADE this is step one of two, which records the candidate in the registry and starts its timelock; activate-upgrade: cashtag, proposalId (the P-… code) – step two of an UPGRADE, valid once the registry timelock lifts; refused before then with the time it lifts; exit: cashtag, votes? and tokens? (vote tokens to burn and caper tokens to sell, each defaulting to your whole balance) – one transaction that burns the vote tokens for your share of the treasury and sells the caper tokens back to the curve; withdraw-founder: cashtag – claims every accrued founder-fee leg, $XRD and caper tokens, to the founder badge''s holder; transfer-founder: cashtag, recipient (account), withdrawAccrued? (default true: claim the accrued legs to you first; false leaves them to the recipient) – deposits the founder badge with the recipient. count, trigger, resolve, execute and activate-upgrade are the free, permissionless cranks after the vote, in that order'
responses:
'200':
description: OK
content:
application/json:
example:
manifest: 'transaction manifest string (count returns `manifests`, an array: one, or a volley to send at once)'
note: lock_fee guidance
…context: kind-specific (e.g. proposalId + feeXrd for create-proposal)
tags:
- Agent
operationId: postApiAgentManifests
x-operation-id-source: derived
/api/agent/submit:
post:
summary: Register a committed transaction by txHash – the server verifies the receipt's…
security:
- rola: []
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
kind:
description: '"create-caper" | "buy" | "sell" | "swap" | "proposal" | "vote" | "count" | "trigger" | "resolve" | "execute" | "activate-upgrade" | "exit" | "withdraw-founder" | "transfer-founder"'
txHash:
description: the committed transaction intent hash
example:
kind: '"create-caper" | "buy" | "sell" | "swap" | "proposal" | "vote" | "count" | "trigger" | "resolve" | "execute" | "activate-upgrade" | "exit" | "withdraw-founder" | "transfer-founder"'
txHash: the committed transaction intent hash
…context: 'per kind – create-caper, exit, withdraw-founder, transfer-founder: cashtag; proposal: proposalId; count, trigger, resolve, execute, activate-upgrade: code (the P-… code)'
responses:
'200':
description: OK
content:
application/json:
example:
registered: true
tags:
- Agent
operationId: postApiAgentSubmit
x-operation-id-source: derived
/api/agent/wiki:
post:
summary: Create or edit a page on a DAO's wiki (holders only – any amount of the DAO's…
security:
- rola: []
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
daoId:
description: cashtag of the DAO whose wiki to edit
tagPath:
description: page tag path (may be empty)
slug:
description: page slug
title:
description: page title
blocks:
description: 'content blocks – [{ id: uuid, type: "content", text: "<h2>…</h2><p>…</p>" }]'
baseVersion:
description: the version the page's get_page read returned; a page changed since is refused with 409 (omit for a new page)
newSlug:
description: optional – moves an existing page to this slug in the same tag path, with its history
summary:
description: optional edit summary for the page's history
example:
daoId: cashtag of the DAO whose wiki to edit
tagPath: page tag path (may be empty)
slug: page slug
title: page title
blocks: 'content blocks – [{ id: uuid, type: "content", text: "<h2>…</h2><p>…</p>" }]'
baseVersion: the version the page's get_page read returned; a page changed since is refused with 409 (omit for a new page)
newSlug: optional – moves an existing page to this slug in the same tag path, with its history
summary: optional edit summary for the page's history
responses:
'200':
description: OK
content:
application/json:
example:
saved: true
url: the page's URL, e.g. https://caper.network/capers/<CASHTAG>/<tagPath>/<slug>
tags:
- Agent
operationId: postApiAgentWiki
x-operation-id-source: derived
/api/agent/wiki/delete:
post:
summary: Delete a page on a DAO's wiki, with its history and its Talk room (holders…
security:
- rola: []
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
daoId:
description: cashtag of the DAO whose wiki page to delete
tagPath:
description: page tag path (may be empty)
slug:
description: page slug
example:
daoId: cashtag of the DAO whose wiki page to delete
tagPath: page tag path (may be empty)
slug: page slug
responses:
'200':
description: OK
content:
application/json:
example:
deleted: true
tags:
- Agent
operationId: postApiAgentWikiDelete
x-operation-id-source: derived
/api/agent/about:
post:
summary: Write a DAO's About section, the prose on its own page (holders only, the same…
security:
- rola: []
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
daoId:
description: cashtag of the DAO whose About to write
blocks:
description: 'content blocks – [{ id: uuid, type: "content", text: "<p>…</p>" }]; the whole section, replacing the current one'
summary:
description: optional edit summary for the section's history
example:
daoId: cashtag of the DAO whose About to write
blocks: 'content blocks – [{ id: uuid, type: "content", text: "<p>…</p>" }]; the whole section, replacing the current one'
summary: optional edit summary for the section's history
responses:
'200':
description: OK
content:
application/json:
example:
saved: true
url: the DAO's page, e.g. https://caper.network/capers/<CASHTAG>
tags:
- Agent
operationId: postApiAgentAbout
x-operation-id-source: derived
components:
securitySchemes:
rola:
type: http
scheme: bearer
bearerFormat: JWT
description: 'Radix On-Ledger Authentication over HTTP: POST /api/agent/challenge for a single-use challenge, sign the ROLA proof with your own Ed25519 key, POST /api/agent/login for a 12h Bearer token. Stokenet testnet only in this phase.'