mcpField

moralis-data-api

github.com/moralisweb3データ・データベース103 回インストール
リポジトリ

moralis-data-api について

moralis-data-api は、EVM と Solana の Moralis データ API を扱う開発者向けスキルです。ウォレット、トークン、NFT、DeFi、ブロックチェーンのデータを対象とし、エンドポイント規則や応答形式の確認を重視します。

主な機能

  1. 01136 エンドポイントの一覧
  2. 02EVM と Solana のデータ案内
  3. 03規則と応答形式の確認
  4. 04ページネーションと型の説明
  5. 05API キー設定とトラブル対応

活用シーン

  1. 01ウォレット残高と履歴の照会
  2. 02トークン価格と分析データの取得
  3. 03NFT メタデータと転送の検索
  4. 04API 応答解析の問題調査

インストール

コマンドをコピーしてターミナルで実行します。

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

インストール後、Claude Code で/moralis-data-apiを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
ApiResponseCodes.md
CommonPitfalls.md
DataTransformations.md
DefiProtocols.md
FilteredTokens.md
NftMarketplaces.md
Pagination.md
PerformanceAndLatency.md
ResponsePatterns.md
SpamDetection.md
SupportedApisAndChains.md
SupportedDexs.md
TokenHoldersFaq.md
TokenSearch.md
WalletHistory.md
rules/
balance__solana.md
getAggregatedTokenPairStats__evm.md
getAggregatedTokenPairStats__solana.md
getBlock.md
getBondingTokensByExchange__evm.md
getBondingTokensByExchange__solana.md
getCandleSticks__solana.md
getContractNFTs.md
getDateToBlock.md
getDefiPositionsByProtocol.md
getDefiPositionsSummary.md
getDefiSummary.md
getDiscoveryToken.md
getDiscoveryToken__solana.md
getEntitiesByCategory.md

詳細

重要:実装前にルールファイルを読む

バグの最大の原因は、コードを書く前にエンドポイントのルールファイルを読まないことです。

すべてのエンドポイントで、次の手順を実行してください。

  1. rules/{EndpointName}.md を読みます
  2. 「Example Response」セクションを探します
  3. JSON の構造をそのままコピーします
  4. フィールド名(snake_case)、データ型、HTTP メソッド、パス、ラッパー構造を確認します

読む順序:

  1. この SKILL.md(基本パターン)
  2. rules/ 内のエンドポイントルールファイル
  3. 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(無料、クレジットカード不要)を案内します。

環境変数の確認

.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

認証

すべてのリクエストに次の指定が必要です:X-API-Key: $MORALIS_API_KEY


クイックリファレンス:よく使われるパターン

データ型のルール
フィールド実際の形式形式ではないもの
block_number10 進数 1238678816 進数 0xf2b5a4
timestampISO "2021-05-07T11:08:35.000Z"Unix 1620394115
balance文字列 "1000000000000000000"数値
decimals文字列または数値常に数値
ブロック番号(常に 10 進数)
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. ブロック番号は 16 進数ではなく 10 進数です - parseInt(x, 16) ではなく、parseInt(x, 10) を使用します
  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進数を16進数として解析基数に10を指定してください:parseInt(x, 10)
"Wrong timestamp"ISO形式を数値として解析new Date(timestamp).getTime() を使用してください
"404 Not Found"エンドポイントパスが誤りルールファイル内のパスを確認してください

パフォーマンスとタイムアウト

通常の状況では、ほとんどのエンドポイントはすばやく応答します。応答時間は、ウォレットのアクティビティ量、チェーン、クエリの複雑さによって異なります。

推奨されるクライアントのタイムアウト:

  • シンプルなクエリ(残高、価格、メタデータ):10s
  • 複雑なクエリ(ウォレット履歴、DeFiポジション):30s

取引履歴が膨大なウォレットでは、さらに時間がかかることがあります。適切な limit 値を設定してページネーションを使用してください。

最適化のヒントについては、references/PerformanceAndLatency.md を参照してください。


デフォルトのチェーン動作

