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

List and stage candidates, write notes, schedule interviews, manage employees and offers, and sync an external HRIS.

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.

Use this for pipeline software that moves candidates through stages, recruiter CRM features such as notes and interview scheduling, HRIS sync that mirrors hires, stages, and offers, and internal agents that answer "who is in onsite this week" and then act on the answer. All routes are organization-scoped and need jobs:applications. Changes appear immediately for teammates in Worklittle Business. ATS rows never appear in market 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` | `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` |

Stage lives on the candidate-job pair. Each row from GET /candidates carries candidate_job_id, stage_key, and stage_label. Move a candidate with PATCH /candidates and candidate_job_id plus both stage_key and stage_label (a stage change without both is ignored). Default stage keys: sourced, applied, rejected, phone_screening, technical_interview, team_match, offer, denied, employee, offboarding, alumni. The list response is { candidates, meta } and is paginated only when limit is set. Filters: limit, cursor, sort, q, location, stage_key, posted_job_id, bookmarked=true.

Sync pattern

1. Webhooks for latency. Subscribe to candidate.application_submitted and candidate.stage_changed, then write back through REST. 2. Hourly reconciliation for correctness. List candidates changed since your watermark and compare with your mirror. See Webhooks reliability.

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" \
  -H "Authorization: Bearer $WORKLITTLE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"candidate_job_id":"CANDIDATE_JOB_ID","stage_key":"phone_screening","stage_label":"Phone screening"}'

An application is created by a submit on a hosted job and is visible to the posting organization. An ATS candidate is upserted from it and visible only to that organization. Use /candidates for your own applicants.