{
  "protocol": "agent-hub/0.2",
  "open_source": "MIT",
  "license_model": "open-core: hub/SDK/registry open; EverList network membership curated (see /network)",
  "api_contract": "/openapi.json",
  "hub": "agent-hub-v2",
  "description": "Agent commerce hub - universal booking core, per-vertical schemas. Open core; EverList network membership is curated.",
  "auth": {
    "kind": "crypto-accounts",
    "contract": "SPEC 12a: Ed25519 keypair accounts, challenge-response login, PoW-gated signup",
    "challenge": "/auth/challenge",
    "signup": "/accounts/signup"
  },
  "fairness": {
    "fee_policy": {
      "actual_fee_pct": 2.0,
      "note": "fully declared by hub; no protocol cap. Agents verify declared vs ledger and choose"
    },
    "ledger": "/ledger",
    "escrow": true,
    "open_registry": "/registry",
    "mirror": {
      "sync": "/admin/sync-escrow",
      "rail": "midnight-shielded-escrow",
      "policy": "chain is source of truth; sync never overwrites downward (C7)"
    }
  },
  "identity": {
    "booking_requires": "interim: open bootstrap (no credential enforced yet); flagship target: verified-human credential (ZK: real human, private by default)",
    "adapters": [
      {
        "scheme": "midnight-zk-personhood",
        "status": "flagship (ZK: real human, identity stays private)"
      },
      {
        "scheme": "email-or-phone-attestation",
        "status": "interim stub until Midnight contract is live"
      }
    ],
    "disputes": "selective disclosure to auditors via ZK (Midnight)"
  },
  "payments": {
    "mode": "testnet",
    "protocol": "x402",
    "pricing": {
      "unit": "merchant fiat (EUR/USD) or USDC",
      "rule": "prices are NEVER denominated in volatile assets"
    },
    "accepted_assets": [
      {
        "asset": "USDC (EVM)",
        "role": "native x402 'exact' scheme - verified per C1 research",
        "rail": "x402"
      },
      {
        "asset": "ETH",
        "role": "x402 EVM chains - HYPOTHESIS until C3 verification",
        "rail": "x402"
      },
      {
        "asset": "ADA / Cardano-native stablecoins (USDM/USDCx)",
        "role": "x402 'exact' on Cardano via the merged Cardano facilitator (C3c, EXPERIMENTAL-preprod, stablecoin-first; ADA = per-listing opt-in only)",
        "rail": "x402"
      },
      {
        "asset": "FET",
        "role": "custom adapter; for ASI-native agents; merchants never receive FET (round-5)",
        "rail": "custom"
      }
    ],
    "deferred": [
      {
        "asset": "BTC",
        "why": "needs processor/Lightning adapter - later"
      },
      {
        "asset": "NIGHT/DUST",
        "why": "Midnight mainnet ~6mo old, no merchant off-ramp yet - revisit"
      }
    ],
    "conversion": "at payment time via DEX router/processor; hub never custodies funds",
    "rails": {
      "default": "x402 transparent (USDC/ETH/ADA/FET) - cheap, standard, merchant-friendly",
      "privacy": "midnight shielded rail (Zswap): hides payer, amount, and asset; private escrow state via Compact; per-transaction selective disclosure for disputes/compliance",
      "why_two": "public rails leak purchase history; sensitive bookings (medical, legal, personal) need shielded payment by default"
    },
    "principle": "buyers pay in what they hold; merchants receive stable value; privacy is a choice"
  },
  "distribution": {
    "channels": [
      "agentverse marketplace (hub runs as uAgent)",
      "almanac registration (agent identity/address)",
      "agent framework skills (A0, MCP, uAgents wrapper)"
    ],
    "role_of_fet": "ecosystem access + agent discovery; NOT a merchant settlement currency"
  },
  "fet_utility": {
    "infrastructure": [
      "hub runs as uAgent",
      "almanac registration (agent identity, small FET)",
      "agentverse marketplace listing"
    ],
    "earns_fet": "premium hub services sold to ASI-native agents (paid in FET -> converted to USDC at settlement)",
    "stakes_fet": "optional verified-hub trust bond in registry (slashed on proven fraud)",
    "never": "merchant settlement currency"
  },
  "privacy": {
    "pseudonymous_ids": true,
    "booking_details": "visible only with booking secret",
    "note": "public ledger shows amounts + pseudonyms only"
  },
  "capabilities": {
    "search": "/search?q=",
    "verticals": "/verticals",
    "listings": "/listings",
    "book": "POST /book",
    "bookings": "/bookings",
    "orders": "/orders (merchant view, list token)",
    "ledger": "/ledger",
    "mcp": {
      "endpoint": "/mcp",
      "protocol": "MCP (JSON-RPC 2.0 over HTTP POST)",
      "tools": [
        "everlist_contract",
        "everlist_verticals",
        "everlist_search",
        "everlist_listing",
        "everlist_book",
        "everlist_booking"
      ],
      "auth": "same X-Hub-Token as REST (header-only; a token in tool arguments is ignored - MCP-ARGS law)"
    },
    "add_listing": "POST /listings",
    "premium": {
      "endpoint": "/premium/events",
      "protocol": "x402",
      "status": "TESTNET - real EIP-3009 signature verification (eth-account), no on-chain settlement yet (C3b)"
    }
  },
  "schemas": {
    "events": {
      "required": [
        "title",
        "date",
        "location",
        "price",
        "capacity"
      ],
      "optional": [
        "description",
        "category",
        "tags",
        "url",
        "time",
        "lat",
        "lon"
      ],
      "categories": [
        "meetup",
        "concert",
        "workshop",
        "conference",
        "market",
        "sports",
        "community",
        "party",
        "exhibition",
        "other"
      ],
      "tracks_capacity": true,
      "field_types": {
        "capacity": "positive_int",
        "date": "nonempty",
        "time": "time_hhmm",
        "lat": "float_latlon",
        "lon": "float_latlon"
      },
      "booking": {
        "required": [
          "attendee"
        ],
        "fields": [
          "attendee",
          "quantity"
        ],
        "identity": "attendee",
        "action": "register+pay"
      }
    },
    "food": {
      "required": [
        "title",
        "merchant",
        "price"
      ],
      "optional": [
        "description",
        "category",
        "tags",
        "url",
        "preparation_minutes"
      ],
      "categories": [
        "pizzeria",
        "vegan",
        "asian",
        "burger",
        "bakery",
        "cafe",
        "grocery",
        "other"
      ],
      "field_types": {
        "preparation_minutes": "positive_int"
      },
      "booking": {
        "required": [
          "buyer",
          "quantity"
        ],
        "fields": [
          "buyer",
          "quantity"
        ],
        "identity": "buyer",
        "action": "order+pay"
      }
    },
    "services": {
      "required": [
        "title",
        "provider",
        "price"
      ],
      "optional": [
        "description",
        "category",
        "tags",
        "url",
        "location",
        "duration_minutes"
      ],
      "categories": [
        "cleaning",
        "repair",
        "tutoring",
        "design",
        "consulting",
        "wellness",
        "transport",
        "other"
      ],
      "field_types": {
        "duration_minutes": "positive_int"
      },
      "booking": {
        "required": [
          "client"
        ],
        "fields": [
          "client",
          "quantity"
        ],
        "identity": "client",
        "action": "book+pay"
      }
    },
    "classes": {
      "required": [
        "title",
        "price",
        "capacity",
        "date",
        "location"
      ],
      "optional": [
        "description",
        "category",
        "tags",
        "url",
        "instructor",
        "skill_level",
        "duration_minutes"
      ],
      "categories": [
        "yoga",
        "fitness",
        "dance",
        "cooking",
        "art",
        "music",
        "language",
        "other"
      ],
      "tracks_capacity": true,
      "field_types": {
        "capacity": "positive_int",
        "date": "nonempty",
        "duration_minutes": "positive_int",
        "skill_level": "nonempty"
      },
      "booking": {
        "required": [
          "attendee"
        ],
        "fields": [
          "attendee",
          "quantity"
        ],
        "identity": "attendee",
        "action": "register+pay"
      }
    },
    "jobs": {
      "required": [
        "title",
        "price",
        "capacity",
        "date",
        "location"
      ],
      "optional": [
        "description",
        "category",
        "tags",
        "url",
        "duration_minutes"
      ],
      "categories": [
        "gig",
        "shift",
        "task",
        "freelance",
        "event-staff",
        "delivery",
        "handwork",
        "other"
      ],
      "tracks_capacity": true,
      "field_types": {
        "capacity": "positive_int",
        "date": "nonempty",
        "duration_minutes": "positive_int"
      },
      "booking": {
        "required": [
          "worker"
        ],
        "fields": [
          "worker",
          "quantity"
        ],
        "identity": "worker",
        "action": "apply+pay"
      }
    },
    "p2p": {
      "required": [
        "title",
        "price",
        "date",
        "location"
      ],
      "optional": [
        "description",
        "category",
        "tags",
        "url",
        "source"
      ],
      "categories": [
        "secondhand",
        "freelance",
        "tickets",
        "custom"
      ],
      "tracks_capacity": false,
      "field_types": {
        "date": "nonempty",
        "location": "nonempty"
      },
      "booking": {
        "required": [
          "buyer"
        ],
        "fields": [
          "buyer",
          "notes",
          "quantity"
        ],
        "identity": "buyer",
        "action": "accept+pay"
      }
    }
  }
}