mcpField
M
moralis-data-api

moralis-data-api

github.com/novnskiデータ・データベース140 回インストール7 週間前に更新
リポジトリ

moralis-data-api について

Claude CodeでMoralis Data APIを利用し、オンチェーンデータの照会やAPIエンドポイントの実装を行う開発者向けスキルです。エンドポイントごとの規則、レスポンス構造、認証、ページネーション、データ型の注意点を扱います。

主な機能

  1. 01エンドポイント規則に沿った実装ガイド
  2. 02Moralis APIキーの設定手順
  3. 03EVM、Solana、Universal 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. 設定されていない場合は、空のプレースホルダー MORALIS_API_KEY= を含む .env ファイルの作成を提案します。
  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_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"エンドポイントのパスが誤っているか、削除されているルールカタログと DeprecatedEndpoints.md を確認してください

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

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

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

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

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

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

料金とプランの要件

Data API のエンドポイントには明示的な Compute Unit(CU)コストが設定されており、一部のエンドポイントでは Starter または Pro プランが必要です。料金、クォータ、プレミアムエンドポイント、プランによる利用制限について回答する際は、references/PricingAndPremium.md を参照してください。


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

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

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


対応チェーン

EVM: エンドポイントルールに記載された最新のエイリアスと16進数 ID を使用してください。Fantom と複数のテストネットは削除されています。Moonbeam、Moonriver、Lisk は 2026年9月25日に削除予定です。

Solana: メインネットのみ

全リストについては、references/SupportedApisAndChains.md を参照してください。


エンドポイントカタログ

カテゴリ別に整理された、全116エンドポイント(EVM 79件 + Solana 18件 + Universal / Bitcoin 19件)の完全な一覧です。

ウォレット

残高、トークン、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トークンアドレスのトークン分析データを取得
getTokenCategoriesERC20 トークンのカテゴリーを取得
getTokenHoldersトークンアドレスの保有者サマリーを取得
getTokenMetadataコントラクトの ERC20 トークンメタデータを取得
getTokenOwnersコントラクトの ERC20 トークン所有者を取得
getTokenPairsアドレスのトークンペアを取得
getTokenScoreトークンアドレスのトークンスコアを取得
getTokenTransfersコントラクトアドレスの ERC20 トークン送金を取得
NFT

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

EndpointDescription
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 の送金を取得
resyncNFTRarityNFT のトレイトを再同期
DeFi

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

EndpointDescription
getDefiPositionsByProtocolウォレットの DeFi ポジションの詳細をプロトコル別に取得
getDefiPositionsSummaryウォレットの DeFi ポジションを取得
getDefiSummaryウォレットの DeFi サマリーを取得
Entity

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

EndpointDescription
getEntityID によるエンティティの詳細を取得
getEntityCategoriesエンティティのカテゴリを取得
Price

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

EndpointDescription
getMultipleTokenPrices複数の ERC20 トークン価格を取得
getPairCandlesticksペアアドレス別に OHLCV を取得
getTokenPriceERC20 トークン価格を取得
Blockchain

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

EndpointDescription
getBlockハッシュでブロックを取得
getDateToBlock日付でブロックを取得
getLatestBlockNumber最新のブロック番号を取得
getTransactionハッシュでトランザクションを取得
getTransactionVerboseハッシュでデコード済みトランザクションを取得
検索

トレンドトークンとトップトレーダーを検索します。

エンドポイント説明
getTopProfitableWalletPerToken指定した ERC20 トークンのトップトレーダーを取得
getTrendingTokensV2トレンドトークンを取得
その他

アドレスの解決、エンティティの検索、補助ユーティリティです。

エンドポイント説明
getEntitiesByCategoryカテゴリ別にエンティティを取得
getUniqueOwnersByCollectionコントラクトの NFT を所有する一意のウォレットアドレスを取得します。
resolveAddressアドレスから ENS を検索
resolveAddressToDomainアドレスを Unstoppable ドメインに解決
resolveDomainUnstoppable ドメインを解決
resolveENSDomainドメインから ENS を検索
reSyncMetadataNFT メタデータを再同期
searchEntitiesエンティティ、組織、ウォレットを検索
searchTokensコントラクトアドレス、ペアアドレス、トークン名、トークンシンボルに基づいてトークンを検索します。
Solana エンドポイント

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

エンドポイント説明
balance指定したアドレスが保有するネイティブ残高を取得
getAggregatedTokenPairStatsアドレス別に集計されたトークンペアの統計を取得
getCandleSticksペアアドレスのローソク足を取得
getMultipleTokenMetadata複数のトークンメタデータを取得
getMultipleTokenPricesトークン価格を取得
getNFTMetadata指定したコントラクトのグローバルメタデータを取得
getNFTs指定したアドレスが所有する NFT を取得
getPairStatsペアアドレスの統計を取得
getPortfolio指定したアドレスのポートフォリオを取得
getSPL指定したアドレスが保有するトークン残高を取得
getSwapsByPairAddressスワップ関連のすべてのトランザクション(購入、売却、流動性の追加と削除)を取得
getSwapsByTokenAddressスワップ関連のすべてのトランザクション(購入、売却)を取得
getSwapsByWalletAddress特定のウォレットアドレスのスワップ関連トランザクション(購入、売却)をすべて取得します。
getTokenMetadataトークンメタデータを取得
getTokenPairsアドレス別にトークンペアを取得
getTokenPriceトークン価格を取得
getTokenAnalyticsSolana バリアント: トークンアドレス別にトークン分析データを取得
getTrendingTokensV2Solana バリアント: トレンドトークンを取得
ユニバーサル/Bitcoin エンドポイント

Bitcoin Data API とクロスチェーン Universal API のページで使用する Universal v1 エンドポイントです。

エンドポイント説明
getAddressesByXpubBitcoin の拡張公開鍵(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 を参照

コメント