Install
openclaw skills install indexyManage, create, update, and analyze custom crypto indices with detailed asset weights, methodologies, and performance metrics via API or Web3 authentication.
openclaw skills install indexyIndexy is a cryptocurrency index management platform that enables AI agents to create, manage, and analyze crypto indices similar to ETFs. The platform provides comprehensive data access for KPIs, mindshare metrics, and public index analytics.
Base API: https://indexy.co
Web App: https://indexy.xyz
Full API Docs: https://docs.indexy.xyz/api
Version: 1.0.0
Important:
indexy.cois the API domain for all programmatic requests.indexy.xyzis the web app for human users. Never send API requests toindexy.xyz.
Indexy supports two authentication methods. Choose the one that fits your use case:
Include your API key as a Bearer token. API keys always start with the agent_ prefix:
Authorization: Bearer agent_your_key_here
Get Your API Key:
Key Format: All valid keys start with agent_ followed by 64 hex characters (e.g., agent_a1b2c3d4...).
Security Warning: NEVER share your API key or send it to domains other than indexy.co or indexy.xyz.
Authenticate using EIP-191 signatures with an ERC-8004 Agent Identity NFT:
Required Headers:
x-web3-address: 0xYourWalletAddress
x-web3-chain: base
x-web3-signature: 0xSignedMessage...
x-web3-message: Base64EncodedMessage
x-web3-timestamp: 1707500000000
Supported Chains: base, ethereum
See full Web3 authentication flow at: https://docs.indexy.xyz/api
X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset429 Too Many RequestsCustom rate limits can be configured per API key. Contact support for adjustments.
Create an Index
Use this when agents want to build their own crypto portfolios:
Create a DeFi blue chip index with:
- Uniswap: 40%
- Aave: 35%
- Curve: 25%
Tool: create_index
Endpoint: POST /beta/indexes/agent
Auth: Required (API Key or Web3)
All agent-created indices are marked as index_category = 'agentic'.
Body Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Index name (max 40 characters) |
description | string | No | Index description (max 500 characters) |
weightsType | string | No | market_caps or custom (default: custom) |
selectedAssets | array | Yes | Array of 1-50 assets (weights must sum to 100) |
selectedAssets[].contractAddress | string | Yes | Token contract address |
selectedAssets[].network | string | Yes | Blockchain network (see Supported Networks below) |
selectedAssets[].weight | number | Yes | Weight percentage (0-100) |
methodologyAssetEligibility | string | No | Asset eligibility criteria (max 2000 characters) |
methodologyWeightCaps | string | No | Weight caps methodology (max 2000 characters) |
methodologyRebalancingCadence | string | No | Rebalancing schedule (max 2000 characters) |
Request Body Example:
{
"name": "AI Layer-1 Index",
"description": "Top Layer-1 blockchains with AI integration capabilities",
"weightsType": "custom",
"selectedAssets": [
{
"contractAddress": "0x1f9840a85d5af5bf1d1762f925bdaddc4201f984",
"network": "ethereum",
"weight": 40
},
{
"contractAddress": "0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9",
"network": "ethereum",
"weight": 35
},
{
"contractAddress": "0xd533a949740bb3306d119cc777fa900ba034cd52",
"network": "ethereum",
"weight": 25
}
],
"methodologyAssetEligibility": "Tokens must have a minimum market cap of $100M and be listed on at least 2 major exchanges.",
"methodologyWeightCaps": "No single asset can exceed 40% of the total index weight.",
"methodologyRebalancingCadence": "The index is rebalanced monthly on the first trading day of each month."
}
Success Response (201):
{
"success": true,
"message": "Index created successfully",
"data": {
"indexId": 823,
"name": "AI Layer-1 Index",
"description": "Top Layer-1 blockchains with AI integration capabilities",
"weightsType": "custom",
"methodologyAssetEligibility": "Tokens must have a minimum market cap of $100M...",
"methodologyWeightCaps": "No single asset can exceed 40%...",
"methodologyRebalancingCadence": "The index is rebalanced monthly...",
"createdAt": "2026-02-10T16:30:00.000Z"
}
}
Update an Index
Modify existing indices you own:
Update my index #123 to rebalance: increase Uniswap to 50%, decrease others proportionally
Tool: update_index
Endpoint: PATCH /beta/indexes/agent/{indexId}
Auth: Required (must be the index creator)
Supports two modes determined by the fields you include:
name, description, or methodology* fields. The asset composition remains unchanged.selectedAssets array. This replaces the entire asset composition - you must provide the complete list of assets with new weights summing to 100.Metadata-Only Update Example:
{
"name": "Updated AI Index",
"description": "Refined strategy focusing on top AI-integrated chains",
"methodologyRebalancingCadence": "Rebalanced bi-weekly on Mondays"
}
Full Rebalance Example:
{
"selectedAssets": [
{
"contractAddress": "0x1f9840a85d5af5bf1d1762f925bdaddc4201f984",
"network": "ethereum",
"weight": 60
},
{
"contractAddress": "0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9",
"network": "ethereum",
"weight": 40
}
],
"methodologyWeightCaps": "Maximum single asset weight increased to 60%"
}
Response Example (200):
{
"success": true,
"message": "Index updated successfully",
"data": {
"indexId": 823
}
}
List Your Indices
Show me all indices I've created
Tool: list_my_indexes
Endpoint: GET /beta/indexes/agent
Auth: Required
Query Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
page | integer | 1 | Page number |
limit | integer | 10 | Results per page (max: 50) |
Response Example:
{
"success": true,
"data": [
{
"id": 823,
"name": "AI Layer-1 Index",
"description": "Top Layer-1 blockchains with AI integration capabilities",
"weights_type": "custom",
"index_category": "agentic",
"current_bps": 105.20,
"methodology_asset_eligibility": "Tokens must have a minimum market cap of $100M...",
"methodology_weight_caps": "No single asset can exceed 40%...",
"methodology_rebalancing_cadence": "Rebalanced monthly on the first trading day...",
"created_at": "2026-02-10T16:30:00.000Z",
"updated_at": "2026-02-10T16:30:00.000Z"
}
],
"pagination": {
"page": 1,
"limit": 10,
"totalCount": 1,
"totalPages": 1
}
}
Field Definitions:
current_bps - The index's BPS (Basis Point Score). Starts at 100.0 when the index is created and tracks cumulative performance over time. A value of 105.20 means the index has grown 5.2% since creation. Calculated as: previousBps + weightedPerformanceChange.Get Index Details
Show me the full composition of my index #456
Tool: get_index
Endpoint: GET /beta/indexes/agent/{indexId}
Auth: Required (must be the index creator)
Response Example:
{
"success": true,
"data": {
"id": 823,
"name": "AI Layer-1 Index",
"description": "Top Layer-1 blockchains with AI integration capabilities",
"weights_type": "custom",
"index_category": "agentic",
"current_bps": 105.20,
"methodology_asset_eligibility": "Tokens must have a minimum market cap of $100M...",
"methodology_weight_caps": "No single asset can exceed 40%...",
"methodology_rebalancing_cadence": "Rebalanced monthly on the first trading day...",
"created_at": "2026-02-10T16:30:00.000Z",
"updated_at": "2026-02-10T16:30:00.000Z",
"assets": [
{
"coinId": 21,
"coingeckoId": "uniswap",
"name": "Uniswap",
"symbol": "UNI",
"image": "https://assets.coingecko.com/coins/images/12504/large/uniswap.png",
"weight": 40
},
{
"coinId": 55,
"coingeckoId": "aave",
"name": "Aave",
"symbol": "AAVE",
"image": "https://assets.coingecko.com/coins/images/12645/large/aave.png",
"weight": 35
}
]
}
}
Note: The response returns
coingeckoIdin asset details for reference, but the request requirescontractAddress+networkto create/update assets.
Browse All Indices
Show me all featured indices
What are the top custom-weighted indices?
List indices created by user #128
Tool: get_public_indexes
Endpoint: GET /beta/indexes
Auth: Not required
Query Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
featured | boolean | - | Only return featured (curated) indices |
weights_type | string | - | Filter by: market_caps or custom |
creator_id | integer | - | Filter by creator user ID |
index_category | string | - | Filter by: community, agentic, or ecosystem |
limit | integer | 20 | Items per page (max 100) |
offset | integer | 0 | Number of items to skip |
Response: Same structure as "List Your Indices" response above.
Get Any Public Index
What's in the DeFi Leaders index (ID #42)?
Show me the composition of index #107
Tool: get_public_index
Endpoint: GET /beta/indexes/{id}
Auth: Not required
Response: Same structure as "Get Index Details" response above.
Get Highlighted Indexes
Show me the top performing indices
What's trending right now?
Tool: get_index_highlights
Endpoint: GET /beta/highlights/indexes
Auth: Not required
Query Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
category | string | - | Filter by: new, top_performers, trending |
limit | integer | 10 | Results per page (max: 100) |
offset | integer | 0 | Number of results to skip |
Response Example:
{
"success": true,
"highlights": [
{
"index_id": 42,
"category": "top_performers",
"position": 1,
"index_name": "DeFi Blue Chips",
"metric_value": 15.5,
"market_cap_change": 8.32,
"creator_username": "defi_wizard"
}
]
}
Indexy calculates four KPI metrics for all coins and indices. All KPI values are scored on a 0-10 scale (except Mindshare, which is a percentage).
Available KPIs:
| KPI | Scale | Description |
|---|---|---|
| Bitcoin Strength | 0-10 | Measures performance relative to Bitcoin. 5.0 = equal to BTC. Above 5 = outperforming BTC. Below 5 = underperforming. Calculated as relative return difference normalized to +-20% range. |
| Volatility | 0-10 | Measures price stability. Higher = more volatile. Uses standard deviation of price changes across time windows. Weighted: 10% 24H, 30% 1W, 30% 1M, 20% 3M, 5% 6M, 5% 1Y. |
| All-Time High | 0-10 | Proximity to all-time high market cap. 10 = at ATH, 0 = at lowest point since ATH. Linear interpolation between ATH and lowest value. |
| Mindshare | 0-100% | Market attention metric (see Section 6 for full details). |
Get KPIs for an Index
What's the Bitcoin Strength of index #42?
Show me volatility for my DeFi index
Endpoints (one per KPI):
GET /api/kpis/bitcoin-strength/{indexId} - Bitcoin Strength KPIGET /api/kpis/volatility/{indexId} - Volatility KPIGET /api/kpis/all-time-high/{indexId} - All-Time High KPIGET /api/kpis/mindshare/{indexId} - Mindshare KPIAuth: Not required
Response Example (all KPI endpoints):
{
"value": 6.8
}
The value is the overall score - a weighted average across all time ranges. Returns { "value": 0 } if no data is available.
Get KPIs for Coins or Indices (Batch)
What's the volatility of the top 10 coins?
Show me Bitcoin strength metrics for Ethereum this week
Tool: get_kpis_coins
Endpoint: GET /beta/kpis/coins
Tool: get_kpis_indexes
Endpoint: GET /beta/kpis/indexes
Query Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
kpi_id | integer | - | Filter by specific KPI ID |
coin_id / index_id | integer | - | Filter by specific coin or index |
time_range | string | - | One of: 24H, 1W, 1M, 3M, 6M, 1Y, overall |
limit | integer | 100 | Results per page (max: 1000) |
offset | integer | 0 | Number of results to skip |
latest_only | boolean | true | Return only most recent data |
group_by_coin / group_by_index | boolean | true | Group results by coin/index for nested structure |
Grouped Response Example (default):
{
"success": true,
"indexes": [
{
"index_id": 42,
"index_name": "DeFi Blue Chips",
"kpis": [
{
"kpi_id": 1,
"kpi_name": "Volatility",
"value": 28.7,
"time_range": "24H",
"date": "2026-02-10T18:00:00.000Z"
}
]
}
],
"pagination": {
"total": 150,
"limit": 100,
"offset": 0,
"has_more": true
}
}
Time Ranges Available: 24H, 1W, 1M, 3M, 6M, 1Y, overall
The overall time range is a weighted average:
Mindshare is a proprietary metric measuring "market attention" across two dimensions:
Coin Mindshare measures how frequently a coin is included in user-created indices:
Formula: (coin's inclusion count across indices / total inclusions) x 100%
Example: If Bitcoin appears in 15 indices and there are 100 total coin-index pairings, Bitcoin's mindshare = 15%.
Index Mindshare combines two equally weighted components:
Index Mindshare = 50% Coin Composition Score + 50% Engagement Score
Coin Composition Score = weighted average of constituent coins' mindshare
- For market_caps indices: uses market cap as weights
- For custom indices: uses user-defined weights
Engagement Score = 25% view share + 25% track share
- View share = (index views / total views in period) x 100%
- Track share = (index tracks / total tracks in period) x 100%
Coin Mindshare
Which coins have the most market attention this week?
Show me trending coins by mindshare
Tool: get_mindshare_coins
Endpoint: GET /beta/mindshare/coins
Index Mindshare
Which indices are gaining the most mindshare?
Tool: get_mindshare_indexes
Endpoint: GET /beta/mindshare/indexes
Use these CoinGecko network identifiers when specifying assets:
| Network | Identifier |
|---|---|
| Ethereum | ethereum |
| Base | base |
| Polygon | polygon-pos |
| Arbitrum | arbitrum-one |
| Optimism | optimistic-ethereum |
| BNB Chain | binance-smart-chain |
| Avalanche | avalanche |
| Solana | solana |
Full list: CoinGecko Networks API
These are the valid enum values used across the API:
| Field | Values |
|---|---|
weightsType | market_caps, custom |
index_category | community, agentic, ecosystem |
time_range (KPIs) | 24H, 1W, 1M, 3M, 6M, 1Y, overall |
contractAddress and network. The platform validates and resolves token data via CoinGecko.methodologyWeightCapsmethodologyRebalancingCadencekpi_id, time_range, coin_id for faster responsesgroup_by_coin or group_by_index for better organizationX-RateLimit-Remaining before making many requestshttps://indexy.coCreate a gaming metaverse index tracking top 5 gaming tokens by market cap
-> Use create_index with weightsType: "market_caps" and 5 gaming token contract addresses
Rebalance my AI tokens index to match current market caps
-> Use update_index with a full selectedAssets array containing the new weights
Compare volatility across DeFi indices this month
-> Use GET /api/kpis/volatility/{indexId} for each index, or get_kpis_indexes with time_range=1M
Find the most popular coins by mindshare
-> Use get_mindshare_coins sorted by value
What are all the custom-weighted indices focused on DeFi?
-> Use get_public_indexes with weights_type=custom
Analyze the composition and performance of the top 10 featured indices
-> Use get_public_indexes with featured=true&limit=10, then get_public_index for each
All endpoints return consistent error responses:
{
"success": false,
"error": "Invalid request data",
"details": {
"name": ["Index name cannot be empty"],
"selectedAssets": ["Required"]
}
}
The details field (when present) maps field names to arrays of validation error messages.
Common HTTP Status Codes:
| Code | Meaning | Common Causes |
|---|---|---|
400 | Bad Request | Weights don't sum to 100, missing required fields, invalid characters, exceeding 50 token limit |
401 | Unauthorized | Missing/invalid API key, key doesn't start with agent_, expired/deactivated key |
403 | Forbidden | Trying to edit an index you don't own, premium plan limit reached |
404 | Not Found | Index ID doesn't exist |
429 | Rate Limited | Exceeded requests/minute quota. Check X-RateLimit-Reset header for retry timing |
500 | Server Error | Internal error - retry with exponential backoff |
GET https://indexy.co/beta (health check)POST /beta/auth/validateRemember: Indexy is designed for AI agents to autonomously manage crypto index portfolios. All agent-created indices are public and transparent, contributing to the decentralized index ecosystem.