{"openapi":"3.1.0","info":{"title":"Tensor (BYOK) API","version":"0.1.0","description":"Tensor (BYOK) lets an AI assistant read your own Tensor data through the Tensor API with a key you supply (Tensor API key). Read-only: 6 tools (list_collections, find_collection, search_collections, list_collection_mints, get_priority_fees, get_price_candles). The BYOK key travels with each request, is used for that one call only and is never stored, logged or cached; it is only ever sent to...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-tensor.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-tensor/docs"},"termsOfService":"https://connectorbay.com/byok-tensor/terms"},"servers":[{"url":"https://byok-tensor.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-tensor/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/list_collections":{"post":{"operationId":"list_collections","summary":"List Tensor-verified Solana NFT collections with description, links, royalty setting and market stats, sorted by volume,","description":"List Tensor-verified Solana NFT collections with description, links, royalty setting and market stats, sorted by volume, listings, bids or date. Use for \"Which Solana NFT collections had the most volume on Tensor in the last 24 hours\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"sort_by":{"description":"Sort order.","enum":["statsV2.volume1h:desc","statsV2.volume1h:asc","statsV2.volume24h:desc","statsV2.volume24h:asc","statsV2.volume7d:desc","statsV2.volume7d:asc","statsV2.volumeAll:desc","statsV2.volumeAll:asc","statsV2.numBids:desc","statsV2.numBids:asc","statsV2.numListed:desc","statsV2.numListed:asc","createdAt:asc","createdAt:desc","slugDisplay:asc","slugDisplay:desc"],"title":"Sort By","type":"string"},"limit":{"description":"How many collections to return (1 to 100).","maximum":100,"minimum":1,"title":"Limit","type":"integer"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Page number, starting at 1.","title":"Page"}},"required":["sort_by","limit"],"title":"list_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/find_collection":{"post":{"operationId":"find_collection","summary":"Look up one collection by its Tensor slug, collection id, verified on-chain collection mint or first verified creator. U","description":"Look up one collection by its Tensor slug, collection id, verified on-chain collection mint or first verified creator. Use for \"What is the Tensor collection id and royalty setting for the example_apes slug\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"filter":{"description":"A slugDisplay, slug, collection id, verified on-chain collection (voc) or first verified creator (fvc).","maxLength":200,"title":"Filter","type":"string"}},"required":["filter"],"title":"find_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/search_collections":{"post":{"operationId":"search_collections","summary":"Search Tensor collections by partial name, sorted by volume, listings, bids or date. Use for \"Find Solana NFT collection","description":"Search Tensor collections by partial name, sorted by volume, listings, bids or date. Use for \"Find Solana NFT collections on Tensor with 'mad' in the name\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Search text, for example part of a collection name.","title":"Query"},"sort_by":{"anyOf":[{"enum":["statsV2.volume1h:desc","statsV2.volume1h:asc","statsV2.volume24h:desc","statsV2.volume24h:asc","statsV2.volume7d:desc","statsV2.volume7d:asc","statsV2.volumeAll:desc","statsV2.volumeAll:asc","statsV2.numBids:desc","statsV2.numBids:asc","statsV2.numListed:desc","statsV2.numListed:asc","createdAt:asc","createdAt:desc","slugDisplay:asc","slugDisplay:desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort order.","title":"Sort By"},"limit":{"anyOf":[{"maximum":20,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"How many collections to return (1 to 20).","title":"Limit"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Page number, starting at 1.","title":"Page"}},"title":"search_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_collection_mints":{"post":{"operationId":"list_collection_mints","summary":"List the mint addresses of the NFTs in a collection (up to 1000 per call). Page with the after value. Use for \"List the ","description":"List the mint addresses of the NFTs in a collection (up to 1000 per call). Page with the after value. Use for \"List the mint addresses in a Tensor collection\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"coll_id":{"description":"Tensor collection id (a UUID, see list_collections or find_collection).","maxLength":60,"title":"Coll Id","type":"string"},"limit":{"description":"How many mints to return (1 to 1000).","maximum":1000,"minimum":1,"title":"Limit","type":"integer"},"after":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Paging value: the last mint from the previous answer.","title":"After"}},"required":["coll_id","limit"],"title":"list_collection_mintsArguments","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_priority_fees":{"post":{"operationId":"get_priority_fees","summary":"Get the market-based Solana priority fee levels (min, low, medium, high, very high) Tensor suggests for building transac","description":"Get the market-based Solana priority fee levels (min, low, medium, high, very high) Tensor suggests for building transactions. Use for \"What priority fee should I use on Solana right now according to Tensor\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_priority_feesArguments","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_price_candles":{"post":{"operationId":"get_price_candles","summary":"Get OHLC candles for a collection's floor price (in SOL) or its number of active listings from Tensor's TradingView-styl","description":"Get OHLC candles for a collection's floor price (in SOL) or its number of active listings from Tensor's TradingView-style feed. Use for \"Show hourly floor price candles for example_apes on Tensor\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"symbol":{"description":"'<SLUG>/SOL' for the floor price, or '<SLUG>#LISTINGS' for the number of active listings, using the collection's slugDisplay.","maxLength":200,"title":"Symbol","type":"string"},"resolution":{"description":"Candle size in minutes (1, 5, 15, 30, 45, 60, 120, 180, 240) or 1D, 1W, 1M.","enum":["1","5","15","30","45","60","120","180","240","1D","1W","1M"],"title":"Resolution","type":"string"},"from_time":{"description":"Start time in unix seconds; leave at 1 because countback decides how far back to go.","maxLength":20,"title":"From Time","type":"string"},"to_time":{"description":"End time in unix seconds.","maxLength":20,"title":"To Time","type":"string"},"countback":{"description":"Maximum number of candles going back from the end time (up to 2880).","maxLength":5,"title":"Countback","type":"string"}},"required":["symbol","resolution","from_time","to_time","countback"],"title":"get_price_candlesArguments","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}}}}