gulltoppr Contracts API

The contracts API from gulltoppr — 3 operation(s) for contracts.

GitHub OpenAPI

Operations 3

GET /v1/{chain}/{address}/abi Resolve ABI, capability manifest, provenance, proxy chain, and token metadata #
POST /v1/{chain}/{address}/read Call a view or pure function #
POST /v1/{chain}/{address}/encode Encode a function call to calldata #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/gulltoppr-dev:gulltoppr-dev-contracts-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

gulltoppr-dev-contracts-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: gulltoppr REST Contracts API
  version: 1.0.0
  description: 'Agent-facing EVM contract interaction API: resolve ABIs, read, encode, simulate, prepare unsigned transactions, decode transactions, resolve names, and export the selector commons.'
  license:
    name: MIT
    identifier: MIT
  contact:
    name: gulltoppr
    url: https://gulltoppr.dev
  x-docs: https://gulltoppr.dev/integrations.md
  x-llms: https://gulltoppr.dev/llms.txt
  x-sdk: https://www.npmjs.com/package/gulltoppr
  x-mcp-remote: https://mcp.gulltoppr.dev/mcp
  x-mcp-metadata:
  - https://mcp.gulltoppr.dev/server.json
  - https://mcp.gulltoppr.dev/.well-known/mcp-server.json
  x-repository: https://github.com/portdeveloper/gulltoppr
servers:
- url: https://api.gulltoppr.dev
  description: Production
- url: http://localhost:8787
  description: Local development
tags:
- name: Contracts
paths:
  /v1/{chain}/{address}/abi:
    get:
      tags:
      - Contracts
      operationId: resolveAbi
      summary: Resolve ABI, capability manifest, provenance, proxy chain, and token metadata
      parameters:
      - $ref: '#/components/parameters/Chain'
      - $ref: '#/components/parameters/Address'
      - name: rpc_url
        in: query
        required: false
        description: Override HTTP(S) RPC URL for the requested chain. Required for local or unlisted EVM chains.
        schema:
          type: string
          pattern: ^https?://\S+$
      - name: include_abi
        in: query
        required: false
        description: Set false for a token-efficient manifest/provenance response that omits the raw JSON ABI.
        schema:
          type: boolean
          default: true
      - name: method_q
        in: query
        required: false
        description: Case-insensitive substring filter across manifest method names, signatures, parameter names/types, outputs, and hints.
        schema:
          type: string
      - name: method_kind
        in: query
        required: false
        description: Restrict the returned manifest methods by read/write kind.
        schema:
          type: string
          enum:
          - read
          - write
          - all
          default: all
      - name: method_limit
        in: query
        required: false
        description: Maximum number of manifest methods to return after filtering.
        schema:
          type: integer
          minimum: 0
          maximum: 500
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/AbiResult'
                - $ref: '#/components/schemas/CompactAbiResult'
          headers:
            Cache-Control:
              schema:
                type: string
              description: Cache policy for this response. Operational endpoints use no-store; cacheable GETs include max-age and stale-while-revalidate.
            RateLimit-Limit:
              schema:
                type: integer
                minimum: 0
              description: Fixed-window request budget for the current client.
            RateLimit-Remaining:
              schema:
                type: integer
                minimum: 0
              description: Requests remaining in the current fixed window.
            RateLimit-Reset:
              schema:
                type: integer
                minimum: 0
              description: Seconds until the current fixed window resets.
            X-Source:
              schema:
                $ref: '#/components/schemas/ProvenanceSource'
            X-Confidence:
              schema:
                $ref: '#/components/schemas/Confidence'
            X-Cache:
              schema:
                type: string
                enum:
                - HIT
                - MISS
            X-Elapsed-Ms:
              schema:
                type: integer
                minimum: 0
              description: Server-side resolve_abi elapsed milliseconds.
            X-ABI-Included:
              schema:
                type: string
                enum:
                - 'true'
                - 'false'
              description: Whether the raw JSON ABI is included in the response body.
        '400':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '422':
          description: ABI not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '429':
          description: Rate limited
          headers:
            RateLimit-Limit:
              schema:
                type: integer
                minimum: 0
              description: Fixed-window request budget for the current client.
            RateLimit-Remaining:
              schema:
                type: integer
                minimum: 0
              description: Requests remaining in the current fixed window.
            RateLimit-Reset:
              schema:
                type: integer
                minimum: 0
              description: Seconds until the current fixed window resets.
            Retry-After:
              schema:
                type: integer
                minimum: 0
              description: Seconds to wait before retrying after RATE_LIMITED.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '502':
          description: Upstream failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '504':
          description: Upstream timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
  /v1/{chain}/{address}/read:
    post:
      tags:
      - Contracts
      operationId: readContract
      summary: Call a view or pure function
      parameters:
      - $ref: '#/components/parameters/Chain'
      - $ref: '#/components/parameters/Address'
      - name: rpc_url
        in: query
        required: false
        description: Override HTTP(S) RPC URL for the requested chain. Required for local or unlisted EVM chains.
        schema:
          type: string
          pattern: ^https?://\S+$
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FunctionCallBody'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReadResult'
          headers:
            RateLimit-Limit:
              schema:
                type: integer
                minimum: 0
              description: Fixed-window request budget for the current client.
            RateLimit-Remaining:
              schema:
                type: integer
                minimum: 0
              description: Requests remaining in the current fixed window.
            RateLimit-Reset:
              schema:
                type: integer
                minimum: 0
              description: Seconds until the current fixed window resets.
        '400':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '422':
          description: ABI not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '429':
          description: Rate limited
          headers:
            RateLimit-Limit:
              schema:
                type: integer
                minimum: 0
              description: Fixed-window request budget for the current client.
            RateLimit-Remaining:
              schema:
                type: integer
                minimum: 0
              description: Requests remaining in the current fixed window.
            RateLimit-Reset:
              schema:
                type: integer
                minimum: 0
              description: Seconds until the current fixed window resets.
            Retry-After:
              schema:
                type: integer
                minimum: 0
              description: Seconds to wait before retrying after RATE_LIMITED.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '502':
          description: Upstream failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '504':
          description: Upstream timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
  /v1/{chain}/{address}/encode:
    post:
      tags:
      - Contracts
      operationId: encodeCall
      summary: Encode a function call to calldata
      parameters:
      - $ref: '#/components/parameters/Chain'
      - $ref: '#/components/parameters/Address'
      - name: rpc_url
        in: query
        required: false
        description: Override HTTP(S) RPC URL for the requested chain. Required for local or unlisted EVM chains.
        schema:
          type: string
          pattern: ^https?://\S+$
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EncodeCallBody'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EncodeResult'
          headers:
            RateLimit-Limit:
              schema:
                type: integer
                minimum: 0
              description: Fixed-window request budget for the current client.
            RateLimit-Remaining:
              schema:
                type: integer
                minimum: 0
              description: Requests remaining in the current fixed window.
            RateLimit-Reset:
              schema:
                type: integer
                minimum: 0
              description: Seconds until the current fixed window resets.
        '400':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '422':
          description: ABI not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '429':
          description: Rate limited
          headers:
            RateLimit-Limit:
              schema:
                type: integer
                minimum: 0
              description: Fixed-window request budget for the current client.
            RateLimit-Remaining:
              schema:
                type: integer
                minimum: 0
              description: Requests remaining in the current fixed window.
            RateLimit-Reset:
              schema:
                type: integer
                minimum: 0
              description: Seconds until the current fixed window resets.
            Retry-After:
              schema:
                type: integer
                minimum: 0
              description: Seconds to wait before retrying after RATE_LIMITED.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '502':
          description: Upstream failure
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '504':
          description: Upstream timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
