# Oblique Markets Proxy Implementation Inspector

> Oblique Markets Proxy Implementation Inspector is a paid API for AI agents from api.oblique.markets, paid per call via x402, $0.003/call, status unknown (last checked 2026-09-14).

Detects whether a smart contract is an upgradeable proxy and returns its standard, implementation address, admin, beacon, storage slots, and block info across major EVM chains.

## Facts

- Endpoint: GET https://api.oblique.markets/api/v1/paid/proxy-implementation
- Price: $0.003/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/oblique-markets-proxy-implementation-inspector-fc136fee
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_5z7olKcth20QNK3DbxZpN

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 oblique-markets-proxy-implementation-inspector-fc136fee
```

Example prompt: Is the contract at 0x1234...abcd on Ethereum an upgradeable proxy, and if so what standard does it use and where is the actual implementation code?

## When to prefer this

Choose this endpoint when you need to determine if a specific EVM smart contract is an upgradeable proxy and identify its implementation, admin, or beacon across Base, Ethereum, Optimism, Arbitrum, or Polygon. It supports all major proxy standards (EIP-1967, UUPS, beacon, minimal proxy, legacy, Safe) in a single call with optional extra slot decoding. Prefer this over generic blockchain RPC calls when you want structured, labeled proxy metadata without writing custom storage slot decoding logic.

## Known failure modes

- Invalid or malformed contract address returns validation error
- Unsupported chain name or ID returns error
- Contract is an EOA (not a contract) returns is_proxy false with standard none
- RPC node timeout or unavailability causes temporary failure
- Block number not yet mined or out of range returns error
- More than 4 extra slots requested exceeds limit

## How this service works

Use when an agent asks if a contract is an upgradeable proxy and where its code is. Returns the standard (EIP-1967, beacon, UUPS, minimal, legacy, Safe, none), implementation, admin, beacon, slots and block read on Base, Ethereum, Optimism, Arbitrum or Polygon; 4 extra slots decoded. $0.003.

## Output

Returns a JSON object with: is_proxy (boolean), standard (e.g. EIP-1967, UUPS, beacon, minimal, legacy, Safe, none), proxy_name, implementation address, admin address, beacon address, chain, chain_id, block_tag, read_at, up to 4 decoded extra storage slots, RPC call metadata, freshness/cache info, and payment receipt.

## 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",
      "HEAD",
      "DELETE"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "required": [
      "address"
     ],
     "properties": {
      "block": {
       "type": "string",
       "description": "'latest' (default) or a decimal block number; explicit blocks are immutable and cached longer."
      },
      "chain": {
       "enum": [
        "base",
        "ethereum",
        "optimism",
        "arbitrum",
        "polygon",
        "8453",
        "1",
        "10",
        "42161",
        "137"
       ],
       "type": "string",
       "description": "Chain name (base, ethereum, optimism, arbitrum, polygon) or chain id (8453, 1, 10, 42161, 137). Default base."
      },
      "slots": {
       "type": "array",
       "items": {
        "type": "string"
       },
       "description": "Up to 4 extra raw storage slots to read and decode: each a 0x bytes32 or a decimal slot number. GET accepts a comma-separated list."
      },
      "address": {
       "type": "string",
       "description": "Contract address to inspect, 0x plus 40 hex characters (any case)."
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "properties": {
    "rpc": {
     "type": "object",
     "properties": {
      "calls": {
       "type": "integer"
      },
      "hosts": {
       "type": "array",
       "items": {
        "type": "string"
       }
      },
      "endpoint_class": {
       "type": "string"
      }
     }
    },
    "admin": {
     "type": "null"
    },
    "chain": {
     "type": "string"
    },
    "beacon": {
     "type": "null"
    },
    "source": {
     "type": "string"
    },
    "address": {
     "type": "string"
    },
    "read_at": {
     "type": "string"
    },
    "receipt": {
     "type": "object",
     "properties": {
      "sku": {
       "type": "string"
      },
      "payer": {
       "type": "string"
      },
      "payment_network": {
       "type": "string"
      }
     }
    },
    "chain_id": {
     "type": "integer"
    },
    "is_proxy": {
     "type": "boolean"
    },
    "standard": {
     "type": "string"
    },
  
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "rpc": {
   "calls": 9,
   "hosts": [
    "mainnet.base.org"
   ],
   "endpoint_class": "public"
  },
  "admin": null,
  "chain": "base",
  "beacon": null,
  "source": "public-rpc+explorer",
  "address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
  "read_at": "2026-09-12T01:30:00.000Z",
  "receipt": {
   "sku": "proxy-implementation",
   "payer": "0x52E29e0d2Aa49bfBfC548C0A9F2196F4aa51f3ea",
   "payment_network": "eip155:8453"
  },
  "chain_id": 8453,
  "is_proxy": true,
  "standard": "oz-legacy",
  "block_tag": "latest",
  "freshness": {
   "cache": "miss",
   "served_at": "2026-09-12T01:30:00.120Z",
   "ttl_seconds": 30,
   "cache_age_seconds": 0
  },
  "proxy_name": "FiatTokenProxy",
  "slots_read": [
   {
    "raw": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "slot": "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc",
    "label": "eip1967.implementation"
   }
  ],
  "extra_slots": [
   {
    "raw": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "slot": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "as_bool": false,
    "as_address": null,
    "as_uint256": "0"
   }
  ],
  "is_contract": true,
  "block_number": 40203311,
  "implementation": "0x2Ce6311ddAE708829bc0784C967b7d77D19FD779",
  "implementation_name": "FiatTokenV2_2",
  "implementation_has_code": true
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/oblique-markets-proxy-implementation-inspector-fc136fee/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api.oblique.markets](https://www.zero.xyz/host/api.oblique.markets/llms.txt)
