{"openapi":"3.1.0","info":{"title":"100Hires (BYOK) API","version":"0.1.0","description":"100Hires (BYOK) lets an AI assistant read your own 100Hires data through the 100Hires API with a key you supply (100Hires API key). Read-only: 12 tools (list_jobs, get_job, list_job_boards_for_job, list_departments, list_workflows, list_job_statuses, list_rejection_reasons, list_job_categories, list_experience_levels, list_employment_types, list_forms, get_career_site_settings). The BYOK key...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-hires100.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-hires100/docs"},"termsOfService":"https://connectorbay.com/byok-hires100/terms"},"servers":[{"url":"https://byok-hires100.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-hires100/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 account's job postings with status, department, category, employment type, location, remote flag, posted salary","description":"List the account's job postings with status, department, category, employment type, location, remote flag, posted salary range and dates. Descriptions and hiring team are left out. Use for \"Which jobs are open at our company in 100Hires\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"status":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only jobs with this status name (see list_job_statuses), for example Public, Draft or Archived.","title":"Status"},"department_id":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only jobs in this department (id from list_departments).","title":"Department Id"},"q":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Partial match on job title or internal title.","title":"Q"},"updated_after":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only jobs updated at or after this time: Unix seconds or ISO 8601 with offset, for example 2026-05-11T00:00:00Z.","title":"Updated After"},"view":{"anyOf":[{"enum":["summary","full"],"type":"string"},{"type":"null"}],"default":"summary","description":"summary (thin, default) or full; the answer carries the same fields either way (descriptions and hiring team are never returned).","title":"View"},"company_id":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only for keys that can reach several companies: the company to read. Leave empty for the key's own company.","title":"Company Id"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Jobs per page (1 to 100, default 20).","title":"Size"}},"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/get_job":{"post":{"operationId":"get_job","summary":"Get one job posting by numeric id or alias: title, status, department, category, location, salary range, workflow and fo","description":"Get one job posting by numeric id or alias: title, status, department, category, location, salary range, workflow and form ids, dates and public URL. Use for \"Show the details of job 5001 in 100Hires\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Job id (number) or alias, letters digits dash underscore only.","maxLength":200,"title":"Id","type":"string"}},"required":["id"],"title":"get_jobArguments","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_for_job":{"post":{"operationId":"list_job_boards_for_job","summary":"Show which job boards one job is published on, with the Indeed and ZipRecruiter posting URLs when present. Use for \"On w","description":"Show which job boards one job is published on, with the Indeed and ZipRecruiter posting URLs when present. Use for \"On which job boards is job 5001 posted\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Job id (number) or alias.","maxLength":200,"title":"Id","type":"string"}},"required":["id"],"title":"list_job_boards_for_jobArguments","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 company's departments (id and name), usable as a job filter. Use for \"Which departments exist in 100Hires\".","description":"List the company's departments (id and name), usable as a job filter. Use for \"Which departments exist in 100Hires\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"company_id":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only for keys that can reach several companies: the company to read. Leave empty for the key's own company.","title":"Company Id"}},"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_workflows":{"post":{"operationId":"list_workflows","summary":"List the hiring workflows (pipelines) with their ordered stages. Use for \"What hiring pipelines and stages do we have in","description":"List the hiring workflows (pipelines) with their ordered stages. Use for \"What hiring pipelines and stages do we have in 100Hires\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"company_id":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only for keys that can reach several companies: the company to read. Leave empty for the key's own company.","title":"Company Id"}},"title":"list_workflowsArguments","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_statuses":{"post":{"operationId":"list_job_statuses","summary":"List the job status labels the platform uses (for example Public, Draft, Archived). Use for \"Which job statuses can a 10","description":"List the job status labels the platform uses (for example Public, Draft, Archived). Use for \"Which job statuses can a 100Hires job have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_job_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_rejection_reasons":{"post":{"operationId":"list_rejection_reasons","summary":"List the rejection reasons configured for the company (id and name). Use for \"What rejection reasons are set up in 100Hi","description":"List the rejection reasons configured for the company (id and name). Use for \"What rejection reasons are set up in 100Hires\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"company_id":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only for keys that can reach several companies: the company to read. Leave empty for the key's own company.","title":"Company Id"}},"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_job_categories":{"post":{"operationId":"list_job_categories","summary":"List the global job categories (id and name) a job can be classified under. Use for \"Which job categories does 100Hires ","description":"List the global job categories (id and name) a job can be classified under. Use for \"Which job categories does 100Hires offer\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_job_categoriesArguments","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_experience_levels":{"post":{"operationId":"list_experience_levels","summary":"List the experience levels (id and name) a job can require. Use for \"Which experience levels does 100Hires use for jobs\"","description":"List the experience levels (id and name) a job can require. Use for \"Which experience levels does 100Hires use for jobs\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_experience_levelsArguments","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 supported employment types (id and name). Use for \"Which employment types does 100Hires support\".","description":"List the supported employment types (id and name). Use for \"Which employment types does 100Hires support\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"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_forms":{"post":{"operationId":"list_forms","summary":"List application forms with the ids of jobs using them and their questions (text, type, options, required or optional). ","description":"List application forms with the ids of jobs using them and their questions (text, type, options, required or optional). Use for \"What application forms and questions are configured in 100Hires\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"company_id":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only for keys that can reach several companies: the company to read. Leave empty for the key's own company.","title":"Company Id"},"view":{"anyOf":[{"enum":["summary","full"],"type":"string"},{"type":"null"}],"default":"full","description":"full (default, includes questions) or summary (no questions).","title":"View"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Forms per page (1 to 100, default 20).","title":"Size"}},"title":"list_formsArguments","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_career_site_settings":{"post":{"operationId":"get_career_site_settings","summary":"Show the career site settings of the key's company (the language the public career site renders in). Use for \"What langu","description":"Show the career site settings of the key's company (the language the public career site renders in). Use for \"What language is our 100Hires career site set to\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_career_site_settingsArguments","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}}}}