components:
  schemas:
    BytecodeMatchProvenance:
      type: object
      required:
      - chain
      - address
      - source
      - confidence
      description: Original ABI source reused because the metadata-stripped runtime bytecode skeleton matched.
      properties:
        chain:
          type: integer
          description: EIP-155 chain id where the reusable bytecode skeleton was first resolved.
        address:
          $ref: '#/components/schemas/Address'
        source:
          $ref: '#/components/schemas/ProvenanceSource'
        confidence:
          $ref: '#/components/schemas/Confidence'
    ProxyChain:
      type: object
      required:
      - is_proxy
      - pattern
      - hops
      properties:
        is_proxy:
          type: boolean
          const: true
        pattern:
          type: string
          enum:
          - eip1967
          - uups
          - transparent
          - beacon
          - diamond
          - minimal-1167
          - unknown
        hops:
          type: array
          items:
            type: object
            required:
            - address
            - role
            properties:
              address:
                $ref: '#/components/schemas/Address'
              role:
                type: string
                enum:
                - proxy
                - implementation
                - beacon
                - facet
        resolved_implementation:
          $ref: '#/components/schemas/Address'
    TokenMeta:
      type: object
      required:
      - kind
      properties:
        kind:
          type:
          - string
          - 'null'
          enum:
          - erc20
          - erc721
          - erc1155
          - null
        symbol:
          type: string
        decimals:
          type: integer
        name:
          type: string
    ProvenanceSource:
      type: string
      enum:
      - etherscan
      - sourcify
      - proxy-impl
      - bytecode-match
      - heimdall-decompiled
      - 4byte
    ErrorCode:
      type: string
      enum:
      - INVALID_ADDRESS
      - INVALID_ARGS
      - UNKNOWN_CHAIN
      - AMBIGUOUS_FUNCTION
      - FUNCTION_NOT_FOUND
      - NOT_A_VIEW_FN
      - NOT_A_WRITE_FN
      - ABI_NOT_FOUND
      - DECOMPILE_FAILED
      - RPC_ERROR
      - UPSTREAM_TIMEOUT
      - RATE_LIMITED
    CompactAbiResult:
      type: object
      required:
      - chain
      - address
      - interface
      - provenance
      - abi_for
      - cached
      - abi_omitted
      properties:
        chain:
          type: integer
        address:
          $ref: '#/components/schemas/Address'
        interface:
          $ref: '#/components/schemas/ContractInterface'
        provenance:
          $ref: '#/components/schemas/Provenance'
        proxy:
          $ref: '#/components/schemas/ProxyChain'
        token:
          $ref: '#/components/schemas/TokenMeta'
        abi_for:
          $ref: '#/components/schemas/Address'
        cached:
          type: boolean
        abi_omitted:
          type: boolean
          const: true
    IoParam:
      type: object
      required:
      - name
      - type
      properties:
        name:
          type: string
        type:
          type: string
    Address:
      type: string
      pattern: ^0x[0-9a-fA-F]{40}$
    Confidence:
      type: string
      enum:
      - verified
      - partial
      - decompiled
      - selector-only
    FunctionName:
      type: string
      minLength: 1
      pattern: \S
    ErrorEnvelope:
      type: object
      required:
      - error
      properties:
        error:
          type: object
          required:
          - code
          - message
          properties:
            code:
              $ref: '#/components/schemas/ErrorCode'
            message:
              type: string
            details:
              type: object
              additionalProperties: true
    EncodeCallBody:
      allOf:
      - $ref: '#/components/schemas/FunctionCallBody'
      - type: object
        properties:
          value:
            $ref: '#/components/schemas/DecimalWei'
    DecimalWei:
      type: string
      pattern: ^\d+$
      description: Native value in wei, decimal string.
    AbiResult:
      type: object
      required:
      - chain
      - address
      - interface
      - abi
      - provenance
      - abi_for
      - cached
      properties:
        chain:
          type: integer
        address:
          $ref: '#/components/schemas/Address'
        interface:
          $ref: '#/components/schemas/ContractInterface'
        abi:
          type: array
          items:
            type: object
            additionalProperties: true
        provenance:
          $ref: '#/components/schemas/Provenance'
        proxy:
          $ref: '#/components/schemas/ProxyChain'
        token:
          $ref: '#/components/schemas/TokenMeta'
        abi_for:
          $ref: '#/components/schemas/Address'
        cached:
          type: boolean
    FunctionCallBody:
      type: object
      required:
      - function
      properties:
        function:
          $ref: '#/components/schemas/FunctionName'
        args:
          type: array
          items: true
          default: []
    ContractInterface:
      type: object
      required:
      - reads
      - writes
      properties:
        reads:
          type: array
          items:
            $ref: '#/components/schemas/ReadCapability'
        writes:
          type: array
          items:
            $ref: '#/components/schemas/WriteCapability'
    EncodeResult:
      type: object
      required:
      - data
      - function_signature
      properties:
        data:
          $ref: '#/components/schemas/Calldata'
        function_signature:
          type: string
    ReadResult:
      type: object
      required:
      - decoded
      - raw
      - function_signature
      properties:
        decoded:
          type: array
          items: true
        raw:
          $ref: '#/components/schemas/Calldata'
        function_signature:
          type: string
    Provenance:
      type: object
      required:
      - source
      - confidence
      - verified
      - names_synthetic
      - natspec
      properties:
        source:
          $ref: '#/components/schemas/ProvenanceSource'
        confidence:
          $ref: '#/components/schemas/Confidence'
        verified:
          type: boolean
        names_synthetic:
          type: boolean
        natspec:
          type: boolean
        bytecode_match:
          $ref: '#/components/schemas/BytecodeMatchProvenance'
        notes:
          type: string
    WriteCapability:
      type: object
      required:
      - function
      - signature
      - inputs
      - payable
      - names_synthetic
      properties:
        function:
          type: string
        signature:
          type: string
        inputs:
          type: array
          items:
            $ref: '#/components/schemas/IoParam'
        payable:
          type: boolean
        names_synthetic:
          type: boolean
        hint:
          type: string
    Calldata:
      type: string
      pattern: ^0x([0-9a-fA-F]{2})*$
    ReadCapability:
      type: object
      required:
      - function
      - signature
      - inputs
      - outputs
      - names_synthetic
      properties:
        function:
          type: string
        signature:
          type: string
        inputs:
          type: array
          items:
            $ref: '#/components/schemas/IoParam'
        outputs:
          type: array
          items:
            $ref: '#/components/schemas/IoParam'
        names_synthetic:
          type: boolean
        hint:
          type: string
  parameters:
    Chain:
      name: chain
      in: path
      required: true
      schema:
        oneOf:
        - type: string
        - type: integer
    Address:
      name: address
      in: path
      required: true
      schema:
        $ref: '#/components/schemas/Address'
externalDocs:
  description: Integration recipes, agent workflow, MCP, SDK, and safety guidance.
  url: https://gulltoppr.dev/integrations.md