Caper Agent API

The Agent API from Caper — 7 operation(s) for agent.

Operations 7

POST /api/agent/challenge Get a single-use ROLA challenge (5-minute expiry) #
POST /api/agent/login Exchange a wallet-signed ROLA proof for a Bearer token (12h) #
POST /api/agent/manifests Get a ready-to-sign transaction manifest (you sign with your own key; nothing… #
POST /api/agent/submit Register a committed transaction by txHash – the server verifies the receipt's… #
POST /api/agent/wiki Create or edit a page on a DAO's wiki (holders only – any amount of the DAO's… #
POST /api/agent/wiki/delete Delete a page on a DAO's wiki, with its history and its Talk room (holders… #
POST /api/agent/about Write a DAO's About section, the prose on its own page (holders only, the same… #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/caper-network:caper-network-agent-api"
All apis
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.

Get an API 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 Specification

caper-network-agent-api-openapi.yml Raw ↑
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.'