# Review the support agent

URL: /agents/review-a-role · Id: `guide:review-a-role`

> Check one seat against its Role contract for a week: its results, its standards, and the autonomy rung it keeps.

A [Role Review](/business/nouns/role-review) checks one seat against its [Role](/business/nouns/role) contract for a period. It reads the seat's results, checks each standard, and sets the autonomy rung the seat keeps.

**Before it runs**

- You leave the chat: Never: it all happens in the chat.

## What you get
- 1 score for each number the seat answers for, against its target (Role Review)
- 1 check of every promise in its contract, such as replying within an hour (Role Review)
- 1 how much it may do without asking after the review (Role)
- 1 one change the review asks for, if any (Role Review)

## Your agent does
**For agents**

- Guide: `guide:review-a-role`, status `live`. Page: [/agents/review-a-role.md](/agents/review-a-role.md).
- Approval: none. Run it when the founder asks.
- Leaves the chat: never.
- Run: call the steps in order, each through the API, SDK, CLI or MCP tab below; a later step passes the `$id` an earlier one returns. Each value marked example is the sample business’s: pass the founder’s own.

| Step | Verb | Inputs (type, required, this guide’s value) | Returns |
| --- | --- | --- | --- |
| 1 | [`Role.review`](/business/nouns/role/review) (`verb:Role.review`) | `role` Role (an id), required: example `"customer-lead"`; `period` string, required: example `"2026-W43"` | `role` Role, `roleReview` RoleReview |

Returns: the last call answers with `role`, `roleReview` and its `action`, whose `status` is `done`, `pending` (waiting on an Approval or a Worker), `failed`, `canceled` or `refused`:

```json
{
  "api": "https://api.sb/leaseline.app",
  "role": {
    "$id": "https://api.sb/leaseline.app/roles/customer-lead",
    "$type": "Role"
  },
  "roleReview": {
    "$id": "https://api.sb/leaseline.app/role-reviews/role_review_1",
    "$type": "RoleReview",
    "role": "customer-lead",
    "period": "2026-W43"
  },
  "action": {
    "$id": "https://api.sb/leaseline.app/actions/action_1",
    "operation": "Role.review",
    "status": "done"
  },
  "links": {
    "self": "https://api.sb/leaseline.app/actions/action_1"
  }
}
```

Next: offer “Review every seat each Monday and send me the misses”, or “Compare this week with the four before it”.

Calls: `Role.review`

Ask:

```text
Review the support agent.
Review the Customer Lead for last week.
Is the sales agent meeting its contract?
```

API:

```bash
# Role.review
curl -X POST https://api.sb/leaseline.app/roles/customer-lead/review \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"period":"2026-W43"}'
```

SDK:

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

await $.Role.review({ role: 'customer-lead', period: '2026-W43' })
```

CLI:

```bash
npx startup-builder do Role.review --json '{"role":"customer-lead","period":"2026-W43"}'
```

MCP:

```json
{
  "name": "do",
  "arguments": {
    "code": "return await $.Role.review({ role: 'customer-lead', period: '2026-W43' })"
  }
}
```

## Change it
- Review every seat each Monday and send me the misses.
- Compare this week with the four before it.
- Let it answer weekend chats on its own.

## Under the hood
- Systems: [Workforce](/systems/workforce), [Evals](/agents/evals-system)
- Nouns: [Role](/business/nouns/role), [Role Review](/business/nouns/role-review), [Metric](/business/nouns/metric), [Evaluator](/business/nouns/evaluator)
- Events: [`Role.reviewed`](/business/events/Role.reviewed)