{"openapi":"3.1.0","info":{"title":"Feature Upvote (BYOK) API","version":"0.1.0","description":"Feature Upvote (BYOK) lets an AI assistant read your own Feature Upvote data through the Feature Upvote API with a key you supply (Feature Upvote API key (admin users create it in the account settings)). Read-only: 5 tools (verify_api_key, list_boards, get_board, list_statuses, list_tags). The BYOK key travels with each request, is used for that one call only and is never stored, logged or...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-feature-upvote.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-feature-upvote/docs"},"termsOfService":"https://connectorbay.com/byok-feature-upvote/terms"},"servers":[{"url":"https://byok-feature-upvote.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-feature-upvote/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/verify_api_key":{"post":{"operationId":"verify_api_key","summary":"Check that the API key is valid; returns a result flag, a message and the account id. Use for \"Is my Feature Upvote API ","description":"Check that the API key is valid; returns a result flag, a message and the account id. Use for \"Is my Feature Upvote API key working\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"verify_api_keyArguments","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_boards":{"post":{"operationId":"list_boards","summary":"List the feedback boards of the account. The reference of each board is used by the other tools. The provider documents ","description":"List the feedback boards of the account. The reference of each board is used by the other tools. The provider documents no response fields, so the full answer is returned; use limit and offset to page. Use for \"Which feedback boards do I have in Feature Upvote\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":250,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many items to return (default 10).","title":"Limit"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many items to skip, for paging (default 0).","title":"Offset"}},"title":"list_boardsArguments","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_board":{"post":{"operationId":"get_board","summary":"Show one feedback board by its reference with its settings (full provider answer). Use for \"Show the settings of my Feat","description":"Show one feedback board by its reference with its settings (full provider answer). Use for \"Show the settings of my Feature Upvote board\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"board_ref":{"description":"Board reference as returned by list_boards.","maxLength":100,"title":"Board Ref","type":"string"}},"required":["board_ref"],"title":"get_boardArguments","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_statuses":{"post":{"operationId":"list_statuses","summary":"List the statuses a board's suggestions can have (id, statusRef and description). Use for \"Which statuses can suggestion","description":"List the statuses a board's suggestions can have (id, statusRef and description). Use for \"Which statuses can suggestions have on my Feature Upvote board\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"board_ref":{"description":"Board reference as returned by list_boards.","maxLength":100,"title":"Board Ref","type":"string"}},"required":["board_ref"],"title":"list_statusesArguments","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_tags":{"post":{"operationId":"list_tags","summary":"List the tags of a board with the tag name, whether it is private and its creation date. Use for \"Which tags are used on","description":"List the tags of a board with the tag name, whether it is private and its creation date. Use for \"Which tags are used on my Feature Upvote board\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"board_ref":{"description":"Board reference as returned by list_boards.","maxLength":100,"title":"Board Ref","type":"string"},"limit":{"anyOf":[{"maximum":250,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many items to return (default 10).","title":"Limit"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many items to skip, for paging (default 0).","title":"Offset"}},"required":["board_ref"],"title":"list_tagsArguments","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}}}}