naftiko: 1.0.0-alpha2 info: label: EVM API — NFT description: 'EVM API — NFT. 28 operations. Lead operation: Get Metadata for NFTs. Self-contained Naftiko capability covering one Moralis business surface.' tags: - Moralis - NFT created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: MORALIS_API_KEY: MORALIS_API_KEY capability: consumes: - type: http namespace: evm-nft baseUri: https://deep-index.moralis.io/api/v2.2 description: EVM API — NFT business capability. Self-contained, no shared references. resources: - name: nft-getMultipleNFTs path: /nft/getMultipleNFTs operations: - name: getmultiplenfts method: POST description: Get Metadata for NFTs outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: chain in: query type: string description: The chain to query - name: body in: body type: object description: Request body (JSON). required: true - name: nft-metadata path: /nft/metadata operations: - name: getnftbulkcontractmetadata method: POST description: Get metadata for multiple NFT contracts outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: chain in: query type: string description: The chain to query - name: include_prices in: query type: boolean description: Should NFT last sale prices be included in the result? - name: body in: body type: object description: Request body (JSON). required: true - name: nft-address path: /nft/{address} operations: - name: getcontractnfts method: GET description: Get NFTs by contract address outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: chain in: query type: string description: The chain to query - name: address in: path type: string description: The address of the NFT contract required: true - name: format in: query type: string description: The format of the token ID - name: limit in: query type: integer description: The desired page size of the result. - name: totalRanges in: query type: integer description: The number of subranges to split the results into - name: range in: query type: integer description: The desired subrange to query - name: cursor in: query type: string description: The cursor returned in the previous response (used for getting the next page). - name: normalizeMetadata in: query type: boolean description: Should normalized metadata be returned? - name: media_items in: query type: boolean description: Should preview media data be returned? - name: include_prices in: query type: boolean description: Should NFT last sale prices be included in the result? - name: nft-address-floor-price path: /nft/{address}/floor-price operations: - name: getnftfloorpricebycontract method: GET description: Get NFT floor price by contract outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: chain in: query type: string description: The chain to query - name: address in: path type: string description: The address of the NFT contract required: true - name: nft-address-floor-price-historical path: /nft/{address}/floor-price/historical operations: - name: getnfthistoricalfloorpricebycontract method: GET description: Get historical NFT floor price by contract outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: chain in: query type: string description: The chain to query - name: interval in: query type: string description: The duration to query required: true - name: address in: path type: string description: The address of the NFT contract required: true - name: cursor in: query type: string description: The cursor returned in the previous response (used for getting the next page). - name: nft-address-metadata path: /nft/{address}/metadata operations: - name: getnftcontractmetadata method: GET description: Get NFT collection metadata outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: chain in: query type: string description: The chain to query - name: address in: path type: string description: The address of the NFT contract required: true - name: include_prices in: query type: boolean description: Should NFT last sale prices be included in the result? - name: nft-address-nfts-by-traits path: /nft/{address}/nfts-by-traits operations: - name: getnftbycontracttraits method: POST description: Get NFTs by traits outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: chain in: query type: string description: The chain to query - name: address in: path type: string description: The address of the NFT contract required: true - name: limit in: query type: integer description: The desired page size of the result. - name: cursor in: query type: string description: The cursor returned in the previous response (used for getting the next page). - name: format in: query type: string description: The format of the token ID - name: normalizeMetadata in: query type: boolean description: Should normalized metadata be returned? - name: media_items in: query type: boolean description: Should preview media data be returned? - name: body in: body type: object description: Request body (JSON). required: true - name: nft-address-owners path: /nft/{address}/owners operations: - name: getnftowners method: GET description: Get NFT owners by contract address outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: chain in: query type: string description: The chain to query - name: address in: path type: string description: The address of the NFT contract required: true - name: format in: query type: string description: The format of the token ID - name: limit in: query type: integer description: The desired page size of the result. - name: cursor in: query type: string description: The cursor returned in the previous response (used for getting the next page). - name: normalizeMetadata in: query type: boolean description: Should normalized metadata be returned? - name: media_items in: query type: boolean description: Should preview media data be returned? - name: nft-address-price path: /nft/{address}/price operations: - name: getnftcontractsaleprices method: GET description: Get NFT sale prices by collection outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: chain in: query type: string description: The chain to query - name: days in: query type: integer description: The number of days to look back to find the lowest price - name: address in: path type: string description: The address of the NFT collection required: true - name: nft-address-stats path: /nft/{address}/stats operations: - name: getnftcollectionstats method: GET description: Get summary stats by NFT collection outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: chain in: query type: string description: The chain to query - name: address in: path type: string description: The address of the NFT collection required: true - name: nft-address-sync path: /nft/{address}/sync operations: - name: syncnftcontract method: PUT description: Resync NFT Contract outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: chain in: query type: string description: The chain to query - name: address in: path type: string description: The address of the NFT contract required: true - name: nft-address-trades path: /nft/{address}/trades operations: - name: getnfttrades method: GET description: Get NFT trades by collection outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: chain in: query type: string description: The chain to query - name: from_block in: query type: integer description: The minimum block number from which to get the transfers - name: to_block in: query type: string description: The block number to get the trades from - name: from_date in: query type: string description: The start date from which to get the transfers (format in seconds or datestring accepted by momentjs) - name: to_date in: query type: string description: The end date from which to get the transfers (format in seconds or datestring accepted by momentjs) - name: marketplace in: query type: string description: Marketplace from which to get the trades. See [supported Marketplaces](https://docs.moralis.io/web3-data-api/evm/nft-marketplaces). - name: cursor in: query type: string description: The cursor returned in the previous response (used for getting the next page). - name: limit in: query type: integer description: The desired page size of the result. - name: nft_metadata in: query type: boolean description: Include the NFT Metadata of the NFT Token - name: address in: path type: string description: The address of the NFT contract required: true - name: nft-address-traits path: /nft/{address}/traits operations: - name: getnfttraitsbycollection method: GET description: Get NFT traits by collection outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: chain in: query type: string description: The chain to query - name: address in: path type: string description: The address of the NFT contract required: true - name: nft-address-traits-paginate path: /nft/{address}/traits/paginate operations: - name: getnfttraitsbycollectionpaginate method: GET description: Get NFT traits by collection paginate outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: chain in: query type: string description: The chain to query - name: address in: path type: string description: The address of the NFT contract required: true - name: cursor in: query type: string description: The cursor returned in the previous response (used for getting the next page). - name: limit in: query type: integer description: The desired page size of the result. - name: order in: query type: string description: The order of the result, in ascending (ASC) or descending (DESC) - name: nft-address-traits-resync path: /nft/{address}/traits/resync operations: - name: resyncnftrarity method: GET description: Resync NFT Trait outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: chain in: query type: string description: The chain to query - name: address in: path type: string description: The address of the NFT contract required: true - name: nft-address-transfers path: /nft/{address}/transfers operations: - name: getnftcontracttransfers method: GET description: Get NFT transfers by contract address outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: chain in: query type: string description: The chain to query - name: from_block in: query type: integer description: The minimum block number from where to get the transfers - name: to_block in: query type: integer description: The maximum block number from where to get the transfers. - name: from_date in: query type: string description: The date from where to get the transfers (format in seconds or datestring accepted by momentjs) - name: to_date in: query type: string description: Get transfers up until this date (format in seconds or datestring accepted by momentjs) - name: address in: path type: string description: The address of the NFT contract required: true - name: format in: query type: string description: The format of the token ID - name: include_prices in: query type: boolean description: Should NFT last sale prices be included in the result? - name: limit in: query type: integer description: The desired page size of the result. - name: order in: query type: string description: The order of the result, in ascending (ASC) or descending (DESC) - name: cursor in: query type: string description: The cursor returned in the previous response (used for getting the next page). - name: nft-address-unique-owners path: /nft/{address}/unique-owners operations: - name: getuniqueownersbycollection method: GET description: Get unique wallet addresses owning NFTs from a contract. outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: chain in: query type: string description: The chain to query - name: address in: path type: string description: The address of the NFT contract required: true - name: limit in: query type: integer description: The desired page size of the result. - name: cursor in: query type: string description: The cursor returned in the previous response (used for getting the next page). - name: nft-address-token_id path: /nft/{address}/{token_id} operations: - name: getnftmetadata method: GET description: Get NFT metadata outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: chain in: query type: string description: The chain to query - name: address in: path type: string description: The address of the NFT contract required: true - name: token_id in: path type: string description: The ID of the token required: true - name: format in: query type: string description: The format of the token ID - name: normalizeMetadata in: query type: boolean description: Should normalized metadata be returned? - name: media_items in: query type: boolean description: Should preview media data be returned? - name: include_prices in: query type: boolean description: Should NFT last sale prices be included in the result? - name: nft-address-token_id-floor-price path: /nft/{address}/{token_id}/floor-price operations: - name: getnftfloorpricebytoken method: GET description: Get NFT floor price by token outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: chain in: query type: string description: The chain to query - name: address in: path type: string description: The address of the NFT contract required: true - name: token_id in: path type: string description: The token ID of the NFT required: true - name: nft-address-token_id-metadata-resync path: /nft/{address}/{token_id}/metadata/resync operations: - name: resyncmetadata method: GET description: Resync NFT metadata outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: chain in: query type: string description: The chain to query - name: address in: path type: string description: The address of the NFT contract required: true - name: token_id in: path type: string description: The ID of the token required: true - name: flag in: query type: string description: The type of resync to operate - name: mode in: query type: string description: To define the behaviour of the endpoint - name: nft-address-token_id-owners path: /nft/{address}/{token_id}/owners operations: - name: getnfttokenidowners method: GET description: Get NFT owners by token ID outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: chain in: query type: string description: The chain to query - name: address in: path type: string description: The address of the NFT contract required: true - name: token_id in: path type: string description: The ID of the token required: true - name: format in: query type: string description: The format of the token ID - name: limit in: query type: integer description: The desired page size of the result. - name: cursor in: query type: string description: The cursor returned in the previous response (used for getting the next page). - name: normalizeMetadata in: query type: boolean description: Should normalized metadata be returned? - name: media_items in: query type: boolean description: Should preview media data be returned? - name: nft-address-token_id-price path: /nft/{address}/{token_id}/price operations: - name: getnftsaleprices method: GET description: Get NFT sale prices by token outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: chain in: query type: string description: The chain to query - name: days in: query type: integer description: The number of days to look back to find the lowest price - name: address in: path type: string description: The address of the NFT collection required: true - name: token_id in: path type: string description: The token id of the NFT collection required: true - name: nft-address-token_id-trades path: /nft/{address}/{token_id}/trades operations: - name: getnfttradesbytoken method: GET description: Get NFT trades by token outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: chain in: query type: string description: The chain to query - name: from_block in: query type: integer description: The minimum block number from which to get the transfers - name: to_block in: query type: string description: The block number to get the trades from - name: from_date in: query type: string description: The start date from which to get the transfers (format in seconds or datestring accepted by momentjs) - name: to_date in: query type: string description: The end date from which to get the transfers (format in seconds or datestring accepted by momentjs) - name: cursor in: query type: string description: The cursor returned in the previous response (used for getting the next page). - name: limit in: query type: integer description: The desired page size of the result. - name: nft_metadata in: query type: boolean description: Include the NFT Metadata of the NFT Token - name: address in: path type: string description: The address of the NFT contract required: true - name: token_id in: path type: string description: The token ID of the NFT contract required: true - name: nft-address-token_id-transfers path: /nft/{address}/{token_id}/transfers operations: - name: getnfttransfers method: GET description: Get NFT transfers by token ID outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: chain in: query type: string description: The chain to query - name: address in: path type: string description: The address of the NFT contract required: true - name: token_id in: path type: string description: The ID of the token required: true - name: format in: query type: string description: The format of the token ID - name: include_prices in: query type: boolean description: Should NFT last sale prices be included in the result? - name: limit in: query type: integer description: The desired page size of the result. - name: order in: query type: string description: The order of the result, in ascending (ASC) or descending (DESC) - name: cursor in: query type: string description: The cursor returned in the previous response (used for getting the next page). - name: wallets-address-nfts-trades path: /wallets/{address}/nfts/trades operations: - name: getnfttradesbywallet method: GET description: Get NFT trades by wallet address outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: chain in: query type: string description: The chain to query - name: from_block in: query type: integer description: The minimum block number from which to get the transfers - name: to_block in: query type: string description: The block number to get the trades from - name: from_date in: query type: string description: The start date from which to get the transfers (format in seconds or datestring accepted by momentjs) - name: to_date in: query type: string description: The end date from which to get the transfers (format in seconds or datestring accepted by momentjs) - name: cursor in: query type: string description: The cursor returned in the previous response (used for getting the next page). - name: limit in: query type: integer description: The desired page size of the result. - name: nft_metadata in: query type: boolean description: Include the NFT Metadata of the NFT Token - name: address in: path type: string description: The owner wallet address required: true - name: address-nft path: /{address}/nft operations: - name: getwalletnfts method: GET description: Get NFTs by wallet address outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: chain in: query type: string description: The chain to query - name: address in: path type: string description: The address of the wallet required: true - name: format in: query type: string description: The format of the token ID - name: limit in: query type: integer description: The desired page size of the result. - name: exclude_spam in: query type: boolean description: Should spam NFTs be excluded from the result? - name: token_addresses in: query type: array description: The addresses to get balances for (optional) - name: cursor in: query type: string description: The cursor returned in the previous response (used for getting the next page). - name: normalizeMetadata in: query type: boolean description: Should normalized metadata be returned? - name: media_items in: query type: boolean description: Should preview media data be returned? - name: include_prices in: query type: boolean description: Should NFT last sale prices be included in the result? - name: address-nft-collections path: /{address}/nft/collections operations: - name: getwalletnftcollections method: GET description: Get NFT collections by wallet address outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: chain in: query type: string description: The chain to query - name: address in: path type: string description: The wallet address of the owner of NFTs in the collections required: true - name: include_prices in: query type: boolean description: Should NFT last sale prices be included in the result? - name: limit in: query type: integer description: The desired page size of the result. - name: exclude_spam in: query type: boolean description: Should spam NFTs be excluded from the result? - name: cursor in: query type: string description: The cursor returned in the previous response (used for getting the next page). - name: token_counts in: query type: boolean description: Should token counts per collection be included in the response? - name: address-nft-transfers path: /{address}/nft/transfers operations: - name: getwalletnfttransfers method: GET description: Get NFT Transfers by wallet address outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: chain in: query type: string description: The chain to query - name: address in: path type: string description: The wallet address of the sender or recipient of the transfers required: true - name: contract_addresses in: query type: array description: List of contract addresses of transfers - name: format in: query type: string description: The format of the token ID - name: from_block in: query type: integer description: The minimum block number from which to get the transfers - name: to_block in: query type: string description: To get the reserves at this block number - name: from_date in: query type: string description: The date from where to get the transfers (format in seconds or datestring accepted by momentjs) - name: to_date in: query type: string description: Get transfers up until this date (format in seconds or datestring accepted by momentjs) - name: include_prices in: query type: boolean description: Should NFT last sale prices be included in the result? - name: limit in: query type: integer description: The desired page size of the result. - name: order in: query type: string description: The order of the result, in ascending (ASC) or descending (DESC) - name: cursor in: query type: string description: The cursor returned in the previous response (used for getting the next page). authentication: type: apikey key: X-API-Key value: '{{env.MORALIS_API_KEY}}' placement: header exposes: - type: rest namespace: evm-nft-rest port: 8080 description: REST adapter for EVM API — NFT. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/nft/getmultiplenfts name: nft-getmultiplenfts description: REST surface for nft-getMultipleNFTs. operations: - method: POST name: getmultiplenfts description: Get Metadata for NFTs call: evm-nft.getmultiplenfts with: chain: rest.chain body: rest.body outputParameters: - type: object mapping: $. - path: /v1/nft/metadata name: nft-metadata description: REST surface for nft-metadata. operations: - method: POST name: getnftbulkcontractmetadata description: Get metadata for multiple NFT contracts call: evm-nft.getnftbulkcontractmetadata with: chain: rest.chain include_prices: rest.include_prices body: rest.body outputParameters: - type: object mapping: $. - path: /v1/nft/{address} name: nft-address description: REST surface for nft-address. operations: - method: GET name: getcontractnfts description: Get NFTs by contract address call: evm-nft.getcontractnfts with: chain: rest.chain address: rest.address format: rest.format limit: rest.limit totalRanges: rest.totalRanges range: rest.range cursor: rest.cursor normalizeMetadata: rest.normalizeMetadata media_items: rest.media_items include_prices: rest.include_prices outputParameters: - type: object mapping: $. - path: /v1/nft/{address}/floor-price name: nft-address-floor-price description: REST surface for nft-address-floor-price. operations: - method: GET name: getnftfloorpricebycontract description: Get NFT floor price by contract call: evm-nft.getnftfloorpricebycontract with: chain: rest.chain address: rest.address outputParameters: - type: object mapping: $. - path: /v1/nft/{address}/floor-price/historical name: nft-address-floor-price-historical description: REST surface for nft-address-floor-price-historical. operations: - method: GET name: getnfthistoricalfloorpricebycontract description: Get historical NFT floor price by contract call: evm-nft.getnfthistoricalfloorpricebycontract with: chain: rest.chain interval: rest.interval address: rest.address cursor: rest.cursor outputParameters: - type: object mapping: $. - path: /v1/nft/{address}/metadata name: nft-address-metadata description: REST surface for nft-address-metadata. operations: - method: GET name: getnftcontractmetadata description: Get NFT collection metadata call: evm-nft.getnftcontractmetadata with: chain: rest.chain address: rest.address include_prices: rest.include_prices outputParameters: - type: object mapping: $. - path: /v1/nft/{address}/nfts-by-traits name: nft-address-nfts-by-traits description: REST surface for nft-address-nfts-by-traits. operations: - method: POST name: getnftbycontracttraits description: Get NFTs by traits call: evm-nft.getnftbycontracttraits with: chain: rest.chain address: rest.address limit: rest.limit cursor: rest.cursor format: rest.format normalizeMetadata: rest.normalizeMetadata media_items: rest.media_items body: rest.body outputParameters: - type: object mapping: $. - path: /v1/nft/{address}/owners name: nft-address-owners description: REST surface for nft-address-owners. operations: - method: GET name: getnftowners description: Get NFT owners by contract address call: evm-nft.getnftowners with: chain: rest.chain address: rest.address format: rest.format limit: rest.limit cursor: rest.cursor normalizeMetadata: rest.normalizeMetadata media_items: rest.media_items outputParameters: - type: object mapping: $. - path: /v1/nft/{address}/price name: nft-address-price description: REST surface for nft-address-price. operations: - method: GET name: getnftcontractsaleprices description: Get NFT sale prices by collection call: evm-nft.getnftcontractsaleprices with: chain: rest.chain days: rest.days address: rest.address outputParameters: - type: object mapping: $. - path: /v1/nft/{address}/stats name: nft-address-stats description: REST surface for nft-address-stats. operations: - method: GET name: getnftcollectionstats description: Get summary stats by NFT collection call: evm-nft.getnftcollectionstats with: chain: rest.chain address: rest.address outputParameters: - type: object mapping: $. - path: /v1/nft/{address}/sync name: nft-address-sync description: REST surface for nft-address-sync. operations: - method: PUT name: syncnftcontract description: Resync NFT Contract call: evm-nft.syncnftcontract with: chain: rest.chain address: rest.address outputParameters: - type: object mapping: $. - path: /v1/nft/{address}/trades name: nft-address-trades description: REST surface for nft-address-trades. operations: - method: GET name: getnfttrades description: Get NFT trades by collection call: evm-nft.getnfttrades with: chain: rest.chain from_block: rest.from_block to_block: rest.to_block from_date: rest.from_date to_date: rest.to_date marketplace: rest.marketplace cursor: rest.cursor limit: rest.limit nft_metadata: rest.nft_metadata address: rest.address outputParameters: - type: object mapping: $. - path: /v1/nft/{address}/traits name: nft-address-traits description: REST surface for nft-address-traits. operations: - method: GET name: getnfttraitsbycollection description: Get NFT traits by collection call: evm-nft.getnfttraitsbycollection with: chain: rest.chain address: rest.address outputParameters: - type: object mapping: $. - path: /v1/nft/{address}/traits/paginate name: nft-address-traits-paginate description: REST surface for nft-address-traits-paginate. operations: - method: GET name: getnfttraitsbycollectionpaginate description: Get NFT traits by collection paginate call: evm-nft.getnfttraitsbycollectionpaginate with: chain: rest.chain address: rest.address cursor: rest.cursor limit: rest.limit order: rest.order outputParameters: - type: object mapping: $. - path: /v1/nft/{address}/traits/resync name: nft-address-traits-resync description: REST surface for nft-address-traits-resync. operations: - method: GET name: resyncnftrarity description: Resync NFT Trait call: evm-nft.resyncnftrarity with: chain: rest.chain address: rest.address outputParameters: - type: object mapping: $. - path: /v1/nft/{address}/transfers name: nft-address-transfers description: REST surface for nft-address-transfers. operations: - method: GET name: getnftcontracttransfers description: Get NFT transfers by contract address call: evm-nft.getnftcontracttransfers with: chain: rest.chain from_block: rest.from_block to_block: rest.to_block from_date: rest.from_date to_date: rest.to_date address: rest.address format: rest.format include_prices: rest.include_prices limit: rest.limit order: rest.order cursor: rest.cursor outputParameters: - type: object mapping: $. - path: /v1/nft/{address}/unique-owners name: nft-address-unique-owners description: REST surface for nft-address-unique-owners. operations: - method: GET name: getuniqueownersbycollection description: Get unique wallet addresses owning NFTs from a contract. call: evm-nft.getuniqueownersbycollection with: chain: rest.chain address: rest.address limit: rest.limit cursor: rest.cursor outputParameters: - type: object mapping: $. - path: /v1/nft/{address}/{token-id} name: nft-address-token-id description: REST surface for nft-address-token_id. operations: - method: GET name: getnftmetadata description: Get NFT metadata call: evm-nft.getnftmetadata with: chain: rest.chain address: rest.address token_id: rest.token_id format: rest.format normalizeMetadata: rest.normalizeMetadata media_items: rest.media_items include_prices: rest.include_prices outputParameters: - type: object mapping: $. - path: /v1/nft/{address}/{token-id}/floor-price name: nft-address-token-id-floor-price description: REST surface for nft-address-token_id-floor-price. operations: - method: GET name: getnftfloorpricebytoken description: Get NFT floor price by token call: evm-nft.getnftfloorpricebytoken with: chain: rest.chain address: rest.address token_id: rest.token_id outputParameters: - type: object mapping: $. - path: /v1/nft/{address}/{token-id}/metadata/resync name: nft-address-token-id-metadata-resync description: REST surface for nft-address-token_id-metadata-resync. operations: - method: GET name: resyncmetadata description: Resync NFT metadata call: evm-nft.resyncmetadata with: chain: rest.chain address: rest.address token_id: rest.token_id flag: rest.flag mode: rest.mode outputParameters: - type: object mapping: $. - path: /v1/nft/{address}/{token-id}/owners name: nft-address-token-id-owners description: REST surface for nft-address-token_id-owners. operations: - method: GET name: getnfttokenidowners description: Get NFT owners by token ID call: evm-nft.getnfttokenidowners with: chain: rest.chain address: rest.address token_id: rest.token_id format: rest.format limit: rest.limit cursor: rest.cursor normalizeMetadata: rest.normalizeMetadata media_items: rest.media_items outputParameters: - type: object mapping: $. - path: /v1/nft/{address}/{token-id}/price name: nft-address-token-id-price description: REST surface for nft-address-token_id-price. operations: - method: GET name: getnftsaleprices description: Get NFT sale prices by token call: evm-nft.getnftsaleprices with: chain: rest.chain days: rest.days address: rest.address token_id: rest.token_id outputParameters: - type: object mapping: $. - path: /v1/nft/{address}/{token-id}/trades name: nft-address-token-id-trades description: REST surface for nft-address-token_id-trades. operations: - method: GET name: getnfttradesbytoken description: Get NFT trades by token call: evm-nft.getnfttradesbytoken with: chain: rest.chain from_block: rest.from_block to_block: rest.to_block from_date: rest.from_date to_date: rest.to_date cursor: rest.cursor limit: rest.limit nft_metadata: rest.nft_metadata address: rest.address token_id: rest.token_id outputParameters: - type: object mapping: $. - path: /v1/nft/{address}/{token-id}/transfers name: nft-address-token-id-transfers description: REST surface for nft-address-token_id-transfers. operations: - method: GET name: getnfttransfers description: Get NFT transfers by token ID call: evm-nft.getnfttransfers with: chain: rest.chain address: rest.address token_id: rest.token_id format: rest.format include_prices: rest.include_prices limit: rest.limit order: rest.order cursor: rest.cursor outputParameters: - type: object mapping: $. - path: /v1/wallets/{address}/nfts/trades name: wallets-address-nfts-trades description: REST surface for wallets-address-nfts-trades. operations: - method: GET name: getnfttradesbywallet description: Get NFT trades by wallet address call: evm-nft.getnfttradesbywallet with: chain: rest.chain from_block: rest.from_block to_block: rest.to_block from_date: rest.from_date to_date: rest.to_date cursor: rest.cursor limit: rest.limit nft_metadata: rest.nft_metadata address: rest.address outputParameters: - type: object mapping: $. - path: /v1/{address}/nft name: address-nft description: REST surface for address-nft. operations: - method: GET name: getwalletnfts description: Get NFTs by wallet address call: evm-nft.getwalletnfts with: chain: rest.chain address: rest.address format: rest.format limit: rest.limit exclude_spam: rest.exclude_spam token_addresses: rest.token_addresses cursor: rest.cursor normalizeMetadata: rest.normalizeMetadata media_items: rest.media_items include_prices: rest.include_prices outputParameters: - type: object mapping: $. - path: /v1/{address}/nft/collections name: address-nft-collections description: REST surface for address-nft-collections. operations: - method: GET name: getwalletnftcollections description: Get NFT collections by wallet address call: evm-nft.getwalletnftcollections with: chain: rest.chain address: rest.address include_prices: rest.include_prices limit: rest.limit exclude_spam: rest.exclude_spam cursor: rest.cursor token_counts: rest.token_counts outputParameters: - type: object mapping: $. - path: /v1/{address}/nft/transfers name: address-nft-transfers description: REST surface for address-nft-transfers. operations: - method: GET name: getwalletnfttransfers description: Get NFT Transfers by wallet address call: evm-nft.getwalletnfttransfers with: chain: rest.chain address: rest.address contract_addresses: rest.contract_addresses format: rest.format from_block: rest.from_block to_block: rest.to_block from_date: rest.from_date to_date: rest.to_date include_prices: rest.include_prices limit: rest.limit order: rest.order cursor: rest.cursor outputParameters: - type: object mapping: $. - type: mcp namespace: evm-nft-mcp port: 9090 transport: http description: MCP adapter for EVM API — NFT. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: get-metadata-nfts description: Get Metadata for NFTs hints: readOnly: true destructive: false idempotent: false call: evm-nft.getmultiplenfts with: chain: tools.chain body: tools.body outputParameters: - type: object mapping: $. - name: get-metadata-multiple-nft-contracts description: Get metadata for multiple NFT contracts hints: readOnly: true destructive: false idempotent: false call: evm-nft.getnftbulkcontractmetadata with: chain: tools.chain include_prices: tools.include_prices body: tools.body outputParameters: - type: object mapping: $. - name: get-nfts-contract-address description: Get NFTs by contract address hints: readOnly: true destructive: false idempotent: true call: evm-nft.getcontractnfts with: chain: tools.chain address: tools.address format: tools.format limit: tools.limit totalRanges: tools.totalRanges range: tools.range cursor: tools.cursor normalizeMetadata: tools.normalizeMetadata media_items: tools.media_items include_prices: tools.include_prices outputParameters: - type: object mapping: $. - name: get-nft-floor-price-contract description: Get NFT floor price by contract hints: readOnly: true destructive: false idempotent: true call: evm-nft.getnftfloorpricebycontract with: chain: tools.chain address: tools.address outputParameters: - type: object mapping: $. - name: get-historical-nft-floor-price description: Get historical NFT floor price by contract hints: readOnly: true destructive: false idempotent: true call: evm-nft.getnfthistoricalfloorpricebycontract with: chain: tools.chain interval: tools.interval address: tools.address cursor: tools.cursor outputParameters: - type: object mapping: $. - name: get-nft-collection-metadata description: Get NFT collection metadata hints: readOnly: true destructive: false idempotent: true call: evm-nft.getnftcontractmetadata with: chain: tools.chain address: tools.address include_prices: tools.include_prices outputParameters: - type: object mapping: $. - name: get-nfts-traits description: Get NFTs by traits hints: readOnly: true destructive: false idempotent: false call: evm-nft.getnftbycontracttraits with: chain: tools.chain address: tools.address limit: tools.limit cursor: tools.cursor format: tools.format normalizeMetadata: tools.normalizeMetadata media_items: tools.media_items body: tools.body outputParameters: - type: object mapping: $. - name: get-nft-owners-contract-address description: Get NFT owners by contract address hints: readOnly: true destructive: false idempotent: true call: evm-nft.getnftowners with: chain: tools.chain address: tools.address format: tools.format limit: tools.limit cursor: tools.cursor normalizeMetadata: tools.normalizeMetadata media_items: tools.media_items outputParameters: - type: object mapping: $. - name: get-nft-sale-prices-collection description: Get NFT sale prices by collection hints: readOnly: true destructive: false idempotent: true call: evm-nft.getnftcontractsaleprices with: chain: tools.chain days: tools.days address: tools.address outputParameters: - type: object mapping: $. - name: get-summary-stats-nft-collection description: Get summary stats by NFT collection hints: readOnly: true destructive: false idempotent: true call: evm-nft.getnftcollectionstats with: chain: tools.chain address: tools.address outputParameters: - type: object mapping: $. - name: resync-nft-contract description: Resync NFT Contract hints: readOnly: false destructive: false idempotent: true call: evm-nft.syncnftcontract with: chain: tools.chain address: tools.address outputParameters: - type: object mapping: $. - name: get-nft-trades-collection description: Get NFT trades by collection hints: readOnly: true destructive: false idempotent: true call: evm-nft.getnfttrades with: chain: tools.chain from_block: tools.from_block to_block: tools.to_block from_date: tools.from_date to_date: tools.to_date marketplace: tools.marketplace cursor: tools.cursor limit: tools.limit nft_metadata: tools.nft_metadata address: tools.address outputParameters: - type: object mapping: $. - name: get-nft-traits-collection description: Get NFT traits by collection hints: readOnly: true destructive: false idempotent: true call: evm-nft.getnfttraitsbycollection with: chain: tools.chain address: tools.address outputParameters: - type: object mapping: $. - name: get-nft-traits-collection-paginate description: Get NFT traits by collection paginate hints: readOnly: true destructive: false idempotent: true call: evm-nft.getnfttraitsbycollectionpaginate with: chain: tools.chain address: tools.address cursor: tools.cursor limit: tools.limit order: tools.order outputParameters: - type: object mapping: $. - name: resync-nft-trait description: Resync NFT Trait hints: readOnly: true destructive: false idempotent: true call: evm-nft.resyncnftrarity with: chain: tools.chain address: tools.address outputParameters: - type: object mapping: $. - name: get-nft-transfers-contract-address description: Get NFT transfers by contract address hints: readOnly: true destructive: false idempotent: true call: evm-nft.getnftcontracttransfers with: chain: tools.chain from_block: tools.from_block to_block: tools.to_block from_date: tools.from_date to_date: tools.to_date address: tools.address format: tools.format include_prices: tools.include_prices limit: tools.limit order: tools.order cursor: tools.cursor outputParameters: - type: object mapping: $. - name: get-unique-wallet-addresses-owning description: Get unique wallet addresses owning NFTs from a contract. hints: readOnly: true destructive: false idempotent: true call: evm-nft.getuniqueownersbycollection with: chain: tools.chain address: tools.address limit: tools.limit cursor: tools.cursor outputParameters: - type: object mapping: $. - name: get-nft-metadata description: Get NFT metadata hints: readOnly: true destructive: false idempotent: true call: evm-nft.getnftmetadata with: chain: tools.chain address: tools.address token_id: tools.token_id format: tools.format normalizeMetadata: tools.normalizeMetadata media_items: tools.media_items include_prices: tools.include_prices outputParameters: - type: object mapping: $. - name: get-nft-floor-price-token description: Get NFT floor price by token hints: readOnly: true destructive: false idempotent: true call: evm-nft.getnftfloorpricebytoken with: chain: tools.chain address: tools.address token_id: tools.token_id outputParameters: - type: object mapping: $. - name: resync-nft-metadata description: Resync NFT metadata hints: readOnly: true destructive: false idempotent: true call: evm-nft.resyncmetadata with: chain: tools.chain address: tools.address token_id: tools.token_id flag: tools.flag mode: tools.mode outputParameters: - type: object mapping: $. - name: get-nft-owners-token-id description: Get NFT owners by token ID hints: readOnly: true destructive: false idempotent: true call: evm-nft.getnfttokenidowners with: chain: tools.chain address: tools.address token_id: tools.token_id format: tools.format limit: tools.limit cursor: tools.cursor normalizeMetadata: tools.normalizeMetadata media_items: tools.media_items outputParameters: - type: object mapping: $. - name: get-nft-sale-prices-token description: Get NFT sale prices by token hints: readOnly: true destructive: false idempotent: true call: evm-nft.getnftsaleprices with: chain: tools.chain days: tools.days address: tools.address token_id: tools.token_id outputParameters: - type: object mapping: $. - name: get-nft-trades-token description: Get NFT trades by token hints: readOnly: true destructive: false idempotent: true call: evm-nft.getnfttradesbytoken with: chain: tools.chain from_block: tools.from_block to_block: tools.to_block from_date: tools.from_date to_date: tools.to_date cursor: tools.cursor limit: tools.limit nft_metadata: tools.nft_metadata address: tools.address token_id: tools.token_id outputParameters: - type: object mapping: $. - name: get-nft-transfers-token-id description: Get NFT transfers by token ID hints: readOnly: true destructive: false idempotent: true call: evm-nft.getnfttransfers with: chain: tools.chain address: tools.address token_id: tools.token_id format: tools.format include_prices: tools.include_prices limit: tools.limit order: tools.order cursor: tools.cursor outputParameters: - type: object mapping: $. - name: get-nft-trades-wallet-address description: Get NFT trades by wallet address hints: readOnly: true destructive: false idempotent: true call: evm-nft.getnfttradesbywallet with: chain: tools.chain from_block: tools.from_block to_block: tools.to_block from_date: tools.from_date to_date: tools.to_date cursor: tools.cursor limit: tools.limit nft_metadata: tools.nft_metadata address: tools.address outputParameters: - type: object mapping: $. - name: get-nfts-wallet-address description: Get NFTs by wallet address hints: readOnly: true destructive: false idempotent: true call: evm-nft.getwalletnfts with: chain: tools.chain address: tools.address format: tools.format limit: tools.limit exclude_spam: tools.exclude_spam token_addresses: tools.token_addresses cursor: tools.cursor normalizeMetadata: tools.normalizeMetadata media_items: tools.media_items include_prices: tools.include_prices outputParameters: - type: object mapping: $. - name: get-nft-collections-wallet-address description: Get NFT collections by wallet address hints: readOnly: true destructive: false idempotent: true call: evm-nft.getwalletnftcollections with: chain: tools.chain address: tools.address include_prices: tools.include_prices limit: tools.limit exclude_spam: tools.exclude_spam cursor: tools.cursor token_counts: tools.token_counts outputParameters: - type: object mapping: $. - name: get-nft-transfers-wallet-address description: Get NFT Transfers by wallet address hints: readOnly: true destructive: false idempotent: true call: evm-nft.getwalletnfttransfers with: chain: tools.chain address: tools.address contract_addresses: tools.contract_addresses format: tools.format from_block: tools.from_block to_block: tools.to_block from_date: tools.from_date to_date: tools.to_date include_prices: tools.include_prices limit: tools.limit order: tools.order cursor: tools.cursor outputParameters: - type: object mapping: $.