# Blockpin Token & Contract Control Check (Rug Check)

> Blockpin Token & Contract Control Check (Rug Check) is a paid API for AI agents from check.blockpin.dev, paid per call via x402, $0.01/call, status unknown (last checked 2026-11-04).

Returns current ownership, proxy state, and pause status of an EVM contract, plus every control-change event since a given block — to assess whether a token or contract is safe to trust or trade.

## Facts

- Endpoint: GET https://check.blockpin.dev/check?utm_source=zero.xyz
- Price: $0.01/call
- Payment: x402
- Status: unknown
- Last checked: 2026-11-04
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/blockpin-token-contract-control-check-rug-check-58e506c8
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_ghcM9oWXa6mQ850-cLALG

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability blockpin-token-contract-control-check-rug-check-58e506c8
```

Example prompt: Before I buy this token, can you do a rug check on the contract 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 on Ethereum since block 19000000 — I want to know who controls it, whether ownership has changed, and if the proxy has been upgraded?

## When to prefer this

Choose this endpoint when you need a comprehensive, structured audit of who controls a specific EVM contract and whether that control has changed since a given block — especially before trading a token or depositing funds into a contract. It covers proxy upgrades, admin changes, role events, and pause state in a single call across Ethereum, Base, and Robinhood Chain. Prefer it over generic block explorers when you need machine-readable, agent-friendly output with full event history and current state in one response.

## Known failure modes

- Invalid contract address format (must be 0x + 40 hex chars) returns validation error
- Unsupported chain value returns enum error
- Block number exceeds per-chain lookback limit (1M for Ethereum, 7M for Robinhood, 1.3M for Base)
- Contract address is an EOA (not a contract) — may return empty/minimal results
- RPC or indexer timeout for very high event-volume contracts
- Payment failure for x402 micropayment results in 402 response

## How this service works

Token and contract control check (rug check): who controls this token or contract, and did that change since block N? Current owner, pending owner, proxy implementation, proxy admin, beacon and pause state, plus every ownership transfer, upgrade, admin, role and pause event since the block, each with its tx. Use before trading a token or trusting a contract. Base, Ethereum, Robinhood Chain. By Blockpin.

## Output

Returns a JSON object with: a boolean `changed` flag indicating any control change since the specified block, a human-readable `summary`, `current` state object (owner, pending owner, proxy implementation, proxy admin, beacon, pause state), an `events` array of every ownership transfer, upgrade, admin change, role and pause event since the block (each with tx hash), and metadata about the chain, address and block range queried.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "required": [
      "chain",
      "address",
      "since"
     ],
     "properties": {
      "chain": {
       "enum": [
        "ethereum",
        "base",
        "robinhood"
       ],
       "type": "string",
       "description": "Chain the contract is on"
      },
      "since": {
       "type": "string",
       "pattern": "^[0-9]+$",
       "description": "Block number to check from (Ethereum: up to 1,000,000 blocks back; Robinhood Chain: up to 7,000,000; Base: up to 1,300,000)"
      },
      "address": {
       "type": "string",
       "pattern": "^0x[0-9a-fA-F]{40}$",
       "description": "Contract address"
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "required": [
      "changed",
      "summary",
      "current",
      "events"
     ],
     "properties": {
      "chain": {
       "type": "string"
      },
      "range": {
       "type": "object"
      },
      "events": {
       "type": "array"
      },
      "address": {
       "type": "string"
      },
      "changed": {
       "type": "boolean"
      },
      "current": {
       "type": "object"
      },
      "summary": {
       "type": "string"
      },
      "pauseChanged": {
       "type": "boolean"
      },
      "controlChanged": {
       "type": "boolean"
      }
     }
    }
   }
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/blockpin-token-contract-control-check-rug-check-58e506c8/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from check.blockpin.dev](https://www.zero.xyz/host/check.blockpin.dev/llms.txt)
