Connectors · Work & projects
Workable MCP server for AI agents.
actionlake is an MCP gateway: one remote MCP server that connects Claude and other MCP clients to Workable and the rest of your systems. It gives your agent 103 Workable actions (58 reads, 40 writes and 5 that wait for a confirmation) and holds the Workable credential itself, so the agent never does. It paces Workable's limits and records every call.
100,000 free calls a month. No card, no email, no password: press Start a free sandbox on the next screen and keep the key it shows you.
claude mcp add --transport http actionlake https://connect.actionlake.com/mcpdo { action: "workable.employees.list", intent: "check which Workable account is connected"}# /employees · read · 1 upstream call- 103actionsin one signed file
- 58readlook, never change
- 40writecreate and update
- 5wait for a yesdestructive, confirmed first
Set up
Connect Workable in three steps.
- 01
Add actionlake to Claude.
Run the command once in Claude Code; its consent page can create a free sandbox: 100,000 calls a month, no card. In the Claude app, add a custom connector with the URL below and paste your key on the consent page. Creating a new sandbox from the Claude app is not yet tested by us.
https://connect.actionlake.com/mcp - 02
Connect Workable.
Bearer token. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead. actionlake stores what you paste write-only, sealed under your tenant's key.
api_tokenWorkable API access tokenhostWhere your Workable lives: your host
account { op: "connections.requirements", service: "workable" } # free: exactly what to paste, and what is found for you - 03
Make the first call. Check before a write.
Ask in plain words; Claude picks the action. Before anything changes,
checkvalidates the call and prices it, for free.do { action: "workable.employees.list" }# /employees · read · 1 upstream callcheck { action: "workable.employees.create", input: { … } }# free: inputs, permissions, cost and confirmations, nothing sent
Workable at a glance
- Sign-in
- Bearer token. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead.
- You provide
api_token- Setup fields
host- Limits we pace to
- 10 calls per 10 seconds, per connection
- API covered
- Workable (recruiting ATS: jobs, candidates, requisitions, offers, members; HR: employees, time off, time tracking, performance reviews and surveys) API Workable SPI v3, at your Workable instance's API base URL, which you enter when connecting
- Built from
- Workable's documentation, read 22 October 2026workable.readme.ioworkable.readme.io
- Service file
- Version 1.0.0, signed (Ed25519)
- Cached reads
- 58 of 58 reads, for up to 5 minutes; a write clears what it affects
- Shared entities
- 4, so ask can line Workable up with your other systems
- Data
- Processed and stored in Sydney, Australia. No US region yet
Capabilities
What an AI agent can do in Workable.
103 actions in 47 areas. Every one carries its effect, so a key can allow the reads and hold the rest.
- 58readlook, never change
- 40writecreate and update
- 5destructivewait for a confirmation
Candidates
133 read · 10 write · 0 destructive
/candidates · /jobs/:shortcode/candidates · /candidates/:id · /candidates/:id
Requisitions
62 read · 4 write · 0 destructive
/requisitions · /requisitions · /requisitions/:code/approve · /requisitions/:code
Departments
51 read · 2 write · 2 destructive
/departments · /departments · /departments · /departments/:id
Employees
53 read · 2 write · 0 destructive
/employees · /employees · /employees/:id · /employees/:id
Members
51 read · 3 write · 1 destructive
/members · /members/invite · /members/:id/enable · /members
Time entries
51 read · 3 write · 1 destructive
/time-tracking/employees/:id/time-entries · /time-tracking/time-entries · /time-tracking/employees/:id/time-entries/:uuid · /time-tracking/time-entries
Review tasks
41 read · 3 write · 0 destructive
/review-cycles/:reviewCycleId/tasks · /review-cycles/:reviewCycleId/tasks/:id · /review-cycles/:reviewCycleId/tasks/:id/share · /review-cycles/:reviewCycleId/tasks/:id/sign
Jobs
33 read · 0 write · 0 destructive
/jobs · /jobs/:shortcode · /jobs/:shortcode/application_form
39 more areas · 57 actions
- Offers 3
- Review cycles 3
- Review templates 3
- Subscriptions 3
- Survey templates 3
- Accounts 2
- Candidate ratings 2
- Employee documents 2
- Events 2
- Review forms 2
- Reviews 2
- Surveys 2
- Timeoff requests 2
- Candidate activities 1
- Candidate comments 1
- Candidate files 1
- Collaboration permissions 1
- Custom attributes 1
- Disqualification reasons 1
- Employee fields 1
- Job activities 1
- Job custom attributes 1
- Job members 1
- Job questions 1
- Job recruiters 1
- Job stages 1
- Legal entities 1
- Permission sets 1
- Recruiters 1
- Requisition custom attribute choices 1
- Requisition custom attributes 1
- Review cycle answers 1
- Stages 1
- Survey answers 1
- Survey outcomes 1
- Timeoff approvals 1
- Timeoff balances 1
- Timeoff categories 1
- Work schedules 1
Top actions
The Workable API, shaped for agents.
The ids your agent types, what each does, and the one name it shares with other systems. 27 of Workable's 27 action names are shared with at least one other connector, so an agent learns them once.
| Action | What it does | Effect | Same name in |
|---|---|---|---|
workable.employees.list/employees | Returns a collection of your account employees. Required scope: `r_employees`. | read | hr.employee.list61 connectors |
workable.departments.list/departments | Returns a collection of your account departments. Required scope: `r_account`. Accessible with all token types. | read | hr.department.list40 connectors |
workable.members.list/members | Returns a collection of your account members. Required scope: `r_jobs`. Accessible with account tokens and user tokens. | read | identity.user.list474 connectors |
workable.candidates.list/candidates | Returns a collection of the job's candidates. Required scope: `r_candidates`. Accessible with all token types. | read | hr.candidate.list22 connectors |
workable.employees.create/employees | Creates an employee for your account. Required scope: `w_employees`. | write | hr.employee.create51 connectors |
workable.departments.create/departments | Creates a department in your account. Required scope: `w_departments`. Accessible with all token types. | write | hr.department.create32 connectors |
workable.candidates.create/jobs/:shortcode/candidates | Creates a candidate at the specified job. Required scope: `w_candidates`. Accessible with all token types. | write | hr.candidate.create20 connectors |
workable.departments.delete/departments/:id | Deletes a department. Required scope: `w_departments`. Accessible with all token types. | destructive | hr.department.delete23 connectors |
workable.timeoff_requests.create/timeoff/requests | Creates a new time off request. Required scope: `w_timeoff`. Supports both user and account level tokens. | write | hr.leave_request.create32 connectors |
workable.timeoff_requests.list/timeoff/requests | Returns a paginated collection of time off requests. Required scope: `r_timeoff`. Supports both user and account tokens. **Account token** — when… | read | hr.leave_request.list29 connectors |
workable.jobs.list/jobs | Returns a collection of your account jobs. Required scope: `r_jobs`. Accessible with all token types. | read | hr.job_opening.list24 connectors |
workable.time_entries.create/time-tracking/employees/:id/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`. | write | hr.time_clock_entry.create17 connectors |
Try it
Prompts to paste into Claude.
Each one names the Workable actions it will call, so you know what it reads and what it changes before you send it.
- Readread
List everyone in Workable with their department and start date.
calls
workable.employees.list - Writewrite
/employees in Workable. Show me exactly what you will send before you save it.
calls
workable.employees.create
Governance for Workable
Destructive actions wait for a yes.
5 Workable actions are destructive. These are all of them:
- /departments/:id
workable.departments.delete - /subscriptions/:id
workable.subscriptions.delete - /departments/:id/merge
workable.departments.merge - /members/:id
workable.members.deactivate - /time-tracking/employees/:id/time-entries/:uuid
workable.time_entries.archive
A destructive action runs only with confirm: true. Under the human policy the agent cannot confirm for itself: the run stops until a named person approves, in the console or from a signed link in an email. The cap on a key is refused before the call is sent, never after.
/departments/:id?
intent: the user asked me to /departments/:id
account { op: "keys.create", name: "workable-agent", allowed_actions: ["workable.*"], cap_calls: 2000, confirm_policy: "human_for_writes", approval_rules: [ { match: "workable.departments.delete", approver: "[email protected]" }, { match: "workable.subscriptions.delete", approver: "[email protected]" }, { match: "workable.departments.merge", approver: "[email protected]" } ]}Cost
What Workable costs on actionlake.
Every Workable action is one upstream call, the only thing actionlake bills. Searching, check, cost, account and any call Workable refused with 401, 403, 429 or a 5xx are free. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.
- 1upstream call per actionall 103 Workable actions
- 103actions pageeach page of a long list is one call
- 58reads can be cacheda cache hit costs nothing
- 100,000calls a month, freepaid plans from US$49 a month for 250,000
Action index
Every Workable action.
103 actions by area: the id your agent calls, what it does, and its effect.
Candidates13
workable.candidates.copy/candidates/:id/copywriteworkable.candidates.create/jobs/:shortcode/candidateswriteworkable.candidates.create_in_talent_pool/talent_pool/candidateswriteworkable.candidates.disqualify/candidates/:id/disqualifywriteworkable.candidates.get/candidates/:idreadworkable.candidates.get_offer/candidates/:id/offerreadworkable.candidates.list/candidatesreadworkable.candidates.move/candidates/:id/movewriteworkable.candidates.relocate/candidates/:id/relocatewriteworkable.candidates.revert_disqualification/candidates/:id/revertwriteworkable.candidates.update/candidates/:idwriteworkable.candidates.update_custom_attribute/candidates/:id/update_custom_attribute_valuewriteworkable.candidates.update_tags/candidates/:id/tagswrite
Requisitions6
workable.requisitions.approve/requisitions/:code/approvewriteworkable.requisitions.create/requisitionswriteworkable.requisitions.get/requisitions/:codereadworkable.requisitions.list/requisitionsreadworkable.requisitions.reject/requisitions/:code/rejectwriteworkable.requisitions.update/requisitionswrite
Departments5
workable.departments.create/departmentswriteworkable.departments.delete/departments/:iddestructiveworkable.departments.list/departmentsreadworkable.departments.merge/departments/:id/mergedestructiveworkable.departments.update/departmentswrite
Employees5
workable.employees.create/employeeswriteworkable.employees.get/employees/:idreadworkable.employees.get_orgchart/employees/orgchartreadworkable.employees.list/employeesreadworkable.employees.update/employees/:idwrite
Members5
workable.members.deactivate/members/:iddestructiveworkable.members.enable/members/:id/enablewriteworkable.members.invite/members/invitewriteworkable.members.list/membersreadworkable.members.update/memberswrite
Time entries5
workable.time_entries.archive/time-tracking/employees/:id/time-entries/:uuiddestructiveworkable.time_entries.create/time-tracking/employees/:id/time-entrieswriteworkable.time_entries.create_bulk/time-tracking/time-entrieswriteworkable.time_entries.list/time-tracking/time-entriesreadworkable.time_entries.update/time-tracking/employees/:id/time-entries/:uuidwrite
Review tasks4
workable.review_tasks.list/review-cycles/:reviewCycleId/tasksreadworkable.review_tasks.mark_ready/review-cycles/:reviewCycleId/tasks/:idwriteworkable.review_tasks.share/review-cycles/:reviewCycleId/tasks/:id/sharewriteworkable.review_tasks.sign/review-cycles/:reviewCycleId/tasks/:id/signwrite
Jobs3
workable.jobs.get/jobs/:shortcodereadworkable.jobs.get_application_form/jobs/:shortcode/application_formreadworkable.jobs.list/jobsread
Offers3
workable.offers.approve/offers/:id/approvewriteworkable.offers.get/offers/:idreadworkable.offers.reject/offers/:id/rejectwrite
Review cycles3
workable.review_cycles.get/review-cycles/:idreadworkable.review_cycles.get_employee_review/review-cycles/:reviewCycleId/employees/:employeeIdreadworkable.review_cycles.list/review-cyclesread
Review templates3
workable.review_templates.create/review-cycles/templateswriteworkable.review_templates.get/review-cycles/templates/:idreadworkable.review_templates.list/review-cycles/templatesread
Subscriptions3
workable.subscriptions.create/subscriptionswriteworkable.subscriptions.delete/subscriptions/:iddestructiveworkable.subscriptions.list/subscriptionsread
Survey templates3
workable.survey_templates.create/surveys/templateswriteworkable.survey_templates.get/surveys/templates/:idreadworkable.survey_templates.list/surveys/templatesread
Accounts2
workable.accounts.get/accounts/:subdomainreadworkable.accounts.list/accountsread
Candidate ratings2
workable.candidate_ratings.create/candidates/:id/ratingswriteworkable.candidate_ratings.upsert/candidates/:id/ratingswrite
Employee documents2
workable.employee_documents.list/employees/:id/documentsreadworkable.employee_documents.upload/employees/:id/documentswrite
Events2
workable.events.get/events/:idreadworkable.events.list/eventsread
Review forms2
workable.review_forms.get/review-cycles/:reviewCycleId/tasks/:id/forms/:reviewTypereadworkable.review_forms.update/review-cycles/:reviewCycleId/tasks/:id/forms/:reviewTypewrite
Reviews2
workable.reviews.get/review-cycles/:reviewCycleId/reviews/:idreadworkable.reviews.submit/review-cycles/:reviewCycleId/reviews/:idwrite
Surveys2
workable.surveys.get/surveys/:idreadworkable.surveys.list/surveysread
Timeoff requests2
workable.timeoff_requests.create/timeoff/requestswriteworkable.timeoff_requests.list/timeoff/requestsread
Candidate activities1
workable.candidate_activities.list/candidates/:id/activitiesread
Candidate comments1
workable.candidate_comments.create/candidates/:id/commentswrite
Candidate files1
workable.candidate_files.list/candidates/:id/filesread
Collaboration permissions1
workable.collaboration_permissions.getCopy of /stagesread
Custom attributes1
workable.custom_attributes.list/custom_attributesread
Disqualification reasons1
workable.disqualification_reasons.list/disqualification_reasonsread
Employee fields1
workable.employee_fields.list/employee_fieldsread
Job activities1
workable.job_activities.list/jobs/:shortcode/activitiesread
Job custom attributes1
workable.job_custom_attributes.list/jobs/:shortcode/custom_attributesread
Job members1
workable.job_members.list/jobs/:shortcode/membersread
Job questions1
workable.job_questions.list/jobs/:shortcode/questionsread
Job recruiters1
workable.job_recruiters.list/jobs/:shortcode/recruitersread
Job stages1
workable.job_stages.list/jobs/:shortcode/stagesread
Legal entities1
workable.legal_entities.list/legal_entitiesread
Permission sets1
workable.permission_sets.listCopy of /departmentsread
Recruiters1
workable.recruiters.list/recruitersread
Requisition custom attribute choices1
workable.requisition_custom_attribute_choices.list/requisitions/custom_attributes/:id/choicesread
Requisition custom attributes1
workable.requisition_custom_attributes.list/requisitions/custom_attributesread
Review cycle answers1
workable.review_cycle_answers.list/review-cycles/:reviewCycleId/answersread
Stages1
workable.stages.list/stagesread
Survey answers1
workable.survey_answers.list/surveys/:id/answersread
Survey outcomes1
workable.survey_outcomes.get/surveys/:id/outcomesread
Timeoff approvals1
workable.timeoff_approvals.decide/timeoff/approvals/:keywrite
Timeoff balances1
workable.timeoff_balances.list/timeoff/balancesread
Timeoff categories1
workable.timeoff_categories.list/timeoff/categoriesread
Work schedules1
workable.work_schedules.list/work_schedulesread
Questions
The Workable MCP server, answered.
Is there a Workable MCP server for Claude?
Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 103 Workable actions across candidates, requisitions, departments and employees, through the same eight tools it uses for every other connector. actionlake is independent; it is not made or endorsed by Workable.
What do I need to connect Workable?
Workable API access token. Plus your host. The free call account { op: "connections.requirements", service: "workable" } lists exactly what to paste.
Can an AI agent delete or change things in Workable?
Only if its key allows it, and only with an explicit confirmation. 5 Workable actions are destructive, including /departments/:id, /subscriptions/:id and /departments/:id/merge. Each runs only with confirm: true. Under the human confirm policy, or an approval rule on the key, the run waits until a named person approves it.
Will an AI agent use up my Workable API limit?
actionlake paces every call to the limits in the Workable service file: 10 calls per 10 seconds per connection. Repeated reads are answered from cache (58 Workable actions can be), which never reaches Workable.
What does a Workable action cost?
One upstream call, the only unit actionlake bills. A list that pages bills one call per page (103 Workable actions page). Cache hits, searches, dry runs and calls Workable refused with 401, 403, 429 or a 5xx are free. The Free plan includes 100,000 calls a month with no card. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.
Which Workable API does it cover?
The Workable (recruiting ATS: jobs, candidates, requisitions, offers, members; HR: employees, time off, time tracking, performance reviews and surveys) API Workable SPI v3 at your Workable instance's API base URL, which you enter when connecting. It is built from Workable's documentation as read on 22 October 2026. 103 actions in 47 areas, each one in the signed service file (version 1.0.0).
Does actionlake keep my Workable data, and where?
actionlake processes and stores data in Sydney, Australia; there is no US region yet. Reads may be cached for up to 5 minutes, and a write clears the reads it affects. Each run's request and response is kept, sealed, for your plan's trace window: 1 day on Free, 3 days on Starter, 7 days on Pro, 14 days on Team, 30 days on Business and 30 days on Enterprise. Your Workable credential is sealed under your tenant's key, never logged and never returned. Your traffic is not used to train models.
Which AI clients can use it?
Claude Code, tested by us end to end, and the Claude app as a custom connector, tested by us with an existing key. Other MCP clients that support remote servers over Streamable HTTP (MCP revisions 2025-06-18 and 2025-11-25) and OAuth dynamic client registration, or a bearer header, should connect the same way; we have not tested them. Or plain REST, under the same action names.
Give your agent Workable today.
Start free - 100,000 calls/month, no card. No signup. Hard caps on every key. Cached answers are free.