{
  "components": {
    "responses": {
      "PaymentRequired": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/X402PaymentRequired"
            }
          }
        },
        "description": "x402 v2 payment required. The response body matches `X402PaymentRequired`. Retry the same request with a base64-encoded x402 payment payload in the `X-PAYMENT` header. See https://www.x402.org for the wire format.",
        "headers": {
          "PAYMENT-REQUIRED": {
            "description": "Base64-encoded copy of the `X402PaymentRequired` JSON body — the canonical x402 v2 HTTP transport location for the challenge.",
            "schema": {
              "type": "string"
            }
          }
        }
      }
    },
    "schemas": {
      "OpenAIChatChoice": {
        "additionalProperties": true,
        "properties": {
          "finish_reason": {
            "type": "string"
          },
          "index": {
            "type": "integer"
          },
          "message": {
            "$ref": "#/components/schemas/OpenAIChatMessage"
          }
        },
        "title": "OpenAIChatChoice",
        "type": "object"
      },
      "OpenAIChatCompletionsRequest": {
        "additionalProperties": true,
        "example": {
          "messages": [
            {
              "content": "Hello",
              "role": "user"
            }
          ],
          "model": "\u003cmodel-id from /api/services.json\u003e",
          "stream": false
        },
        "properties": {
          "frequency_penalty": {
            "maximum": 2,
            "minimum": -2,
            "type": "number"
          },
          "max_tokens": {
            "minimum": 1,
            "type": "integer"
          },
          "messages": {
            "items": {
              "$ref": "#/components/schemas/OpenAIChatMessage"
            },
            "type": "array"
          },
          "model": {
            "description": "Model identifier. Use the model name advertised in the operator's `/api/services.json` entry.",
            "type": "string"
          },
          "n": {
            "minimum": 1,
            "type": "integer"
          },
          "presence_penalty": {
            "maximum": 2,
            "minimum": -2,
            "type": "number"
          },
          "stop": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              }
            ]
          },
          "stream": {
            "default": false,
            "description": "Must be false. Streaming (text/event-stream / SSE) is not supported over the x402 payment path — the settlement receipt ships with one buffered application/json completion, so stream:true breaks payment confirmation in x402 clients.",
            "type": "boolean"
          },
          "temperature": {
            "maximum": 2,
            "minimum": 0,
            "type": "number"
          },
          "top_p": {
            "maximum": 1,
            "minimum": 0,
            "type": "number"
          },
          "user": {
            "type": "string"
          }
        },
        "required": [
          "model",
          "messages"
        ],
        "title": "OpenAIChatCompletionsRequest",
        "type": "object"
      },
      "OpenAIChatCompletionsResponse": {
        "additionalProperties": true,
        "properties": {
          "choices": {
            "items": {
              "$ref": "#/components/schemas/OpenAIChatChoice"
            },
            "type": "array"
          },
          "created": {
            "type": "integer"
          },
          "id": {
            "type": "string"
          },
          "model": {
            "type": "string"
          },
          "object": {
            "examples": [
              "chat.completion"
            ],
            "type": "string"
          },
          "usage": {
            "$ref": "#/components/schemas/OpenAIChatUsage"
          }
        },
        "title": "OpenAIChatCompletionsResponse",
        "type": "object"
      },
      "OpenAIChatMessage": {
        "additionalProperties": true,
        "properties": {
          "content": {
            "description": "Message text. May be a string or a structured content array depending on the model.",
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array"
              },
              {
                "type": "null"
              }
            ]
          },
          "name": {
            "type": "string"
          },
          "role": {
            "enum": [
              "system",
              "user",
              "assistant",
              "tool"
            ],
            "type": "string"
          },
          "tool_call_id": {
            "type": "string"
          }
        },
        "required": [
          "role",
          "content"
        ],
        "title": "OpenAIChatMessage",
        "type": "object"
      },
      "OpenAIChatUsage": {
        "additionalProperties": true,
        "properties": {
          "completion_tokens": {
            "type": "integer"
          },
          "prompt_tokens": {
            "type": "integer"
          },
          "total_tokens": {
            "type": "integer"
          }
        },
        "title": "OpenAIChatUsage",
        "type": "object"
      },
      "X402PaymentRequired": {
        "description": "x402 v2 payment-required response body. The client must read `accepts[]`, choose one PaymentRequirements entry, sign a payment payload, and retry with the base64-encoded payload in the `X-PAYMENT` request header. See https://www.x402.org.",
        "properties": {
          "accepts": {
            "description": "One or more payment configurations the server will accept. Client picks the entry matching its wallet's chain and asset.",
            "items": {
              "$ref": "#/components/schemas/X402PaymentRequirements"
            },
            "type": "array"
          },
          "error": {
            "description": "Human-readable summary of why payment is required.",
            "type": "string"
          },
          "extensions": {
            "additionalProperties": true,
            "description": "Protocol extensions advertised by the server. Each value follows the x402 v2 `{info, schema}` extension pattern — e.g. `bazaar` (machine-readable invocation schemas for discovery) and `eip2612GasSponsoring` (gasless Permit2 approve support). Clients echo received extensions in their PaymentPayload.",
            "type": "object"
          },
          "resource": {
            "$ref": "#/components/schemas/X402Resource"
          },
          "x402Version": {
            "const": 2,
            "description": "x402 protocol version. Obol Stack currently emits v2 responses.",
            "type": "integer",
            "x-x402-protocol-version": 2
          }
        },
        "required": [
          "x402Version",
          "accepts"
        ],
        "title": "X402PaymentRequired",
        "type": "object"
      },
      "X402PaymentRequirements": {
        "properties": {
          "amount": {
            "description": "Price in atomic units of `asset` (e.g. micro-USDC for a 6-decimal token).",
            "examples": [
              "1000"
            ],
            "type": "string"
          },
          "asset": {
            "description": "Settlement token contract address (e.g. USDC or OBOL).",
            "pattern": "^0x[0-9a-fA-F]{40}$",
            "type": "string"
          },
          "extra": {
            "additionalProperties": true,
            "description": "Per-asset metadata, e.g. EIP-712 domain name/version for ERC-3009 signing.",
            "type": "object"
          },
          "maxTimeoutSeconds": {
            "description": "Maximum age (seconds) of the signed payment authorization the server will accept.",
            "minimum": 1,
            "type": "integer"
          },
          "network": {
            "description": "CAIP-2 chain identifier (e.g. `eip155:8453` for Base mainnet).",
            "examples": [
              "eip155:8453",
              "eip155:84532"
            ],
            "type": "string"
          },
          "payTo": {
            "description": "Recipient wallet address.",
            "pattern": "^0x[0-9a-fA-F]{40}$",
            "type": "string"
          },
          "scheme": {
            "description": "x402 settlement scheme. Obol Stack uses `exact` (single signed authorization per request).",
            "enum": [
              "exact"
            ],
            "type": "string"
          }
        },
        "required": [
          "scheme",
          "network",
          "asset",
          "amount",
          "payTo",
          "maxTimeoutSeconds"
        ],
        "title": "X402PaymentRequirements",
        "type": "object"
      },
      "X402Resource": {
        "properties": {
          "description": {
            "type": "string"
          },
          "iconUrl": {
            "description": "Absolute https URL to an icon representing the service.",
            "format": "uri",
            "type": "string"
          },
          "mimeType": {
            "type": "string"
          },
          "serviceName": {
            "description": "Human-readable name of the service hosting the resource.",
            "maxLength": 32,
            "type": "string"
          },
          "tags": {
            "description": "Topical tags for discovery filtering.",
            "items": {
              "maxLength": 32,
              "type": "string"
            },
            "maxItems": 5,
            "type": "array"
          },
          "url": {
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "url"
        ],
        "title": "X402Resource",
        "type": "object"
      }
    }
  },
  "info": {
    "description": "A NousResearch Hermes agent that answers Hyperliquid trading questions in plain English — top wallets by realized PnL, open interest \u0026 funding on any coin, liquidation-risk clusters, long/short cohort bias, and HIP-4 prediction-market odds. It pulls live first-party data (our validator node_fills ledger + the Hyperliquid info API + HyperEVM precompiles), reasons over it, and replies with real numbers and the tools it used. $0.01/turn in USDC via x402. Not financial advice, DYOR.",
    "title": "HyperAnalyst — your Hyperliquid Quantitative Analyst",
    "version": "1"
  },
  "openapi": "3.1.0",
  "paths": {
    "/v1/chat/completions": {
      "post": {
        "description": "A NousResearch Hermes agent that answers Hyperliquid trading questions in plain English — top wallets by realized PnL, open interest \u0026 funding on any coin, liquidation-risk clusters, long/short cohort bias, and HIP-4 prediction-market odds. It pulls live first-party data (our validator node_fills ledger + the Hyperliquid info API + HyperEVM precompiles), reasons over it, and replies with real numbers and the tools it used. $0.01/turn in USDC via x402. Not financial advice, DYOR.",
        "operationId": "agent-hyperliquid-analyst_hyperliquid-analyst",
        "requestBody": {
          "content": {
            "application/json": {
              "description": "OpenAI Chat Completions request payload.",
              "schema": {
                "$ref": "#/components/schemas/OpenAIChatCompletionsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAIChatCompletionsResponse"
                }
              }
            },
            "description": "Chat completion (OpenAI-compatible)."
          },
          "402": {
            "$ref": "#/components/responses/PaymentRequired"
          }
        },
        "security": [],
        "summary": "Chat completions — hyperliquid-analyst (grok-4.5)",
        "tags": [
          "agent",
          "finance/trading-analytics",
          "finance/market-data",
          "finance/risk-analysis",
          "finance/prediction-markets",
          "finance/trading",
          "technology/blockchain"
        ],
        "x-payment-info": {
          "accepts": [
            {
              "amount": "0.01",
              "amountAtomicUnits": "10000",
              "asset": {
                "address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                "decimals": 6,
                "eip712Domain": {
                  "name": "USD Coin",
                  "version": "2"
                },
                "symbol": "USDC",
                "transferMethod": "eip3009"
              },
              "currency": "USD",
              "mode": "fixed",
              "network": "eip155:8453",
              "payTo": "0xeFAb75b7b199bf8512e2d5b379374Cb94dfdBA47"
            }
          ],
          "price": {
            "amount": "0.01",
            "currency": "USD",
            "mode": "fixed"
          },
          "protocols": [
            {
              "x402": {}
            }
          ]
        }
      }
    }
  },
  "servers": [
    {
      "url": "https://hyperliquid-analyst.v1337.org"
    }
  ]
}