{"openapi":"3.1.0","info":{"title":"OpenSea (BYOK) API","version":"0.1.0","description":"OpenSea (BYOK) lets an AI assistant read your own OpenSea data through the OpenSea API with a key you supply (OpenSea API key). Read-only: 12 tools (get_collection, get_collection_stats, list_trending_collections, list_top_collections, list_nfts_by_account, list_nfts_by_collection, get_nft, list_nft_owners, list_collection_holders, list_token_balances_by_account, list_trending_tokens, search)....\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-opensea.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-opensea/docs"},"termsOfService":"https://connectorbay.com/byok-opensea/terms"},"servers":[{"url":"https://byok-opensea.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-opensea/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/get_collection":{"post":{"operationId":"get_collection","summary":"Get one NFT collection's details: name, description, category, links, total supply, fees, contracts and pricing currenci","description":"Get one NFT collection's details: name, description, category, links, total supply, fees, contracts and pricing currencies. Use for \"What is the doodles-official collection on OpenSea\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"slug":{"description":"OpenSea collection slug, the last part of the collection URL, for example 'doodles-official'.","maxLength":200,"title":"Slug","type":"string"}},"required":["slug"],"title":"get_collectionArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_collection_stats":{"post":{"operationId":"get_collection_stats","summary":"Get a collection's floor price, owner count, total sales and volume, plus sales and volume per time interval. Use for \"W","description":"Get a collection's floor price, owner count, total sales and volume, plus sales and volume per time interval. Use for \"What is the floor price and total volume of doodles-official\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"slug":{"description":"OpenSea collection slug, the last part of the collection URL, for example 'doodles-official'.","maxLength":200,"title":"Slug","type":"string"}},"required":["slug"],"title":"get_collection_statsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_trending_collections":{"post":{"operationId":"list_trending_collections","summary":"List NFT collections trending by sales activity over a timeframe, optionally filtered by chain or category. Use for \"Whi","description":"List NFT collections trending by sales activity over a timeframe, optionally filtered by chain or category. Use for \"Which NFT collections are trending on OpenSea in the last day\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"timeframe":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":"one_day","description":"Window such as one_minute, five_minutes, fifteen_minutes, one_hour or one_day (default); longer windows are listed in the docs.","title":"Timeframe"},"chains":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated chain names to keep, for example 'ethereum,base'. Unsupported names are ignored.","title":"Chains"},"category":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Category such as art, gaming, memberships, music, pfps, photography, domain-names or virtual-worlds.","title":"Category"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many collections (1 to 100, default 20).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from the previous answer's 'next' field to get the next page.","title":"Cursor"}},"title":"list_trending_collectionsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_top_collections":{"post":{"operationId":"list_top_collections","summary":"List top NFT collections ranked (descending) by volume or another stat, optionally filtered by chain or category. Use fo","description":"List top NFT collections ranked (descending) by volume or another stat, optionally filtered by chain or category. Use for \"What are the top NFT collections by 7 day volume\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"sort_by":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":"one_day_volume","description":"Stat to rank by, for example one_day_volume (default) or seven_days_volume; other options are in the docs.","title":"Sort By"},"chains":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated chain names to keep, for example 'ethereum,base'. Unsupported names are ignored.","title":"Chains"},"category":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Category filter such as art, gaming or pfps.","title":"Category"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many collections (1 to 100, default 50).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from the previous answer's 'next' field to get the next page.","title":"Cursor"}},"title":"list_top_collectionsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_nfts_by_account":{"post":{"operationId":"list_nfts_by_account","summary":"List the NFTs a wallet owns on one chain, optionally for one collection, with name, collection, token ID and estimated v","description":"List the NFTs a wallet owns on one chain, optionally for one collection, with name, collection, token ID and estimated value. Use for \"Which NFTs does 0xabc... hold on Ethereum\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"chain":{"description":"Blockchain: ethereum, base, arbitrum, optimism, polygon, avalanche, zora, blast, sei or ape_chain.","enum":["blast","base","ethereum","zora","arbitrum","sei","avalanche","polygon","optimism","ape_chain"],"title":"Chain","type":"string"},"address":{"description":"Wallet address, for example 0x0000000000000000000000000000000000000000.","maxLength":200,"title":"Address","type":"string"},"collection":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only NFTs of this collection slug.","title":"Collection"},"limit":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"How many NFTs per page (1 to 200).","title":"Limit"},"next":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from the previous answer's 'next' field to get the next page.","title":"Next"}},"required":["chain","address"],"title":"list_nfts_by_accountArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_nfts_by_collection":{"post":{"operationId":"list_nfts_by_collection","summary":"List the NFTs in a collection with name, token ID, image and metadata link; page with the next cursor. Use for \"Show som","description":"List the NFTs in a collection with name, token ID, image and metadata link; page with the next cursor. Use for \"Show some NFTs in the doodles-official collection\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"slug":{"description":"OpenSea collection slug, the last part of the collection URL, for example 'doodles-official'.","maxLength":200,"title":"Slug","type":"string"},"limit":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"How many NFTs per page (1 to 200).","title":"Limit"},"next":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from the previous answer's 'next' field to get the next page.","title":"Next"}},"required":["slug"],"title":"list_nfts_by_collectionArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_nft":{"post":{"operationId":"get_nft","summary":"Get one NFT's name, description, image, traits, rarity rank, owners and collection. Use for \"Show NFT 1 of contract 0x8a","description":"Get one NFT's name, description, image, traits, rarity rank, owners and collection. Use for \"Show NFT 1 of contract 0x8a90cab2b38dba80c8647d0d3beb4dfbc2b3a8b7 on Ethereum\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"chain":{"description":"Blockchain: ethereum, base, arbitrum, optimism, polygon, avalanche, zora, blast, sei or ape_chain.","enum":["blast","base","ethereum","zora","arbitrum","sei","avalanche","polygon","optimism","ape_chain"],"title":"Chain","type":"string"},"address":{"description":"NFT contract address.","maxLength":200,"title":"Address","type":"string"},"identifier":{"description":"Token ID of the NFT.","maxLength":200,"title":"Identifier","type":"string"}},"required":["chain","address","identifier"],"title":"get_nftArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_nft_owners":{"post":{"operationId":"list_nft_owners","summary":"List the wallets that own a specific NFT with quantities (useful for ERC-1155 tokens that have many owners). Use for \"Wh","description":"List the wallets that own a specific NFT with quantities (useful for ERC-1155 tokens that have many owners). Use for \"Who owns NFT 1 of contract 0x8a90cab2b38dba80c8647d0d3beb4dfbc2b3a8b7\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"chain":{"description":"Blockchain: ethereum, base, arbitrum, optimism, polygon, avalanche, zora, blast, sei or ape_chain.","enum":["blast","base","ethereum","zora","arbitrum","sei","avalanche","polygon","optimism","ape_chain"],"title":"Chain","type":"string"},"address":{"description":"NFT contract address.","maxLength":200,"title":"Address","type":"string"},"identifier":{"description":"Token ID of the NFT.","maxLength":200,"title":"Identifier","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many owners (1 to 100, default 20).","title":"Limit"},"next":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from the previous answer's 'next' field to get the next page.","title":"Next"}},"required":["chain","address","identifier"],"title":"list_nft_ownersArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_collection_holders":{"post":{"operationId":"list_collection_holders","summary":"List the top holders of a collection with the number of items and percentage of supply each holds. Use for \"Who are the ","description":"List the top holders of a collection with the number of items and percentage of supply each holds. Use for \"Who are the biggest holders of doodles-official\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"slug":{"description":"OpenSea collection slug, the last part of the collection URL, for example 'doodles-official'.","maxLength":200,"title":"Slug","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many holders (1 to 100, default 20).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from the previous answer's 'next' field to get the next page.","title":"Cursor"},"sort_direction":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"asc or desc (default).","title":"Sort Direction"}},"required":["slug"],"title":"list_collection_holdersArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_token_balances_by_account":{"post":{"operationId":"list_token_balances_by_account","summary":"List the fungible token balances of a wallet across chains with price, USD value and spam status, sorted by value by def","description":"List the fungible token balances of a wallet across chains with price, USD value and spam status, sorted by value by default. Use for \"What token balances does 0xabc... hold on OpenSea\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"address":{"description":"Wallet address.","maxLength":200,"title":"Address","type":"string"},"chains":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated chain names to keep, for example 'ethereum,base'. Unsupported names are ignored.","title":"Chains"},"sort_by":{"anyOf":[{"enum":["usd_value","market_cap","one_day_volume","price","one_day_price_change","seven_day_price_change"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort field.","title":"Sort By"},"sort_direction":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"asc or desc.","title":"Sort Direction"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many balances (1 to 100, default 20).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from the previous answer's 'next' field to get the next page.","title":"Cursor"}},"required":["address"],"title":"list_token_balances_by_accountArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_trending_tokens":{"post":{"operationId":"list_trending_tokens","summary":"List trending fungible tokens across chains with price, 24 hour change, volume, market cap and holder count. Use for \"Wh","description":"List trending fungible tokens across chains with price, 24 hour change, volume, market cap and holder count. Use for \"Which tokens are trending on OpenSea right now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"chains":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated chain names to keep, for example 'ethereum,base'. Unsupported names are ignored.","title":"Chains"},"sort_by":{"anyOf":[{"enum":["market_cap","fdv","one_hour_volume","one_day_volume","one_hour_price_change","one_day_price_change","seven_day_price_change","fourteen_day_price_change","thirty_day_price_change","two_hundred_day_price_change"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort field, for example market_cap, one_day_volume or one_day_price_change.","title":"Sort By"},"sort_direction":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"asc or desc.","title":"Sort Direction"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many tokens (1 to 100, default 20).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from the previous answer's 'next' field to get the next page.","title":"Cursor"}},"title":"list_trending_tokensArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/search":{"post":{"operationId":"search","summary":"Search collections, tokens, NFTs and accounts on OpenSea by text; results are ranked by relevance. Use for \"Search OpenS","description":"Search collections, tokens, NFTs and accounts on OpenSea by text; results are ranked by relevance. Use for \"Search OpenSea for 'azuki'\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"description":"Search text.","maxLength":200,"title":"Query","type":"string"},"chains":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated chain names to keep, for example 'ethereum,base'. Unsupported names are ignored.","title":"Chains"},"asset_types":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated types to search: collection, nft, token, account (default collection and token).","title":"Asset Types"},"limit":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results (1 to 50, default 20).","title":"Limit"}},"required":["query"],"title":"searchArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}