# Monitor

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

> A Monitor is a scheduled check on something outside a Startup’s control, such as uptime, a Keyword’s rank or an AI answer, recording Events.

A Monitor is a scheduled check on something outside a [Startup](/business/nouns/startup)’s control, such as uptime, a [Keyword](/business/nouns/keyword)’s rank or an AI answer, recording [Events](/business/nouns/event).

## Properties
| Property | Type | Required | Description |
| --- | --- | --- | --- |
| `kind` | `string` | Yes | `internal` watches the Startup’s own routes and jobs; `outside` watches the world, such as a rival’s price. |
| `target` | `string` | Yes | What it checks: a route, a Domain, a Keyword, a prompt or a page. |
| `every` | `string` | No | How often it runs, such as `1m` or `1d`. |
| `lastResult` | `string` | No | The result of its latest check. |

## Object
```json
{
  "$id": "https://api.sb/kilnbakery.com/monitors/monitor_1",
  "$type": "Monitor",
  "kind": "internal",
  "target": "/health",
  "every": "1m",
  "lastResult": "passing"
}
```

## Relationships
- <a id="rel-opens"></a>A Monitor **opens** many [Incidents](/business/nouns/incident): a failing internal Monitor opens an [Incident](/business/nouns/incident), which names the Monitor that saw it first. `opens`, inverse [`monitor`](/business/nouns/incident#rel-monitor).

## Verbs
| Verb | Description | Subject | Event | Class |
| --- | --- | --- | --- | --- |
| [Monitor.check](/business/nouns/monitor/check) | Check runs a Monitor once now from several regions and records the result as an Event. | [Reliability Engineer](/agents/engineering/reliability-engineer) | [`Monitor.checked`](/business/events/Monitor.checked) | Two-way: `try`, `send`, `do` |
| <a id="create"></a>[Monitor.create](/business/nouns/monitor/create) | Creates a Monitor. Inherited from [Noun](/business/nouns/noun). | None. | `Monitor.created` | Two-way: `try`, `send`, `do` |
| <a id="get"></a>[Monitor.get](/business/nouns/monitor/get) | Returns one Monitor by id. Inherited from [Noun](/business/nouns/noun). | None. | None. | Read: `try`, `do` |
| <a id="list"></a>[Monitor.list](/business/nouns/monitor/list) | Returns Monitors, newest first, one page at a time. Inherited from [Noun](/business/nouns/noun). | None. | None. | Read: `try`, `do` |
| <a id="update"></a>[Monitor.update](/business/nouns/monitor/update) | Changes the given properties of a Monitor. Inherited from [Noun](/business/nouns/noun). | None. | `Monitor.updated` | Two-way: `try`, `send`, `do` |

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

| Operation | `owner` | `admin` | `member` | `viewer` |
| --- | --- | --- | --- | --- |
| `Monitor.create` | Yes | Yes | Yes | No |
| `Monitor.get` | Yes | Yes | Yes | Yes |
| `Monitor.list` | Yes | Yes | Yes | Yes |
| `Monitor.update` | Yes | Yes | Yes | No |
| `Monitor.check` | Yes | Yes | Yes | No |

## Call it

**Ask**

```text
Check the latest monitor.
```

**API**

```bash
curl -X POST https://api.sb/quietcopy.com/monitors/monitor_1/check \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY"
```

```json
{
  "api": "https://api.sb/quietcopy.com",
  "monitor": {
    "$id": "https://api.sb/quietcopy.com/monitors/monitor_1",
    "$type": "Monitor",
    "kind": "internal",
    "target": "/health"
  },
  "action": {
    "$id": "https://api.sb/quietcopy.com/actions/action_1",
    "operation": "Monitor.check",
    "status": "done"
  },
  "links": {
    "self": "https://api.sb/quietcopy.com/actions/action_1"
  }
}
```

**SDK**

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

const monitor = await $.Monitor.check({ monitor: 'monitor_1' })
```

**CLI**

```bash
npx startup-builder do Monitor.check --json '{"monitor":"monitor_1"}'
```

**MCP**

```json
{
  "name": "do",
  "arguments": {
    "code": "return await $.Monitor.check({ monitor: 'monitor_1' })"
  }
}
```

## Example
A scheduling app runs an `outside` Monitor that asks three answer engines "best scheduling app for clinics" once a day. When the app drops out of an answer, the Monitor records an [Event](/business/nouns/event) and the [Marketing Lead](/agents/marketing/marketing-lead) sees it.