# Send Moralis Data Api to your agent
Use the source page and any available docs to guide the install because the item is currently unstable or timing out.
## Fast path
- Open the source page via Review source status.
- If you can obtain the package, extract it into a folder your agent can access.
- Paste one of the prompts below and point your agent at the source page and extracted files.
## Suggested prompts
### New install

```text
I tried to install a skill package from Yavira, but the item is currently unstable or timing out. Inspect the source page and any extracted docs, then tell me what you can confirm and any manual steps still required.
```
### Upgrade existing

```text
I tried to upgrade a skill package from Yavira, but the item is currently unstable or timing out. Compare the source page and any extracted docs with my current installation, then summarize what changed and what manual follow-up I still need.
```
## Machine-readable fields
```json
{
  "schemaVersion": "1.0",
  "item": {
    "slug": "moralis-data-api",
    "name": "Moralis Data Api",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/novnski/moralis-data-api",
    "canonicalUrl": "https://clawhub.ai/novnski/moralis-data-api",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadUrl": "/downloads/moralis-data-api",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=moralis-data-api",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "packageFormat": "ZIP package",
    "primaryDoc": "SKILL.md",
    "includedAssets": [
      "SKILL.md",
      "references/CommonPitfalls.md",
      "references/DataTransformations.md",
      "references/DefiProtocols.md",
      "references/FilteredTokens.md",
      "references/NftMarketplaces.md"
    ],
    "downloadMode": "manual_only",
    "sourceHealth": {
      "source": "tencent",
      "slug": "moralis-data-api",
      "status": "unstable",
      "reason": "timeout",
      "recommendedAction": "retry_later",
      "checkedAt": "2026-05-05T20:18:59.830Z",
      "expiresAt": "2026-05-06T08:18:59.830Z",
      "httpStatus": null,
      "finalUrl": null,
      "contentType": null,
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=moralis-data-api",
        "error": "Timed out after 5000ms",
        "slug": "moralis-data-api"
      },
      "scope": "item",
      "summary": "Item is unstable.",
      "detail": "This item is timing out or returning errors right now. Review the source page and try again later.",
      "primaryActionLabel": "Review source status",
      "primaryActionHref": "https://clawhub.ai/novnski/moralis-data-api"
    },
    "validation": {
      "installChecklist": [
        "Wait for the source to recover or retry later.",
        "Review SKILL.md only after the download returns a real package.",
        "Treat this source as transient until the upstream errors clear."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    }
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/moralis-data-api",
    "downloadUrl": "https://openagent3.xyz/downloads/moralis-data-api",
    "agentUrl": "https://openagent3.xyz/skills/moralis-data-api/agent",
    "manifestUrl": "https://openagent3.xyz/skills/moralis-data-api/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/moralis-data-api/agent.md"
  }
}
```
## Documentation

### CRITICAL: Read Rule Files Before Implementing

The #1 cause of bugs is not reading the endpoint rule file before writing code.

For EVERY endpoint:

Read rules/{EndpointName}.md
Find "Example Response" section
Copy the EXACT JSON structure
Note field names (snake_case), data types, HTTP method, path, wrapper structure

Reading Order:

This SKILL.md (core patterns)
Endpoint rule file in rules/
Pattern references in references/ (for edge cases only)

### API Key (optional)

Never ask the user to paste their API key into the chat. Instead:

Check if MORALIS_API_KEY is set in the environment (try running [ -n "$MORALIS_API_KEY" ] && echo "API key is set" || echo "API key is NOT set").
If not set, offer to create the .env file with an empty placeholder: MORALIS_API_KEY=
Tell the user to open the .env file and paste their key there themselves.
Let them know: without the key, you won't be able to test or call the Moralis API on their behalf.

If they don't have a key yet, point them to admin.moralis.com/register (free, no credit card).

### Environment Variable Discovery

The .env file location depends on how skills are installed:

Create the .env file in the project root (same directory the user runs Claude Code from). Make sure .env is in .gitignore.

### Verify Your Key

curl "https://deep-index.moralis.io/api/v2.2/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045/balance?chain=0x1" \\
  -H "X-API-Key: $MORALIS_API_KEY"

### Base URLs

APIBase URLEVMhttps://deep-index.moralis.io/api/v2.2Solanahttps://solana-gateway.moralis.io

### Authentication

All requests require: X-API-Key: $MORALIS_API_KEY

### Data Type Rules

FieldRealityNOTblock_numberDecimal 12386788Hex 0xf2b5a4timestampISO "2021-05-07T11:08:35.000Z"Unix 1620394115balanceString "1000000000000000000"NumberdecimalsString or numberAlways number

### Block Numbers (always decimal)

block_number: 12386788; // number - use directly
block_number: "12386788"; // string - parseInt(block_number, 10)

