What a person can do
Every act a person takes on a Task, from the claim to the attestation, what it carries, whether it is paid, and what it does to the job. Each one is the person's own, in the delivery portal or the member CLI, and never an MCP tool or a key's.
| Act | Verb | In the portal | Carries | Paid | The job |
|---|---|---|---|---|---|
| claim | claim | Claim | nothing | no | the Task holds for this member until held_until, and leaves every other feed |
| pass | none | Pass · free | an optional reason | no, and never scored | counted against the Task, never the member; under cascade the next member is offered it at once |
| clear | start | Clear | each clear statement, word for word | no | the conflict check runs again, and the packet opens to this member alone |
| attest (approve, sign, done) | complete | Sign, Attest or Adopt | { member, credential, region, hash, rules }, frozen on the record | yes | the gate commits it, and a reserved act is now performed |
| attest, qualified | complete | Sign, with a reservation | the same, plus a reservation the member writes, which travels with the output | yes | the gate commits it, and the reservation is part of the deliverable |
| attest, edited | complete | Sign, with the file edited | a revised file: the attestation binds the hash before and after, and the record reads sign · person · edited · sha256:a→b | yes | the gate commits the revised file; a step may ask for an AI recheck of the edit first |
| send back | complete | Send back | a defects note, required, and the step it returns to | yes | returns to the step named, by default the one before |
| decline | complete | Decline | a reasoned memo on the merits, required, for the client alone | yes, and never scored | waits on the client's direction: another member, or an end |
| arrive | start | Check in | the device's fix, read only now and at completion | no | in a work register, the Task reads on_site |
| complete | complete | Complete | every evidence item the step names, hashed together | yes | the gate commits the visit, and the charge can release |
| complete, party absent | complete | No one came | the member's own evidence, after site.grace | yes, the full fee | the Task is done · party_absent; nothing waits on the party |
| party silent | complete | none: the clock writes it | the member's evidence, after site.wait with a party-held item unfinished | yes, the full fee | the Task is done · completed · party_silent; the client may contest it |
| step aside (recuse) | none | Step aside | the parties a conflict names, added to the member's own ledger | no, and never scored | the Task reopens at once, and the member is screened from every Task on the subject |
| release | unassign | Give it back · free | nothing | no | the Task opens again at its fee, never scored |
| extend | none | Extend my hold, once | nothing | no | the hold runs as long again, once, never past the due date |
| question, note, flag | block for a question | Ask, Post a note, Flag | a message in the job's thread | no | a question pauses the deadline and the hold until the party answers (unblock); a flag is a signal the owner sees, and never blocks |
| contest | escalate | Contest the send-back | a reason, against a send-back their own attested work received | no | a credentialed peer rules it when a rules row reserves the act, and staff rule the rest; only an upheld send-back counts on the track record |
Decline or step aside?
| Decline | Step aside | |
|---|---|---|
| Why | the work, on its merits: the member won't put their name to it as it stands | the member: a conflict with a party, before they read the matter |
| What they write | a memo the client alone reads, saying what's wrong | the parties the conflict names, hashed into their own ledger |
| Paid | yes, at the Task's fee | no |
| Scored | never | never |
| The job | waits on the client's direction: another member, or an end | the Task reopens at once to everyone else, and the member is kept off the subject |
| In the legal example | "Claim 1 as drafted doesn't read on the one-handed lock in the disclosure" | a party they represent in another matter |
| Op | API | CLI | MCP | SDK | Who |
|---|---|---|---|---|---|
task.claim | POST /tasks/:id/claim | tasks claim <task> | never | never | member session |
task.pass | POST /tasks/:id/pass | tasks pass <task> <reason> | never | never | member session |
task.clear | POST /tasks/:id/clear | tasks clear <task> | never | never | member session |
task.attest | POST /tasks/:id/attest | tasks attest <task> k=v … | never | never | member session |
task.send_back | POST /tasks/:id/send_back | tasks send-back <task> <defects> | never | never | member session |
task.decline | POST /tasks/:id/decline | tasks decline <task> <memo> | never | never | member session |
task.release | POST /tasks/:id/release | tasks release <task> | never | never | member session |
task.message | POST /tasks/:id/messages | tasks message <task> <kind> <text> | never | never | member session |
task.contest | POST /tasks/:id/contest, POST /owner/tasks/:id/contest | tasks contest <task> <reason> | never | never | member session, owner session |
task.recuse | POST /tasks/:id/recuse | tasks recuse <task> | never | never | member session |
task.extend | POST /tasks/:id/extend | tasks extend <task> | never | never | member session |
task.arrive | POST /tasks/:id/arrive | tasks arrive <task> | never | never | member session |
task.complete | POST /tasks/:id/complete | tasks complete <task> k=v … | never | never | member session |
| App | Where |
|---|---|
| delivery portal | /<pool>, each Task's packet |
| member CLI | npx services.dev tasks …, with SERVICES_DEV_SESSION from members login |
| owner console | the ruling on a contest no rules row reserves |
claim and clear
→ POST /reviews/tsk_7Hq2/claim
← tsk_7Hq2 · claimed · attorney · sign · US-NY · $75.00 · signals collections, recipient_elsewhere · 30 min · $150.00 an hour · due 2026-10-27 14:02
→ POST /reviews/tsk_7Hq2/clear {"attest":[]}
← 403 ineligible · clearance: Attest each statement before the packet opens: I checked conflicts across my full book, including my firm.
→ POST /reviews/tsk_7Hq2/clear {"attest":["I checked conflicts across my full book, including my firm"]}
← tsk_7Hq2 · cleared · attorney · sign · US-NY · $75.00 · signals collections, recipient_elsewhere · 30 min · $150.00 an hour · due 2026-10-27 14:02pass
→ POST /reviews/tsk_7Hq2/pass {"reason":"fee"} # as mbr_7Hq2
← 200 tsk_7Hq2 · open · attorney · sign · US-NY · $75.00 · signals collections, recipient_elsewhere · 30 min · $150.00 an hour · due 2026-10-27 14:02attest
→ POST /reviews/tsk_7Hq2/attest {"checklist":["the claims read on the disclosure","every inventor is named","a reasonable inquiry was made"]} # as mbr_7Hq2
← 200 tsk_7Hq2 · done · practitioner · sign · * · $150.00 · attested · 60 min · $150.00 an hour · due 2026-10-30 14:02
14:02 · step.committed · sign · person · patent agent · * · mbr_7Hq2
14:02 · pay.accrued · mbr_7Hq2 · attest · $150.00
attested {"member":"mbr_7Hq2","credential":"patent agent","region":"*","hash":"sha256:27d7bdec3be22fd633af279053beef779c9c5080629816867bbfc4e4593a5b33","rules":"2026-10"}attest, qualified
→ POST /reviews/tsk_7Hq2/attest {"checklist":["the claims read on the disclosure","every inventor is named","a reasonable inquiry was made"],"reservation":"Claim 3 rests on a test the inventor has not yet run."} # as mbr_7Hq2
← 200 tsk_7Hq2 · done · practitioner · sign · * · $150.00 · attested · 60 min · $150.00 an hour · due 2026-10-30 14:02
14:02 · step.committed · sign · person · patent agent · * · mbr_7Hq2 · reservation sign/reservation.txt
14:02 · pay.accrued · mbr_7Hq2 · attest · $150.00
attested {"member":"mbr_7Hq2","credential":"patent agent","region":"*","hash":"sha256:27d7bdec3be22fd633af279053beef779c9c5080629816867bbfc4e4593a5b33","rules":"2026-10"}
reservations [{"step":"sign","member":"mbr_7Hq2","path":"sign/reservation.txt","sha256":"sha256:840bb8bb55b0955ba5fd34f699cf596a3a00bd1eb9875716da571b63f1e35bbf"}]send back
→ POST /reviews/tsk_7Hq2/send_back {} # as mbr_eligible
← 422 defects_required: A send-back names its defects, so sign's work can be redone against them.→ POST /reviews/tsk_7Hq2/send_back {"defects":"Claim 2 reaches past what the drawings show.","to":"draft"} # as mbr_eligible
← 200 tsk_7Hq2 · done · practitioner · sign · * · $150.00 · sent back · 60 min · $150.00 an hour · due 2026-10-30 14:02
14:02 · job.sent_back · mbr_eligible · to draft · "Claim 2 reaches past what the drawings show."
14:02 · pay.accrued · mbr_eligible · send_back · $150.00
14:02 · task.posted · tsk_7Hq3 · $150.00 · dispatch cascade
14:02 · task.offered · tsk_7Hq3 · mbr_eligible · cascadedecline
→ POST /reviews/tsk_7Hq2/decline {} # as mbr_eligible
← 422 memo_required: A decline carries a reasoned memo, for the client alone.→ POST /reviews/tsk_7Hq2/decline {"memo":"Claim 1 as drafted doesn't read on the one-handed lock in the disclosure; I won't sign it without a narrower claim."} # as mbr_eligible
← 200 tsk_7Hq2 · done · practitioner · sign · * · $150.00 · declined · 60 min · $150.00 an hour · due 2026-10-30 14:02
14:02 · task.declined · tsk_7Hq2 · mbr_eligible · memo sha256:16916696…, the client's alone
14:02 · pay.accrued · mbr_eligible · decline · $150.00
14:02 · job.paused · on the client's direction · signstep aside
→ POST /matters {"service":"provisional-patent","invention":[{"url":"data:text/plain,The%20invention.txt.","name":"invention.txt"}],"applicant":{"name":"Ada Lovelace","email":"signs@example.test"},"inventors":[{"name":"Ada Lovelace","email":"ada@example.com"}],"entity_size":"micro","max_usd":199,"key":"recuse"}
← job_7Hq2 · waiting · on claim · $199.00 held · sign · tsk_7Hq2release
→ POST /reviews/tsk_7Hq2/release {} # as mbr_eligible
← 200 tsk_7Hq2 · open · practitioner · sign · * · $150.00 · 60 min · $150.00 an hour · due 2026-10-30 14:02
14:02 · task.offered · tsk_7Hq2 · mbr_eligible · cascadequestion
→ POST /reviews/tsk_7Hq2/messages {"kind":"question","text":"Is the lease you sent the signed copy? Write me at grace@firm.example."} # as mbr_7Hq2
← 200 msg_7Hq2 · the attorney · question · open: Is the lease you sent the signed copy? Write me at [email withheld: reply in this thread].
14:02 · job.paused · on the client's reply · advise · tsk_7Hq2arrive and complete
→ POST /tasks/tsk_7Hq2/arrive {"fix":{"lat":48.8556,"lng":2.3605,"accuracy_m":12}} # as mbr_eligible, 3 Nov 13:56
← 200 · tsk_7Hq2 · on_site · 38 m from the site · 4 min before the window→ POST /tasks/tsk_7Hr6/complete {"party_absent":true,"check_out":{"fix":{"lat":48.8662,"lng":2.3411,"accuracy_m":11}}} # as mbr_eligible, 4 Nov 10:16: on site since 09:58, and no one came to the door
10:16 · step.committed · attend · person · certified interpreter · FR · mbr_eligible · party_absent after site.grace 15min
10:16 · pay.accrued · mbr_eligible · complete · party_absent · $90.00
10:16 · job.charged · job_7Hr6 · $140.00 · released on party_absentcontest
→ POST /reviews/tsk_7Hq2/contest {"reason":"The application names every inventor the applicant gave."} # as mbr_eligible
← 200 tsk_7Hq2 · done · practitioner · sign · * · $150.00 · attested · contested
14:02 · task.contested · tsk_7Hq2 · mbr_eligible · "The application names every inventor the applicant gave."
14:02 · task.posted · tsk_7Hv5 · contest of tsk_7Hq2 · $150.00, funded by the brand · cascade to peers who hold patent agent · blind to both names→ POST /reviews/tsk_7Hv5/attest {"output":{"ruling":"upheld","memo":"The inventor list matches the declaration; the send-back was right on claim 2."}} # as mbr_7Hq9, the peer the contest Task reached
← 200 tsk_7Hv5 · done · contest · ruled · upheld · $150.00
14:40 · task.ruled · tsk_7Hq2 · upheld · by peer · mbr_7Hq9 · patent agent · no finding of bad faith
14:40 · pay.accrued · mbr_7Hq9 · attest · $150.00| Answer | Its fields |
|---|---|
| each act | the Task, whole |
| the packet, once cleared | the packet |
| an attestation, on the record | the attestation |
| a refusal's rule | the rule_ref |
→ POST /reviews/tsk_7Hq2/claim {} # as mbr_eligible
{
"id": "tsk_7Hq2",
"object": "task",
"livemode": false,
"pool": "attorneys",
"role": "practitioner",
"status": "claimed",
"fields": {
"act": "sign",
"region": "*",
→ GET /reviews/tsk_7Hq2/packet # as mbr_eligible: the packet
{
"object": "packet",
"task": "tsk_7Hq2",
"job": "job_7Hq2",
"service": "provisional-patent",
"step": "sign",
"act": "sign",
"summary": "Provisional Patent Application: A provisional application, drafted, examined, filed. Done so far: consent, questions, draft, examine. Yours: sign.",
"input": {
"invention": [
→ POST /reviews/tsk_7Hq2/attest {"checklist":["the claims read on the disclosure","every inventor is named","a reasonable inquiry was made"]} # as mbr_eligible: the attestation
{
"id": "tsk_7Hq2",
"object": "task",
"livemode": false,
"pool": "attorneys",
"role": "practitioner",
"status": "done",
"fields": {
"act": "sign",
"region": "*",
→ GET /owner/matters/job_7Hq2 # the owner: record[27].attested, the attestation the gate froze
{
"member": "mbr_eligible",
"credential": "patent attorney",
"region": "*",
"rules": "2026-10",
"affirmed": [
"the claims read on the disclosure",
"every inventor is named",
"a reasonable inquiry was made"
],
| Code | Act | HTTP |
|---|---|---|
ineligible | claim, clear | 403 |
task_taken | claim, pass, clear | 409 |
defects_required | send back | 422 |
memo_required | decline | 422 |
not_cleared | attest, send back, decline, message | 403 |
reserved | attest | 403 |
guard_refused | attest | 422 |
needs_direction | attest | 409 |
needs_the_party | attest | 403 |
not_contestable | contest | 409 |
question_open | message | 409 |
not_on_site | arrive, complete | 403 |
evidence_missing | complete | 422 |
needs_a_person | every act, from a key or a tool | 403 |