- Brand
- Allium
- Category
- Data & Analytics
- Primary Subcategory
- Blockchain Developer Infrastructure
Integration details
Description
Query and analyze blockchain data directly in ChatGPT with Allium. Discover schemas and documentation, run SQL across blockchain datasets, and turn results into shareable queries, visualizations, and dashboards. Ask questions like “Compare DEX volume across chains,” “Analyze this wallet’s holdings and P&L,” or “Chart a token’s price history.” Allium combines historical datasets with real-time market and wallet data, taking you from question to analysis in one conversation.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Primary Subcategory
- Blockchain Developer Infrastructure
- Secondary Subcategories
- None listed
- Brand
- Allium
- Access
- Account required
- First tracked
- 2026-08-18
- Tool count
- 51
- Geography
- US
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
ChatGPT Plugin discovery is coming soon
ChatGPT can surface a Plugin when it matches a user's request.Your Plugin Discovery Score measures how often yours appears.
No spam. Unsubscribe any time.
What discovery looks like

Get alerts for Allium
Get updates when Allium’s Discoverability Score or category rank changes.
Competing in ChatGPT Blockchain Developer Infrastructure
View Category51 tools agents can invoke
Browse Allium's public documentation by path. An empty path lists the root; a directory path lists its contents; a Markdown file path returns the file. Read each directory's `_index.md` to choose a document. Internal paths are unavailable on MCP. Use search_docs when you do not know the path.
browse_docs
Create and save a SQL query in the user's Allium Explorer. **Call `get_skill(name="sql-optimization")` before writing or running any SQL.** The DEFAULT path whenever the result will be reused — visual/dashboard data source, permalink, or an expensive query to re-run later. Visuals and dashboards reference the saved query_id, so start here; do NOT run_sql_query first and re-save, which duplicates the compute. run_on_creation=True queues the run and returns its `initial_run_id`; the rows are NOT ready when this call returns. Poll get_query_run_results(run_id=initial_run_id, poll_timeout_seconds=180) and wait for rows before building a visual or dashboard on the query; leaving poll_timeout_seconds off checks once and returns immediately. A visual created on a run that has not finished renders blank. Use run_sql_query instead only for throwaway one-off exploration nothing downstream consumes. Leave run_on_creation=False for templates, drafts, or saves that should not execute yet.
create_explorer_query
Create or replace a visual on an existing Allium Explorer query. Visuals are persisted to the caller's account and render on the query page; the returned `url` deep-links to the visual this call wrote. A query can hold several visuals, each with its own `visual_id`. Call get_explorer_query first to see what is already there. Two ways to call this: - Omit `visual_id` — adds a new visual alongside any existing ones. - Pass `visual_id` — replaces that one visual in place. This is how you edit a visual; omitting `visual_id` would add a duplicate instead. Choose `spec.type` based on the shape of the data: - "chart" — line, bar, or area over an x axis (typically time). - "value" — a single big number, with an optional comparison to a prior period. - "table" — tabular rows with optional per-column formatting and heatmap shading. - "pie" — share-of-total across categories (pie, donut, or donut-with-center-value). - "sankey" — directional flow between two or more entity columns. - "treemap" — nested rectangles sized by a numeric value. - "scatter" — two numeric axes with optional point size and color encodings. - "map" — country or region choropleth keyed on a location field. - "chord" — pairwise flows between two columns (alternative to sankey). Call get_skill(name='explorer-visuals') first for general advice, then get_skill(name='explorer-visuals', reference_title=<type>) for the exact JSON schema for `spec` of the chosen type. Editor permission on the query is required. Two things make a visual render blank, both checkable before calling: - The query has no finished run. Queueing one (create_explorer_query with run_on_creation=True, or run_explorer_query) does not wait for it — poll get_query_run_results with a non-zero poll_timeout_seconds and only build the visual once it returns rows. - Field names in `spec` (axes, columns, filters, aggregates) that the query's result set doesn't have. Once the visual is created, offer to share it — call share_explorer_query(query_id=..., visual_id=...) to get a public link the user can send around.
create_explorer_visual
Delete one visual from an Allium Explorer query. The query and its other visuals are untouched. Get the `visual_id` from get_explorer_query's `visuals`. Editor permission on the query is required, and this cannot be undone — to change a visual instead of removing it, pass its `visual_id` to create_explorer_visual with a new `spec`.
delete_explorer_visual
Permanently delete an Explorer query by ID. This does not cascade: any visuals saved on the query and any dashboard elements bound to it are left pointing at the deleted query_id and will fail to load.
delete_explorer_query
Delete an entire dashboard, including every page, section, and element inside it. This is irreversible. Confirm with the user which dashboard before calling, and read_dashboard first if you are unsure what the ID points at. To remove one page, section, or element instead, call set_dashboard with `spec=null` and that node's ID path.
delete_dashboard
Retrieve DeFi positions, including LP and lending positions, for up to 5 wallet chain/address pairs. For chain coverage, edge cases, or response fields, use browse_docs with path 'api/developer/defi-positions/get-positions.md'.
get_realtime_wallet_positions
Get profit and loss for up to 20 wallet chain/address pairs. For chain coverage, edge cases, or response fields, use browse_docs with path 'api/developer/holdings/holdings-pnl.md'.
get_realtime_holdings_pnl
Get profit and loss for up to 20 wallet-token chain/address triples. For chain coverage, edge cases, or response fields, use browse_docs with path 'api/developer/holdings/holdings-pnl-by-token.md'.
get_realtime_holdings_pnl_by_token
Get historical profit and loss for up to 20 wallet chain/address pairs over a time range. For chain coverage, edge cases, or response fields, use browse_docs with path 'api/developer/holdings/holdings-pnl-history.md'.
get_realtime_holdings_pnl_history
Get historical profit and loss for up to 20 wallet-token chain/address triples over a time range. For chain coverage, edge cases, or response fields, use browse_docs with path 'api/developer/holdings/holdings-pnl-by-token-history.md'.
get_realtime_holdings_pnl_by_token_history
Fetch paginated historical fungible token balances for wallet addresses over a requested time range. For chain coverage, edge cases, or response fields, use browse_docs with path 'api/developer/wallets/historical-token-balances.md'.
get_realtime_wallet_historical_token_balances
Get historical aggregated USD holdings for one or more addresses. For chain coverage, edge cases, or response fields, use browse_docs with path 'api/developer/holdings/holdings-history.md'.
get_realtime_holdings_history
Fetch the latest fungible token balances for wallet addresses across supported chains, optionally including liquidity totals. For chain coverage, edge cases, or response fields, use browse_docs with path 'api/developer/wallets/latest-token-balances.md'.
get_realtime_wallet_latest_token_balances
Get latest prices for token chain/address pairs, optionally with liquidity data. The request body must be an array, even for a single token. For chain coverage, edge cases, or response fields, use browse_docs with path 'api/developer/prices/token-latest-price.md'.
get_realtime_token_latest_price
Get token details by chain and address, including tokens without DEX trades. Those tokens retain on-chain decimals and total_supply but omit price-derived fields rather than reporting zero. A not-found error means no on-chain supply record exists for the address. For chain coverage, edge cases, or response fields, use browse_docs with path 'api/developer/tokens/get-tokens-by-chain-address.md'.
get_realtime_tokens_by_chain_address
Get token prices at a timestamp, using the closest earlier price within the optional staleness tolerance. For chain coverage, edge cases, or response fields, use browse_docs with path 'api/developer/prices/token-price-at-timestamp.md'.
get_realtime_token_price_at_timestamp
Get token price candles for one or more token chain/address pairs over a time range at the requested granularity. Use cursor for the next page. For chain coverage, edge cases, or response fields, use browse_docs with path 'api/developer/prices/token-price-history.md'.
get_realtime_token_price_history
Get price stats for token chain/address pairs, including volume, highs, lows, and price changes. The request body must be an array, even for a single token. For chain coverage, edge cases, or response fields, use browse_docs with path 'api/developer/prices/token-price-stats.md'.
get_realtime_token_price_stats
Search tokens by name or symbol. When chain is set, tokens that have never traded on a DEX are included with price-derived fields omitted. When chain is omitted, cross-chain search only returns tokens with a nonzero price or 1d volume. To get Stellar tokens, pass chain=stellar; sort, granularity, order, and volume thresholds are currently unsupported. For chain coverage, edge cases, or response fields, use browse_docs with path 'api/developer/tokens/search-tokens.md'.
search_realtime_chain_tokens
Get paginated transaction activity for wallet chain/address pairs, including activities, asset transfers, and labels. Deprecated chains return 410; choose a supported chain before retrying. For chain coverage, edge cases, or response fields, use browse_docs with path 'api/developer/wallets/transactions.md'.
get_realtime_wallet_transactions
Read one visual saved on an Allium Explorer query, including its full `spec`. Use this to tweak a field of an existing visual, or to match its style in a new one — get_explorer_query lists a query's visuals, and this returns the config of whichever one you name. To change what you read back, pass the same `visual_id` to create_explorer_visual with the edited `spec`. A null `type` means a legacy config that predates the current format: build a fresh `spec` for it rather than editing what you read back, which won't validate.
get_explorer_visual
Retrieve a saved Explorer query by ID. Returns the full SQL, row limit, template parameters, tags, URL, and latest result field metadata when available. Use this to inspect a query before editing or running it. `visuals` lists every visual saved on the query, IDs only. Pass a `visual_id` to create_explorer_visual to edit that visual, omit it to add one, or call get_explorer_visual for its full config.
get_explorer_query
Get a skill's full instructions. If the instructions list reference files, call again with `reference_title` set to the exact listed title to retrieve one.
get_skill
List supported chains by realtime API endpoint. Call once per session and reuse the endpoint-to-chains map before token, wallet, holdings, or price requests. An unsupported chain may return an empty result or an error. This check is not needed for Explorer SQL or docs tools.
get_realtime_supported_chains
Fetch SQL or latest precomputed result rows for one Terminal dashboard chart. Use search_terminal first to find a dashboard id, then call get_terminal_results without chart_id for the chart manifest. Call again with chart_id and mode="queries" for SQL, mode="results" for capped latest rows, or mode="both" for SQL plus rows. When returning or citing result values, state `result.queried_at` when present so the user knows when the precomputed Terminal result was last generated. This never uses compute units; it only reads existing query definitions and results from Terminal.
get_terminal_results
Get cross-chain assets by ID, slug, or chain and token address. For chain coverage, edge cases, or response fields, use browse_docs with path 'api/developer/assets/get-assets.md'.
get_realtime_crosschain_assets
Read the rows of one catalog metric. Only for metrics list_catalog_metrics names. Anything outside those subjects belongs in SQL. Call list_catalog_metrics first: it names every group/category/metric and, per metric, the dimensions you may split or filter by, the granularities allowed, and whether the metric is a snapshot. `params` accepts: - `type`: "timeseries" (default) or "latest" - `granularity`: "day", "week", "month" — timeseries only - `from`, `to`: ISO dates bounding the range — timeseries only - `sort`: "asc" or "desc"; `delta_window`: integer — latest only - `entity`: one entity id, or a list, to restrict the rows - `series`: a dimension id, or a list, to split the metric by - `limit`: how much to keep. On `type=latest` it is the number of ranked rows, taken from the top, or from the bottom with `sort=asc`. On a timeseries it is the number of most recent periods, each returned whole - any other key is a filter on a dimension, in PostgREST syntax: - `{"chain": "ethereum"}` or `"eq.ethereum"`: equal to one value - `"neq.base"`: anything but base, rows with no chain included - `"in.(ethereum,solana)"`: any of several; quote a value holding a comma or parenthesis, `in.("a,b",c)` - `"not.in.(base,tron)"`: none of several, rows with no chain included - `"gte.1m-10m"`, plus `gt`, `lt`, `lte`: only on a dimension with ordered values, such as `tier`; the bound is one of those values - a list of expressions on one key must all hold: `{"tier": ["gte.10k-100k", "lte.1m-10m"]}` - a value that itself starts with an operator and a dot, such as `in.`, is written `eq.<value>` - the metric's own id takes `gt`, `gte`, `lt` or `lte` and a plain number, and keeps the returned rows whose value passes: `{"payment_volume_usd": "gte.1000000"}`. On a timeseries each period is tested, so a series can have gaps, and `limit` counts only the periods kept - `activity_date` takes `gt`, `gte`, `lt` or `lte` and an ISO date, the same as `from`/`to`, on a timeseries only. Bounds cut days, so a week or month partly outside them covers only the days inside An unknown entity id or filter value is not an error — it matches no rows and returns an empty result, so check the spelling against list_catalog_metrics before concluding a metric has no data. Results are capped at 200 rows: a timeseries keeps its most recent rows, a `type=latest` ranking keeps its highest-valued rows, or its lowest with `sort=asc`. Ask for what you need with `limit`, or narrow with `from`/`to`, a coarser `granularity`, or an `entity` filter, rather than relying on the cap.
get_catalog_metric
Get status and results for an ad hoc or saved Explorer query run. Returns columns, rows, total `row_count`, and `cost_explorer_units` when complete; `row_limit` may return fewer rows than `row_count`. By default this checks once. Set `poll_timeout_seconds` to wait, then call again if still queued or running. While queued, `queue_status` shows org-wide queue counts for its compute profile. Check failures and zero-row results before answering; zero rows may itself answer the question. For useful saved-query data, create_explorer_visual can render a visual unless the user wants only raw data, SQL, or a single value.
get_query_run_results
Get current or historical Hyperliquid metaAndAssetCtxs snapshots with prices, funding, and open interest. The latest snapshot lags the exchange by about 2-3 minutes. History requires both times and spans at most 30 days per call, with at most 60 snapshots without a coin filter or 2000 with one. History starts 9 May 2025; earlier windows return no rows. Oversized windows return 400 rather than truncated results. Each context carries coin, timestamp, and maxLeverage; the universe array is omitted and impactPxs is currently null. For chain coverage, edge cases, or response fields, use browse_docs with path 'api/developer/hyperliquid/asset-contexts.md'.
get_realtime_hyperliquid_asset_contexts
Get Hyperliquid userFills, userFillsByTime, or userTwapSliceFills by wallet address. These request types match Hyperliquid; userFillsByTime has no historical lookback limit. Results are capped at 2000 fills per call. For chain coverage, edge cases, or response fields, use browse_docs with path 'api/developer/hyperliquid/fills.md'.
get_realtime_hyperliquid_fills
Get complete orderbook snapshot for all pairs. Compression Required. This endpoint requires brotli compression for efficient data transfer. For chain coverage, edge cases, or response fields, use browse_docs with path 'api/developer/hyperliquid/orderbook-snapshot.md'.
get_realtime_hyperliquid_orderbook_snapshot
Get a wallet's Hyperliquid historicalOrders. Omit times for recent orders. Historical lookback is unrestricted, but each startTime-endTime window must span at most 30 days; paginate longer ranges with successive windows. Results are capped at 2000 orders per call. For chain coverage, edge cases, or response fields, use browse_docs with path 'api/developer/hyperliquid/order-history.md'.
get_realtime_hyperliquid_order_history
Get a Hyperliquid order status by wallet and numeric order ID or client order ID. Unknown orders return Hyperliquid's unknownOid status. For chain coverage, edge cases, or response fields, use browse_docs with path 'api/developer/hyperliquid/order-status.md'.
get_realtime_hyperliquid_order_status
List user's saved Explorer queries with field metadata and tags. Use the tags parameter to filter queries by tag (e.g., to find all queries tagged for a specific dashboard or topic).
list_explorer_queries
List Allium skill guides the caller can access, with descriptions. Use get_skill for full instructions.
list_skills
List cross-chain assets with pagination. For chain coverage, edge cases, or response fields, use browse_docs with path 'api/developer/assets/list-assets.md'.
list_realtime_crosschain_assets
List every metric in the Allium metrics catalog. The catalog covers entities/bridging, entities/dexes, entities/issuers, entities/lending, entities/perpetuals, entities/prediction_markets, entities/rwas, entities/stablecoins, entities/staking, entities/trading, intents/payments, and nothing else. A question about any other subject has no catalog metric, so go straight to search_schemas and SQL rather than checking here first. Returns each category with its metrics, and per metric the label, unit, aggregation, the dimensions it can be split or filtered by, the granularities it supports, and `refreshed_at` — when its data was last published. A metric whose `refreshed_at` is null has no published data and get_catalog_metric will fail on it. These are curated, pre-computed metrics: prefer them over writing SQL when one answers the question.
list_catalog_metrics
List the organization's Explorer compute profiles with each profile's org-wide `queued` and `running` query counts. Each profile has its own warehouse and its own queue, shared across the org but isolated from the other profiles, so a query sent to a less contended profile starts sooner. Pass a profile's `identifier` as `compute_profile` to run_sql_query or run_explorer_query, and prefer the profile with the lowest `queued`. The profile with `is_default=true` is used when no profile is specified.
list_compute_profiles
List chain tokens, including tokens without DEX trades. Those tokens omit price-derived fields rather than reporting zero and rank last under FDV or volume sorting. For Stellar, set chain=stellar; sort, granularity, order, and volume thresholds are unsupported. For chain coverage, edge cases, or response fields, use browse_docs with path 'api/developer/tokens/list-tokens.md'.
list_realtime_chain_tokens
Inspect a dashboard at any depth. Pass `dashboard_id` alone for a root summary (name, settings, list of pages). Add `page_id` / `section_id` / `element_id` to drill down — each level returns the targeted node plus its immediate children's summaries (never a full subtree). At element depth the full typed config is returned. Reads Explorer dashboards (URL `/analyze/dashboards/{dashboard_id}`), which are user-created. The id is the path segment after `/analyze/dashboards/`. Never use this tool for a `/terminal/...` URL; use get_terminal_results instead.
read_dashboard
Run an existing saved Explorer query by ID. Queues the query for execution and returns a run_id. Use get_query_run_results to wait for results or for a non-blocking status check.
run_explorer_query
Run an ephemeral, throwaway SQL query on Allium's blockchain data. **Call `get_skill(name="sql-optimization")` before writing or running any SQL.** Use ONLY when the result is not reused — inspecting sample rows, checking distinct values, answering a single ad-hoc question. The run is not saved and cannot be referenced by a chart or dashboard. If the output might feed a chart/dashboard or be re-run later, start with create_explorer_query(run_on_creation=True) instead; running here first and re-saving the same SQL duplicates the compute. Returns a run_id immediately; use get_query_run_results to poll and retrieve results. The query is sanitized and row-limited per the caller's policy. IMPORTANT: When prepare_sql is available, validate queries before running them.
run_sql_query
Search the user's Explorer dashboards by name. Returns dashboard IDs, names, URLs, tags, timestamps, and whether the caller created each one, ranked by match quality then recent update. With no arguments, returns the first 25 viewable dashboards; `count` includes matches beyond `limit`. Covers Explorer dashboards only. Use `search_terminal` for Allium's published Terminal dashboards, and `read_dashboard` to open one by id.
search_dashboards
Search Allium's public documentation by meaning. Use for questions about data schemas, APIs, and query guidance when you do not know the document path. Use browse_docs to navigate known paths.
search_docs
Search schemas or fetch one schema entry by id. `query` runs the chosen `search_mode` against the prebuilt schema index. `id` fetches a single entry by its dotted table id (e.g. `ethereum.public.transactions`). Provide exactly one. Write `query` as a few keywords, e.g. `ethereum dex trades` or `solana token transfers`. Pass `database` to restrict hits to one chain. Long sentences dilute the ranking. For query searches, keep `include_content=False` unless full schema markdown is required. Search results are for discovery and ranking; full markdown can make result payloads too large. Keep the default `limit` for discovery and use `limit=1-3` when `include_content=True`. Without `database`, hits are one per `schema.table`: the best-ranked database's copy is returned and `other_databases` lists the other databases (chains) that have the same table. Fetch a specific copy with `id="<database>.<schema>.<table>"`. Each hit reports `deprecated`, and `replacement_table` when the retired table names one.
search_schemas
Make an Explorer query public and return share and embed URLs. Without `visual_id`, the shared page shows the results table and saved visuals, but the embed shows only the table. Set `visual_id` to a visual listed by get_explorer_query to share and embed that visual alone. SQL is visible by default; set `exclude_sql=True` to hide it. An existing share is reused, and its SQL visibility is updated if requested. To revoke public access, open the query in the Allium app and turn off sharing there.
share_explorer_query
Make a dashboard public and return its share URL. An existing share is reused; dashboards have no embed URL. To revoke public access, open the dashboard in the Allium app and turn off sharing there.
share_dashboard
Search Allium's published `/terminal/` dashboards. Returns ranked discovery details and optionally rendered dashboard content, without SQL or result rows. Use `include_content=True` with a small `limit` when full context is needed, and provide the dashboard link for its charts and explanations. For a user's Explorer dashboards at `/analyze/dashboards/`, use search_dashboards.
search_terminal
Update an existing Explorer query. Requires query_id. Only provide fields you want to change - others will be preserved. Changing `sql` does not run the query - it only saves the new SQL. Any visuals or dashboard elements bound to this query keep referencing its columns by name; they pick up the new SQL's columns the next time the query runs, and a binding whose column was renamed or removed will fail to render until it's rebound.
update_explorer_query
Allium ChatGPT Plugin FAQ
How the directory, categories and Discoverability Score work.
Read the methodologyHow do I improve Allium's ChatGPT Plugin discoverability?
The levers are the listing surface agents actually read: names, descriptions, keywords, tool metadata, and registry health. Which lever matters depends on where discovery breaks, which is what continuous measurement shows.
What are Allium alternatives on ChatGPT?
As of 2026-10-05, Allium competes with Alchemy, Blockscout Blockchain Data, Etherscan, Quicknode, Vector Smart Chain in ChatGPT Blockchain Developer Infrastructure, ranked by public Discoverability Score.
Where is this profile measured?
This profile uses the geography attached to the latest public registry snapshot: US. Locale tags are intentionally omitted.