EVM アドレス(0x...): 指定がない場合、デフォルトで Ethereum(chain=0x1)になります。

Solana アドレス(base58): 自動検出され、Solana API にルーティングされます。


対応チェーン

EVM(40以上のチェーン): Ethereum(0x1)、Polygon(0x89)、BSC(0x38)、Arbitrum(0xa4b1)、Optimism(0xa)、Base(0x2105)、Avalanche(0xa86a)など。

Solana: Mainnet、Devnet

一覧については、references/SupportedApisAndChains.md を参照してください。


エンドポイントカタログ

カテゴリ別に整理された全136件のエンドポイント(EVM 102件 + Solana 34件)の一覧です。

ウォレット

残高、トークン、NFT、取引履歴、収益性、純資産データ。

エンドポイント説明
getNativeBalanceウォレットのネイティブ残高を取得
getNativeBalancesForAddresses複数のウォレットのネイティブ残高を取得
getWalletActiveChainsウォレットアドレスが利用しているチェーンを取得
getWalletApprovalsウォレットの ERC20 承認を取得
getWalletHistoryウォレットのデコード済み取引履歴全体を取得
getWalletInsightウォレットの分析指標を取得
getWalletNetWorthウォレットの純資産額を取得
getWalletNFTCollectionsウォレットアドレスが保有する NFT コレクションを取得
getWalletNFTsウォレットアドレスが保有する NFT を取得
getWalletNFTTransfersウォレットアドレスの NFT 送金を取得
getWalletProfitabilityウォレットアドレスごとの詳細な損益を取得
getWalletProfitabilitySummaryウォレットアドレスごとの損益概要を取得
getWalletStatsウォレットアドレスごとの統計概要を取得
getWalletTokenBalancesPriceウォレットアドレスのトークン残高と価格を取得
getWalletTokenTransfersウォレットアドレスの ERC20 トークン送金を取得
getWalletTransactionsウォレットのネイティブ取引を取得
getWalletTransactionsVerboseウォレットのデコード済み取引を取得
トークン

トークン価格、メタデータ、ペア、DEX スワップ、分析、セキュリティスコア、スナイパー検出。

エンドポイント説明
getAggregatedTokenPairStatsアドレスでトークンペアの集計統計を取得
getHistoricalTokenScoreトークンアドレスで過去のトークンスコアを取得
getMultipleTokenAnalyticsトークンアドレスのリストについてトークン分析を取得
getPairAddressDEX トークンペアのアドレスを取得
getPairReservesDEX トークンペアのリザーブを取得
getPairStatsペアアドレスで統計を取得
getSnipersByPairAddressペアアドレスでスナイパーを取得
getSwapsByPairAddressペアアドレスでスワップトランザクションを取得
getSwapsByTokenAddressトークンアドレスでスワップトランザクションを取得
getSwapsByWalletAddressウォレットアドレスでスワップトランザクションを取得
getTimeSeriesTokenAnalyticsトークンアドレスで時系列の取引統計を取得
getTokenAnalyticsトークンアドレスでトークン分析を取得
getTokenBondingStatusトークンのボンディング状況を取得
getTokenCategoriesERC20 トークンのカテゴリーを取得
getTokenHoldersトークンアドレスで保有者の概要を取得
getTokenMetadataコントラクトで ERC20 トークンのメタデータを取得
getTokenMetadataBySymbolシンボルで ERC20 トークンのメタデータを取得
getTokenOwnersコントラクトで ERC20 トークンの所有者を取得
getTokenPairsアドレスでトークンペアを取得
getTokenScoreトークンアドレスでトークンスコアを取得
getTokenStatsERC20 トークンの統計を取得
getTokenTransfersコントラクトアドレスで ERC20 トークンの転送を取得
NFT

NFT のメタデータ、移転、トレイト、希少度、フロア価格、取引。

