{"openapi":"3.1.0","info":{"title":"Ashby (BYOK) API","version":"0.1.0","description":"Ashby (BYOK) lets an AI assistant read your own Ashby data through the Ashby API with a key you supply (Ashby API key (read permissions for the modules you want)). Read-only: 10 tools (get_api_key_info, list_jobs, list_open_jobs, list_applications, list_candidates, search_candidates, list_openings, list_users, list_departments, list_sources). The BYOK key travels with each request, is used for...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-ashby.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-ashby/docs"},"termsOfService":"https://connectorbay.com/byok-ashby/terms"},"servers":[{"url":"https://byok-ashby.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-ashby/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_api_key_info":{"post":{"operationId":"get_api_key_info","summary":"Show the title, creation time and permission scopes of the Ashby API key in use. Needs the apiKeysRead permission. Use f","description":"Show the title, creation time and permission scopes of the Ashby API key in use. Needs the apiKeysRead permission. Use for \"What can my Ashby API key access\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_api_key_infoArguments","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_jobs":{"post":{"operationId":"list_jobs","summary":"List Ashby jobs with title, status, employment type, department and location ids, requisition id and open and close date","description":"List Ashby jobs with title, status, employment type, department and location ids, requisition id and open and close dates. Needs the jobsRead permission. Use for \"What jobs does Ashby have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return per page (1 to 100).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor: leave out for the first page, or pass the nextCursor value from the previous answer.","title":"Cursor"},"created_after":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only records at this Unix time in milliseconds or later.","title":"Created After"}},"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_open_jobs":{"post":{"operationId":"list_open_jobs","summary":"List only the open Ashby jobs with title, employment type, department and location ids and open date. Needs the jobsRead","description":"List only the open Ashby jobs with title, employment type, department and location ids and open date. Needs the jobsRead permission. Use for \"Which jobs are open in Ashby\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return per page (1 to 100).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor: leave out for the first page, or pass the nextCursor value from the previous answer.","title":"Cursor"}},"title":"list_open_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_applications":{"post":{"operationId":"list_applications","summary":"List Ashby applications with status, candidate name and contact, job, current interview stage, source and dates. Needs t","description":"List Ashby applications with status, candidate name and contact, job, current interview stage, source and dates. Needs the candidatesRead permission. Contains personal data. Use for \"Which Ashby applications are active for job e9ed20fd-d45f-4aad-8a00-a19bfba0083e\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"status":{"anyOf":[{"enum":["Active","Hired","Archived","Lead"],"type":"string"},{"type":"null"}],"default":null,"description":"Only applications with this status: Active, Hired, Archived or Lead.","title":"Status"},"job_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only applications for the job with this id (a UUID).","title":"Job Id"},"created_after":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only records at this Unix time in milliseconds or later.","title":"Created After"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return per page (1 to 100).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor: leave out for the first page, or pass the nextCursor value from the previous answer.","title":"Cursor"}},"title":"list_applicationsArguments","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 Ashby candidates with name, primary email and phone, company, position, tags, source and profile link. Needs the ca","description":"List Ashby candidates with name, primary email and phone, company, position, tags, source and profile link. Needs the candidatesRead permission. Contains personal data. Use for \"Who are the newest candidates in Ashby\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"created_after":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only records at this Unix time in milliseconds or later.","title":"Created After"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return per page (1 to 100).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor: leave out for the first page, or pass the nextCursor value from the previous answer.","title":"Cursor"}},"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/search_candidates":{"post":{"operationId":"search_candidates","summary":"Find Ashby candidates by email address and/or name (up to 100). Needs the candidatesRead permission. Contains personal d","description":"Find Ashby candidates by email address and/or name (up to 100). Needs the candidatesRead permission. Contains personal data. Use for \"Find the Ashby candidate with email jane@example.com\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"email":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Candidate email address to match.","title":"Email"},"name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Candidate name to match.","title":"Name"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many candidates to return (1 to 100).","title":"Limit"}},"title":"search_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_openings":{"post":{"operationId":"list_openings","summary":"List Ashby job openings (headcount slots) with state, open and close dates and archive flag. Needs the jobsRead permissi","description":"List Ashby job openings (headcount slots) with state, open and close dates and archive flag. Needs the jobsRead permission. Use for \"What openings are open in Ashby\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"created_after":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only records at this Unix time in milliseconds or later.","title":"Created After"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return per page (1 to 100).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor: leave out for the first page, or pass the nextCursor value from the previous answer.","title":"Cursor"}},"title":"list_openingsArguments","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 the Ashby users with name, email, global role and enabled flag. Needs the organizationRead permission. Use for \"Who","description":"List the Ashby users with name, email, global role and enabled flag. Needs the organizationRead permission. Use for \"Who has an Ashby account\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"include_deactivated":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to include deactivated users.","title":"Include Deactivated"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return per page (1 to 100).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor: leave out for the first page, or pass the nextCursor value from the previous answer.","title":"Cursor"}},"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/list_departments":{"post":{"operationId":"list_departments","summary":"List the Ashby departments and teams with name, parent and archive flag. Needs the organizationRead permission. Use for ","description":"List the Ashby departments and teams with name, parent and archive flag. Needs the organizationRead permission. Use for \"What departments does Ashby have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"include_archived":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to include archived departments.","title":"Include Archived"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results to return per page (1 to 100).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor: leave out for the first page, or pass the nextCursor value from the previous answer.","title":"Cursor"}},"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_sources":{"post":{"operationId":"list_sources","summary":"List the candidate sources defined in Ashby with title and archive flag. Needs the hiringProcessMetadataRead permission.","description":"List the candidate sources defined in Ashby with title and archive flag. Needs the hiringProcessMetadataRead permission. Use for \"Which candidate sources are set up in Ashby\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"include_archived":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to include archived sources.","title":"Include Archived"}},"title":"list_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}}}}