# Agreement

URL: /business/nouns/agreement · Id: `noun:agreement`

> An Agreement is a contract between two or more Parties, with its term, liability, and economics, that travels with the Startup.

An Agreement is a contract between two or more [Parties](/business/nouns/party), with its term, liability, and economics, that travels with the [Startup](/business/nouns/startup). The holding [Company](/business/nouns/company) signs it.

## Properties
| Property | Type | Required | Description |
| --- | --- | --- | --- |
| `term` | `text` | No | How long it runs and how it ends. |
| `signedAt` | `datetime` | No | When the last Party signed. |
| `terminatedAt` | `datetime` | No | When it ended under its term; it stays on record. |
| `payoutSchedule` | `string` | No | For a Supplier’s Agreement: how often the released earned balance pays out. |
| `clearanceDays` | `integer` | No | For a Supplier’s Agreement: days an Order’s earnings wait after confirmation before they can pay out. |
| `status` | `string` | Yes | One of `draft`, `signed` or `terminated`. |

## Object
```json
{
  "$id": "https://api.sb/quietcopy.com/agreements/agreement_1",
  "$type": "Agreement",
  "term": "Example term",
  "signedAt": "2026-10-22T12:00:00Z",
  "terminatedAt": "2026-10-22T12:00:00Z",
  "payoutSchedule": "daily",
  "clearanceDays": 1,
  "status": "draft"
}
```

## Relationships
- <a id="rel-binds"></a>An Agreement **binds** many [Parties](/business/nouns/party): the [Parties](/business/nouns/party) the Agreement holds to its terms, each from the moment it signs. `binds`, inverse [`boundBy`](/business/nouns/party#rel-bound-by).
- <a id="rel-covers"></a>An Agreement **covers** many [Startups](/business/nouns/startup): the Agreements a [Startup](/business/nouns/startup) operates under travel with it when it graduates or sells. `covers`, inverse [`operatesUnder`](/business/nouns/startup#rel-operates-under).

## Lifecycle

| State | Meaning | Moves to |
| --- | --- | --- |
| `draft` (first) | Its terms are written, and not every Party has signed. | `signed` by [Agreement.sign](/business/nouns/agreement/sign) |
| `signed` | Every Party signed, and it binds them under its term. | `terminated` by [Agreement.terminate](/business/nouns/agreement/terminate) |
| `terminated` | Ended under its own term, with the reason and date recorded and the signed copy kept. | None: it ends here. |

## Verbs
| Verb | Description | Subject | Event | Class |
| --- | --- | --- | --- | --- |
| [Agreement.sign](/business/nouns/agreement/sign) | Sign executes an Agreement for one Party and records the signature, the signer and the time. | [Founder](/agents/founding/founder) | [`Agreement.signed`](/business/events/Agreement.signed) | One-way (money): `send`, `do` |
| [Agreement.terminate](/business/nouns/agreement/terminate) | Terminate ends an Agreement under its own term, records the reason and the date, and keeps the signed record. | [Legal Lead](/agents/legal/legal-lead) | [`Agreement.terminated`](/business/events/Agreement.terminated) | One-way (money, customer): `send`, `do` |
| <a id="create"></a>[Agreement.create](/business/nouns/agreement/create) | Creates an Agreement. Inherited from [Noun](/business/nouns/noun). | None. | `Agreement.created` | Two-way: `try`, `send`, `do` |
| <a id="get"></a>[Agreement.get](/business/nouns/agreement/get) | Returns one Agreement by id. Inherited from [Noun](/business/nouns/noun). | None. | None. | Read: `try`, `do` |
| <a id="list"></a>[Agreement.list](/business/nouns/agreement/list) | Returns Agreements, newest first, one page at a time. Inherited from [Noun](/business/nouns/noun). | None. | None. | Read: `try`, `do` |
| <a id="update"></a>[Agreement.update](/business/nouns/agreement/update) | Changes the given properties of an Agreement. Inherited from [Noun](/business/nouns/noun). | None. | `Agreement.updated` | Two-way: `try`, `send`, `do` |

An Agreement is never deleted: it ends by [Agreement.terminate](/business/nouns/agreement/terminate), and its records stay.

## Permissions
Which Access level may call each Verb. One-way Verbs wait their delay window.

| Operation | `owner` | `admin` | `member` | `viewer` |
| --- | --- | --- | --- | --- |
| `Agreement.create` | Yes | Yes | Yes | No |
| `Agreement.get` | Yes | Yes | Yes | Yes |
| `Agreement.list` | Yes | Yes | Yes | Yes |
| `Agreement.update` | Yes | Yes | Yes | No |
| `Agreement.sign` | Yes | No | No | No |
| `Agreement.terminate` | Yes | No | No | No |

## Call it

**Ask**

```text
Sign the latest agreement.
```

**API**

```bash
curl -X POST https://api.sb/shiftnote.app/agreements/agreement_1/sign \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY"
```

```json
{
  "api": "https://api.sb/shiftnote.app",
  "agreement": {
    "$id": "https://api.sb/shiftnote.app/agreements/agreement_1",
    "$type": "Agreement",
    "status": "signed"
  },
  "action": {
    "$id": "https://api.sb/shiftnote.app/actions/action_1",
    "operation": "Agreement.sign",
    "status": "done"
  },
  "links": {
    "self": "https://api.sb/shiftnote.app/actions/action_1"
  }
}
```

**SDK**

```ts
import { $ } from 'startup-builder'

const agreement = await $.Agreement.sign({ agreement: 'agreement_1' })
```

**CLI**

```bash
npx startup-builder do Agreement.sign --json '{"agreement":"agreement_1"}'
```

**MCP**

```json
{
  "name": "do",
  "arguments": {
    "code": "return await $.Agreement.sign({ agreement: 'agreement_1' })"
  }
}
```

## Example
A practice-management Startup signs an Agreement with a court-filings API: a three-year `term`, liability capped at annual fees, and 20% of referred first-year revenue. When the Startup sells, the Agreement moves with it.