# contractorOps.agreements.ended

List agreements that have ended for active contractors with no decision yet (not renewed, no renewal waiting for signatures, and no end decision recorded): the end date, what happened since (minutes logged, timesheet entries, pay periods, payouts and payments after the end date), a one-line summary, and the renewal to offer (the same terms from the day after it ended). An ended agreement blocks nothing. Contractors who kept working come first. Filter by contractorId. Renew with contractorOps.terms.propose, or record a decision with contractorOps.terms.endDecision (continuing keeps them working without renewing, ending lets it end); either decision removes it from this list.

`GET | POST /api/v1/accounting/contractorOps.agreements.ended`

Permissions: `accounting:read` · Roles: admin, finance

MCP tool: `accounting_contractor_ops_agreements_ended`

## Fields

| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| `contractorId` | string (ID) |  | The ID of a contractor, from contractors.list. |

## Example request

```bash
curl https://app.getoatmilk.com/api/v1/accounting/contractorOps.agreements.ended \
  -H "Authorization: Bearer $OATMILK_API_KEY"
```

Reference page: https://app.getoatmilk.com/docs/api/contractorOps.agreements.ended
