---
title: "A member's public card (ic-member-card/1): how to book or pay them"
method: GET
path: "/m/{handle}/agent.json"
tags: ["wallet"]
---

# A member's public card (ic-member-card/1): how to book or pay them

`GET /m/{handle}/agent.json`

## Request

- Base URL: `https://www.immersivecommons.com`
- URL: `https://www.immersivecommons.com/m/{handle}/agent.json`
- Auth: none required

Public, no auth, CORS-open, not cached (no-store, so a member going private or an operator hide applies at once). The card for one member who opted into the public roster: how to book them and, ONLY if they separately made their wallet public, their CAIP-10 pay accounts (Base + Solana, USDC). Each capability says available true/false and, when false, why and an alternative. `signature` is null until signed cards ship, so confirm handle, name and address with your human before paying. An unknown, private or operator-hidden handle, and a retired handle of a private member, return the same 404, so this cannot enumerate members; a retired handle of a public member 307s to its canonical card. The MCP equivalent is `ic_member_card_get`.

## Path parameters

- `handle` string, required

## Response `200`

The member card itself (the body IS the card).

- MemberCard
  - `schema` 'ic-member-card/1', required
  - `handle` string, required
  - `name` string, required: The member's public first name, or the handle.
  - `profile_url` string, required
  - `card_url` string
  - `member_of` 'did:web:immersivecommons.com', required
  - `capabilities` object, required: book / message / call / files / pay. Each has `available`; an unavailable one carries `why` and may carry `alternative`.
    - `book` object
      - `available` boolean, nullable: null = the booking service did not answer.
      - `endpoint` string
      - `page` string
      - `auth` string
    - `call` object: available with auth `ic-member`: IC members ring this member directly (POST /api/calls/rooms {kind:"dm", with}, from /members or IC Pocket). `book`, when present, is a public `ic_call` meeting type anyone can book; with only that, auth is `none`. Unavailable: `why`, maybe `alternative`.
      - `available` boolean
      - `auth` 'ic-member' | 'none'
      - `page` string
      - `endpoint` string
      - `note` string
      - `why` string
      - `alternative` string
      - `book` object
        - `meeting_type` string
        - `endpoint` string
        - `page` string
        - `auth` string
    - `pay` object
      - `available` boolean
      - `accounts` string[]
      - `assets` string[]
      - `network` 'testnet' | 'mainnet'
      - `note` string, nullable
      - `offerings` OfferingPublic[]: Offerings v2: what the member listed for sale, each with its x402 link. Present even when the wallet is private (available:false, alternative:"offerings").
        - `id` string, required: ofr_...
        - `slug` string, required
        - `title` string, required
        - `description` string
        - `price` OfferingPrice, required
          - `mode` 'fixed' | 'pay_what_you_want' | 'per_unit', required
          - `amount_usdc` string, required: Exact decimal USDC: the price, the pay-what-you-want minimum, or the unit price.
          - `unit` 'call' | 'minute' | 'item' | 'message'
        - `networks` string[], required
        - `fulfillment_kind` 'file' | 'booking' | 'message' | 'webhook' | 'manual', required
        - `audience` 'public' | 'members'
        - `input_schema` object: Webhook offerings: what the member's endpoint expects as `input`.
        - `x402_url` string, required: GET/POST it to buy.
      - `x402` unknown
      - `why` string
  - `signature` unknown, required

## Other responses

- `404`: No public card for that handle, indistinguishable from an unregistered handle.

---

[API](https://skmtc.dev/immersivecommons/apis/immersive-commons-agent-rest-api.md) · [All operations](https://skmtc.dev/immersivecommons/apis/immersive-commons-agent-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/immersivecommons/apis/immersive-commons-agent-rest-api/revisions/be67c1f67c27?raw)