エンドポイント説明
getContractNFTsコントラクトアドレスで NFT を取得
getMultipleNFTsNFT のメタデータを取得
getNFTBulkContractMetadata複数の NFT コントラクトのメタデータを取得
getNFTByContractTraitsトレイトで NFT を取得
getNFTCollectionStatsNFT コレクションの概要統計を取得
getNFTContractMetadataNFT コレクションのメタデータを取得
getNFTContractSalePricesコレクションごとの NFT 販売価格を取得
getNFTContractTransfersコントラクトアドレスで NFT の移転を取得
getNFTFloorPriceByContractコントラクトごとの NFT フロア価格を取得
getNFTFloorPriceByTokenトークンごとの NFT フロア価格を取得
getNFTHistoricalFloorPriceByContractコントラクトごとの NFT の過去のフロア価格を取得
getNFTMetadataNFT のメタデータを取得
getNFTOwnersコントラクトアドレスで NFT の所有者を取得
getNFTSalePricesトークンごとの NFT 販売価格を取得
getNFTTokenIdOwnersトークン ID で NFT の所有者を取得
getNFTTradesコレクションごとの NFT 取引を取得
getNFTTradesByTokenトークンごとの NFT 取引を取得
getNFTTradesByWalletウォレットアドレスごとの NFT 取引を取得
getNFTTraitsByCollectionコレクションごとの NFT トレイトを取得
getNFTTraitsByCollectionPaginateページネーションでコレクションごとの NFT トレイトを取得
getNFTTransfersトークン ID で NFT の移転を取得
getTopNFTCollectionsByMarketCap時価総額上位の NFT コレクションを取得
DeFi

DeFi プロトコルのポジション、流動性、エクスポージャーのデータ。

エンドポイント説明
getDefiPositionsByProtocolウォレットの DeFi プロトコルごとの詳細なポジションを取得
getDefiPositionsSummaryウォレットの DeFi ポジションを取得
getDefiSummaryウォレットの DeFi 概要を取得
Entity

取引所、ファンド、プロトコル、クジラなどのラベル付きアドレス。

エンドポイント説明
getEntityID でエンティティの詳細を取得
getEntityCategoriesエンティティのカテゴリを取得
Price

トークンと NFT の価格、OHLCV のローソク足データ。

エンドポイント説明
getMultipleTokenPrices複数の ERC20 トークン価格を取得
getPairCandlesticksペアアドレスで OHLCV を取得
getPairPriceDEX トークンペアの価格を取得
getTokenPriceERC20 トークン価格を取得
Blockchain

ブロック、トランザクション、日付からブロックへの変換、コントラクト関数。

エンドポイント説明
getBlockハッシュでブロックを取得
getDateToBlock日付でブロックを取得
getLatestBlockNumber最新のブロック番号を取得
getTransactionハッシュでトランザクションを取得
getTransactionVerboseハッシュでデコード済みトランザクションを取得
ディスカバリー

トレンドのトークン、優良銘柄、市場で値動きの大きい銘柄、トークンのディスカバリー。

Endpoint説明
getDiscoveryTokenトークンの詳細を取得
getTimeSeriesVolumeチェーン別の時系列取引統計を取得
getTimeSeriesVolumeByCategoryカテゴリ別の時系列取引統計を取得
getTopCryptoCurrenciesByMarketCap時価総額上位の暗号資産を取得
getTopCryptoCurrenciesByTradingVolume取引量上位の暗号資産を取得
getTopERC20TokensByMarketCap時価総額上位のERC20トークンを取得
getTopERC20TokensByPriceMovers価格変動が大きいERC20トークンを取得(上昇銘柄と下落銘柄)
getTopGainersTokens上昇率上位のトークンを取得
getTopLosersTokens下落率上位のトークンを取得
getTopProfitableWalletPerToken指定したERC20トークンの上位トレーダーを取得
getTrendingTokensトレンドのトークンを取得
getVolumeStatsByCategoryカテゴリ別の取引統計を取得
getVolumeStatsByChainチェーン別の取引統計を取得
その他

APIバージョン、エンドポイントのウェイト、アドレス解決などのユーティリティエンドポイントです。

