{
  "type": "https://ercs.ethereum.org/ERCS/erc-8257#tool-manifest-v1",
  "name": "signalbound-b20-radar",
  "description": "Watches Base's native B20 token standard (Beryl upgrade): surfaces newly deployed B20 tokens from the factory precompile and inspects any B20 token by address (name, symbol, variant, decimals, currency, supply). Requires holding a Signalbound NFT. Predicate-gated via ERC-8257.",
  "endpoint": "https://api.signalbound.art/b20-radar",
  "image": "https://signalbound.art/assets/icon-white-transparent.png",
  "featuredImage": "https://signalbound.art/assets/tool-featured-16x9.png",
  "tags": [
    "trading",
    "defi"
  ],
  "io.opensea.display": {
    "title": "Signalbound B20 Radar",
    "subtitle": "Day-one radar for Base's native B20 token standard",
    "category": "Tokens & markets",
    "icon": "https://signalbound.art/assets/icon-white-transparent.png",
    "featuredImage": "https://signalbound.art/assets/tool-featured-16x9.png",
    "website": "https://signalbound.art"
  },
  "io.opensea.access": {
    "type": "erc721-owner",
    "chain": "eip155:1",
    "contract": "0x3512BA948a032B00952cc6bA43Bc013B4Fcf7ebc",
    "description": "Caller must hold a Signalbound NFT. Access is enforced through ERC-8257 predicate gating."
  },
  "io.opensea.collection": {
    "name": "Signalbound",
    "contract": "0x3512BA948a032B00952cc6bA43Bc013B4Fcf7ebc",
    "chain": "ethereum",
    "chainId": 1,
    "standard": "ERC-721",
    "website": "https://signalbound.art",
    "opensea": "https://opensea.io/collection/signal-bound"
  },
  "io.opensea.agent": {
    "name": "Signalbound",
    "handle": "@signalboundart",
    "role": "agent NFT network",
    "description": "Signalbound is an Ethereum pixel agent collection with ERC-8004 identities and ERC-8257 gated tools."
  },
  "inputs": {
    "type": "object",
    "properties": {
      "tokenId": {
        "type": "integer",
        "minimum": 1,
        "maximum": 6666,
        "description": "Signalbound token ID used for ERC-7496 clearance-gated access. The authenticated caller must own it."
      },
      "address": {
        "type": "string",
        "description": "Optional B20 token address (0xB20f...) to inspect. Omit to scan for recent deployments instead."
      },
      "blocksBack": {
        "type": "integer",
        "minimum": 100,
        "maximum": 43200,
        "description": "How many Base blocks to scan back for new deployments (default 5400, roughly 3 hours)."
      },
      "limit": {
        "type": "integer",
        "minimum": 1,
        "maximum": 25,
        "description": "Maximum tokens to return (default 10)."
      }
    },
    "required": [
      "tokenId"
    ]
  },
  "outputs": {
    "type": "object",
    "properties": {
      "generatedAt": {
        "type": "string"
      },
      "count": {
        "type": "integer"
      },
      "tokens": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "address": {
              "type": "string"
            },
            "variant": {
              "type": "string"
            },
            "name": {
              "type": "string"
            },
            "symbol": {
              "type": "string"
            },
            "decimals": {
              "type": "number"
            },
            "totalSupply": {
              "type": "string"
            },
            "currency": {
              "type": "string"
            },
            "initialized": {
              "type": "boolean"
            }
          }
        }
      },
      "brief": {
        "type": "string"
      },
      "caller": {
        "type": "string"
      }
    },
    "required": [
      "generatedAt",
      "count",
      "tokens",
      "brief"
    ]
  },
  "access": {
    "logic": "AND",
    "requirements": [
      {
        "kind": "0x37d8dc22",
        "data": "0x0000000000000000000000003512ba948a032b00952cc6ba43bc013b4fcf7ebc000000000000000000000000c0f09c5e1101a4ae1ce1009d56b4f34097842e07563425b22376e2a95d193b1fc61f4eb739e1e35647086d9e19b5d677ccf2cd5800000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000003719b9449dc4fc1dca2b4b492f922c355b93c8f42d375127999e6d898029a4158d02e3141a8e0af092cd3cce39f1f91e61e81a816e83e58a487f98f6c3b238dfa53641f3ee28727092625d09eec90cdb23799fed894c1f12d5b9684aa929162b1",
        "label": "Hold a Signalbound agent with Standard, Rare, or Elite clearance",
        "links": {
          "opensea": "https://opensea.io/assets/ethereum/0x3512BA948a032B00952cc6bA43Bc013B4Fcf7ebc"
        }
      }
    ]
  },
  "creatorAddress": "0x8b7cef6168f28825e6bca23656c430e61a7e4e43"
}
