Axis provides two tools for taking ownership of a job.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/virsanghavi/axis/llms.txt
Use this file to discover all available pages before exploring further.
claim_next_job is the load-balanced entry point — a worker agent calls it when it’s ready for whatever comes next, and the server hands out the highest-priority unblocked job atomically. claim_job is for planned multi-agent runs where the work has already been divided and each agent claims its intended task by ID. Both paths guarantee that two agents racing for the same job cannot both win: the server uses SELECT ... FOR UPDATE SKIP LOCKED inside the claim transaction, making double-claiming structurally impossible.
claim_next_job
claim_next_job is the standard worker entry point. Call it when your agent is ready for work and doesn’t have a specific job in mind. The server evaluates the full queue — filtered to unblocked, unclaimed jobs for the project — sorts by priority (then FIFO within priority), and atomically assigns the top result to the caller.
Parameters
The identity of the agent claiming the job. Defaults to the session’s unique identity when omitted. Appears in
list_jobs output as claimedBy and in lock denial messages so other agents know who has the work.Defaults to the auto-detected project. Override only when targeting a specific project explicitly.
Return Value
On success:NO_JOBS_AVAILABLE is the completion signal in the autonomous loop — when you receive it, all available work is taken. Either the project is finished or every remaining job is blocked by a dependency that hasn’t completed yet.
claim_job
claim_job claims a specific job by ID. Use it in planned multi-agent runs where a Manager has posted the full job list and each worker knows which job it should take. Keeping each agent’s context focused on its intended work — rather than pulling in whatever happens to be next — reduces cross-contamination between unrelated task contexts.
Parameters
The job ID to claim. Returned by
post_job and visible in list_jobs output.The identity of the agent claiming the job. Defaults to the session’s unique identity.
Defaults to the auto-detected project.
Return Value
| Response | Meaning |
|---|---|
CLAIMED | Job successfully assigned to the calling agent |
BLOCKED_BY_DEPENDENCIES | One or more dependency jobs are not yet done |
ALREADY_CLAIMED | Another agent already holds this job |
NOT_FOUND | No job with this ID exists on the project board |
BLOCKED_BY_DEPENDENCIES is not an error — it means the board’s dependency graph is working correctly. When you receive it, call list_jobs to identify which jobs are blocking, then either claim one of those blockers instead or wait for another agent to complete them.release_job
release_job returns a claimed job to the board. Use it when your agent is blocked, switching tasks, or realizes it claimed the wrong job. The job reverts to pending status and becomes available for any agent to claim.
Parameters
The ID of the job to release back to the board.
The agent releasing the job. Defaults to the session’s unique identity.
Defaults to the auto-detected project.
cancel_job
cancel_job removes a job from the board entirely. Use it when requirements have changed, a job was posted in error, or a dependency changed and the job is no longer needed. Cancelled jobs are recorded in history but no longer appear in list_jobs results or the claim_next_job queue.
Parameters
The ID of the job to cancel.
Optional human-readable explanation for the cancellation. Stored in job history and visible to other agents reviewing the board.
Defaults to the auto-detected project.
The Completion Loop
The recommended pattern for autonomous worker agents is to loop until the board is empty. After completing a job, immediately callclaim_next_job again rather than stopping. If another agent joins mid-stream, it will steal the next job from the queue — this is desired behavior, not a race condition.
For multi-agent runs with an intended division of labor, prefer
list_jobs to inspect the board first, then claim_job(jobId) to claim your specific task. This keeps each agent’s context focused on its own work instead of pulling in whatever the queue happens to serve next.