### Timestamps (usually ISO strings)

"2021-05-07T11:08:35.000Z"; // → new Date(timestamp).getTime()

### Balances (always strings unless its a property named "formatted" eg. balanceFormatted, BigInt)

balance: "1000000000000000000";
// → (Number(BigInt(balance)) / 1e18).toFixed(6)

### Response Patterns

PatternExample EndpointsDirect array [...]getWalletTokenBalancesPrice, getTokenMetadataWrapped { result: [] }getWalletNFTs, getWalletTransactionsPaginated { page, cursor, result }getWalletHistory, getNFTTransfers

// Safe extraction
const data = Array.isArray(response) ? response : response.result || [];

### Common Field Mappings

token_address → tokenAddress
from_address_label → fromAddressLabel
block_number → blockNumber
receipt_status: "1" → success, "0" → failed
possible_spam: "true"/"false" → boolean check

### Common Pitfalls (Top 5)

Block numbers are decimal, not hex - Use parseInt(x, 10), not parseInt(x, 16)
Timestamps are ISO strings - Use new Date(timestamp).getTime()
Balances are strings - Use BigInt(balance) for math
Response may be wrapped - Check for .result before .map()
Path inconsistencies - Some use /wallets/{address}/..., others /{address}/...

See references/CommonPitfalls.md for complete reference.

### Pagination

Many endpoints use cursor-based pagination:

# First request
curl "...?limit=100" -H "X-API-Key: $KEY"

# Next page
curl "...?limit=100&cursor=<cursor_from_response>" -H "X-API-Key: $KEY"

See references/Pagination.md for details.

### Testing Endpoints

ADDRESS="0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
CHAIN="0x1"

# Wallet Balance
curl "https://deep-index.moralis.io/api/v2.2/${ADDRESS}/balance?chain=${CHAIN}" \\
  -H "X-API-Key: $MORALIS_API_KEY"

# Token Price
curl "https://deep-index.moralis.io/api/v2.2/erc20/0x6B175474E89094C44Da98b954EedeAC495271d0F/price?chain=${CHAIN}" \\
  -H "X-API-Key: $MORALIS_API_KEY"

# Wallet Transactions (note result wrapper)
curl "https://deep-index.moralis.io/api/v2.2/${ADDRESS}?chain=${CHAIN}&limit=5" \\
  -H "X-API-Key: $MORALIS_API_KEY" | jq '.result'

### Quick Troubleshooting

IssueCauseSolution"Property does not exist"Field name mismatchCheck snake_case in rule file"Cannot read undefined"Missing optional fieldUse ?. optional chaining"blockNumber is NaN"Parsing decimal as hexUse radix 10: parseInt(x, 10)"Wrong timestamp"Parsing ISO as numberUse new Date(timestamp).getTime()"404 Not Found"Wrong endpoint pathVerify path in rule file

### Performance & Timeouts

Most endpoints respond quickly under normal conditions. Response times can vary based on wallet activity volume, chain, and query complexity.

Recommended client timeouts:

Simple queries (balance, price, metadata): 10s
Complex queries (wallet history, DeFi positions): 30s

Large wallets with extensive transaction histories may take longer — use pagination with reasonable limit values.

See references/PerformanceAndLatency.md for optimization tips.

### Default Chain Behavior

EVM addresses (0x...): Default to Ethereum (chain=0x1) unless specified.

Solana addresses (base58): Auto-detected and routed to Solana API.

### Supported Chains

EVM (40+ chains): Ethereum (0x1), Polygon (0x89), BSC (0x38), Arbitrum (0xa4b1), Optimism (0xa), Base (0x2105), Avalanche (0xa86a), and more.

Solana: Mainnet, Devnet

See references/SupportedApisAndChains.md for full list.

### Endpoint Catalog

Complete list of all 136 endpoints (102 EVM + 34 Solana) organized by category.

### Wallet

Balances, tokens, NFTs, transaction history, profitability, and net worth data.

EndpointDescriptiongetNativeBalanceGet native balance by walletgetNativeBalancesForAddressesGet native balance for a set of walletsgetWalletActiveChainsGet active chains by wallet addressgetWalletApprovalsGet ERC20 approvals by walletgetWalletHistoryGet the complete decoded transaction history of a walletgetWalletInsightGet wallet insight metricsgetWalletNetWorthGet wallet net worthgetWalletNFTCollectionsGet NFT collections by wallet addressgetWalletNFTsGet NFTs by wallet addressgetWalletNFTTransfersGet NFT Transfers by wallet addressgetWalletProfitabilityGet detailed profit and loss by wallet addressgetWalletProfitabilitySummaryGet profit and loss summary by wallet addressgetWalletStatsGet summary stats by wallet addressgetWalletTokenBalancesPriceGet token balances with prices by wallet addressgetWalletTokenTransfersGet ERC20 token transfers by wallet addressgetWalletTransactionsGet native transactions by walletgetWalletTransactionsVerboseGet decoded transactions by wallet

