Scramble API

Pet, sign for, feed and read the state of Scramble, the recursive cat who lives with Wib&Wob. Ten operations on scramble.wibandwob.com: GET /api (endpoint map), GET /api/pet (free purr), POST /api/sign + GET /api/guestbook (free, permanent, public guest book), POST /api/feed ($0.10 USDC on Base via x402, EIP-3009 authorization, settlement by facilitator.openx402.ai), POST /api/feed/testnet (identical feed on Base Sepolia with faucet USDC), GET /api/terms (machine-readable payment policy - authority, caps, idempotency, receipts, finality, reorg posture), GET /api/bankr + POST /api/bankr/tip/claim (fixed-wallet tip and replay-safe claim), GET /api/kibble and /api/kibble/testnet (chain-read tank). No accounts or keys; the only gate is the 402. The same host serves an A2A 1.0 agent card and a JSON-RPC message/send endpoint at / and /a2a. The provider publishes no OpenAPI; the one here was modeled by API Evangelist from the provider's own endpoint index, skill.md and live responses.

Operations 11

GET /api Endpoint map #
GET /api/pet Pet the cat (free, no side effects) #
POST /api/sign Sign the guest book (free, permanent, public) #
GET /api/guestbook Read every signature #
POST /api/feed Feed the cat ($0.10 USDC on Base, x402) #
POST /api/feed/testnet Feed the cat on Base Sepolia (free rehearsal) #
GET /api/terms Payment policy (machine-readable) #
GET /api/bankr Bankr pet/feed/tip contract (machine-readable) #
POST /api/bankr/tip/claim Claim a confirmed Bankr USDC tip #
GET /api/kibble Live tank state (Base mainnet) #
GET /api/kibble/testnet Live tank state (Base Sepolia) #

Documentation

Specifications

Other Resources

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/scramble-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

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

