OpenAICodex

Connect Codex to Workable

Run Codex as a hosted agent in NoClick with Workable wired into its tools handle. It can use Workable directly while it works. No glue code, nothing to install. Click below to open a ready-to-run agent and connect your account.
Loading preview…
Opens a workflow with 82 tools ready to use.

Set up in minutes

The open button drops you into a guided setup. It asks exactly this, nothing else:
  1. Choose where it runs

    On your computer through your own Codex, or hosted in the cloud. The rest of setup adapts to your choice:

  2. Pick what it can do in Workable

    A preset of real Workable operations. Each one becomes a tool the agent can call, and it can't touch anything outside the list.

  3. Connect Workable

    One sign-in. The agent acts through your account, scoped to the operations you picked.

  4. Add your personal MCP link

    The last step mints a private MCP URL for this agent and walks you through exactly this, with your real link filled in. The page flips to Connected the moment your Codex first calls in. Codex connects when a session starts — run codex, or restart a running one (in the Codex app, Restart).

    Run this in your terminal. The Codex app shares its config, so it gets the server too

    $codex mcp add noclick --url https://mcp.noclick.app/s/<your-link>

    <your-link> is your personal server URL — setup mints it for you.

Tools Codex gets

Pick the operations you want and each becomes a tool the agent can call directly while it works.

Workable

82 tools
GET /accounts

Returns a collection of all the accounts you have access to. Required scope: `r_jobs`. Accessible with all token types.

GET /accounts/{subdomain}

Returns the specified account. Required scope: `r_jobs`. Accessible with all token types.

GET /permission_sets

Returns a collection of your account departments. Required scope: `r_account`. Accessible with all token types.

GET /members

Returns a collection of your account members. Required scope: `r_jobs`. Accessible with account tokens and user tokens.

PUT /members

Updates a member. Required scope: `w_members`. Accessible with all token types.

POST /members/invite

Invites a member. Required scope: `w_members`. Accessible with all token types.

DELETE /members/{id}

Deactivates a member. Required scope: `w_members`. Accessible with all token types.

POST /members/{id}/enable

Restores a deactivated member. Required scope: `w_members`. Accessible with all token types.

GET /recruiters

Returns a collection of your account external recruiters. Required scope: `r_jobs`. Accessible with account tokens and user tokens.

GET /stages

Returns a collection of your recruitment pipeline stages. Required scope: r_jobs. Accessible with all token types.

GET /collaboration_permissions

Returns a collection of your recruitment pipeline stages. Required scope: r_jobs. Accessible with all token types.

GET /departments

Returns a collection of your account departments. Required scope: `r_account`. Accessible with all token types.

POST /departments

Creates a department in your account. Required scope: `w_departments`. Accessible with all token types.

PUT /departments

Updates an existing department in your account. Required scope: `w_departments`. Accessible with all token types.

POST /departments/{id}/merge

Merges an existing department with a target one in your account. Required scope: `w_departments`. Accessible with all token types.

DELETE /departments/{id}

Deletes a department. Required scope: `w_departments`. Accessible with all token types.

GET /legal_entities

Returns a collection of your account legal entities. Required scope: `r_account`. Accessible with all token types.

GET /disqualification_reasons

Returns a collection of account’s disqualification reasons. Required scope: `r_jobs`. Accessible with all token types.

GET /requisitions

Returns a collection of your account requisitions. Required scope: `r_requisitions`. Accessible with all token types for accounts with Hiring Plan.

GET /requisitions/{code}

Returns a requisition. Required scope: `r_requisitions`. Accessible with all token types for accounts with Hiring Plan.

POST /requisitions

Creates a requisition. Required scope: `w_requisitions`. For accounts with Hiring Plan.

PATCH /requisitions/{id}

Updates a requisition. Required scope: `w_requisitions`. For accounts with Hiring Plan.

PATCH /requisitions/{code}/approve

Approves a requisition (must be in a compatible state). Required scope: `w_requisitions`. For accounts with Hiring Plan.

PATCH /requisitions/{code}/reject

Rejects a requisition (must be in a compatible state). Required scope: `w_requisitions`. For accounts with Hiring Plan.

GET /offers/{id}

Returns an offer. Required scope: `r_offers`. Accessible only with user tokens.

PATCH /offers/{id}/approve

Approves an offer (must be in a compatible state). Required scope: `w_offers`. Accessible only with user tokens.

PATCH /offers/{id}/reject

Rejects an offer (must be in a compatible state). Required scope: `w_offers`. Accessible only with user tokens.

GET /jobs

Returns a collection of your account jobs. Required scope: `r_jobs`. Accessible with all token types.

GET /jobs/{shortcode}

