Hyperliquid tracker: closed trades and realized P&L
Review an account's closed trading episodes and recorded performance. Returns closed trading episodes with entry and exit prices, direction, timestamps, fees, PnL and available funding/leverage context. Use one Toolmu account and a shared prepaid balance across available Tools. Pay per use; no separate supplier subscription is required. The current execution ceiling for this Tool is 0.0288 Toolmu credits per call. This is a maximum, not the settled charge. Before execution, get the current Tool contract and check availability, the latest maximumCredits, your balance and budget. Supplier response credits_used, when present, describes supplier API credits and is not the Toolmu customer charge.
Up to 0.0288 credits / call
The final charge is based on confirmed usage. Unused reserved credits return to your available balance.
Hyperliquid
Hyperliquid tracker: closed trades and realized P&L
Review an account's closed trading episodes and recorded performance. Returns closed trading episodes with entry and exit prices, direction, timestamps, fees, PnL and available funding/leverage context. Use one Toolmu account and a shared prepaid balance across available Tools. Pay per use; no separate supplier subscription is required. The current execution ceiling for this Tool is 0.0288 Toolmu credits per call. This is a maximum, not the settled charge. Before execution, get the current Tool contract and check availability, the latest maximumCredits, your balance and budget. Supplier response credits_used, when present, describes supplier API credits and is not the Toolmu customer charge.
You receive
Returns closed trading episodes with entry and exit prices, direction, timestamps, fees, PnL and available funding/leverage context. Net PnL excludes funding. Keep funding coverage and leverage semantics visible, and follow the returned cursor when more episodes are available.
Start with your task
Share [a Hyperliquid profile link] to list closed trades. The default is the 20 most recent; you can ask for [1–100 trades] and add [start date] and [end date]. Name [a coin] to find matching trades. If the link doesn’t identify the account, I’ll ask.
Inputs & outputs
Inspect the current inputs, availability, and maximum charge before starting.
Input schema
Input schema
Field / Path
Type
Requirement
Meaning
queryParamsqueryParams
object
Required
Required fields
address
toqueryParams.to
string
Optional
Window end, inclusive: Unix seconds, an ISO datetime, or a bare date — a bare date means the END of that UTC day, so from=X&to=X covers the whole day X. Defaults to now. Example: 2026-03-01.
Minimum length
1
fromqueryParams.from
string
Optional
Window start: Unix seconds, an ISO datetime (2026-03-01T12:00:00Z), or a bare date (= midnight UTC). Omit for the full history. Example: 2026-03-01.
Minimum length
1
limitqueryParams.limit
integer
Optional
Page size (1-100). Defaults to 20.
Default
20
Minimum
1
Maximum
100
cursorqueryParams.cursor
string
Optional
Opaque continuation token from a previous response's meta.next_cursor. It encodes the window, position, and address, so pass it with only address + limit — and only with the address it was issued for. Tokens are single-use opaque values: identical requests mint different tokens that decode to the same position.
Minimum length
1
addressqueryParams.address
string
Required
Wallet address: a 0x EVM address or an ENS name (e.g. vitalik.eth). Solana addresses are not supported.
Minimum length
1
View raw JSON
{
"type": "object",
"required": [
"queryParams"
],
"properties": {
"queryParams": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"address"
],
"~standard": {
"vendor": "zod",
"version": 1,
"jsonSchema": {}
},
"properties": {
"to": {
"type": "string",
"minLength": 1,
"description": "Window end, inclusive: Unix seconds, an ISO datetime, or a bare date — a bare date means the END of that UTC day, so from=X&to=X covers the whole day X. Defaults to now. Example: 2026-03-01."
},
"from": {
"type": "string",
"minLength": 1,
"description": "Window start: Unix seconds, an ISO datetime (2026-03-01T12:00:00Z), or a bare date (= midnight UTC). Omit for the full history. Example: 2026-03-01."
},
"limit": {
"type": "integer",
"default": 20,
"maximum": 100,
"minimum": 1,
"description": "Page size (1-100). Defaults to 20."
},
"cursor": {
"type": "string",
"minLength": 1,
"description": "Opaque continuation token from a previous response's meta.next_cursor. It encodes the window, position, and address, so pass it with only address + limit — and only with the address it was issued for. Tokens are single-use opaque values: identical requests mint different tokens that decode to the same position."
},
"address": {
"type": "string",
"minLength": 1,
"description": "Wallet address: a 0x EVM address or an ENS name (e.g. vitalik.eth). Solana addresses are not supported."
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}
Result schema
Output fields have not been documented yet.
Additional notes
Review an account's closed trading episodes and recorded performance
How to use this Tool
Use the deployed input fields below. Required fields must be supplied; optional filters narrow the result.
queryParams.to (Optional): Window end, inclusive: Unix seconds, an ISO datetime, or a bare date — a bare date means the END of that UTC day, so from=X&to=X covers the whole day X. Defaults to now. Example: 2026-03-01.
queryParams.from (Optional): Window start: Unix seconds, an ISO datetime (2026-03-01T12:00:00Z), or a bare date (= midnight UTC). Omit for the full history. Example: 2026-03-01.
queryParams.limit (Optional): Page size (1-100). Defaults to 20.
queryParams.cursor (Optional): Opaque continuation token from a previous response's meta.next_cursor. It encodes the window, position, and address, so pass it with only address + limit — and only with the address it was issued for. Tokens are single-use opaque values: identical requests mint different tokens that decode to the same position.
queryParams.address (Required): Wallet address: a 0x EVM address or an ENS name (e.g. vitalik.eth). Solana addresses are not supported.
What this Tool returns
Returns closed trading episodes with entry and exit prices, direction, timestamps, fees, PnL and available funding/leverage context.
Response fields and how to read them
The table follows the official response contract, including nested fields and useful response metadata. [] denotes an array item. Required means required within its parent object, not that a conditional parent always exists. A nullable type permits null; an optional field can be absent. Use the documented conditions below to distinguish missing, empty and zero values. Units and reporting windows apply only where explicitly documented.
Field, type and presence
Meaning and conditions
data.[].close_time
integer; Required within parent; format: int64
When the position fully closed (Unix seconds)
data.[].direction
string; Required within parent
long or short (side of the opening leg)
data.[].entry_px
number; Required within parent; format: double
Size-weighted average entry price, USD
data.[].episode_id
string; Optional within parent
Stable per-wallet episode id (the opening fill's trade id). Present on warehouse rows; OMITTED on live-tail rows (assigned when the episode lands in the warehouse) — dedup live rows by (symbol, open_time, close_time) until then.
data.[].exit_px
number; Required within parent; format: double
Size-weighted average exit price, USD
data.[].fees
number; Required within parent; format: double
Fees paid over the episode, USD
data.[].funding_pnl
number; Required within parent; format: double
Funding paid/received over the episode, USD (positive = received). A separate field — net_pnl EXCLUDES funding. Check funding_status before displaying this compatibility value.
data.[].funding_status
string; Required within parent; enum: ["complete", "partial", "unavailable"]
Whether funding_pnl is usable. complete distinguishes a real zero from unavailable historical data; partial is reserved for incomplete attribution.
data.[].gross_pnl
number; Required within parent; format: double
Realized PnL before fees, USD
data.[].hold_seconds
integer; Required within parent; format: int64
Duration the position was held, seconds
data.[].is_win
boolean; Required within parent
net_pnl > 0
data.[].leverage
integer; Optional within parent; format: int64
data.[].notional_usd
number; Required within parent; format: double
Opened notional, USD (opened_sz × entry_px) — the size figure /trades/aggregate's volume_usd sums
data.[].open_time
integer; Required within parent; format: int64
When the position opened (Unix seconds)
data.[].opened_sz
number; Required within parent; format: double
Total size opened over the episode (token units)
data.[].reported_leverage
integer; Optional within parent; format: int64
Leverage associated with the completed-trade record; not asserted to be the opening value.
data.[].reported_leverage_type
string; Optional within parent; enum: ["cross", "isolated"]
Margin mode associated with reported_leverage.
data.[].source
string; Required within parent
warehouse (from the ClickHouse build) or live (Hydromancer gap-fill past the warehouse watermark)
data.[].symbol
string; Required within parent
Market id the trade was in (BTC, kPEPE, xyz:GOLD)
meta.cached
boolean; Required within parent
Whether this response was served from cache
meta.credits_used
integer; Required within parent; format: int64
Credits deducted for this request
meta.empty_reason
string; Optional within parent
Hint explaining why the data array is empty, when applicable
meta.has_more
boolean; Required within parent
Whether more items exist beyond the current page.
meta.limit
integer; Required within parent; format: int64
Maximum number of items returned in this response
meta.next_cursor
string; Optional within parent
Opaque cursor token for fetching the next page. Empty when no more pages exist.
meta.watermark
integer; Optional within parent; format: int64
Warehouse watermark (Unix seconds) this response was computed at, on warehouse-backed endpoints (e.g. Hyperliquid /trades) — rows up to this time come from the warehouse, newer rows from the live tail. Omitted elsewhere.
Coverage, units and freshness
Net PnL excludes funding. Keep funding coverage and leverage semantics visible, and follow the returned cursor when more episodes are available.
Inspect any returned observation time, cache status, watermark, pagination and errors using their documented meanings. A successful request alone does not establish complete coverage. Where no freshness or completeness guarantee is documented, treat it as unknown. Saved Examples are historical and viewing them does not refresh data or execute a new call.
Data source and references
Surf supplies this endpoint through its Data API. Response contract and deployed Tool inputs reviewed on 2026-10-03 against official OpenAPI v0.2.102. This is a contract review date, not a data observation time. Coverage depends on the selected endpoint and request.
Use one Toolmu account and a shared prepaid balance across available Tools. Pay per use; no separate supplier subscription is required. The current execution ceiling for this Tool is 0.0288 Toolmu credits per call. This is a maximum, not the settled charge. Before execution, get the current Tool contract and check availability, the latest maximumCredits, your balance and budget. Supplier response credits_used, when present, describes supplier API credits and is not the Toolmu customer charge.
See your 20 latest closed trades
Example request: [Show my 20 latest Hyperliquid closed trades]. Account: [Hyperliquid profile link].
Example request: [Find my BTC closed trades from September 1 to September 30, 2026]. Account: [Hyperliquid profile link].
Share [a Hyperliquid profile link] to list closed trades. The default is the 20 most recent; you can ask for [1–100 trades] and add [start date] and [end date]. Name [a coin] to find matching trades. If the link doesn’t identify the account, I’ll ask.
Choose how many trades to show
Example request: [Show my latest 50 closed trades]. Account: [Hyperliquid profile link].
Questions about this tool.
Inputs, results and details to know before running it.
Share a [Hyperliquid profile link]. The default shows the 20 most recently closed trades; you can ask for up to [100 trades] at a time or add [start date] and [end date]. Name [a coin] if you want matching trades highlighted. If the link does not identify the account, I will ask for a profile link that does or a public wallet address. Only closed trades are included.
Returns closed trading episodes with entry and exit prices, direction, timestamps, fees, PnL and available funding/leverage context.
Net PnL excludes funding. Keep funding coverage and leverage semantics visible, and follow the returned cursor when more episodes are available.
Use one Toolmu account and a shared prepaid balance across available Tools. Pay per use; no separate supplier subscription is required. The current execution ceiling for this Tool is 0.0288 Toolmu credits per call. This is a maximum, not the settled charge. Before execution, get the current Tool contract and check availability, the latest maximumCredits, your balance and budget. Supplier response credits_used, when present, describes supplier API credits and is not the Toolmu customer charge.
Ask your agent to Review an account's closed trading episodes and recorded performance. Provide the required inputs above. If Toolmu is already connected, reuse that connection; otherwise use the setup instructions on this page. Before a paid execution, the agent must read the current Tool contract and check availability, the credit ceiling, balance, budget and your authorization. It should then execute the Tool and explain the returned fields and limitations.
Inspect any returned observation time, cache status, watermark, pagination and errors using their documented meanings. A successful request alone does not establish complete coverage. Where no freshness or completeness guarantee is documented, treat it as unknown. Saved Examples are historical and viewing them does not refresh data or execute a new call.