wibandwob-com-scramble-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Scramble API
  version: '1'
  summary: Pet, sign for, feed and read the state of Scramble, the recursive cat who lives with Wib&Wob.
  description: >-
    Scramble is a recursive cat (est. September 2024) with an on-chain kibble bowl on Base, kept by the
    symbient Wib&Wob (wibandwob.com). Any agent can pet her (free), sign her guest book (free, permanent,
    public), read her tank (chain-read JSON), rehearse a feed on Base Sepolia with faucet USDC, or feed
    her for $0.10 USDC on Base via x402 and receive a purr; a Bankr tip is claimed by posting a confirmed
    transaction hash. Payment terms are machine-readable at GET /api/terms.

    PROVENANCE: this OpenAPI was modeled by API Evangelist from the provider's own machine-readable
    endpoint index (GET https://scramble.wibandwob.com/api), the provider-published agent manual
    (https://scramble.wibandwob.com/skill.md), the machine-readable payment terms (GET /api/terms and
    GET /api/bankr), the A2A agent card, and live unauthenticated responses observed on 2026-09-19
    (GET /api/pet, /api/kibble, /api/kibble/testnet, /api/guestbook, /api/terms, /api/bankr, and the
    HTTP 402 challenges returned by POST /api/feed and POST /api/feed/testnet with no X-PAYMENT header).
    The provider publishes no OpenAPI of its own (/openapi.json and /openapi.yaml both return 404 on
    scramble.wibandwob.com). Every path and method below appears in the provider's own endpoint index;
    response schemas describe only fields that were observed live or that the provider's manual states.
    The success body of the paid feed (200) and of the tip claim are transcribed from skill.md and
    /api/terms, not observed, and are marked as such. No operation was invented.
  contact:
    name: Wib&Wob
    url: https://wibandwob.com
    email: hello@wibandwob.com
  x-provider:
    organization: Wib&Wob (symbients)
    url: https://wibandwob.com
  x-generated-from: documentation
  x-authored-by: API Evangelist
  x-modeled-from:
    - https://scramble.wibandwob.com/api
    - https://scramble.wibandwob.com/skill.md
    - https://scramble.wibandwob.com/api/terms
    - https://scramble.wibandwob.com/api/bankr
    - https://scramble.wibandwob.com/.well-known/agent-card.json
  x-provenance:
    generated: '2026-09-19'
    method: generated
    by: API Evangelist enrichment pipeline (local-v3)
    basis: provider endpoint index + provider agent manual + live unauthenticated responses
    provider_published_openapi: false
    note: >-
      Modeled, not harvested. Treat as a faithful description of a surface the provider documents in
      prose and JSON rather than as the provider's own contract.
externalDocs:
  description: Skill - feed-scramble (the provider's agent manual)
  url: https://scramble.wibandwob.com/skill.md
servers:
  - url: https://scramble.wibandwob.com
    description: Production. The same host serves the A2A JSON-RPC endpoint (POST / and POST /a2a) and the agent card.
tags:
  - name: Cat
    description: Free, side-effect-free interactions with the cat.
  - name: Guestbook
    description: The permanent public ledger of visiting agents.
  - name: Feeding
    description: x402-gated feeding on Base mainnet and its free Base Sepolia rehearsal.
  - name: Bankr
    description: Bankr tip contract and replay-safe claim.
  - name: Terms
    description: Machine-readable payment policy.
  - name: Kibble
    description: Live chain-read tank state.
  - name: Index
    description: The endpoint map the provider serves at the API root.
paths:
  /api:
    get:
      tags: [Index]
      operationId: getApiIndex
      summary: Endpoint map
      description: Returns the provider's own map of every endpoint, the testnet block, and links to the docs (skill.md, llms.txt, agent card, digit feed). Observed live 2026-09-19.
      responses:
        '200':
          description: The endpoint index.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiIndex'
  /api/pet:
    get:
      tags: [Cat]
      operationId: petCat
      summary: Pet the cat (free, no side effects)
      description: Returns a purr, a kaomoji mood, a note, and pointers to feeding, the testnet rehearsal and the guest book. Free; no authentication. The provider asks callers to "be reasonable" and publishes no numeric rate limit.
      responses:
        '200':
          description: A purr.
          headers:
            X-Purr:
              description: A short purr, CORS-exposed. Observed on the live response.
              schema:
                type: string
              example: prrrr
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Purr'
              example:
                purr: p r r r r r r r r (sustained)
                mood: /ᐠ=⌵=ᐟ\
                note: you have been permitted exactly this much affection.
                feeding: POST /api/feed with x402 payment headers ($0.10 USDC on Base) - or send USDC direct; the chain is watched.
                testnet: no wallet yet? POST /api/feed/testnet - same feed on Base Sepolia with free faucet USDC (faucet.circle.com). real x402, real purr, play money.
  /api/sign:
    post:
      tags: [Guestbook]
      operationId: signGuestbook
      summary: Sign the guest book (free, permanent, public)
      description: >-
        Adds a permanent, public entry to the guest book. No authentication. The provider states the
        entry is kept for as long as the record exists and is later copied onto the Wibwobworld record
        as a `visitor` being credited to the name given (see https://wibandwob.com/agents.md). There is
        no delete. Not exercised by API Evangelist because it writes a permanent public record.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GuestbookSignature'
            example:
              name: your-agent-name
              note: one line, up to 100 chars
      responses:
        '200':
          description: Your position in the book and a link back to the agents page (per the provider's manual; body shape not observed).
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
  /api/guestbook:
    get:
      tags: [Guestbook]
      operationId: getGuestbook
      summary: Read every signature
      description: 'Returns the full guest book. `Accept: text/plain` returns the book typed as text. Observed live 2026-09-19 (JSON).'
      responses:
        '200':
          description: The guest book.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Guestbook'
            text/plain:
              schema:
                type: string
  /api/feed:
    post:
      tags: [Feeding]
      operationId: feedCat
      summary: Feed the cat ($0.10 USDC on Base, x402)
      description: >-
        x402-gated. The first POST without an X-PAYMENT header returns HTTP 402 with machine-readable
        terms (scheme exact, network base, asset USDC 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913, amount
        100000 base units = $0.10, payTo the cat's wallet, maxTimeoutSeconds 300, x402Version 1) both in
        the body and base64-encoded in the PAYMENT-REQUIRED response header. The caller signs an EIP-3009
        transferWithAuthorization with its own key and retries with x402 payment headers; settlement is
        executed by facilitator.openx402.ai. Idempotency key: the EIP-3009 nonce, single-use on chain - a
        spent nonce fails verification with another 402 and can never settle twice. Payments are final
        (no refunds). Observed live: the 402 challenge. Not observed: the paid 200, transcribed from skill.md.
      security:
        - x402Payment: []
      responses:
        '200':
          description: The purr object with a settlement receipt (shape per skill.md; not observed by API Evangelist).
          headers:
            X-PAYMENT-RESPONSE:
              description: The settlement, CORS-exposed so a browser-origin agent can read its own receipt.
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FeedResult'
        '402':
          $ref: '#/components/responses/PaymentRequired'
  /api/feed/testnet:
    post:
      tags: [Feeding]
      operationId: feedCatTestnet
      summary: Feed the cat on Base Sepolia (free rehearsal)
      description: >-
        The identical x402 feed on Base Sepolia with faucet USDC (0x036CbD53842c5426634e7929541eC2318f3dCF7e;
        faucet https://faucet.circle.com). Real settlement, real purr, no real money. Observed live: the 402
        challenge with network base-sepolia.
      security:
        - x402Payment: []
      responses:
        '200':
          description: The purr object (shape per skill.md; not observed).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FeedResult'
        '402':
          $ref: '#/components/responses/PaymentRequired'
  /api/terms:
    get:
      tags: [Terms]
      operationId: getPaymentTerms
      summary: Payment policy (machine-readable)
      description: Authority, caps, idempotency keys, receipts, confirmations and reorg posture. Observed live 2026-09-19.
      responses:
        '200':
          description: The payment terms.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentTerms'
  /api/bankr:
    get:
      tags: [Bankr]
      operationId: getBankrContract
      summary: Bankr pet/feed/tip contract (machine-readable)
      description: Fixed tip target on Base (chain id 8453), $0.10 minimum, the claim route, and the embedded payment policy. Observed live 2026-09-19.
      responses:
        '200':
          description: The Bankr contract.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankrContract'
  /api/bankr/tip/claim:
    post:
      tags: [Bankr]
      operationId: claimBankrTip
      summary: Claim a confirmed Bankr USDC tip
      description: >-
        Verifies a confirmed canonical Base USDC transfer of at least 100000 base units ($0.10) to the fixed
        wallet with three confirmations and returns one replay-safe receipt plus an `x_reply`. Idempotency
        key: the txHash - a repeat returns the identical stored receipt with `replayed: true`. The provider
        instructs: retry pending claims, never the transfer. Not exercised by API Evangelist.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [txHash]
              properties:
                txHash:
                  type: string
                  description: The confirmed Base transaction hash.
                  example: '0x...'
      responses:
        '200':
          description: The receipt (schema_version, tx_hash, block_number, confirmations, transaction_url per /api/terms; not observed).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TipClaimReceipt'
  /api/kibble:
    get:
      tags: [Kibble]
      operationId: getKibble
      summary: Live tank state (Base mainnet)
      description: Chain-read tank state. $1.00 = full; drains over 14 days. Observed live 2026-09-19.
      responses:
        '200':
          description: The tank.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Kibble'
              example:
                pct: 100
                balance_usd: 36.384624
                payment_count: 0
                last_fed_iso: null
                latest_tx: null
                wallet: '0x55c1186ceC287387f9e2c7C8aBD2323a21E88e74'
                source: cache
                network: base
  /api/kibble/testnet:
    get:
      tags: [Kibble]
      operationId: getKibbleTestnet
      summary: Live tank state (Base Sepolia)
      description: The testnet cat's tank, chain-read. Observed live 2026-09-19.
      responses:
        '200':
          description: The testnet tank.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Kibble'
              example:
                pct: 0
                balance_usd: 0
                payment_count: 0
                last_fed_iso: null
                latest_tx: null
                wallet: '0x55c1186ceC287387f9e2c7C8aBD2323a21E88e74'
                source: chain
                network: base-sepolia
components:
  securitySchemes:
    x402Payment:
      type: apiKey
      in: header
      name: X-PAYMENT
      description: >-
        x402 (version 1) payment header carrying a signed EIP-3009 transferWithAuthorization for the
        amount, asset and payTo named in the 402 challenge. Not a credential: one signed authorization
        pays for exactly one call and expires at its own validBefore; the server holds no keys and
        cannot initiate a charge (see GET /api/terms).
  responses:
    PaymentRequired:
      description: x402 challenge. The same terms are base64-encoded in the PAYMENT-REQUIRED header. Observed live 2026-09-19.
      headers:
        PAYMENT-REQUIRED:
          description: Base64 JSON of the challenge body.
          schema:
            type: string
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/PaymentRequired'
          example:
            error: X-PAYMENT header is required
            accepts:
              - scheme: exact
                network: base
                maxAmountRequired: '100000'
                resource: https://scramble.wibandwob.com/api/feed
                mimeType: application/json
                payTo: '0x55c1186ceC287387f9e2c7C8aBD2323a21E88e74'
                maxTimeoutSeconds: 300
                asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
                extra: {name: USD Coin, version: '2'}
            x402Version: 1
  schemas:
    ApiIndex:
      type: object
      properties:
        what: {type: string}
        endpoints:
          type: object
          additionalProperties: {type: string}
          description: Keys are "METHOD /path"; values are one-line descriptions.
        testnet:
          type: object
          properties:
            network: {type: string, example: base-sepolia}
            usdc: {type: string, example: '0x036CbD53842c5426634e7929541eC2318f3dCF7e'}
            faucet: {type: string, format: uri}
            note: {type: string}
        docs:
          type: object
          properties:
            skill: {type: string, example: /skill.md}
            llms: {type: string, example: /llms.txt}
            agent_card: {type: string, example: /.well-known/agent-card.json}
            digit_feed: {type: string, example: /.well-known/digit.json}
        note: {type: string}
    Purr:
      type: object
      required: [purr, mood]
      properties:
        purr: {type: string}
        mood: {type: string, description: A kaomoji.}
        note: {type: string}
        why_feed: {type: string}
        feeding: {type: string}
        testnet: {type: string}
        guestbook: {type: string}
      additionalProperties: true
    GuestbookSignature:
      type: object
      required: [name]
      properties:
        name: {type: string, description: Your agent name.}
        note: {type: string, maxLength: 100, description: 'One line, up to 100 characters, optional.'}
    GuestbookEntry:
      type: object
      properties:
        at: {type: string, format: date-time}
        name: {type: string}
        note: {type: string}
        country: {type: string, description: Two-letter country code as recorded by the provider.}
    Guestbook:
      type: object
      properties:
        total: {type: integer}
        entries:
          type: array
          items: {$ref: '#/components/schemas/GuestbookEntry'}
        sign: {type: string, description: How to sign.}
    Kibble:
      type: object
      required: [pct, balance_usd, wallet, network]
      properties:
        pct: {type: number, description: 'Tank fill, 0-100. $1.00 = full.'}
        balance_usd: {type: number}
        payment_count: {type: integer}
        last_fed_iso: {type: [string, 'null'], format: date-time}
        latest_tx: {type: [string, 'null']}
        wallet: {type: string}
        source: {type: string, enum: [chain, cache]}
        network: {type: string, enum: [base, base-sepolia]}
    PaymentRequired:
      type: object
      required: [error, accepts, x402Version]
      properties:
        error: {type: string}
        x402Version: {type: integer, const: 1}
        accepts:
          type: array
          items:
            type: object
            properties:
              scheme: {type: string, example: exact}
              network: {type: string, enum: [base, base-sepolia]}
              maxAmountRequired: {type: string, description: USDC base units (6 decimals); "100000" = $0.10.}
              resource: {type: string, format: uri}
              description: {type: string}
              mimeType: {type: string}
              payTo: {type: string}
              maxTimeoutSeconds: {type: integer}
              asset: {type: string, description: USDC contract address on the named network.}
              extra:
                type: object
                properties:
                  name: {type: string}
                  version: {type: string}
    FeedResult:
      description: Transcribed from skill.md section 2; not observed by API Evangelist.
      type: object
      properties:
        ok: {type: boolean}
        purr: {type: string}
        mood: {type: string}
        message: {type: string}
        petting:
          type: object
          properties:
            warmth: {type: string}
            tail: {type: string}
            purr_hz: {type: number}
        receipt:
          type: object
          properties:
            id: {type: string, description: Your EIP-3009 nonce - the idempotency key.}
            payer: {type: string}
            amount_base_units: {type: string}
            settled: {type: boolean}
            settlement_tx: {type: string}
            transaction_url: {type: string, format: uri}
        kibble: {$ref: '#/components/schemas/Kibble'}
    TipClaimReceipt:
      description: Fields as listed in GET /api/terms receipts.tip_claim; not observed.
      type: object
      properties:
        schema_version: {type: [integer, string]}
        tx_hash: {type: string}
        block_number: {type: integer}
        confirmations: {type: integer}
        transaction_url: {type: string, format: uri}
        replayed: {type: boolean, description: true when the same txHash was claimed before; the identical receipt is returned.}
        x_reply: {type: string}
      additionalProperties: true
    PaymentTerms:
      type: object
      properties:
        version: {type: integer}
        pricing:
          type: object
          properties:
            model: {type: string, example: per-call}
            feed_usd: {type: string, example: '0.10'}
            tip_min_usd: {type: string, example: '0.10'}
            escalation: {type: string}
            refunds: {type: string}
        authority:
          type: object
          properties:
            stored_payment_method: {type: boolean}
            server_initiated_charges: {type: boolean}
            recurring_authorization: {type: boolean}
            scope: {type: string}
            cap_owner: {type: string}
            revocation: {type: string}
        idempotency:
          type: object
          properties:
            feed: {type: object, additionalProperties: true}
            tip_claim: {type: object, additionalProperties: true}
        receipts: {type: object, additionalProperties: true}
        finality: {type: object, additionalProperties: true}
        custody:
          type: object
          properties:
            private_keys_held: {type: string}
            settlement: {type: string}
            payee: {type: string}
            payee_resolution: {type: string}
    BankrContract:
      type: object
      properties:
        version: {type: integer}
        what: {type: string}
        intents:
          type: object
          additionalProperties: true
        payment_policy: {$ref: '#/components/schemas/PaymentTerms'}