Returns the details of the specified job. Required scope: `r_jobs`. Accessible with all token types.

GET /jobs/{shortcode}/activities

Returns the activity stream of the given job. Requires scope `r_candidates`. Accessible with all token types.

GET /jobs/{shortcode}/application_form

Returns the application form details for the specified job. Required scope: `r_jobs`. Accessible with all token types.

GET /jobs/{shortcode}/questions

Returns the questions for the specified job. Required scope: `r_jobs`. Accessible with all token types.

GET /jobs/{shortcode}/stages

Returns a collection of your recruitment pipeline stages. Required scope: `r_jobs`. Accessible with all token types.

GET /jobs/{shortcode}/custom_attributes

Returns a collection of the custom attributes that are relevant to a specific job. Required scope: `r_jobs`. Accessible with all token types.

GET /jobs/{shortcode}/members

Returns a collection of your account members. Required scope: `r_jobs`. Accessible with account tokens and user tokens.

GET /jobs/{shortcode}/recruiters

Returns a collection of your account external recruiters. Required scope: `r_jobs`. Accessible with account tokens and user tokens.

GET /candidates

Returns a collection of the job's candidates. Required scope: `r_candidates`. Accessible with all token types.

POST /jobs/{shortcode}/candidates

Creates a candidate at the specified job. Required scope: `w_candidates`. Accessible with all token types.

POST /talent_pool/{stage}/candidates

Creates a candidate in the talent pool. Required scope: `w_candidates`. Accessible with all token types.

GET /candidates/{id}

Returns specified candidate. Required scope: `r_candidates`. Accessible with all token types.

PATCH /candidates/{id}

Partially updates a candidate. Required scope: `w_candidates`. Accessible with all token types.

GET /candidates/{id}/activities

Returns the activity stream of the given candidate. Required scope: `r_candidates`. Accessible with all token types.

GET /candidates/{id}/files

Returns the files associated with the given candidate. Accessible with all token types.

GET /candidates/{id}/offer

Returns the offer related data of the given candidate. Required scope: `r_candidates`. Accessible with all token types.

POST /candidates/{id}/comments

Creates a comment on the candidate's timeline. Required scope: `w_candidates` or `w_comments`. Accessible with all token types.

PUT /candidates/{id}/tags

Updates candidate's tags. Required scope: `w_candidates`. Accessible with all token types.

POST /candidates/{id}/disqualify

Disqualifies a candidate. Required scope: `w_candidates`. Accessible with all token types.

POST /candidates/{id}/revert

Reverts a candidate's disqualification. Required scope: `w_candidates`. Accessible with all token types.

POST /candidates/{id}/copy

Copies a candidate to another job. Required scope: `w_candidates`. Accessible with all token types.

POST /candidates/{id}/relocate

Moves a candidate to another job. Required scope: `w_candidates`. Accessible with all token types.

POST /candidates/{id}/move

Moves the candidate to another stage. Required scope: `w_candidates`. Accessible with all token types.

POST /candidates/{id}/ratings

Creates a rating for a candidate. Required scope: `w_candidates`. Accessible with all token types.

PUT /candidates/{id}/ratings

Updates or creates an evaluation for a candidate. Required scope: `w_candidates`. Accessible with all token types. If an evaluation already exists for the given member on the given stage, it is updated. Otherwise, a new one is created. The stage defaults to the candidate's current stage when stage_id is not provided.

PATCH /candidates/{id}/update_custom_attribute_value

Updates a custom attribute value for a candidate. Required scope: `r_jobs`. Accessible with all token types.

GET /custom_attributes

Returns a collection of the account's custom attributes. Required scope: `r_jobs`. Accessible with all token types.

GET /events

Returns a collection of events. Required scope: `r_jobs`. Accessible with account tokens and user tokens.

GET /events/{id}

Returns date for the identified event. Required scope: `r_jobs`. Accessible with account tokens and user tokens.

GET /employees

Returns a collection of your account employees. Required scope: `r_employees`.

GET /employee_fields

Returns a collection of your account employee_fields. Required scope: `r_account`.

GET /employees/{id}

Returns all relevant information for a specific employee. Required scope: `r_employees`. Accessible with user access tokens and with account level tokens that provide member_id query param.

GET /employees/{id}/documents

Returns a collection of the uploaded documents for a specific employee. Required scope: `r_employees`. Accessible with user level tokens and account level tokens that provide the member_id query param. Use the `type` query parameter to select which class of documents to return. `type=i_9_form_document` is only accessible to the employee who owns the document or a member with the `SignaturesView` permission; other callers receive `403 Forbidden`.

GET /employees/orgchart

