mcpField
M
moralis-data-api

moralis-data-api

github.com/novnski数据与数据库140 次安装7 周前更新
代码仓库

关于 moralis-data-api

为 Claude Code 使用 Moralis Data API 的开发工作提供操作指南,面向查询链上数据和实现 API 端点的开发者。内容侧重端点规则、响应结构、认证、分页及常见数据类型陷阱。

主要功能

  1. 01按端点规则实现 API 调用
  2. 02Moralis API 密钥配置指引
  3. 03EVM、Solana 与通用 API 说明
  4. 04响应结构与字段类型提示
  5. 05分页、超时和故障排查

适用场景

  1. 01实现钱包余额或交易查询
  2. 02处理代币及 NFT 数据响应
  3. 03为链上数据请求添加分页
  4. 04排查字段、路径或解析错误

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/novnski/onchain-skills --skill moralis-data-api

安装后在 Claude Code 中输入/moralis-data-api确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
ApiResponseCodes.md
CommonPitfalls.md
DataFeatureGuidance.md
DataTransformations.md
DefiProtocols.md
DeprecatedEndpoints.md
NftMarketplaces.md
Pagination.md
PerformanceAndLatency.md
PricingAndPremium.md
ResponsePatterns.md
SpamDetection.md
SupportedApisAndChains.md
SupportedDexs.md
TokenHoldersFaq.md
TokenSearch.md
UniversalAndBitcoin.md
WalletHistory.md
rules/
balance__solana.md
getAddressesByXpub__universal.md
getAggregatedTokenPairStats__solana.md
getBlock.md
getBlockByNumberOrHash__universal.md
getCandleSticks__solana.md
getCandleSticks__universal.md
getContractNFTs.md
getDateToBlock.md
getDefiPositions__universal.md
getDefiPositionsByProtocol.md
getDefiPositionsSummary.md

详细介绍

关键:实施前先阅读规则文件

导致错误的首要原因,是编写代码前没有阅读端点规则文件。

对于每个端点:

  1. 阅读 rules/{EndpointName}.md
  2. 找到“Example Response”部分
  3. 原样复制 JSON 结构
  4. 记下字段名称(snake_case)、数据类型、HTTP 方法、路径和包装结构

阅读顺序:

  1. 本 SKILL.md(核心模式)
  2. rules/ 中的端点规则文件
  3. 当用户询问 CU 成本、高级端点或套餐要求时,阅读 references/PricingAndPremium.md
  4. references/ 中的模式参考(仅用于处理边缘情况)

设置

API 密钥

绝不要要求用户在聊天中粘贴 API 密钥。 而应:

  1. 检查环境中是否已设置 MORALIS_API_KEY(尝试运行 [ -n "$MORALIS_API_KEY" ] && echo "API key is set" || echo "API key is NOT set")。
  2. 如果未设置,提出创建带有空占位值的 .env 文件:MORALIS_API_KEY=
  3. 告诉用户打开 .env 文件并自行粘贴密钥。
  4. 告知用户:没有密钥,你就无法代表他们测试或调用 Moralis API。

如果他们还没有密钥,请引导他们前往 admin.moralis.com/register。Free 套餐已于 2026 年 9 月 1 日取消;现在需要付费套餐。Starter、Pro 和 Business 的月费价格请参阅 套餐定价,并核对实时定价页面。

环境变量发现

.env 文件的位置取决于技能的安装方式:

在项目根目录(即用户运行 Claude Code 的目录)中创建 .env 文件。确保 .env 已列入 .gitignore。

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

基础 URL

API基础 URL
EVMhttps://deep-index.moralis.io/api/v2.2
Solanahttps://solana-gateway.moralis.io
Universal / Bitcoinhttps://api.moralis.com

身份验证

所有请求都需要:X-API-Key: $MORALIS_API_KEY


快速参考:最常见模式

