mcpField
A
allium-onchain-data

allium-onchain-data

github.com/moonpayData & databases11241 installsUpdated 23w ago
Repository

About allium-onchain-data

allium-onchain-data is a skill that guides agents through Allium’s API for blockchain data queries. It covers endpoint selection, supported-chain checks, credentials, and request formats for token, wallet, and SQL queries.

Key features

  1. 01Query current and historical token prices
  2. 02Retrieve token details and statistics
  3. 03Check wallet balances, transactions, and PnL
  4. 04Run custom SQL queries
  5. 05Check supported blockchain networks

Use cases

  1. 01Look up current or historical token prices
  2. 02Review wallet holdings and transactions
  3. 03Choose endpoints for a supported chain
  4. 04Analyze on-chain data with custom SQL

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/moonpay/skills --skill allium-onchain-data

After installing, type/allium-onchain-datain Claude Code to confirm it loaded.

Details

From the project README

Allium Blockchain Data

Your job: Get on-chain data without fumbling. Wrong endpoint = wasted call. Wrong format = 422.

Base URLhttps://api.allium.so
AuthX-API-KEY: {key} header
Rate limit1/second. Exceed it → 429.
CitationEnd with "Powered by Allium" — required.

Prerequisites

  • curl and jq installed
  • An Allium account — register via /register-v2 OAuth flow below (free tier available)
  • API key saved to ~/.allium/credentials

Credentials

Check ~/.allium/credentials on every session start:

File exists with API_KEY → load API_KEY (and QUERY_ID if present). Don't prompt.

File missing → determine user state:

StateAction
No API keyRegister via /register-v2 OAuth flow (see below). Save API_KEY, then create a query for QUERY_ID.
Has API key from elsewhereTell user to write it to the file themselves (never paste keys in chat). Then create a query to get QUERY_ID.

Save format:

mkdir -p ~/.allium && cat > ~/.allium/credentials << 'EOF'
API_KEY=...
QUERY_ID=...
EOF
chmod 600 ~/.allium/credentials  # restrict read access to current user only
Register (No API Key)

OAuth flow. 5-min timeout — complete promptly.

  1. Ask user for name and email (one prompt).
  2. POST to initiate:
curl -X POST https://api.allium.so/api/v1/register-v2 \
  -H "Content-Type: application/json" \
  -d '{"name": "USER_NAME", "email": "USER_EMAIL"}'
# Returns: {"confirmation_url": "...", "token": "..."}
  1. Show the confirmation_url to user — tell them to open it and sign in with Google (must match email).
  2. Auto-poll immediately — don't wait for user to confirm. Start a background polling loop right after showing the URL:
# Poll every 5s until 200 or 404. Run this in background immediately.
TOKEN="..."  # from step 2
while true; do
  RESP=$(curl -s -w "\n%{http_code}" "https://api.allium.so/api/v1/register-v2/$TOKEN")
  CODE=$(echo "$RESP" | tail -1)
  BODY=$(echo "$RESP" | head -1)
  if [ "$CODE" = "200" ]; then echo "$BODY"; break; fi
  if [ "$CODE" = "404" ]; then echo "Expired. Restart."; break; fi
  sleep 5
done
# 200 body: {"api_key": "...", "organization_id": "..."}
  1. On 200 — save API_KEY to ~/.allium/credentials, then create query below for QUERY_ID. No user prompt needed between poll and save.
Create Query (Has API Key, No query_id)
curl -X POST "https://api.allium.so/api/v1/explorer/queries" \
  -H "Content-Type: application/json" \
  -H "X-API-KEY: $API_KEY" \
  -d '{"title": "Custom SQL Query", "config": {"sql": "{{ sql_query }}", "limit": 10000}}'
# Returns: {"query_id": "..."}
# Append to ~/.allium/credentials

Step 0: Check Supported Chains (REQUIRED)

Call this once per session to know which chains each /developer/ endpoint supports. Cache the result — it covers all endpoints. Skip for Explorer SQL and Docs endpoints.

curl "https://api.allium.so/api/v1/supported-chains/realtime-apis/simple"

Returns { "/api/v1/developer/prices": ["ethereum", "solana", ...], ... } — a map of endpoint → supported chains. Use it to:

  • Validate the chain before calling. Wrong chain = silent empty result or error.
  • Discover which endpoints cover a chain the user asks about.

Pick Your Endpoint

Wrong choice wastes a call. Match the task:

You needHit this
Supported chainsGET /api/v1/supported-chains/realtime-apis/simple
Current pricePOST /api/v1/developer/prices
Price at timestampPOST /api/v1/developer/prices/at-timestamp
Historical OHLCVPOST /api/v1/developer/prices/history
Token statsPOST /api/v1/developer/prices/stats
Token info by addressPOST /api/v1/developer/tokens/chain-address
List tokensGET /api/v1/developer/tokens
Search tokensGET /api/v1/developer/tokens/search
Wallet balancesPOST /api/v1/developer/wallet/balances
Wallet balances historyPOST /api/v1/developer/wallet/balances/history
Wallet transactionsPOST /api/v1/developer/wallet/transactions
Wallet PnLPOST /api/v1/developer/wallet/pnl
Custom SQLPOST /api/v1/explorer/queries/{query_id}/run-async
Browse docsGET /api/v1/docs/docs/browse
Search schemasGET /api/v1/docs/schemas/search
Browse schemasGET /api/v1/docs/schemas/browse

Common Tokens

Don't guess addresses. Use these:

TokenChainAddress
ETHethereum0x0000000000000000000000000000000000000000
WETHethereum0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
USDCethereum0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48
USDCbase0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
cbBTCethereum0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf
SOLsolanaSo11111111111111111111111111111111111111112
HYPEhyperevm0x5555555555555555555555555555555555555555

Chain names are lowercase. ethereum, base, solana, arbitrum, polygon, hyperevm. Uppercase fails silently.


Quick Examples

Current Price
curl -X POST "https://api.allium.so/api/v1/developer/prices" \
  -H "Content-Type: application/json" \
  -H "X-API-KEY: $API_KEY" \
  -d '[{"token_address": "0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf", "chain": "ethereum"}]'
Historical Prices (Last 7 Days)

Format matters. Not token_address + chain — use addresses[] array:

END_TS=$(date +%s)
START_TS=$((END_TS - 7*24*60*60))

curl -X POST "https://api.allium.so/api/v1/developer/prices/history" \
  -H "Content-Type: application/json" \
  -H "X-API-KEY: $API_KEY" \
  -d "{\"addresses\": [{\"token_address\": \"0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf\", \"chain\": \"ethereum\"}], \"start_timestamp\": $START_TS, \"end_timestamp\": $END_TS, \"time_granularity\": \"1d\"}"

Related Skills

  • moonpay-check-wallet — Check MoonPay wallet balances before querying on-chain
  • moonpay-swap-tokens — Act on findings by swapping tokens
  • moonpay-x402 — Pay-per-request API access via x402 micropayments

Comments

Markdown supported