{
  "type": "https://ercs.ethereum.org/ERCS/erc-8257#tool-manifest-v1",
  "name": "signalbound-drop-radar",
  "description": "Surfaces OpenSea NFT drops (featured, upcoming, recently minted) with stage pricing, supply, and optional wallet mint eligibility. Requires holding a Signalbound NFT. Predicate-gated via ERC-8257.",
  "endpoint": "https://api.signalbound.art/drop-radar",
  "image": "https://signalbound.art/assets/icon-white-transparent.png",
  "featuredImage": "https://signalbound.art/assets/tool-featured-16x9.png",
  "tags": [
    "nft",
    "trading"
  ],
  "io.opensea.display": {
    "title": "Signalbound Drop Radar",
    "subtitle": "Track NFT drops, supply, stages, and wallet eligibility",
    "category": "NFT & collections",
    "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."
      },
      "type": {
        "type": "string",
        "enum": [
          "featured",
          "upcoming",
          "recently_minted"
        ],
        "description": "Drop feed to scan. Defaults to upcoming."
      },
      "limit": {
        "type": "integer",
        "minimum": 1,
        "maximum": 50,
        "description": "Maximum drops to return (default 20)."
      },
      "chain": {
        "type": "string",
        "description": "Optional chain filter (e.g. ethereum, base, polygon). Omit for all chains."
      },
      "enrich": {
        "type": "boolean",
        "description": "Fetch per-drop stage and supply details (default true). Set false for a lighter list-only scan."
      },
      "checkWalletEligibility": {
        "type": "boolean",
        "description": "When true, uses walletAddress (or the authenticated caller) to probe mint eligibility via OpenSea mint-build API."
      },
      "walletAddress": {
        "type": "string",
        "description": "Optional wallet for eligibility checks. Defaults to the SIWE-authenticated caller address."
      }
    },
    "required": [
      "tokenId"
    ]
  },
  "outputs": {
    "type": "object",
    "properties": {
      "type": {
        "type": "string"
      },
      "generatedAt": {
        "type": "string"
      },
      "count": {
        "type": "integer"
      },
      "drops": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "slug": {
              "type": "string"
            },
            "name": {
              "type": "string"
            },
            "chain": {
              "type": "string"
            },
            "imageUrl": {
              "type": "string"
            },
            "openseaUrl": {
              "type": "string"
            },
            "contractAddress": {
              "type": "string"
            },
            "totalSupply": {
              "type": "number"
            },
            "maxSupply": {
              "type": "number"
            },
            "remaining": {
              "type": "number"
            },
            "stages": {
              "type": "array"
            },
            "walletEligibility": {
              "type": "object"
            }
          }
        }
      },
      "brief": {
        "type": "string"
      },
      "caller": {
        "type": "string"
      }
    },
    "required": [
      "type",
      "generatedAt",
      "count",
      "drops",
      "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"
}