数据类型规则
字段实际格式不是
block_number十进制 12386788十六进制 0xf2b5a4
timestampISO 格式 "2021-05-07T11:08:35.000Z"Unix 时间戳 1620394115
balance字符串 "1000000000000000000"数字
decimals字符串或数字始终是数字
区块号(始终为十进制)
block_number: 12386788; // number - use directly
block_number: "12386788"; // string - parseInt(block_number, 10)
时间戳(通常为 ISO 字符串)
"2021-05-07T11:08:35.000Z"; // → new Date(timestamp).getTime()
余额(除属性名为 "formatted"(例如 balanceFormatted)或 BigInt 外,始终为字符串)
balance: "1000000000000000000";
// → (Number(BigInt(balance)) / 1e18).toFixed(6)
响应模式
模式端点示例
直接数组 [...]getWalletTokenBalancesPrice、getTokenMetadata
包装对象 { result: [] }getWalletNFTs、getWalletTransactions
分页对象 { page, cursor, result }getWalletHistory、getNFTTransfers
// Safe extraction
const data = Array.isArray(response) ? response : response.result || [];
常见字段映射
token_address → tokenAddress
from_address_label → fromAddressLabel
block_number → blockNumber
receipt_status: "1" → success, "0" → failed
possible_spam: "true"/"false" → boolean check

常见问题(前 5 项)

  1. 区块号是十进制,不是十六进制 - 使用 parseInt(x, 10),不要使用 parseInt(x, 16)
  2. 时间戳是 ISO 字符串 - 使用 new Date(timestamp).getTime()
  3. 余额是字符串 - 计算时使用 BigInt(balance)
  4. 响应可能有包装层 - 调用 .map() 前先检查 .result
  5. 路径不一致 - 有些使用 /wallets/{address}/...,另一些使用 /{address}/...

完整参考请参阅 references/CommonPitfalls.md。


分页

许多端点使用基于游标的分页:

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

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

详情请参阅 references/Pagination.md。


测试端点

ADDRESS="YOUR_EVM_ADDRESS"
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/YOUR_EVM_ADDRESS/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'

快速故障排查

问题原因解决方案
"Property does not exist"字段名称不匹配检查规则文件中的 snake_case
"Cannot read undefined"缺少可选字段使用 ?. 可选链
"blockNumber is NaN"将十进制解析为十六进制使用基数 10:parseInt(x, 10)
"Wrong timestamp"将 ISO 格式解析为数字使用 new Date(timestamp).getTime()
"404 Not Found"端点路径错误或已移除查看规则目录和 DeprecatedEndpoints.md

性能与超时

在正常情况下,大多数端点都能快速响应。响应时间可能会因钱包活动量、链和查询复杂度而有所不同。

建议的客户端超时时间:

  • 简单查询(余额、价格、元数据):10s
  • 复杂查询(钱包历史记录、DeFi 持仓):30s

交易历史记录较多的大型钱包可能需要更长时间;请使用分页,并设置合理的 limit 值。

请参阅 references/PerformanceAndLatency.md,了解优化技巧。

定价与方案要求

Data API 端点有明确的计算单元(CU)成本,部分端点需要 Starter 或 Pro 方案。在回答成本、配额、高级端点或方案访问限制相关问题前,请先查阅 references/PricingAndPremium.md。


默认链行为

EVM 地址(0x...): 除非另有说明,默认使用 Ethereum(chain=0x1)。

Solana 地址(base58): 自动检测并路由至 Solana API。


支持的链

EVM: 使用端点规则中的当前别名和十六进制 ID。Fantom 和若干测试网已移除。Moonbeam、Moonriver 和 Lisk 计划于 2026 年 9 月 25 日移除。

Solana: 仅主网

完整列表请参阅 references/SupportedApisAndChains.md。


端点目录

按类别整理的全部 116 个端点(79 个 EVM + 18 个 Solana + 19 个通用 / Bitcoin)列表。

钱包

余额、代币、NFT、交易历史、盈利能力和净资产数据。

