---
title: "Declines and direction"
url: https://services.dev/docs/people/direction
captured: [legal-check.txt, legal-decline.txt, people-member-cli.txt]
codes: [input_invalid, memo_required, needs_direction]
---
# Declines and direction

URL: https://services.dev/docs/people/direction

> A member may decline any Task, with a memo only the client reads. The decline is paid, never scored, and final until the client directs the job, to another member they name or to an end.

A member's no is final. They decline on the merits with a reasoned memo, they are paid for the Task, and the decline never counts against them. Then the job waits on the one person who can move it: the client. A conflict with a party is not a decline: the member steps aside, unpaid, before reading the matter, as [decline or step aside?](https://services.dev/docs/people/acts.md#decline-or-step-aside) sets out.

## Decline

A member declines from the delivery portal or the member CLI, in their own session. In the legal example, a practitioner won't sign a claim that doesn't read on the disclosure, and an attorney won't demand more than the invoice supports:

**CLI**

```bash
SERVICES_DEV_SESSION=ms_psNemolonFiaQz8kWxgxgQ npx services.dev reviews decline tsk_7Hq2 "Claim 1 as drafted doesn't read on the one-handed lock in the disclosure; I won't sign it without a narrower claim."
```

```txt title="magic values: applicant.email = signs@example.test, member = mbr_eligible"
tsk_7Hq2 · done · practitioner · sign · * · $150.00 · declined · 60 min · $150.00 an hour · due 2026-10-30 14:02
```

**API**

```txt
→ POST /reviews/tsk_7Hq2/decline {"memo":"The invoice supports $1,800 of the $4,200; I won't put my name to a demand for the full amount."}   # as mbr_7Hq2
```

```txt title="magic values: none"
← 200 tsk_7Hq2 · done · attorney · sign · US-NY · $75.00 · signals collections, recipient_elsewhere · declined · 30 min · $150.00 an hour · due 2026-10-27 14:02
  14:02 · task.declined · tsk_7Hq2 · mbr_7Hq2 · memo sha256:c8debd61…, the client's alone
  14:02 · pay.accrued · mbr_7Hq2 · decline · $75.00
  14:02 · job.paused · on the client's direction · sign
```

**MCP**

Never. A decline is a person's act, so no MCP tool takes it.

**SDK**

Never. A key can't decline for a member.

A decline with no memo answers 422 [`memo_required`](https://services.dev/docs/reference/errors.md#memo_required). The memo is the client's alone: the record keeps its hash.

## The job waits on the client

Reading the job hands its caller the client's direct ask, as a link to pass on:

```txt
→ GET /matters/job_7Hq2
```

```txt title="magic values: none"
← job_7Hq2 · waiting · on direction · $149.00 held
  next    {"do":"hand_to_person","to":"direct","party":"Ada Lovelace","url":"http://localhost:8787/a/ask_7Hq3?t=…"}
```

Nothing else moves it. The owner can't approve past the decline, and the buyer can't cancel it:

```txt
→ POST /owner/matters/job_7Hq2/approve   # the owner console
```

```txt title="magic values: none"
← 409 needs_direction: A signer declined, and only the client's direction moves the matter on.
```

```txt
→ POST /matters/job_7Hq2/cancel   # the buyer
```

```txt title="magic values: none"
← 409 needs_direction
```

## The client directs

The client reads the memo in their link and names another member. They can't name the one who declined:

```txt
→ POST /asks/ask_7Hq3?t=… {"member":"mbr_7Hq2"}
```

```txt title="magic values: none"
← 422 input_invalid: mbr_7Hq2 declined sign: name another signer.
```

```txt
→ POST /asks/ask_7Hq3?t=… {"member":"mbr_7Hq3"}
```

```txt title="magic values: none"
← 200 done

← job_7Hq2 · waiting · on claim · $149.00 held · sign · tsk_7Hq3
  task    dispatch direct · to mbr_7Hq3 · offered mbr_7Hq3 (client) · ladder none: it waits on the member named
  mbr_eligible GET /tasks → 0 Tasks
```

The next Task is locked to the member the client named. It goes to them alone, with no fill ladder, and no one else in the Pool sees it. The client can direct the job to an end instead, and a job that ends there owes only the acts already done.

To let the client pick the member before anyone is offered the Task, add a direct ask of your own: `{ ask: 'client', to: 'direct', names: 'attorney' }`. Its `names` is the role whose next Task the client locks.

## What a decline costs you

A decline is paid, so a job that needs a second member pays two fees out of one price. `check` prints that case on every Service before you sell it:

```bash
npx services.dev check
```

```txt title="magic values: none"
services/demand-letter.ts · 26 lines · $149 per job, within 48 hours, charged on send's receipt.
  margin  at least $40.20 when the first attorney signs ($149.00 − $75.00 attorney − $29.80 AI cap − $4.00 coverage) · $2.70 at the ladder's cap, the lower of 50% and what the floor leaves · −$38.80 after a decline and a second attorney
```

The walk above ends below zero too. The buyer paid the price they were quoted, both members were paid, and the brand's share ran short:

```txt
→ POST /reviews/tsk_7Hq3/attest {"checklist":["every claim is supported","no threat the client cannot carry out"]}   # as mbr_7Hq3
```

```txt title="magic values: none"
  ledger  +$149.00 · attorney's fee $75.00, sold by the attorney (rail member) · brand $74.00 · decline cover $75.00, funded from the brand's share · AI $2.10 · you −$3.10
```

Set the price so that margin line holds a second fee.

## Refusals

| Code | When |
|---|---|
| [`memo_required`](https://services.dev/docs/reference/errors.md#memo_required) | A decline with no memo |
| [`needs_direction`](https://services.dev/docs/reference/errors.md#needs_direction) | Anyone but the client tries to move a declined job |
| [`input_invalid`](https://services.dev/docs/reference/errors.md#input_invalid) | The client names the member who declined |

[Two sovereigns](https://services.dev/docs/people/sovereignty.md) has why the gate holds both the member's no and the client's yes.

---

- Up: [human: the line](https://services.dev/docs/people.md)
- Previous: [What a person can do](https://services.dev/docs/people/acts.md)
- Next: [Two sovereigns](https://services.dev/docs/people/sovereignty.md)
