naftiko: 1.0.0-alpha2 info: label: Etherscan API — Contracts description: 'Etherscan API — Contracts. 1 operations. Lead operation: Unified API endpoint. Self-contained Naftiko capability covering one Etherscan business surface.' tags: - Etherscan - Contracts created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: ETHERSCAN_API_KEY: ETHERSCAN_API_KEY capability: consumes: - type: http namespace: etherscan-contracts baseUri: https://api.etherscan.io/v2/api description: Etherscan API — Contracts business capability. Self-contained, no shared references. resources: - name: root path: / operations: - name: callapi method: GET description: Unified API endpoint outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: chainid in: query type: integer description: Numeric chain ID (e.g. 1 for Ethereum mainnet, 56 for BNB Smart Chain, 8453 for Base). required: true - name: module in: query type: string description: API module (account, contract, transaction, block, stats, gastracker, token). required: true - name: action in: query type: string description: Action within the module (e.g. balance, txlist, tokenbalance, getabi). required: true - name: address in: query type: string description: Ethereum address for account or token operations. - name: contractaddress in: query type: string description: Smart contract address for token or contract operations. - name: startblock in: query type: integer - name: endblock in: query type: integer - name: page in: query type: integer - name: offset in: query type: integer - name: sort in: query type: string - name: tag in: query type: string description: Block tag (latest, earliest, pending) or block number. authentication: type: apikey key: apikey value: '{{env.ETHERSCAN_API_KEY}}' placement: query exposes: - type: rest namespace: etherscan-contracts-rest port: 8080 description: REST adapter for Etherscan API — Contracts. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1 name: root description: REST surface for root. operations: - method: GET name: callapi description: Unified API endpoint call: etherscan-contracts.callapi with: chainid: rest.chainid module: rest.module action: rest.action address: rest.address contractaddress: rest.contractaddress startblock: rest.startblock endblock: rest.endblock page: rest.page offset: rest.offset sort: rest.sort tag: rest.tag outputParameters: - type: object mapping: $. - type: mcp namespace: etherscan-contracts-mcp port: 9090 transport: http description: MCP adapter for Etherscan API — Contracts. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: unified-api-endpoint description: Unified API endpoint hints: readOnly: true destructive: false idempotent: true call: etherscan-contracts.callapi with: chainid: tools.chainid module: tools.module action: tools.action address: tools.address contractaddress: tools.contractaddress startblock: tools.startblock endblock: tools.endblock page: tools.page offset: tools.offset sort: tools.sort tag: tools.tag outputParameters: - type: object mapping: $.