端点描述
getNativeBalance获取钱包的原生余额
getNativeBalancesForAddresses获取一组钱包的原生余额
getWalletActiveChains获取钱包地址活跃的链
getWalletApprovals获取钱包的 ERC20 授权
getWalletHistory获取钱包完整的解码后交易历史
getWalletInsight获取钱包洞察指标
getWalletNetWorth获取钱包净资产
getWalletNFTCollections获取钱包地址的 NFT 集合
getWalletNFTs获取钱包地址的 NFT
getWalletNFTTransfers获取钱包地址的 NFT 转账
getWalletProfitability获取钱包地址的详细盈亏数据
getWalletProfitabilitySummary获取钱包地址的盈亏摘要
getWalletStats获取钱包地址的汇总统计数据
getWalletTokenBalances获取钱包的 ERC20 代币余额
getWalletTokenBalancesPrice获取钱包地址的代币余额及价格
getWalletTokenTransfers获取钱包地址的 ERC20 代币转账
getWalletTransactions获取钱包的原生交易
getWalletTransactionsVerbose获取钱包的解码后交易
代币

代币价格、元数据、交易对、DEX 兑换、分析数据、安全评分和持有者信息。

端点描述
getHistoricalTokenScore根据代币地址获取历史代币评分
getMultipleTokenAnalytics获取代币地址列表对应的代币分析数据
getPairStats根据交易对地址获取统计数据
getSwapsByPairAddress根据交易对地址获取兑换交易
getSwapsByTokenAddress根据代币地址获取兑换交易
getSwapsByWalletAddress根据钱包地址获取兑换交易
getTimeSeriesTokenAnalytics根据代币地址获取时间序列交易统计数据
getTokenAnalytics根据代币地址获取代币分析数据
getTokenCategories获取 ERC20 代币类别
getTokenHolders根据代币地址获取持有者摘要
getTokenMetadata根据合约获取 ERC20 代币元数据
getTokenOwners根据合约获取 ERC20 代币所有者
getTokenPairs根据地址获取代币交易对
getTokenScore根据代币地址获取代币评分
getTokenTransfers根据合约地址获取 ERC20 代币转账
NFT

NFT 元数据、转移、特征、稀有度、地板价和交易。

Endpoint描述
getContractNFTs按合约地址获取 NFT
getMultipleNFTs获取 NFT 元数据
getNFTBulkContractMetadata获取多个 NFT 合约的元数据
getNFTByContractTraits按特征获取 NFT
getNFTCollectionStats获取 NFT 收藏集的汇总统计数据
getNFTContractMetadata获取 NFT 收藏集元数据
getNFTContractSalePrices按收藏集获取 NFT 售价
getNFTContractTransfers按合约地址获取 NFT 转移记录
getNFTFloorPriceByContract按合约获取 NFT 地板价
getNFTFloorPriceByToken按代币获取 NFT 地板价
getNFTHistoricalFloorPriceByContract按合约获取 NFT 历史地板价
getNFTMetadata获取 NFT 元数据
getNFTOwners按合约地址获取 NFT 持有者
getNFTSalePrices按代币获取 NFT 售价
getNFTTokenIdOwners按代币 ID 获取 NFT 持有者
getNFTTrades按收藏集获取 NFT 交易
getNFTTradesByToken按代币获取 NFT 交易
getNFTTradesByWallet按钱包地址获取 NFT 交易
getNFTTraitsByCollection按收藏集获取 NFT 特征
getNFTTraitsByCollectionPaginate分页获取收藏集的 NFT 特征
getNFTTransfers按代币 ID 获取 NFT 转移记录
resyncNFTRarity重新同步 NFT 特征
DeFi

DeFi 协议头寸、流动性和敞口数据。

Endpoint描述
getDefiPositionsByProtocol按协议获取钱包的详细 DeFi 头寸
getDefiPositionsSummary获取钱包的 DeFi 头寸
getDefiSummary获取钱包的 DeFi 汇总信息
Entity

带标签的地址,包括交易所、基金、协议和巨鲸。

Endpoint描述
getEntity按 ID 获取实体详情
getEntityCategories获取实体类别
Price

代币和 NFT 价格、OHLCV 蜡烛图数据。

Endpoint描述
getMultipleTokenPrices获取多个 ERC20 代币价格
getPairCandlesticks按交易对地址获取 OHLCV 数据
getTokenPrice获取 ERC20 代币价格
Blockchain

