{"openapi":"3.1.0","info":{"title":"Workable (BYOK) API","version":"0.1.0","description":"Workable (BYOK) lets an AI assistant read your own Workable data through the Workable API with a key you supply (Workable access token (needs read scopes such as r_jobs and r_candidates)). Read-only: 6 tools (list_jobs, list_candidates, list_stages, list_members, list_events, list_departments). 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-workable.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-workable/docs"},"termsOfService":"https://connectorbay.com/byok-workable/terms"},"servers":[{"url":"https://byok-workable.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-workable/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_jobs":{"post":{"operationId":"list_jobs","summary":"List Workable jobs with title, shortcode, state, department, location, workplace type and dates. Needs the r_jobs scope.","description":"List Workable jobs with title, shortcode, state, department, location, workplace type and dates. Needs the r_jobs scope. Use for \"Which jobs are published in Workable\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"subdomain":{"description":"Your Workable account subdomain (for example 'acme' for acme.workable.com).","maxLength":63,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Subdomain","type":"string"},"state":{"anyOf":[{"enum":["draft","published","archived","closed"],"type":"string"},{"type":"null"}],"default":null,"description":"Job state: draft, published, archived or closed.","title":"State"},"created_after":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Only jobs created after this time (ISO 8601 such as 20260101T000000Z, or Unix time).","title":"Created After"},"updated_after":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Only jobs updated after this time (ISO 8601 such as 20260101T000000Z, or Unix time).","title":"Updated After"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (1 to 100).","title":"Limit"},"since_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only results with an id greater than or equal to this id, for paging (take it from the last item of the previous answer).","title":"Since Id"},"max_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only results with an id less than or equal to this id, for paging.","title":"Max Id"}},"required":["subdomain"],"title":"list_jobsArguments","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_candidates":{"post":{"operationId":"list_candidates","summary":"List Workable candidates (all jobs, or one job via its shortcode) with name, email, headline, stage, disqualification fl","description":"List Workable candidates (all jobs, or one job via its shortcode) with name, email, headline, stage, disqualification flags and dates. Needs the r_candidates scope. Contains personal data. Use for \"Which candidates applied to Workable job 8F2A1B\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"subdomain":{"description":"Your Workable account subdomain (for example 'acme' for acme.workable.com).","maxLength":63,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Subdomain","type":"string"},"shortcode":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Only candidates of the job with this shortcode (see list_jobs).","title":"Shortcode"},"stage":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only candidates in this pipeline stage slug (see list_stages).","title":"Stage"},"email":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only the candidate with this email address.","title":"Email"},"created_after":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Only candidates created after this time (ISO 8601 such as 20260101T000000Z, or Unix time).","title":"Created After"},"updated_after":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Only candidates updated after this time (ISO 8601 such as 20260101T000000Z, or Unix time).","title":"Updated After"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (1 to 100).","title":"Limit"},"since_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only results with an id greater than or equal to this id, for paging (take it from the last item of the previous answer).","title":"Since Id"},"max_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only results with an id less than or equal to this id, for paging.","title":"Max Id"}},"required":["subdomain"],"title":"list_candidatesArguments","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_stages":{"post":{"operationId":"list_stages","summary":"List the recruiting pipeline stages of the Workable account with slug, name, kind and position. Use for \"What pipeline s","description":"List the recruiting pipeline stages of the Workable account with slug, name, kind and position. Use for \"What pipeline stages does Workable have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"subdomain":{"description":"Your Workable account subdomain (for example 'acme' for acme.workable.com).","maxLength":63,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Subdomain","type":"string"}},"required":["subdomain"],"title":"list_stagesArguments","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_members":{"post":{"operationId":"list_members","summary":"List the members of the Workable account with name, email, roles and active flag. Needs an account token or user token. ","description":"List the members of the Workable account with name, email, roles and active flag. Needs an account token or user token. Use for \"Who are the members of my Workable account\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"subdomain":{"description":"Your Workable account subdomain (for example 'acme' for acme.workable.com).","maxLength":63,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Subdomain","type":"string"},"role":{"anyOf":[{"enum":["simple","admin","reviewer"],"type":"string"},{"type":"null"}],"default":null,"description":"Only members with this recruiting role: simple, admin or reviewer.","title":"Role"},"status":{"anyOf":[{"enum":["active","inactive","all"],"type":"string"},{"type":"null"}],"default":"active","description":"Member status: active (default), inactive or all.","title":"Status"},"shortcode":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Only collaborators of the job with this shortcode.","title":"Shortcode"},"email":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only the member with this email address.","title":"Email"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (1 to 100).","title":"Limit"},"since_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only results with an id greater than or equal to this id, for paging (take it from the last item of the previous answer).","title":"Since Id"},"max_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only results with an id less than or equal to this id, for paging.","title":"Max Id"}},"required":["subdomain"],"title":"list_membersArguments","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_events":{"post":{"operationId":"list_events","summary":"List Workable events (calls, interviews, meetings) with title, time, job, candidate, participants and cancelled flag. Ne","description":"List Workable events (calls, interviews, meetings) with title, time, job, candidate, participants and cancelled flag. Needs an account token or user token. Use for \"What interviews are scheduled in Workable\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"subdomain":{"description":"Your Workable account subdomain (for example 'acme' for acme.workable.com).","maxLength":63,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Subdomain","type":"string"},"type":{"anyOf":[{"enum":["call","interview","meeting"],"type":"string"},{"type":"null"}],"default":null,"description":"Event type: call, interview or meeting.","title":"Type"},"start_date":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Only events scheduled after this date or time.","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Only events scheduled before this date or time.","title":"End Date"},"shortcode":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Only events of the job with this shortcode.","title":"Shortcode"},"candidate_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only events of this candidate id.","title":"Candidate Id"},"include_cancelled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to include cancelled events.","title":"Include Cancelled"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (1 to 100).","title":"Limit"},"since_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only results with an id greater than or equal to this id, for paging (take it from the last item of the previous answer).","title":"Since Id"},"max_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only results with an id less than or equal to this id, for paging.","title":"Max Id"}},"required":["subdomain"],"title":"list_eventsArguments","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_departments":{"post":{"operationId":"list_departments","summary":"List the departments of the Workable account with id, name and parent id. Only for accounts with Employee Management ena","description":"List the departments of the Workable account with id, name and parent id. Only for accounts with Employee Management enabled and the r_account scope. Use for \"What departments exist in Workable\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"subdomain":{"description":"Your Workable account subdomain (for example 'acme' for acme.workable.com).","maxLength":63,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Subdomain","type":"string"}},"required":["subdomain"],"title":"list_departmentsArguments","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}}}}