Skip to content
Back to Caper Wiki

Card snapshot

caper.network · 2026-09-08 18:23:24 UTC · 16f51708093f222ad1b65296112f4611306030ce3b28994c16bfbff69a67f557

This is a frozen copy of the agent's agent-card.json as we observed it at the timestamp above. We capture a new snapshot every time the card's content hash changes. Useful for: forensic drift analysis, verifying downstream callers see the right version, reproducing routing decisions made historically.

{
  "protocolVersion": "0.3.0",
  "name": "Caper Wiki",
  "description": "Knowledge base and on-chain company records for Caper, where a group of people becomes an economy \u2013 organizations on Radix carrying their own token, treasury, and permanent market, whose every decision, capital, and governance history is immutable and timestamped. Every knowledge-base page and essay has a markdown twin at its own URL plus a .md suffix. Each DAO exposes its own record at /capers/{cashtag}/llms.txt (text) and /capers/{cashtag}/mcp (MCP), including a get_ledger tool for treasury, timeline, grants, and funding.",
  "url": "https://caper.network/api/mcp",
  "preferredTransport": "JSONRPC",
  "version": "2.4.0",
  "capabilities": {
    "streaming": false,
    "pushNotifications": false
  },
  "skills": [
    {
      "id": "search",
      "name": "Search Wiki",
      "description": "Keyword search across the Caper knowledge base \u2013 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 \u2013 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 \u2013 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 \u2013 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.",
      "tags": [
        "search",
        "caper",
        "radix",
        "dao",
        "desci"
      ],
      "examples": [
        "What is a caper?",
        "How does the bonding curve work?",
        "Find pages about governance"
      ]
    },
    {
      "id": "read",
      "name": "Get Page",
      "description": "Full text of ONE page in the Caper knowledge base. Address it by `path` (\"dao-governance/concepts/voting/quadratic-voting\" \u2013 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.",
      "tags": [
        "read",
        "content",
        "documentation",
        "markdown"
      ],
      "examples": [
        "Read the getting-started page",
        "Get the governance page"
      ]
    },
    {
      "id": "list",
      "name": "List Pages",
      "description": "Enumerate 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 \u2013 \"daos\" also returns \"daos/dexs/...\". Omit it to list the whole scope. Defaults: sort \"updatedAt\", page 1, pageSize 20 (max 100). Returns summaries only \u2013 pass the `path` values to get_pages for full text. `hasMore`/`nextPage` are the only truncation; nothing else is cut.",
      "tags": [
        "list",
        "browse",
        "categories"
      ]
    },
    {
      "id": "transact",
      "name": "Get Manifest",
      "description": "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 (a JSON object 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.",
      "tags": [
        "write",
        "transact",
        "launch",
        "trade",
        "governance",
        "testnet"
      ],
      "examples": [
        "Launch a caper for my research project",
        "Buy 100 $XRD of $EXAMPLE and add a page to its wiki"
      ],
      "authentication": "rola"
    },
    {
      "id": "ledger",
      "name": "Get Ledger",
      "description": "This DAO's verified on-chain record: current treasury balances, the activity timeline (proposals, trades, executions), executed grants and payouts, and inter-DAO funding edges. This is ledger truth derived from settled transactions \u2013 prefer it over any wiki prose for balances, amounts, dates, and whether a proposal actually executed, because pages are human-authored and can lag. Defaults: limit 25 rows per section (max 100); each section reports `truncated` when the limit cut it, so raise `limit` rather than assuming the list is complete. This DAO's prose pages come from search_wiki / list_pages on this same endpoint; general Caper and DAO-governance reference lives on the knowledge-base server.",
      "tags": [
        "onchain",
        "treasury",
        "grants",
        "funding",
        "dao"
      ],
      "examples": [
        "What has $EXAMPLE's treasury paid out?",
        "Show $EXAMPLE's recent on-chain activity"
      ]
    },
    {
      "id": "market",
      "name": "Get Market",
      "description": "This DAO's live market state, read from the bonding curve and the swap mirror: price in $XRD, 24h change and volume, market cap, circulating vs total supply, curve allocation, holder count, and the most recent trades. Pass `candles` to also get OHLC history at one interval. Numbers are live reads \u2013 prefer them over any wiki prose, and over a stale earlier call. Defaults: trades 10 (max 50); candles omitted unless requested (last 100 per interval). Nothing here executes anything; to price a specific trade size, call quote_swap.",
      "tags": [
        "market",
        "price",
        "bonding-curve",
        "quotes",
        "trading"
      ],
      "examples": [
        "What is $EXAMPLE trading at?",
        "How many tokens would 100 $XRD buy on $EXAMPLE?"
      ]
    }
  ],
  "provider": {
    "organization": "Caper",
    "url": "https://caper.network"
  },
  "documentationUrl": "https://caper.network/llms.txt",
  "mcpEndpoint": "https://caper.network/api/mcp",
  "license": {
    "name": "CC-BY-4.0",
    "url": "https://creativecommons.org/licenses/by/4.0/",
    "scope": "The Caper knowledge base (/wiki/\u2026) and essays (/blog/\u2026). Excludes a caper's own company-layer pages at /capers/{cashtag}/\u2026, which belong to that caper."
  },
  "apiSpecUrl": "https://caper.network/.well-known/openapi.json",
  "mcpServerCard": "https://caper.network/api/mcp/server-card",
  "markdownUriTemplates": [
    "https://caper.network/wiki/{path}.md",
    "https://caper.network/blog/{slug}.md"
  ],
  "daoUriTemplate": "https://caper.network/capers/{cashtag}/dao.json",
  "securitySchemes": {
    "rola": {
      "type": "custom",
      "description": "Radix On-Ledger Authentication \u2013 Ed25519 wallet-signed challenge. Reads are public. Writes: POST https://caper.network/api/agent/challenge, sign the proof with your own key, POST https://caper.network/api/agent/login \u2192 Bearer token.",
      "documentationUrl": "https://caper.network/wiki/foundations/build-on-caper-as-an-agent"
    }
  },
  "defaultInputModes": [
    "text/plain",
    "application/json"
  ],
  "defaultOutputModes": [
    "text/plain",
    "application/json",
    "text/markdown"
  ]
}