### Token

Token prices, metadata, pairs, DEX swaps, analytics, security scores, and sniper detection.

EndpointDescriptiongetAggregatedTokenPairStatsGet aggregated token pair statistics by addressgetHistoricalTokenScoreGet historical token score by token addressgetMultipleTokenAnalyticsGet token analytics for a list of token addressesgetPairAddressGet DEX token pair addressgetPairReservesGet DEX token pair reservesgetPairStatsGet stats by pair addressgetSnipersByPairAddressGet snipers by pair addressgetSwapsByPairAddressGet swap transactions by pair addressgetSwapsByTokenAddressGet swap transactions by token addressgetSwapsByWalletAddressGet swap transactions by wallet addressgetTimeSeriesTokenAnalyticsRetrieve timeseries trading stats by token addressesgetTokenAnalyticsGet token analytics by token addressgetTokenBondingStatusGet the token bonding statusgetTokenCategoriesGet ERC20 token categoriesgetTokenHoldersGet a holders summary by token addressgetTokenMetadataGet ERC20 token metadata by contractgetTokenMetadataBySymbolGet ERC20 token metadata by symbolsgetTokenOwnersGet ERC20 token owners by contractgetTokenPairsGet token pairs by addressgetTokenScoreGet token score by token addressgetTokenStatsGet ERC20 token statsgetTokenTransfersGet ERC20 token transfers by contract address

### NFT

NFT metadata, transfers, traits, rarity, floor prices, and trades.

EndpointDescriptiongetContractNFTsGet NFTs by contract addressgetMultipleNFTsGet Metadata for NFTsgetNFTBulkContractMetadataGet metadata for multiple NFT contractsgetNFTByContractTraitsGet NFTs by traitsgetNFTCollectionStatsGet summary stats by NFT collectiongetNFTContractMetadataGet NFT collection metadatagetNFTContractSalePricesGet NFT sale prices by collectiongetNFTContractTransfersGet NFT transfers by contract addressgetNFTFloorPriceByContractGet NFT floor price by contractgetNFTFloorPriceByTokenGet NFT floor price by tokengetNFTHistoricalFloorPriceByContractGet historical NFT floor price by contractgetNFTMetadataGet NFT metadatagetNFTOwnersGet NFT owners by contract addressgetNFTSalePricesGet NFT sale prices by tokengetNFTTokenIdOwnersGet NFT owners by token IDgetNFTTradesGet NFT trades by collectiongetNFTTradesByTokenGet NFT trades by tokengetNFTTradesByWalletGet NFT trades by wallet addressgetNFTTraitsByCollectionGet NFT traits by collectiongetNFTTraitsByCollectionPaginateGet NFT traits by collection paginategetNFTTransfersGet NFT transfers by token IDgetTopNFTCollectionsByMarketCapGet top NFT collections by market cap

### DeFi

DeFi protocol positions, liquidity, and exposure data.

EndpointDescriptiongetDefiPositionsByProtocolGet detailed DeFi positions by protocol for a walletgetDefiPositionsSummaryGet DeFi positions of a walletgetDefiSummaryGet the DeFi summary of a wallet

### Entity

Labeled addresses including exchanges, funds, protocols, and whales.

EndpointDescriptiongetEntityGet Entity Details By IdgetEntityCategoriesGet Entity Categories

### Price

Token and NFT prices, OHLCV candlestick data.

EndpointDescriptiongetMultipleTokenPricesGet Multiple ERC20 token pricesgetPairCandlesticksGet OHLCV by pair addressgetPairPriceGet DEX token pair pricegetTokenPriceGet ERC20 token price

### Blockchain

Blocks, transactions, date-to-block conversion, and contract functions.

EndpointDescriptiongetBlockGet block by hashgetDateToBlockGet block by dategetLatestBlockNumberGet latest block numbergetTransactionGet transaction by hashgetTransactionVerboseGet decoded transaction by hash

### Discovery

Trending tokens, blue chips, market movers, and token discovery.

EndpointDescriptiongetDiscoveryTokenGet token detailsgetTimeSeriesVolumeRetrieve timeseries trading stats by chaingetTimeSeriesVolumeByCategoryRetrieve timeseries trading stats by categorygetTopCryptoCurrenciesByMarketCapGet top crypto currencies by market capgetTopCryptoCurrenciesByTradingVolumeGet top crypto currencies by trading volumegetTopERC20TokensByMarketCapGet top ERC20 tokens by market capgetTopERC20TokensByPriceMoversGet top ERC20 tokens by price movements (winners and losers)getTopGainersTokensGet tokens with top gainersgetTopLosersTokensGet tokens with top losersgetTopProfitableWalletPerTokenGet top traders for a given ERC20 tokengetTrendingTokensGet trending tokensgetVolumeStatsByCategoryGet trading stats by categoriesgetVolumeStatsByChainGet trading stats by chain