Returns org chart nodes for the account. Required scope: `r_employees`. Supports account tokens. Each node contains an employee `content` payload, its `parent_id` (the manager's SPI key), and `direct_reports_count` (loaded only at the currently requested level). When no filters and no `employee_id` are provided, the response contains top-level employees (those without a manager) together with their first-level direct reports. Provide `employee_id` to return the direct reports of a specific emp

GET /work_schedules

Returns a collection of your account work_schedules. Required scope: `r_account`.

POST /employees

Creates an employee for your account. Required scope: `w_employees`.

PATCH /employees/{id}

Updates an existing employee. Required scope: `w_employees`.

POST /employees/{id}/documents

Uploads a list of documents for a specific employee. Required scope: `w_employees`.

GET /timeoff/categories

Lists the time off categories configured for your account. Required scope: `r_timeoff`.

POST /timeoff/requests

Creates a new time off request. Required scope: `w_timeoff`. Supports both user and account level tokens.

GET /timeoff/requests

Returns a paginated collection of time off requests. Required scope: `r_timeoff`. Supports both user and account tokens. **Account token** — when `employee_id`/`employee_ids` are omitted, returns all requests in the account. **User token** — when `employee_id`/`employee_ids` are omitted, returns the user's own requests plus all direct and indirect descendants' requests. A user with the **time off requests view** permission receives all account requests.

PATCH /timeoff/approvals/{key}

Approves or rejects a pending time off approval. Required scope: `w_timeoff`.

GET /timeoff/balances

Returns a collection of your time off balances concerning all time off categories. Required scope: `r_timeoff`.

GET /time-tracking/time-entries

Returns a paginated list of time entries. Required scope: `r_time_tracking`. Supports both user and account tokens. **Account token** — when `employee_ids` is omitted, returns all entries in the account. **User token** — when `employee_ids` is omitted, returns the user's own entries plus all direct and indirect descendants' entries. A user with the **time tracking manage** permission receives all account entries.

POST /time-tracking/employees/{key}/time-entries

Creates a single time entry for the specified employee. Supports five clock modes. Supports both user and account tokens. Required scope: `w_time_tracking`.

POST /time-tracking/time-entries

Bulk creates complete time entries for one or more employees (max 500). Supports both user and account tokens. Required scope: `w_time_tracking`.

PATCH /time-tracking/employees/{key}/time-entries/{uuid}

Updates an existing time entry. At least one of `clock_in_time`, `clock_out_time`, or `note` must be provided. Supports both user and account tokens. Required scope: `w_time_tracking`.

DELETE /time-tracking/employees/{key}/time-entries/{uuid}

Archives a time entry (soft-delete). Returns 204 No Content on success. Supports both user and account tokens. Required scope: `w_time_tracking`.

GET /review-cycles/templates

Returns the account's performance review master templates. Required scope: `r_reviews`. Requires a user token with permission to view performance templates. Only the latest, non-deleted master templates in the `performance_review` category are returned. Pagination is optional via `limit` and `offset`; when omitted every template is returned.

GET /review-cycles/templates/{id}

Returns a single performance review master template by its id. Required scope: `r_reviews`. Requires a user token with permission to view performance templates. Only the latest, non-deleted master template in the `performance_review` category is returned. Templates belonging to a different category (e.g. surveys) return `404`.

POST /review-cycles/templates

Creates a performance review master template for the account. Required scope: `w_reviews`. Requires a user token with permission to manage performance templates. The `questionnaire` is normalised before being persisted — `position` is auto-assigned when omitted, and `type` / `semantic_type` accept either snake_case (e.g. `star_rated`) or PascalCase (e.g. `StarRated`). The response is returned in snake_case.

GET /subscriptions

Subscribe to an event. Required scope: `r_candidates` or `r_employees`. Accessible with all token types.

POST /subscriptions

Subscribe to an event. Required scope: `r_candidates` or `r_employees`. Accessible with all token types.

DELETE /subscriptions/{id}

Unsubscribe from an event. Required scope: `r_candidates` or `r_employees`. Accessible with all token types.

About Codex

Codex is OpenAI's command-line coding agent. NoClick runs it as a hosted agent and lets you connect your apps to it as tools, turning it from a coding assistant into an operator that can act across your systems. Connect an integration to the agent and Codex can query, create, and update records in that app directly. You keep the Codex experience and give it real reach into the tools your team already uses.
Fast, capable code generation and editing
Good at well-scoped, concrete tasks
Strong at API and data manipulation
Familiar to teams already on OpenAI tooling

Frequently asked questions

More ways to connect

Open your Codex agent in one click.

NoClick runs Codex for you with Workable wired in as tools. Connect your account and run.