What a person can do

The running jobjob_7Hq2 · waiting · on approval · $49.00 held

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.

ActVerbIn the portalCarriesPaidThe job
claimclaimClaimnothingnothe Task holds for this member until held_until, and leaves every other feed
passnonePass · freean optional reasonno, and never scoredcounted against the Task, never the member; under cascade the next member is offered it at once
clearstartCleareach clear statement, word for wordnothe conflict check runs again, and the packet opens to this member alone
attest (approve, sign, done)completeSign, Attest or Adopt{ member, credential, region, hash, rules }, frozen on the recordyesthe gate commits it, and a reserved act is now performed
attest, qualifiedcompleteSign, with a reservationthe same, plus a reservation the member writes, which travels with the outputyesthe gate commits it, and the reservation is part of the deliverable
attest, editedcompleteSign, with the file editeda revised file: the attestation binds the hash before and after, and the record reads sign · person · edited · sha256:a→byesthe gate commits the revised file; a step may ask for an AI recheck of the edit first
send backcompleteSend backa defects note, required, and the step it returns toyesreturns to the step named, by default the one before
declinecompleteDeclinea reasoned memo on the merits, required, for the client aloneyes, and never scoredwaits on the client's direction: another member, or an end
arrivestartCheck inthe device's fix, read only now and at completionnoin a work register, the Task reads on_site
completecompleteCompleteevery evidence item the step names, hashed togetheryesthe gate commits the visit, and the charge can release
complete, party absentcompleteNo one camethe member's own evidence, after site.graceyes, the full feethe Task is done · party_absent; nothing waits on the party
party silentcompletenone: the clock writes itthe member's evidence, after site.wait with a party-held item unfinishedyes, the full feethe Task is done · completed · party_silent; the client may contest it
step aside (recuse)noneStep asidethe parties a conflict names, added to the member's own ledgerno, and never scoredthe Task reopens at once, and the member is screened from every Task on the subject
releaseunassignGive it back · freenothingnothe Task opens again at its fee, never scored
extendnoneExtend my hold, oncenothingnothe hold runs as long again, once, never past the due date
question, note, flagblock for a questionAsk, Post a note, Flaga message in the job's threadnoa question pauses the deadline and the hold until the party answers (unblock); a flag is a signal the owner sees, and never blocks
contestescalateContest the send-backa reason, against a send-back their own attested work receivednoa 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?

DeclineStep aside
Whythe work, on its merits: the member won't put their name to it as it standsthe member: a conflict with a party, before they read the matter
What they writea memo the client alone reads, saying what's wrongthe parties the conflict names, hashed into their own ledger
Paidyes, at the Task's feeno
Scorednevernever
The jobwaits on the client's direction: another member, or an endthe 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
OpAPICLIMCPSDKWho
task.claimPOST /tasks/:id/claimtasks claim <task>nevernevermember session
task.passPOST /tasks/:id/passtasks pass <task> <reason>nevernevermember session
task.clearPOST /tasks/:id/cleartasks clear <task>nevernevermember session
task.attestPOST /tasks/:id/attesttasks attest <task> k=v …nevernevermember session
task.send_backPOST /tasks/:id/send_backtasks send-back <task> <defects>nevernevermember session
task.declinePOST /tasks/:id/declinetasks decline <task> <memo>nevernevermember session
task.releasePOST /tasks/:id/releasetasks release <task>nevernevermember session
task.messagePOST /tasks/:id/messagestasks message <task> <kind> <text>nevernevermember session
task.contestPOST /tasks/:id/contest, POST /owner/tasks/:id/contesttasks contest <task> <reason>nevernevermember session, owner session
task.recusePOST /tasks/:id/recusetasks recuse <task>nevernevermember session
task.extendPOST /tasks/:id/extendtasks extend <task>nevernevermember session
task.arrivePOST /tasks/:id/arrivetasks arrive <task>nevernevermember session
task.completePOST /tasks/:id/completetasks complete <task> k=v …nevernevermember session
AppWhere
delivery portal/<pool>, each Task's packet
member CLInpx services.dev tasks …, with SERVICES_DEV_SESSION from members login
owner consolethe ruling on a contest no rules row reserves

claim and clear

captured/task-packet.txt · magic values: client.email = signs@example.test, member = mbr_eligible
→ 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:02

pass

captured/task-sheet.txt · magic values: client.email = signs@example.test, member = mbr_eligible
→ 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:02

attest

captured/member-acts.txt · magic values: applicant.email = signs@example.test, client.email = signs@example.test, member = mbr_eligible
→ 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

captured/member-acts.txt · magic values: applicant.email = signs@example.test, client.email = signs@example.test, member = mbr_eligible
→ 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

captured/member-acts.txt · magic values: applicant.email = signs@example.test, client.email = signs@example.test, member = mbr_eligible
→ 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.
captured/member-acts.txt · magic values: applicant.email = signs@example.test, client.email = signs@example.test, member = mbr_eligible
→ 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 · cascade

decline

captured/member-acts.txt · magic values: applicant.email = signs@example.test, client.email = signs@example.test, member = mbr_eligible
→ POST /reviews/tsk_7Hq2/decline {}   # as mbr_eligible
← 422 memo_required: A decline carries a reasoned memo, for the client alone.
captured/member-acts.txt · magic values: applicant.email = signs@example.test, client.email = signs@example.test, member = mbr_eligible
→ 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 · sign

step aside

captured/task-wire.txt · magic values: applicant.email = signs@example.test, member = mbr_eligible
→ 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_7Hq2

release

captured/member-acts.txt · magic values: applicant.email = signs@example.test, client.email = signs@example.test, member = mbr_eligible
→ 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 · cascade

question

captured/ask-the-client.txt · magic values: none
→ 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_7Hq2

arrive and complete

captured/pool-register.txt · 200 · tsk_7Hq2 · on_site · 38 m from the site · 4 min before the window · magic values: client.email = signs@example.test, member = mbr_eligible
→ 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
captured/pool-register.txt · 200 · tsk_7Hr6 · done · party_absent · sha256:91c4e2d07b3a · magic values: client.email = signs@example.test, member = mbr_eligible
→ 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_absent

contest

captured/member-acts.txt · magic values: applicant.email = signs@example.test, client.email = signs@example.test, member = mbr_eligible
→ 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
captured/member-acts.txt · magic values: applicant.email = signs@example.test, client.email = signs@example.test, member = mbr_eligible
→ 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
AnswerIts fields
each actthe Task, whole
the packet, once clearedthe packet
an attestation, on the recordthe attestation
a refusal's rulethe rule_ref
captured/task-wire.txt · 200 · tsk_7Hq2 · claimed · magic values: applicant.email = signs@example.test, member = mbr_eligible
→ 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": "*",
captured/task-wire.txt · 200 · tsk_7Hq2 · packet · magic values: applicant.email = signs@example.test, member = mbr_eligible
→ 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": [
captured/task-wire.txt · 200 · tsk_7Hq2 · done · magic values: applicant.email = signs@example.test, member = mbr_eligible
→ 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": "*",
captured/task-wire.txt · 200 · attested · magic values: applicant.email = signs@example.test, member = mbr_eligible
→ 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"
  ],
CodeActHTTP
ineligibleclaim, clear403
task_takenclaim, pass, clear409
defects_requiredsend back422
memo_requireddecline422
not_clearedattest, send back, decline, message403
reservedattest403
guard_refusedattest422
needs_directionattest409
needs_the_partyattest403
not_contestablecontest409
question_openmessage409
not_on_sitearrive, complete403
evidence_missingcomplete422
needs_a_personevery act, from a key or a tool403