Query blockchain tables with explicit fields and structured filters. Returns rows selected from supported blockchain tables using explicit requested fields and structured filters. 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.
Surf
Query a Blockchain Table Without SQL
Query blockchain tables with explicit fields and structured filters. Returns rows selected from supported blockchain tables using explicit requested fields and structured filters. 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 rows selected from supported blockchain tables using explicit requested fields and structured filters. Available columns depend on the selected table. Discover its schema first and bound filters and row counts; no fixed universal row schema is implied.
Start with your task
Show up to [20] token swaps on [Ethereum] since [2026-10-01], with the largest trade values first.
Inputs & outputs
Inspect the current inputs, availability, and maximum charge before starting.
Input schema
Input schema
Field / Path
Type
Requirement
Meaning
bodybody
object
Required
Required fields
source
sortbody.sort
array
Optional
ORDER BY clauses. Example: [{"field": "amount_usd", "order": "desc"}].
[]body.sort[]
object
—
Required fields
field
fieldbody.sort[].field
string
—
Column name to sort by. Example: amount_usd.
Minimum length
1
orderbody.sort[].order
string
—
Sort direction. Example: desc. Defaults to "asc".
Options
asc, desc
limitbody.limit
integer
Optional
Max rows to return. Example: 20. Defaults to 20 (server-side), capped at 10000.
Minimum
1
Maximum
10000
fieldsbody.fields
array
Optional
Columns to return. Omit to return all columns. Example: ["block_time", "amount_usd"].
[]body.fields[]
string
—
Minimum length
1
offsetbody.offset
integer
Optional
Rows to skip for pagination. Example: 0. Defaults to 0.
Minimum
0
Maximum
9007199254740991
sourcebody.source
string
Required
Fully-qualified table name. Discover tables with /onchain/schema. Example: agent.ethereum_dex_trades.
Pattern
^agent\.[a-z0-9_]+$
filtersbody.filters
array
Optional
WHERE conditions, ANDed together. ALWAYS include a block_date bound on large tables — without it the query times out. Example: [{"field": "block_date", "op": "gte", "value": "2026-07-01"}].
[]body.filters[]
object
—
Required fields
field, op, value
opbody.filters[].op
string
—
Comparison operator. For in/not_in, value must be a JSON array. Example: gte.
Options
eq, neq, gt, gte, lt, lte, like, in, not_in
fieldbody.filters[].field
string
—
Column name to filter on. Example: block_date. Never filter on symbol columns (unindexed; resolve tickers to contract addresses with /search/token first).
Minimum length
1
valuebody.filters[].value
string | number | boolean | array
—
Comparison value; a JSON array for in/not_in. Example: 2026-07-01.
[]body.filters[].value[]anyOf · 4
string | number
—
View raw JSON
{
"type": "object",
"required": [
"body"
],
"properties": {
"body": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"source"
],
"~standard": {
"vendor": "zod",
"version": 1,
"jsonSchema": {}
},
"properties": {
"sort": {
"type": "array",
"items": {
"type": "object",
"required": [
"field"
],
"properties": {
"field": {
"type": "string",
"minLength": 1,
"description": "Column name to sort by. Example: amount_usd."
},
"order": {
"enum": [
"asc",
"desc"
],
"type": "string",
"description": "Sort direction. Example: desc. Defaults to \"asc\"."
}
},
"additionalProperties": false
},
"description": "ORDER BY clauses. Example: [{\"field\": \"amount_usd\", \"order\": \"desc\"}]."
},
"limit": {
"type": "integer",
"maximum": 10000,
"minimum": 1,
"description": "Max rows to return. Example: 20. Defaults to 20 (server-side), capped at 10000."
},
"fields": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"description": "Columns to return. Omit to return all columns. Example: [\"block_time\", \"amount_usd\"]."
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Rows to skip for pagination. Example: 0. Defaults to 0."
},
"source": {
"type": "string",
"pattern": "^agent\\.[a-z0-9_]+$",
"description": "Fully-qualified table name. Discover tables with /onchain/schema. Example: agent.ethereum_dex_trades."
},
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"op",
"value"
],
"properties": {
"op": {
"enum": [
"eq",
"neq",
"gt",
"gte",
"lt",
"lte",
"like",
"in",
"not_in"
],
"type": "string",
"description": "Comparison operator. For in/not_in, value must be a JSON array. Example: gte."
},
"field": {
"type": "string",
"minLength": 1,
"description": "Column name to filter on. Example: block_date. Never filter on symbol columns (unindexed; resolve tickers to contract addresses with /search/token first)."
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "array",
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
}
]
}
}
],
"description": "Comparison value; a JSON array for in/not_in. Example: 2026-07-01."
}
},
"additionalProperties": false
},
"description": "WHERE conditions, ANDed together. ALWAYS include a block_date bound on large tables — without it the query times out. Example: [{\"field\": \"block_date\", \"op\": \"gte\", \"value\": \"2026-07-01\"}]."
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}
Result schema
Output fields have not been documented yet.
Additional notes
Query blockchain tables with explicit fields and structured filters
How to use this Tool
Use the deployed input fields below. Required fields must be supplied; optional filters narrow the result.
body.sort (Optional): ORDER BY clauses. Example: [{"field": "amount_usd", "order": "desc"}].
body.limit (Optional): Max rows to return. Example: 20. Defaults to 20 (server-side), capped at 10000.
body.fields (Optional): Columns to return. Omit to return all columns. Example: ["block_time", "amount_usd"].
body.offset (Optional): Rows to skip for pagination. Example: 0. Defaults to 0.
body.filters (Optional): WHERE conditions, ANDed together. ALWAYS include a block_date bound on large tables — without it the query times out. Example: [{"field": "block_date", "op": "gte", "value": "2026-07-01"}].
What this Tool returns
Returns rows selected from supported blockchain tables using explicit requested fields and structured filters.
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
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; Optional within parent
Whether more items may exist beyond this response. For offset-paged endpoints, continue with a larger offset. For time-series endpoints without offset/cursor controls, true means the requested time range hit an upstream cap; narrow from/to to continue. Omitted when exhaustion cannot be proven.
meta.limit
integer; Required within parent; format: int64
Maximum number of items returned in this response
meta.offset
integer; Required within parent; format: int64
Number of items skipped (pagination offset)
meta.total
integer; Optional within parent; format: int64
Total number of matching items (before pagination). Omitted when total is unknown.
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/aggregate) — rows up to this time come from the warehouse, newer rows from the live tail. Omitted elsewhere.
Coverage, units and freshness
Available columns depend on the selected table. Discover its schema first and bound filters and row counts; no fixed universal row schema is implied.
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.
body.sort (Optional): ORDER BY clauses. Example: [{"field": "amount_usd", "order": "desc"}]. body.limit (Optional): Max rows to return. Example: 20. Defaults to 20 (server-side), capped at 10000. body.fields (Optional): Columns to return. Omit to return all columns. Example: ["block_time", "amount_usd"]. body.offset (Optional): Rows to skip for pagination. Example: 0. Defaults to 0. body.source (Required): Fully-qualified table name. Discover tables with /onchain/schema. Example: agent.ethereum_dex_trades. body.filters (Optional): WHERE conditions, ANDed together. ALWAYS include a block_date bound on large tables — without it the query times out. Example: [{"field": "block_date", "op": "gte", "value": "2026-07-01"}].
Returns rows selected from supported blockchain tables using explicit requested fields and structured filters.
Available columns depend on the selected table. Discover its schema first and bound filters and row counts; no fixed universal row schema is implied.
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 Query blockchain tables with explicit fields and structured filters. 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.