{"openapi":"3.1.0","info":{"title":"Transistor (BYOK) API","version":"0.1.0","description":"Transistor (BYOK) lets an AI assistant read your own Transistor data through the Transistor API with a key you supply (Transistor API key). Read-only: 8 tools (get_account, list_shows, get_show, list_episodes, get_episode, get_show_analytics, get_all_episode_analytics, get_episode_analytics). 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-transistor.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-transistor/docs"},"termsOfService":"https://connectorbay.com/byok-transistor/terms"},"servers":[{"url":"https://byok-transistor.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-transistor/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_account":{"post":{"operationId":"get_account","summary":"Show the Transistor user the API key belongs to: name, time zone and account dates. Use for \"Which Transistor account is","description":"Show the Transistor user the API key belongs to: name, time zone and account dates. Use for \"Which Transistor account is my API key connected to\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_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_shows":{"post":{"operationId":"list_shows","summary":"List the podcast shows the key can access, most recently updated first, with title, description, slug, category and RSS ","description":"List the podcast shows the key can access, most recently updated first, with title, description, slug, category and RSS feed URL. Use for \"Which podcasts do I host on Transistor\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"private":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to list only private shows.","title":"Private"},"query":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Search text matched against show titles and descriptions.","title":"Query"},"pagination_page":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Page number. The API counts from 0 by default; the docs example uses 1.","title":"Pagination Page"},"pagination_per":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Results per page (the API default is 10).","title":"Pagination Per"}},"title":"list_showsArguments","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_show":{"post":{"operationId":"get_show","summary":"Get one show with its description, author, language, category, website, directory links and RSS feed URL. Use for \"What ","description":"Get one show with its description, author, language, category, website, directory links and RSS feed URL. Use for \"What is the RSS feed URL of my show the-caffeine-show\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"show_id":{"description":"Show ID (numeric) or show slug, for example 'the-caffeine-show'. Take it from list_shows.","maxLength":200,"title":"Show Id","type":"string"}},"required":["show_id"],"title":"get_showArguments","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_episodes":{"post":{"operationId":"list_episodes","summary":"List episodes (newest first by default) for all shows or one show, filtered by status or search text, with number, seaso","description":"List episodes (newest first by default) for all shows or one show, filtered by status or search text, with number, season, duration and share URL. Use for \"What are the latest published episodes of my show 132543\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"show_id":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only episodes of this show (ID or slug).","title":"Show Id"},"query":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Search text matched against episode titles.","title":"Query"},"status":{"anyOf":[{"enum":["published","scheduled","draft"],"type":"string"},{"type":"null"}],"default":null,"description":"Publishing status: published, scheduled or draft.","title":"Status"},"order":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Order by publish date: desc (newest first, default) or asc.","title":"Order"},"pagination_page":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Page number. The API counts from 0 by default; the docs example uses 1.","title":"Pagination Page"},"pagination_per":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Results per page (the API default is 10).","title":"Pagination Per"}},"title":"list_episodesArguments","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_episode":{"post":{"operationId":"get_episode","summary":"Get one episode with title, summary, description, duration, publish date, status, keywords, media URL and share URL. Use","description":"Get one episode with title, summary, description, duration, publish date, status, keywords, media URL and share URL. Use for \"Give me the details of Transistor episode 3056098\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"episode_id":{"description":"Episode ID (numeric). Take it from list_episodes.","maxLength":200,"title":"Episode Id","type":"string"}},"required":["episode_id"],"title":"get_episodeArguments","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_show_analytics":{"post":{"operationId":"get_show_analytics","summary":"Get downloads per day for a whole show. Defaults to the last 14 days; pass both dates (dd-mm-yyyy) for another range. Us","description":"Get downloads per day for a whole show. Defaults to the last 14 days; pass both dates (dd-mm-yyyy) for another range. Use for \"How many downloads did my show the-caffeine-show get per day recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"show_id":{"description":"Show ID (numeric) or show slug, for example 'the-caffeine-show'. Take it from list_shows.","maxLength":200,"title":"Show Id","type":"string"},"start_date":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"First day of the range as dd-mm-yyyy, for example 01-09-2026. Required if end_date is given.","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Last day of the range as dd-mm-yyyy. Required if start_date is given.","title":"End Date"}},"required":["show_id"],"title":"get_show_analyticsArguments","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_all_episode_analytics":{"post":{"operationId":"get_all_episode_analytics","summary":"Get downloads per day for every episode of a show in one answer. Defaults to the last 7 days; pass both dates (dd-mm-yyy","description":"Get downloads per day for every episode of a show in one answer. Defaults to the last 7 days; pass both dates (dd-mm-yyyy) for another range. Use for \"Compare downloads of all episodes of the-caffeine-show last week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"show_id":{"description":"Show ID (numeric) or show slug, for example 'the-caffeine-show'. Take it from list_shows.","maxLength":200,"title":"Show Id","type":"string"},"start_date":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"First day of the range as dd-mm-yyyy, for example 01-09-2026. Required if end_date is given.","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Last day of the range as dd-mm-yyyy. Required if start_date is given.","title":"End Date"}},"required":["show_id"],"title":"get_all_episode_analyticsArguments","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_episode_analytics":{"post":{"operationId":"get_episode_analytics","summary":"Get downloads per day for a single episode. Defaults to the last 14 days; pass both dates (dd-mm-yyyy) for another range","description":"Get downloads per day for a single episode. Defaults to the last 14 days; pass both dates (dd-mm-yyyy) for another range. Use for \"How did episode 3056098 perform over the last two weeks\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"episode_id":{"description":"Episode ID (numeric). Take it from list_episodes.","maxLength":200,"title":"Episode Id","type":"string"},"start_date":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"First day of the range as dd-mm-yyyy, for example 01-09-2026. Required if end_date is given.","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Last day of the range as dd-mm-yyyy. Required if start_date is given.","title":"End Date"}},"required":["episode_id"],"title":"get_episode_analyticsArguments","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}}}}