{
  "tools": [
    {
      "name": "swap_list_offers",
      "description": "List open sell offers on CURB",
      "inputSchema": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "number"
          }
        }
      },
      "serverId": "heo5EVfJ"
    },
    {
      "name": "swap_create_offer",
      "description": "Post a sell offer (seller endpoint + payTo + model + mtok + priceUsd)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "sellerPayTo": {
            "type": "string"
          },
          "endpoint": {
            "type": "string"
          },
          "model": {
            "type": "string"
          },
          "mtok": {
            "type": "number"
          },
          "priceUsd": {
            "type": "number"
          },
          "note": {
            "type": "string"
          }
        },
        "required": [
          "sellerPayTo",
          "endpoint",
          "model",
          "mtok",
          "priceUsd"
        ]
      },
      "serverId": "heo5EVfJ"
    },
    {
      "name": "swap_create_intent",
      "description": "Post a buy intent; auto-matches an open offer when possible",
      "inputSchema": {
        "type": "object",
        "properties": {
          "model": {
            "type": "string"
          },
          "mtok": {
            "type": "number"
          },
          "maxPriceUsd": {
            "type": "number"
          },
          "offerId": {
            "type": "string"
          },
          "buyer": {
            "type": "string"
          }
        },
        "required": [
          "mtok"
        ]
      },
      "serverId": "heo5EVfJ"
    },
    {
      "name": "swap_get_match",
      "description": "Fetch a match (payment challenge + grant after pay)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "matchId": {
            "type": "string"
          }
        },
        "required": [
          "matchId"
        ]
      },
      "serverId": "heo5EVfJ"
    },
    {
      "name": "swap_pay_challenge",
      "description": "Get the single-payee x402 challenge for a match (ONE gross accept per rail → the on-chain split; CURB fans out seller + hub fee on-chain)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "matchId": {
            "type": "string"
          }
        },
        "required": [
          "matchId"
        ]
      },
      "serverId": "heo5EVfJ"
    }
  ]
}