skein_claim
Take locks for the caller's MCP session using exactly one of id or ids. A batch contains 1..100 unique issue ids and is atomic: every issue is claimed or the whole transaction rolls back; the successful response preserves caller order. Claim transitions status to in_progress atomically. open/deferred → in_progress in the same transaction; started_at is stamped on first entry. Re-claiming the same in_progress issue from the same session is idempotent (no version bump, no event). Locked by another session → already_claimed. Closed issues cannot be claimed — they return cannot_claim_closed; reopen via skein_update first. Standing tasks return cannot_claim_standing — spawn a child (skein_create parentId=) and claim that. already_claimed always reflects a real other holder; a claim that loses a database serialization race returns serialization_retry instead — nothing was written, so retry the call verbatim. A successful claim emits issue.claimed plus issue.status_changed (reason="claim") when status transitioned, and acknowledges with the post-state: id, status=in_progress, lockedBy, the claim stamp and the version (see verbose for the full issue). A BATCH acknowledges with {results:[…one row per input id, in caller order…], summary:{requested, succeeded, failed}} — the same form skein_close_many uses. That envelope is NOT an invitation to partial success: a batch claim is still all-or-nothing, so failed is 0 on every response you will ever see and a failing batch is a tool error with nothing written. Admins may pass assignee to claim on behalf of another user; non-admins setting assignee to anyone other than themselves get forbidden. ANSWERS WITH AN ACKNOWLEDGEMENT by default — the id, the applied state and the new version, no issue card and no prose — so the expectedVersion cycle continues without a re-read; pass verbose for the full IssueDetail.
Tool call template
This tool declares no required parameters. Add optional parameters from the input schema as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {},
"name": "skein_claim"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | One full hierarchical issue id. Exactly one of id or ids is required. | |
| ids | No | Atomic claim batch: 1..100 unique full hierarchical issue ids. Exactly one of id or ids is required; response order matches this array. | |
| verbose | No | Return the full IssueDetail, prose included. Default false = acknowledgement: `id`, `ok`, `version` plus the post-state stamps that apply (`status`, `assignee`, lock / claim / close stamps) — no issue card and no free text. The version is always there, so the expectedVersion cycle needs no extra read. Details: skein_get_instructions. On a batch it applies to every row; the `{results, summary}` envelope is the same in both modes. | |
| assignee | No | Optional assignee handle. Defaults to caller's username (null or blank counts as omitted). Admin-only when set to a different user — non-admins get `forbidden`. A user UUID that does not name a person who may work in the project is refused with assignee_not_allowed. A non-string value (number, array, object, boolean) is refused with validation_error, code assignee_not_string, and nothing is claimed. |