{"openapi":"3.1.0","info":{"title":"Sleekplan (BYOK) API","version":"0.1.0","description":"Sleekplan (BYOK) lets an AI assistant read your own Sleekplan data through the Sleekplan API with a key you supply (Sleekplan API key). Read-only: 10 tools (list_posts, get_post, list_post_comments, list_post_votes, list_changelog_updates, get_changelog_update, list_users, get_user, list_satisfaction_responses, list_nps_responses). The BYOK key travels with each request, is used for that one call...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-sleekplan.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-sleekplan/docs"},"termsOfService":"https://connectorbay.com/byok-sleekplan/terms"},"servers":[{"url":"https://byok-sleekplan.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-sleekplan/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_posts":{"post":{"operationId":"list_posts","summary":"List feedback posts of the workspace with title, status, votes, comments, scoring, tags and author. Filter by category i","description":"List feedback posts of the workspace with title, status, votes, comments, scoring, tags and author. Filter by category id, status id, owner, tag ids or text. Use for \"What are the top voted feedback posts in Sleekplan\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"sort":{"anyOf":[{"enum":["trend","top","new","updated","scoring","priority","eta"],"type":"string"},{"type":"null"}],"default":"trend","description":"Order: trend (default), top, new, updated, scoring, priority or eta.","title":"Sort"},"type":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only posts of this category id.","title":"Type"},"filter":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only posts with this status id.","title":"Filter"},"owner":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Only posts owned by this admin id.","title":"Owner"},"tags":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated tag ids to require.","title":"Tags"},"search":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Text to search for.","title":"Search"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Page number to fetch; leave out for the first page. The answer says has_more when there are further pages.","title":"Page"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results per page (default 10, 1 to 100).","title":"Per Page"}},"title":"list_postsArguments","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_post":{"post":{"operationId":"get_post","summary":"Get one feedback post: title, description, status, category, vote and comment totals, scoring, owner, tags, author and d","description":"Get one feedback post: title, description, status, category, vote and comment totals, scoring, owner, tags, author and dates. Use for \"Show Sleekplan feedback post 41\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"postid":{"description":"Numeric feedback post id.","title":"Postid","type":"integer"}},"required":["postid"],"title":"get_postArguments","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_post_comments":{"post":{"operationId":"list_post_comments","summary":"List comments on one feedback post with text, author, likes, pinned and public flags. Use for \"What are people saying on","description":"List comments on one feedback post with text, author, likes, pinned and public flags. Use for \"What are people saying on Sleekplan post 41\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"postid":{"description":"Numeric feedback post id.","title":"Postid","type":"integer"},"sort":{"anyOf":[{"enum":["old","new"],"type":"string"},{"type":"null"}],"default":"old","description":"Order: old (default) or new.","title":"Sort"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Page number to fetch; leave out for the first page. The answer says has_more when there are further pages.","title":"Page"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"How many results per page (default 30, 1 to 100).","title":"Per Page"}},"required":["postid"],"title":"list_post_commentsArguments","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_post_votes":{"post":{"operationId":"list_post_votes","summary":"List the votes on one feedback post (up or down) with voter and date. Use for \"Who voted on Sleekplan post 41\".","description":"List the votes on one feedback post (up or down) with voter and date. Use for \"Who voted on Sleekplan post 41\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"postid":{"description":"Numeric feedback post id.","title":"Postid","type":"integer"},"filter":{"anyOf":[{"enum":["all","up","down"],"type":"string"},{"type":"null"}],"default":null,"description":"Which votes: all, up or down.","title":"Filter"},"sort":{"anyOf":[{"enum":["old","new"],"type":"string"},{"type":"null"}],"default":null,"description":"Order: old or new.","title":"Sort"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Page number to fetch; leave out for the first page. The answer says has_more when there are further pages.","title":"Page"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"How many results per page (default 30, 1 to 100).","title":"Per Page"}},"required":["postid"],"title":"list_post_votesArguments","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_changelog_updates":{"post":{"operationId":"list_changelog_updates","summary":"List changelog updates (newest first) with title, type, draft or scheduled state and page view, email and click stats. U","description":"List changelog updates (newest first) with title, type, draft or scheduled state and page view, email and click stats. Use for \"What changelog entries have we published in Sleekplan\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"status":{"anyOf":[{"enum":["published","scheduled","draft"],"type":"string"},{"type":"null"}],"default":null,"description":"Only published, scheduled or draft entries.","title":"Status"},"type":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only entries of this category id.","title":"Type"},"search":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Text to search for.","title":"Search"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Page number to fetch; leave out for the first page. The answer says has_more when there are further pages.","title":"Page"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"How many results per page (default 30, 1 to 100).","title":"Per Page"}},"title":"list_changelog_updatesArguments","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_changelog_update":{"post":{"operationId":"get_changelog_update","summary":"Get one changelog entry with its text, type, publish state and view, email and click stats. Use for \"Show Sleekplan chan","description":"Get one changelog entry with its text, type, publish state and view, email and click stats. Use for \"Show Sleekplan changelog entry 5\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"updateid":{"description":"Numeric changelog update id.","title":"Updateid","type":"integer"}},"required":["updateid"],"title":"get_changelog_updateArguments","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_users":{"post":{"operationId":"list_users","summary":"List end-users (customers who gave feedback) with name, segments, activity counts and dates. Search by name or filter by","description":"List end-users (customers who gave feedback) with name, segments, activity counts and dates. Search by name or filter by segment. Use for \"Who are the most recently active users in Sleekplan\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"sort":{"anyOf":[{"enum":["created","updated"],"type":"string"},{"type":"null"}],"default":null,"description":"Order by created or updated.","title":"Sort"},"sort_dir":{"anyOf":[{"enum":["DESC","ASC"],"type":"string"},{"type":"null"}],"default":null,"description":"Direction: DESC (default) or ASC.","title":"Sort Dir"},"search":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Text to search for.","title":"Search"},"segment":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only responses from users in this segment id.","title":"Segment"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Page number to fetch; leave out for the first page. The answer says has_more when there are further pages.","title":"Page"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many results per page (default 10, 1 to 100).","title":"Per Page"}},"title":"list_usersArguments","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_user":{"post":{"operationId":"get_user","summary":"Get one end-user: name, segments, custom data, activity counts, weight and dates. Use for \"Show Sleekplan user 7\".","description":"Get one end-user: name, segments, custom data, activity counts, weight and dates. Use for \"Show Sleekplan user 7\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"userid":{"description":"Numeric Sleekplan user id.","title":"Userid","type":"integer"}},"required":["userid"],"title":"get_userArguments","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_satisfaction_responses":{"post":{"operationId":"list_satisfaction_responses","summary":"List CSAT (satisfaction) responses with score, comment, date and respondent. Filter by group key, segment or dates. Use ","description":"List CSAT (satisfaction) responses with score, comment, date and respondent. Filter by group key, segment or dates. Use for \"What CSAT scores did Sleekplan collect this month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"key":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only responses for this group key.","title":"Key"},"segment":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only responses from users in this segment id.","title":"Segment"},"date_start":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Only responses on or after this date (YYYY-MM-DD).","title":"Date Start"},"date_end":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Only responses on or before this date (YYYY-MM-DD).","title":"Date End"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Page number to fetch; leave out for the first page. The answer says has_more when there are further pages.","title":"Page"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"How many results per page (default 30, 1 to 100).","title":"Per Page"}},"title":"list_satisfaction_responsesArguments","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_nps_responses":{"post":{"operationId":"list_nps_responses","summary":"List NPS (promoter) responses with 0 to 10 score, comment, date and respondent. Filter by segment or dates. Use for \"Wha","description":"List NPS (promoter) responses with 0 to 10 score, comment, date and respondent. Filter by segment or dates. Use for \"What is our recent NPS feedback in Sleekplan\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"segment":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only responses from users in this segment id.","title":"Segment"},"date_start":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Only responses on or after this date (YYYY-MM-DD).","title":"Date Start"},"date_end":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Only responses on or before this date (YYYY-MM-DD).","title":"Date End"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Page number to fetch; leave out for the first page. The answer says has_more when there are further pages.","title":"Page"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"How many results per page (default 30, 1 to 100).","title":"Per Page"}},"title":"list_nps_responsesArguments","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}}}}