Endpoint説明
getBondingTokensByExchange取引所別のボンディングトークンを取得
getEntitiesByCategoryカテゴリ別のエンティティを取得
getFilteredTokens指定したフィルターと条件に一致するトークンの一覧を返します
getGraduatedTokensByExchange取引所別のグラデュエート済みトークンを取得
getHistoricalTokenHolders保有者の時系列データを取得
getNewTokensByExchange取引所別の新しいトークンを取得
getUniqueOwnersByCollectionコントラクトのNFTを所有する一意のウォレットアドレスを取得します。
resolveAddressアドレスからENSを検索
resolveAddressToDomainアドレスをUnstoppableドメインに解決
resolveDomainUnstoppableドメインを解決
resolveENSDomainドメインからENSを検索
reSyncMetadataNFTメタデータを再同期
searchEntitiesエンティティ、組織、またはウォレットを検索
searchTokensコントラクトアドレス、ペアアドレス、トークン名、またはトークンシンボルに基づいてトークンを検索します。
Solana エンドポイント

Solana 固有のエンドポイント(ネイティブ 24 個 + Solana チェーンに対応する EVM バリアント 10 個 = 合計 34 個)。

エンドポイント説明
balance指定したアドレスが保有するネイティブ残高を取得します
getAggregatedTokenPairStatsアドレスでトークンペアの集計統計を取得します
getBondingTokensByExchange取引所別にボンディングトークンを取得します
getCandleSticksペアアドレスのローソク足を取得します
getGraduatedTokensByExchange取引所別に卒業済みトークンを取得します
getHistoricalTokenHolders指定したトークンの保有者数の推移を取得します
getMultipleTokenMetadata複数のトークンメタデータを取得します
getMultipleTokenPricesトークン価格を取得します
getNFTMetadata指定したコントラクトのグローバルメタデータを取得します
getNFTs指定したアドレスが保有する NFT を取得します
getNewTokensByExchange取引所別に新しいトークンを取得します
getPairStatsペアアドレスの統計を取得します
getPortfolio指定したアドレスのポートフォリオを取得します
getSPL指定したアドレスが保有するトークン残高を取得します
getSnipersByPairAddressペアアドレスのスナイパーを取得します。
getSwapsByPairAddressスワップ関連のすべてのトランザクション(購入、売却、流動性の追加と削除)を取得します
getSwapsByTokenAddressスワップ関連のすべてのトランザクション(購入、売却)を取得します
getSwapsByWalletAddress特定のウォレットアドレスのスワップ関連のすべてのトランザクション(購入、売却)を取得します。
getTokenBondingStatusトークンのボンディング状況を取得します
getTokenHolders指定したトークンの保有者の概要を取得します。
getTokenMetadataトークンメタデータを取得します
getTokenPairsアドレスでトークンペアを取得します
getTokenPriceトークン価格を取得します
getTopHolders指定したトークンの上位保有者をページ分割して取得します。
getDiscoveryTokenSolana バリアント: トークンの詳細を取得します
getHistoricalTokenScoreSolana バリアント: トークンアドレスで過去のトークンスコアを取得します
getTimeSeriesVolumeSolana バリアント: チェーン別に時系列の取引統計を取得します
getTimeSeriesVolumeByCategorySolana バリアント: カテゴリ別に時系列の取引統計を取得します
getTokenAnalyticsSolana バリアント: トークンアドレスでトークン分析情報を取得します
getTokenScoreSolana バリアント: トークンアドレスでトークンスコアを取得します
getTopGainersTokensSolana バリアント: 上昇率上位のトークンを取得します
getTopLosersTokensSolana バリアント: 下落率上位のトークンを取得します
getTrendingTokensSolana バリアント: トレンドのトークンを取得します
getVolumeStatsByCategorySolana バリアント: カテゴリ別に取引統計を取得します

リファレンスドキュメント


関連項目

  • エンドポイントのルール:rules/*.md ファイル
  • Streams API:リアルタイムイベントについては @moralis-streams-api を参照してください

コメント