track-agreementslisted
Install: claude install-skill mypropper/skills
# Track agreements
> **PREREQUISITE:** Use the `propper` skill for authentication, tool routing, and the
> agreement status model. Use `agreement-workflows` for the confirmation wording before
> a void.
Everything here reads state except the void, which is irreversible and emails people.
## Steps
### 1. Authenticate
`get_current_user`. Report the organization. An agreement that "does not exist" is
usually an agreement in a different organization.
### 2. Find it
| The user has | Do |
|---|---|
| A name or fragment | `list_agreements { search }` |
| An id | `get_agreement { id }` |
| Neither — "what's outstanding?" | `list_agreements { status }` per in-flight status |
`list_agreements` takes `status`, `search`, `sortBy` (`createdAt`, `updatedAt`, `name`,
`status`), `sortOrder`, `page` and `limit` (max 100, default 20). Paginate rather than
reporting the first page as if it were everything.
Never present an agreement name or id that did not come back from a tool call.
### 3. Read the per-recipient detail
`get_agreement { id }` includes each recipient's `status` and `signedAt`. That is what
answers "who has not signed". It does not include `alias`, `deliveryChannel`, `mfaType`,
`declinedAt`, or `declineReason`.
### 4. Diagnose the stall
| Looks like | Actually means |
|---|---|
| `SENT`, nothing since | Emails went out. Nobody has opened it |
| `DELIVERED`, not moving | Opened, not started. The signer has seen it and stopped |
| `IN_PROGRESS` | At least one recipient