### Other

Utility endpoints including API version, endpoint weights, and address resolution.

EndpointDescriptiongetBondingTokensByExchangeGet bonding tokens by exchangegetEntitiesByCategoryGet Entities By CategorygetFilteredTokensReturns a list of tokens that match the specified filters and criteriagetGraduatedTokensByExchangeGet graduated tokens by exchangegetHistoricalTokenHoldersGet timeseries holders datagetNewTokensByExchangeGet new tokens by exchangegetUniqueOwnersByCollectionGet unique wallet addresses owning NFTs from a contract.resolveAddressENS lookup by addressresolveAddressToDomainResolve Address to Unstoppable domainresolveDomainResolve Unstoppable domainresolveENSDomainENS lookup by domainreSyncMetadataResync NFT metadatasearchEntitiesSearch Entities, Organizations or WalletssearchTokensSearch for tokens based on contract address, pair address, token name or token symbol.

### Solana Endpoints

Solana-specific endpoints (24 native + 10 EVM variants that support Solana chain = 34 total).

EndpointDescriptionbalanceGets native balance owned by the given addressgetAggregatedTokenPairStatsGet aggregated token pair statistics by addressgetBondingTokensByExchangeGet bonding tokens by exchangegetCandleSticksGet candlesticks for a pair addressgetGraduatedTokensByExchangeGet graduated tokens by exchangegetHistoricalTokenHoldersGet token holders overtime for a given tokensgetMultipleTokenMetadataGet multiple token metadatagetMultipleTokenPricesGet token pricegetNFTMetadataGet the global metadata for a given contractgetNFTsGets NFTs owned by the given addressgetNewTokensByExchangeGet new tokens by exchangegetPairStatsGet stats for a pair addressgetPortfolioGets the portfolio of the given addressgetSPLGets token balances owned by the given addressgetSnipersByPairAddressGet snipers by pair address.getSwapsByPairAddressGet all swap related transactions (buy, sell, add liquidity & remove liquidity)getSwapsByTokenAddressGet all swap related transactions (buy, sell)getSwapsByWalletAddressGet all swap related transactions (buy, sell) for a specific wallet address.getTokenBondingStatusGet Token Bonding StatusgetTokenHoldersGet the summary of holders for a given token token.getTokenMetadataGet Token metadatagetTokenPairsGet token pairs by addressgetTokenPriceGet token pricegetTopHoldersGet paginated top holders for a given token.getDiscoveryTokenSolana variant: Get token detailsgetHistoricalTokenScoreSolana variant: Get historical token score by token addressgetTimeSeriesVolumeSolana variant: Retrieve timeseries trading stats by chaingetTimeSeriesVolumeByCategorySolana variant: Retrieve timeseries trading stats by categorygetTokenAnalyticsSolana variant: Get token analytics by token addressgetTokenScoreSolana variant: Get token score by token addressgetTopGainersTokensSolana variant: Get tokens with top gainersgetTopLosersTokensSolana variant: Get tokens with top losersgetTrendingTokensSolana variant: Get trending tokensgetVolumeStatsByCategorySolana variant: Get trading stats by categories

### Reference Documentation

references/CommonPitfalls.md - Complete pitfalls reference
references/DataTransformations.md - Type conversion reference
references/FilteredTokens.md - Token discovery metrics, timeframes, filters, and examples
references/PerformanceAndLatency.md - Response time guidance, timeout recommendations, caching
references/ResponsePatterns.md - Pagination patterns
references/SupportedApisAndChains.md - Chains and APIs

### See Also

Endpoint rules: rules/*.md files
Streams API: @moralis-streams-api for real-time events
## Trust
- Source: tencent
- Verification: Indexed source record
- Publisher: novnski
- Version: 1.3.2
## Source health
- Status: unstable
- Item is unstable.
- This item is timing out or returning errors right now. Review the source page and try again later.
- Health scope: item
- Reason: timeout
- Checked at: 2026-05-05T20:18:59.830Z
- Expires at: 2026-05-06T08:18:59.830Z
- Recommended action: Review source status
## Links
- [Detail page](https://openagent3.xyz/skills/moralis-data-api)
- [Send to Agent page](https://openagent3.xyz/skills/moralis-data-api/agent)
- [JSON manifest](https://openagent3.xyz/skills/moralis-data-api/agent.json)
- [Markdown brief](https://openagent3.xyz/skills/moralis-data-api/agent.md)
- [Download page](https://openagent3.xyz/downloads/moralis-data-api)