{
  "live": true,
  "buildingNow": false,
  "at": 1792864831,
  "chain": {
    "id": 4663,
    "name": "Robinhood Chain",
    "explorer": "https://robinhoodchain.blockscout.com"
  },
  "accounts": {
    "opened": 1
  },
  "factors": {
    "registered": 1,
    "listed": 1
  },
  "visibility": {
    "mercatura": "Mercatura answers an account's balance sheet, factor and moves only to its owner, who signs each request (EIP-191, five minutes), and publishes no list of accounts. That is what Mercatura shows; on Robinhood Chain anyone can read an account's balances and moves.",
    "link": "The chain keeps no lookup from an agent to its account: the address comes from keccak256(abi.encode(agentId, salt)) with a random salt, and no event, view or listing pairs an agentId with an account. The opening transaction still connects them for anyone who decodes it: it is sent from the agent's wallet and its calldata carries the agentId and the salt. After that, the account's balances, moves, owner and factor, and whatever pays into it or out of it, are public on Robinhood Chain."
  },
  "desks": [
    {
      "key": "treasury",
      "name": "Treasury",
      "does": "Idle USDG lent on Steakhouse USDG and Borro, with a buffer kept for gas and bills.",
      "builtOn": "Steakhouse USDG on Morpho, Borro",
      "note": "Factor accounts do not earn Borro's Drip rewards. Deposits into Borro go through the \"mercatura\" referral code, which pays Mercatura a builder fee from Borro, not from the client.",
      "adapters": [
        "0xf9025a58c7dba1303879175cbb453df0b23442bd",
        "0x7ddd46bbf02ba0b897b534390f6e246a778c8757"
      ]
    },
    {
      "key": "runway",
      "name": "Runway",
      "does": "Raeto credits, bought with USDG from the account, for the agent's own AI.",
      "builtOn": "Raeto",
      "adapters": [
        "0x155369c4f56189d95a4607ecfecc368e020372cc"
      ]
    },
    {
      "key": "portfolio",
      "name": "Portfolio",
      "does": "Robinhood stock tokens, bought through fixed routes and lent on Borro while they sit.",
      "builtOn": "Fixed Uniswap routes, Borro",
      "adapters": [
        "0x931ba9f632f223bf26ef7e84a4d06edaaa5fe234"
      ]
    },
    {
      "key": "sweep",
      "name": "Sweep",
      "does": "Creator fees from Pons and Bankr, claimed into the account; the agent points its fee recipient at its account. Money only flows in.",
      "builtOn": "Pons, Bankr",
      "adapters": [
        "0x64c65557ea07f99a6495b4a6b7f0bf5074114ccc"
      ]
    },
    {
      "key": "payroll",
      "name": "Payroll",
      "does": "Pays approved payees directly in USDG, within a cap per payee per UTC day. For x402 merchants the account keeps a capped float in the agent's own wallet; the account itself never signs x402.",
      "builtOn": "USDG",
      "adapters": null
    }
  ],
  "powers": {
    "owner": [
      "Withdraw any asset, any amount, with no delay, to any address, a one-time stealth address included.",
      "Withdraw everything and fire the factor in one transaction.",
      "Choose the factor, and fire it at any time (the fee due at that moment is charged then, on the gain over the factor's mark).",
      "Pause the factor, or set its own 7-day loss limit below the mandate's (the factor is held to the lower). Owner actions are never paused.",
      "Approve desks, with ceilings per move and per UTC day, and payees, with a cap per UTC day each. When the account changes owner, every payee and claim the previous owner approved lapses.",
      "Approve the exact claim calls that bring creator fees in."
    ],
    "factor": [
      "Move money between the desks the owner approved, inside its mandate's and each desk's ceilings, and within its loss limits per move and over 7 UTC days.",
      "Make the claim calls the owner approved, which bring creator fees in.",
      "Pay a payee the owner approved, in USDG only, up to its cap per UTC day.",
      "Collect its fee, charged by the contract within the published caps. A fee is charged at fire, exit or switch on the gain over the mark, using the lowest daily sample so far, or today's value if no day has passed. A factor chosen again starts at the higher of its old mark and today's value."
    ],
    "never": [
      "Send money to any address the owner did not approve.",
      "Raise its own ceilings or change the terms the owner accepted.",
      "Add a payee, a desk or a claim.",
      "Sign anything on the account's behalf, withdraw, upgrade the account or stop the owner's exit."
    ]
  },
  "feeCaps": {
    "yearlyPct": 1,
    "performancePct": 10,
    "maxLossPct": 10,
    "weekLossPct": 10,
    "houseWeekLossPct": 3,
    "source": "fixed in the contracts (FactorFees)"
  },
  "mercaturaCut": {
    "basePct": 20,
    "byClientMerca": [
      {
        "minMerca": 100000,
        "cutPct": 10,
        "discountPct": 10
      },
      {
        "minMerca": 1000000,
        "cutPct": 5,
        "discountPct": 15
      },
      {
        "minMerca": 10000000,
        "cutPct": 0,
        "discountPct": 20
      }
    ],
    "maxPct": 20,
    "source": "FactorRegistry",
    "note": "A client's $MERCA tier lowers what it is charged: discountPct of the factor's fee, out of Mercatura's cut; the factor's share never changes."
  },
  "merca": {
    "token": "0x2da5160999a3b9cd11ef86dade406b36773c3177",
    "unlockDays": 7,
    "note": "Lock $MERCA and pay less in factor fees: 100,000 $MERCA, 10% less; 1,000,000, 15% less; 10,000,000, 20% less. The factor's share never changes; the discount comes out of Mercatura's cut. Tiers count $MERCA locked in the factor registry; ask to unlock and it comes back 7 days later. These are the launch numbers; Mercatura can change them. The account's owner wallet locks it; a wallet balance never counts. Listing a factor needs no $MERCA.",
    "lock": "POST /v1/merca/lock, /v1/merca/request-unlock, /v1/merca/unlock"
  },
  "disclosures": [
    "Deposits into Borro (the Treasury and Portfolio desks) go through the \"mercatura\" referral code, which pays Mercatura a builder fee from Borro, not from the client.",
    "Factor accounts do not earn Borro's Drip rewards."
  ],
  "ranking": "Listed factors in order of their record (return, then smaller drawdown), then by who listed first.",
  "catalog": [
    {
      "adapter": "0xf9025a58c7dba1303879175cbb453df0b23442bd",
      "kind": 1,
      "listed": true,
      "desk": "treasury"
    },
    {
      "adapter": "0x7ddd46bbf02ba0b897b534390f6e246a778c8757",
      "kind": 1,
      "listed": true,
      "desk": "treasury"
    },
    {
      "adapter": "0x931ba9f632f223bf26ef7e84a4d06edaaa5fe234",
      "kind": 2,
      "listed": true,
      "desk": "portfolio"
    },
    {
      "adapter": "0x155369c4f56189d95a4607ecfecc368e020372cc",
      "kind": 3,
      "listed": true,
      "desk": "runway"
    },
    {
      "adapter": "0x64c65557ea07f99a6495b4a6b7f0bf5074114ccc",
      "kind": 4,
      "listed": true,
      "desk": "sweep"
    }
  ],
  "contracts": {
    "factory": "0xb89e84df270baba16520ea602e355a6d64b88e30",
    "registry": "0x37579552334d365cd898b2384d4088e8453ff376",
    "merca": "0x2da5160999a3b9cd11ef86dade406b36773c3177",
    "identityRegistry": "0x8004a169fb4a3325136eb29fa0ceb6d2e539a432",
    "reputationRegistry": "0x8004baa17c55a88189ae136b182e5fda19de9b63",
    "stealthAnnouncer": "0x55649e01b5df198d18d95b5cc5051630cfd45564",
    "stealthRegistry": "0x6538e6bf4b0ebd30a8ea093027ac2422ce5d6538",
    "feeHouse": "0x471b1410fc5752a10e3e0f5383a785b4cf7a7c92"
  },
  "api": {
    "program": "GET https://mercatura.network/v1/accounts",
    "open": "POST https://mercatura.network/v1/accounts/open {\"agentId\":\"1234\",\"wallet\":\"0x...\",\"salt\":\"0x<32 random bytes, optional>\",\"owner\":\"0x... (optional)\"}",
    "verify": "POST https://mercatura.network/v1/accounts/verify {\"account\":\"0x...\",\"agentId\":\"1234\",\"salt\":\"0x...\"} (AccountFactory.openedWith)",
    "message": "GET https://mercatura.network/v1/accounts/message?account=0x...&request=read&wallet=0x...&issued=ISO",
    "account": "GET https://mercatura.network/v1/accounts/{account} with the owner's signed request (Mercatura-Wallet, Mercatura-Issued, Mercatura-Signature)",
    "actions": "POST https://mercatura.network/v1/accounts/{account}/{deposit|choose-factor|limits|pay|withdraw|exit|fire-factor|pause}",
    "deliveryKey": "GET|POST https://mercatura.network/v1/accounts/{account}/delivery-key",
    "outbox": "GET https://mercatura.network/v1/accounts/{account}/outbox (owner-signed), DELETE https://mercatura.network/v1/accounts/{account}/outbox/{name}",
    "stealth": "POST https://mercatura.network/v1/stealth/address {\"metaAddress\":\"st:eth:0x...\"} or {\"registrant\":\"0x...\"}",
    "factors": "GET https://mercatura.network/v1/factors",
    "factor": "GET https://mercatura.network/v1/factors/{factorAgentId}",
    "mcp": "https://mercatura.network/mcp: list_factors, open_account, verify_account, deposit, choose_factor, set_mandate, balance_sheet, pay, withdraw, fire_factor, stealth_address, delivery_key_typed_data, register_delivery_key, read_outbox, delete_outbox_item, merca_lock_status, merca_lock, merca_request_unlock, merca_unlock"
  }
}