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.
Overview
Where the tool boundary belongs when a model drives the Worklittle API, and which actions your code must gate.
The shape that works
1. Narrow tool surface. Expose the four or five tools the task needs. A job search copilot needs search_jobs, get_job_details, get_job_keywords, and a document tool. 2. Deterministic guards on metered or irreversible actions. Apply, send email, and share documents go behind confirmation or a server-side policy check. 3. IDs in application state. The model quotes ids it received and never reconstructs them. See Multi-turn agents. 4. Enforced grounding. A field absent from the response is "not listed". See Grounding. 5. A budget. See Retries and spend.
Where to draw the tool boundary
| Action | Model decides | Your code decides | | --- | --- | --- | | Which filters to search with | Yes | Cap `limit` | | Whether to fetch details | Yes | Cap fetches per turn | | Whether to generate a resume | Yes | Nothing | | Whether to submit an application | Propose only | Confirm, then submit | | Whether to move a candidate stage | Yes, by tool call | Verify the write succeeded | | Whether to send email | Propose only | Confirm, then send |
Models may choose reads that are cheap and reversible. Anything that spends money, contacts a person, or changes another party's record is proposed by the model and committed by your code.
Reads, writes, and irreversibility
| Tier | Examples | Policy | | --- | --- | --- | | Free reads | `GET /jobs/stats`, `list_applied_jobs`, `list_candidates`, board GETs | Call freely. Retry on failure | | Metered reads | Document generation, first-time AI job descriptions past the free allowance | Budget per turn. Cache within the conversation | | Side-effecting writes | Apply, Apply with AI start, `send_email`, candidate updates, document shares | Gate and log. Make retries idempotent at your layer |