区块、交易、日期到区块的转换以及合约函数。

Endpoint描述
getBlock按哈希获取区块
getDateToBlock按日期获取区块
getLatestBlockNumber获取最新区块编号
getTransaction按哈希获取交易
getTransactionVerbose按哈希获取解码后的交易
发现

热门代币和顶级交易者发现。

Endpoint描述
getTopProfitableWalletPerToken获取指定 ERC20 代币的顶级交易者
getTrendingTokensV2获取热门代币
其他

地址解析、实体搜索和支持性实用工具。

Endpoint描述
getEntitiesByCategory按类别获取实体
getUniqueOwnersByCollection获取持有某合约 NFT 的唯一钱包地址。
resolveAddress按地址查询 ENS
resolveAddressToDomain将地址解析为 Unstoppable 域名
resolveDomain解析 Unstoppable 域名
resolveENSDomain按域名查询 ENS
reSyncMetadata重新同步 NFT 元数据
searchEntities搜索实体、组织或钱包
searchTokens根据合约地址、交易对地址、代币名称或代币符号搜索代币。
Solana 端点

Solana 专用端点(16 个原生端点 + 2 个支持 Solana 链的 EVM 变体 = 共 18 个)。

Endpoint描述
balance获取指定地址持有的原生余额
getAggregatedTokenPairStats按地址获取汇总的代币交易对统计数据
getCandleSticks获取交易对地址的蜡烛图数据
getMultipleTokenMetadata获取多个代币的元数据
getMultipleTokenPrices获取代币价格
getNFTMetadata获取指定合约的全局元数据
getNFTs获取指定地址持有的 NFT
getPairStats获取交易对地址的统计数据
getPortfolio获取指定地址的投资组合
getSPL获取指定地址持有的代币余额
getSwapsByPairAddress获取所有与兑换相关的交易(买入、卖出、添加流动性和移除流动性)
getSwapsByTokenAddress获取所有与兑换相关的交易(买入、卖出)
getSwapsByWalletAddress获取指定钱包地址的所有与兑换相关的交易(买入、卖出)。
getTokenMetadata获取代币元数据
getTokenPairs按地址获取代币交易对
getTokenPrice获取代币价格
getTokenAnalytics**Solana 变体:**按代币地址获取代币分析数据
getTrendingTokensV2**Solana 变体:**获取热门代币
通用 / Bitcoin 端点

Bitcoin Data API 和跨链 Universal API 页面使用的 Universal v1 端点。

端点描述
getAddressesByXpub根据 Bitcoin 扩展公钥(xpub)获取派生地址。
getBlockByNumberOrHash根据链和区块编号或哈希获取区块
getCandleSticks根据交易对地址获取 OHLCV 蜡烛图数据
getDefiPositions获取钱包在多个链上的 DeFi 仓位
getDefiProtocolPositions获取指定协议的 DeFi 仓位
getDefiProtocols获取所有受支持的 DeFi 协议
getDefiSummary获取钱包在多个链上的 DeFi 仓位摘要
getSwapsByPairAddress获取所有与兑换相关的交易(买入、卖出、添加流动性和移除流动性)
getSwapsByTokenAddress获取所有与兑换相关的交易(买入、卖出)
getTokenBalances获取指定钱包地址在多个链上的代币余额。
getTokenPrice根据代币地址获取代币价格
getTokenPriceSparkline获取代币价格迷你走势图数据
getTokenPriceTimeSeries获取代币历史价格时间序列
getTopTradersByToken获取单条链上某代币的顶级交易者。
getTransactionByHash根据链和交易哈希获取交易
getWalletHistory获取钱包在多个链上的交易历史。
getWalletInsight获取钱包在多个链上的洞察指标。
getWalletProfitability获取钱包在多个链上各代币的盈利能力。
getWalletProfitabilitySummary获取钱包在多个链上的整体盈利能力摘要。

参考文档


另请参阅

  • 端点规则:rules/*.md 文件
  • Streams API:@moralis-streams-api,用于实时事件

评论

支持 Markdown