Coding agent documentation index Fetch the complete documentation index at: https://docs.worklittle.com/docs-agent-manifest.json Use this file to discover all available pages before exploring further.
ATS automation
Drive your hiring pipeline from code: list and stage candidates, write notes, schedule interviews, manage employees and offers, and sync an external HRIS with webhooks.
Worklittle stays the source of truth. Anything a script or agent writes appears immediately for teammates in Worklittle Business, and anything they change is visible to your integration.
When to use
Pipeline software that moves candidates through stages on a schedule or a trigger. Recruiter CRM features such as notes, bookmarks, reminders, and interview scheduling. HRIS sync where an external system needs to mirror hires, stages, and offers. Internal agents that answer "who is in onsite this week" and then act on the answer.
All of these are organization-scoped and require jobs:applications. ATS rows never surface in market job search. Reference: Manage candidates.
The write surface
| Area | REST | MCP | | --- | --- | --- | | Candidates and stages | `GET` / `PATCH /candidates`, `/candidates/:id` | `list_candidates`, `get_candidate_profile`, `update_candidates` | | Notes | `/candidate-notes` routes | `create_candidate_notes`, `list_candidate_notes`, `upload_candidate_note_attachment` | | Interviews | Candidate interview routes | `create_candidate_interview`, `update_candidate_interview`, `create_interview_answer` | | Employees | `/employees` | `list_employees`, `create_employee`, `create_employee_employment_period` | | Offers | `/offers` | `create_offer`, `update_offer` | | Email | `/email-messages`, `/email/send` | `set_email_messages`, `send_email` | | Applications (read) | `/business/jobs/:id/applications` | `list_job_applications`, `get_job_application` |
Moving a candidate uses candidate_job_id together with stage_key or stage_label, because a person can sit in more than one pipeline. List filters worth knowing: limit, cursor, sort, q, location, stage_key, posted_job_id, and bookmarked=true.
Architecture
Two patterns cover almost every ATS integration.
Event driven, preferred. Register a webhook endpoint, react to candidate.application_submitted and candidate.stage_changed, and write back through the REST routes. No polling, near-real-time, and cheap.
Scheduled reconciliation, as a backstop. Once an hour, list candidates changed since your last watermark and compare against your mirror. This catches anything a webhook retry never delivered. Keep it paginated and keep the window narrow.
curl -s "https://api.worklittle.com/candidates?limit=25&stage_key=applied" \
-H "Authorization: Bearer $WORKLITTLE_API_KEY"
curl -s -X PATCH "https://api.worklittle.com/candidates/CANDIDATE_ID" \
-H "Authorization: Bearer $WORKLITTLE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"stage_key":"phone_screen"}'
Run both. Webhooks give you latency, reconciliation gives you correctness.
Applications and candidates
Two related records get conflated constantly, so it is worth being precise.
| Record | Created by | Visible to | | --- | --- | --- | | **Application** | A submit on a hosted job or board | The posting organization | | **ATS candidate** | Upserted from an application when the job belongs to an org | That organization only |
They are not the same row and they do not share access rules. If you are looking for your own applicants, use /candidates.
Pitfalls
| Pitfall | What to do instead | | --- | --- | | Using `jobs:read` for ATS routes | ATS needs `jobs:applications` | | Polling `/candidates` in a tight loop | Subscribe to webhooks and reconcile hourly | | Listing without `limit` and assuming the set is small | Always paginate with `limit` plus `cursor` | | Updating a candidate without `candidate_job_id` | Stage lives on the candidate-job pair | | Telling a user "moved to onsite" without calling the tool | See [Prompting ATS agents](/use-cases/prompting-ats) | | Assuming a 200 from your webhook handler means the work finished | Ack fast, process async, dedupe by delivery id |
Related docs
Manage candidates, Post a job, Manage organization, Webhooks, Webhook integration. Delivery guarantees: Webhooks reliability.