# Role Review

URL: /business/nouns/role-review · Id: `noun:role-review`

> A Role Review is a dated check of one Role against its contract: its results, its standards and its autonomy rung.

A Role Review is a dated check of one [Role](/business/nouns/role) against its contract: its results, its standards and its autonomy rung.

## Properties
| Property | Type | Required | Description |
| --- | --- | --- | --- |
| `role` | [Role](/business/nouns/role) | Yes | The Role it reviews. |
| `period` | `string` | Yes | The period it covers, such as `2026-W43` or `2026-10`. |
| `results` | `json` | No | Each result Metric’s value against its target for the period. |
| `standardsMet` | `boolean` | No | True when the seat held every standard in its contract for the period. |
| `rung` | `string` | No | One of `assist`, `supervised`, or `full`: the autonomy rung the seat holds after the review. |
| `change` | `text` | No | The one change the review asks for, if any. |

## Object
```json
{
  "$id": "https://api.sb/patentpad.com/role-reviews/role_review_1",
  "$type": "RoleReview",
  "role": "role_1",
  "period": "2026-W43",
  "results": {},
  "standardsMet": true,
  "rung": "assist",
  "change": "Answer weekend chats within 30 minutes."
}
```

## Relationships
- <a id="rel-reviews"></a>A Role Review **reviews** one [Role](/business/nouns/role): each Role Review checks one [Role](/business/nouns/role), and a Role keeps every review it has had. `reviews`, inverse [`roleReviews`](/business/nouns/role#rel-role-reviews).

## Verbs
| Verb | Description | Subject | Event | Class |
| --- | --- | --- | --- | --- |
| <a id="get"></a>[RoleReview.get](/business/nouns/role-review/get) | Returns one Role Review by id. Inherited from [Noun](/business/nouns/noun). | None. | None. | Read: `try`, `do` |
| <a id="list"></a>[RoleReview.list](/business/nouns/role-review/list) | Returns Role Reviews, newest first, one page at a time. Inherited from [Noun](/business/nouns/noun). | None. | None. | Read: `try`, `do` |

A Role Review is kept forever and never edited: it has no `update` or `delete`.

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

| Operation | `owner` | `admin` | `member` | `viewer` |
| --- | --- | --- | --- | --- |
| `RoleReview.get` | Yes | Yes | Yes | Yes |
| `RoleReview.list` | Yes | Yes | Yes | Yes |

## Call it

**Ask**

```text
Show me the latest role review.
```

**API**

```bash
curl https://api.sb/tutorloop.com/role-reviews/role_review_1 \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY"
```

```json
{
  "api": "https://api.sb/tutorloop.com",
  "$type": "RoleReview",
  "$id": "https://api.sb/tutorloop.com/role-reviews/role_review_1",
  "roleReview": {
    "$id": "https://api.sb/tutorloop.com/role-reviews/role_review_1",
    "$type": "RoleReview",
    "role": "role_1",
    "period": "2026-W43"
  },
  "links": {
    "self": "https://api.sb/tutorloop.com/role-reviews/role_review_1",
    "up": "https://api.sb/tutorloop.com/role-reviews"
  }
}
```

**SDK**

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

const roleReview = await $.RoleReview.get({ id: 'role_review_1' })
```

**CLI**

```bash
npx startup-builder do RoleReview.get --json '{"id":"role_review_1"}'
```

**MCP**

```json
{
  "name": "do",
  "arguments": {
    "code": "return await $.RoleReview.get({ id: 'role_review_1' })"
  }
}
```

## Example
Each week the [Founder](/agents/founding/founder) seat calls [`Role.review`](/business/nouns/role/review) for the [Customer Lead](/agents/customer/customer-lead). In `2026-W43` it finds 97 percent of first responses on time and every standard held. The seat stays on `supervised`, with one ask: answer weekend chats within 30 minutes.