{"openapi":"3.1.0","info":{"title":"Deel ATS (BYOK) API","version":"0.1.0","description":"Deel ATS (BYOK) lets an AI assistant read your own Deel ATS data through the Deel ATS API with a key you supply (Deel API token with the ats:read scope). Read-only: 10 tools (list_jobs, list_job_boards, list_job_postings, list_locations, list_departments, list_employment_types, list_application_sources, list_tags, list_rejection_reasons, list_email_templates). The BYOK key travels with each...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-deel-ats.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-deel-ats/docs"},"termsOfService":"https://connectorbay.com/byok-deel-ats/terms"},"servers":[{"url":"https://byok-deel-ats.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-deel-ats/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 the organization's ATS job openings with status, teams, departments, locations, employment types, interview stages ","description":"List the organization's ATS job openings with status, teams, departments, locations, employment types, interview stages and application count (hiring team members and pay ranges are left out). Use for \"Which jobs are open in my Deel ATS\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"search":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Text to search for in job records.","title":"Search"},"interview_plan_id":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Only jobs that use this interview plan (UUID).","title":"Interview Plan Id"},"updated_after":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only jobs updated after this ISO 8601 time, for example 2026-09-01T00:00:00Z.","title":"Updated After"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from next_cursor of the previous answer; leave empty for the first page.","title":"Cursor"},"limit":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Maximum records per page (the API default is 20).","title":"Limit"}},"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_job_boards":{"post":{"operationId":"list_job_boards","summary":"List the job boards the organization publishes to (internal career page, external career page, LinkedIn) with status and","description":"List the job boards the organization publishes to (internal career page, external career page, LinkedIn) with status and career page settings. Use for \"Which job boards does my Deel account publish to\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Maximum records per page (the API default is 20).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from next_cursor of the previous answer; leave empty for the first page.","title":"Cursor"}},"title":"list_job_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/list_job_postings":{"post":{"operationId":"list_job_postings","summary":"List the job postings on one job board with title, job id, publication state per board and whether pay is shown. Use for","description":"List the job postings on one job board with title, job id, publication state per board and whether pay is shown. Use for \"Which job postings are published on my Deel career page\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"job_board_id":{"description":"Job board id (UUID) from list_job_boards.","maxLength":200,"title":"Job Board Id","type":"string"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from next_cursor of the previous answer; leave empty for the first page.","title":"Cursor"},"limit":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Maximum records per page (the API default is 20).","title":"Limit"}},"required":["job_board_id"],"title":"list_job_postingsArguments","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_locations":{"post":{"operationId":"list_locations","summary":"List the work locations defined for the ATS with city, country code, remote flag and location group. Use for \"Which hiri","description":"List the work locations defined for the ATS with city, country code, remote flag and location group. Use for \"Which hiring locations are set up in Deel ATS\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"include_archived":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True also returns archived locations; they are excluded by default.","title":"Include Archived"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from next_cursor of the previous answer; leave empty for the first page.","title":"Cursor"},"limit":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Maximum records per page (the API default is 20).","title":"Limit"}},"title":"list_locationsArguments","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 available when creating or filtering jobs. Use for \"Which departments exist in Deel ATS\".","description":"List the departments available when creating or filtering jobs. Use for \"Which departments exist in Deel ATS\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"include_archived":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True also returns archived departments; they are excluded by default.","title":"Include Archived"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from next_cursor of the previous answer; leave empty for the first page.","title":"Cursor"},"limit":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Maximum records per page (the API default is 20).","title":"Limit"}},"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}},"/v1/tools/list_employment_types":{"post":{"operationId":"list_employment_types","summary":"List the employment types (for example full-time or contractor) that jobs can use. Use for \"Which employment types can I","description":"List the employment types (for example full-time or contractor) that jobs can use. Use for \"Which employment types can I use for Deel ATS jobs\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from next_cursor of the previous answer; leave empty for the first page.","title":"Cursor"},"limit":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Maximum records per page (the API default is 20).","title":"Limit"}},"title":"list_employment_typesArguments","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_application_sources":{"post":{"operationId":"list_application_sources","summary":"List the sources an application can come from (career page, referral, job board and so on). Use for \"Where do Deel ATS a","description":"List the sources an application can come from (career page, referral, job board and so on). Use for \"Where do Deel ATS applications come from\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from next_cursor of the previous answer; leave empty for the first page.","title":"Cursor"},"limit":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Maximum records per page (the API default is 20).","title":"Limit"}},"title":"list_application_sourcesArguments","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 candidate tags defined in the ATS (labels only, optionally with how many candidates carry each). Use for \"Which","description":"List the candidate tags defined in the ATS (labels only, optionally with how many candidates carry each). Use for \"Which candidate tags exist in Deel ATS\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"search_text":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only tags whose label contains this text (case-insensitive).","title":"Search Text"},"include_counts":{"anyOf":[{"enum":["true","false"],"type":"string"},{"type":"null"}],"default":"false","description":"True adds the number of candidates per tag.","title":"Include Counts"},"include_archived":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True also returns archived tags; they are excluded by default.","title":"Include Archived"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from next_cursor of the previous answer; leave empty for the first page.","title":"Cursor"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Maximum tags per page (1 to 100, default 20).","title":"Limit"}},"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}},"/v1/tools/list_rejection_reasons":{"post":{"operationId":"list_rejection_reasons","summary":"List the configured reasons for archiving candidates, rejecting offers, closing jobs or cancelling interviews. Use for \"","description":"List the configured reasons for archiving candidates, rejecting offers, closing jobs or cancelling interviews. Use for \"What rejection reasons are configured in Deel ATS\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"reason_group_slug":{"description":"Which kind of reason to list.","enum":["CANDIDATE_ARCHIVATION","OFFER_REJECTION","JOB_CLOSURE","INTERVIEW_CANCELLATION"],"title":"Reason Group Slug","type":"string"},"search":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only reasons whose label contains this text.","title":"Search"},"include_archived":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True also returns archived reasons; they are excluded by default.","title":"Include Archived"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from next_cursor of the previous answer; leave empty for the first page.","title":"Cursor"},"limit":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Maximum records per page (the API default is 20).","title":"Limit"}},"required":["reason_group_slug"],"title":"list_rejection_reasonsArguments","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_email_templates":{"post":{"operationId":"list_email_templates","summary":"List the published ATS email templates (id and title; the message text is not returned). Use for \"Which candidate email ","description":"List the published ATS email templates (id and title; the message text is not returned). Use for \"Which candidate email templates does Deel ATS have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"updated_after":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only templates updated after this ISO 8601 time.","title":"Updated After"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from next_cursor of the previous answer; leave empty for the first page.","title":"Cursor"},"limit":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Maximum records per page (the API default is 20).","title":"Limit"}},"title":"list_email_templatesArguments","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}}}}