# Studio

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

> A Studio is an organization that builds Startups, holds them through Companies, and runs Plays across its Portfolio.

A Studio is an organization that builds [Startups](/business/nouns/startup), holds them through [Companies](/business/nouns/company), and runs [Plays](/business/nouns/play) across its [Portfolio](/business/nouns/portfolio). One Play reaches every Startup a Portfolio query selects.

## Properties
| Property | Type | Required | Description |
| --- | --- | --- | --- |
| `name` | `string` | Yes | The name of the Studio. |

## Object
```json
{
  "$id": "https://api.sb/tutorloop.com/studios/studio_1",
  "$type": "Studio",
  "name": "TutorLoop"
}
```

## Relationships
- <a id="rel-builds"></a>A Studio **builds** many [Startups](/business/nouns/startup): a Studio founds and builds its [Startups](/business/nouns/startup) and runs [Plays](/business/nouns/play) across them. `builds`, inverse [`builtBy`](/business/nouns/startup#rel-built-by).
- <a id="rel-controls"></a>A Studio **controls** many [Companies](/business/nouns/company): a Studio controls the holding [Companies](/business/nouns/company) that are owner of record for its [Startups](/business/nouns/startup). `controls`, inverse [`controlledBy`](/business/nouns/company#rel-controlled-by).
- <a id="rel-manages"></a>A Studio **manages** many [Portfolios](/business/nouns/portfolio): a Studio allocates attention and money across the members of each [Portfolio](/business/nouns/portfolio) it manages. `manages`, inverse [`managedBy`](/business/nouns/portfolio#rel-managed-by).

## Verbs
| Verb | Description | Subject | Event | Class |
| --- | --- | --- | --- | --- |
| [Play.apply](/business/nouns/play/apply) | Apply runs a Play across a Portfolio cohort, one wave at a time, measured as an Experiment. | [Marketing Lead](/agents/marketing/marketing-lead) | [`Play.applied`](/business/events/Play.applied) | None. |
| [Startup.graduate](/business/nouns/startup/graduate) | Graduate moves a Startup to a Company of its own, with its Customers, Domains and records intact. | [Founder](/agents/founding/founder) | [`Startup.graduated`](/business/events/Startup.graduated) | One-way (money, customer): `send`, `do` |
| [Startup.hold](/business/nouns/startup/hold) | Hold keeps a Startup running in its current Lifecycle state with no new investment from the Studio. | [Strategist](/agents/founding/strategist) | [`Startup.held`](/business/events/Startup.held) | None. |
| [Startup.sell](/business/nouns/startup/sell) | Sell transfers a Startup, with its Customers, Domains and records, to a buyer under a signed Agreement. | [Founder](/agents/founding/founder) | [`Startup.sold`](/business/events/Startup.sold) | One-way (money, customer): `send`, `do` |
| <a id="create"></a>[Studio.create](/business/nouns/studio/create) | Creates a Studio. Inherited from [Noun](/business/nouns/noun). | None. | `Studio.created` | Two-way: `try`, `send`, `do` |
| <a id="get"></a>[Studio.get](/business/nouns/studio/get) | Returns one Studio by id. Inherited from [Noun](/business/nouns/noun). | None. | None. | Read: `try`, `do` |
| <a id="list"></a>[Studio.list](/business/nouns/studio/list) | Returns Studios, newest first, one page at a time. Inherited from [Noun](/business/nouns/noun). | None. | None. | Read: `try`, `do` |
| <a id="update"></a>[Studio.update](/business/nouns/studio/update) | Changes the given properties of a Studio. Inherited from [Noun](/business/nouns/noun). | None. | `Studio.updated` | Two-way: `try`, `send`, `do` |
| <a id="delete"></a>[Studio.delete](/business/nouns/studio/delete) | Deletes a Studio; its history is kept. Inherited from [Noun](/business/nouns/noun). | None. | `Studio.deleted` | One-way: `send`, `do` |

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

| Operation | `owner` | `admin` | `member` | `viewer` |
| --- | --- | --- | --- | --- |
| `Studio.create` | Yes | Yes | Yes | No |
| `Studio.get` | Yes | Yes | Yes | Yes |
| `Studio.list` | Yes | Yes | Yes | Yes |
| `Studio.update` | Yes | Yes | Yes | No |
| `Studio.delete` | Yes | Yes | Yes | No |

## Call it

**Ask**

```text
Add a studio to QuietCopy.
```

**API**

```bash
curl -X POST https://api.sb/quietcopy.com/studios \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"QuietCopy"}'
```

```json
{
  "api": "https://api.sb/quietcopy.com",
  "studio": {
    "$id": "https://api.sb/quietcopy.com/studios/studio_1",
    "$type": "Studio",
    "name": "QuietCopy"
  },
  "action": {
    "$id": "https://api.sb/quietcopy.com/actions/action_1",
    "operation": "Studio.create",
    "status": "done"
  },
  "links": {
    "self": "https://api.sb/quietcopy.com/actions/action_1"
  }
}
```

**SDK**

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

const studio = await $.Studio.create({ name: 'QuietCopy' })
```

**CLI**

```bash
npx startup-builder do Studio.create --json '{"name":"QuietCopy"}'
```

**MCP**

```json
{
  "name": "do",
  "arguments": {
    "code": "return await $.Studio.create({ name: 'QuietCopy' })"
  }
}
```

## Example
A Studio builds 40 Startups and holds them through two Companies. It runs [`Play.apply`](/business/nouns/play/apply) once, and a comparison-pages Play starts on the 12 software Startups already selling.