# Interface

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

> An Interface is how a person or an Agent reaches a Product: an API, MCP server, CLI, SDK, Site, or App.

An Interface is how a person or an [Agent](/business/nouns/agent) reaches a [Product](/business/nouns/product): an API, MCP server, CLI, SDK, [Site](/business/nouns/site), or [App](/business/nouns/app).

## Properties
| Property | Type | Required | Description |
| --- | --- | --- | --- |
| `kind` | `string` | Yes | One of `api`, `mcp`, `cli`, `sdk`, `site`, `app`, `docs`, or `webhooks`. |
| `path` | `string` | No | Where it is mounted on its Domain, such as `/api`. |
| `conformsTo` | `json` | No | The Standards it also speaks, each mapping the Standard’s operations onto the Product’s Verbs. |

## Object
```json
{
  "$id": "https://api.sb/patentpad.com/interfaces/interface_1",
  "$type": "Interface",
  "kind": "api",
  "path": "/",
  "conformsTo": {
    "standard": "openai-chat",
    "operations": {
      "chat.completions.create": "Listing.write"
    }
  }
}
```

## Relationships
- <a id="rel-mounted-on"></a>An Interface **is mounted on** many [Domains](/business/nouns/domain): an Interface answers requests on the hostnames it is mounted on. `mountedOn`, inverse [`mounts`](/business/nouns/domain#rel-mounts).
- <a id="rel-reaches"></a>An Interface **reaches** one [Product](/business/nouns/product): each Interface exposes one [Product](/business/nouns/product); a Product is reached through many Interfaces. `reaches`, inverse [`reachedVia`](/business/nouns/product#rel-reached-via).
- <a id="rel-speaks"></a>An Interface **speaks** many [Standards](/business/nouns/standard): Callers in a [Standard](/business/nouns/standard)’s shape reach the Interface’s [Verbs](/business/nouns/verb) through the platform’s one translator for that Standard. `speaks`, inverse [`spokenBy`](/business/nouns/standard#rel-spoken-by).

## Verbs
| Verb | Description | Subject | Event | Class |
| --- | --- | --- | --- | --- |
| <a id="create"></a>[Interface.create](/business/nouns/interface/create) | Creates an Interface. Inherited from [Noun](/business/nouns/noun). | None. | `Interface.created` | Two-way: `try`, `send`, `do` |
| <a id="get"></a>[Interface.get](/business/nouns/interface/get) | Returns one Interface by id. Inherited from [Noun](/business/nouns/noun). | None. | None. | Read: `try`, `do` |
| <a id="list"></a>[Interface.list](/business/nouns/interface/list) | Returns Interfaces, newest first, one page at a time. Inherited from [Noun](/business/nouns/noun). | None. | None. | Read: `try`, `do` |
| <a id="update"></a>[Interface.update](/business/nouns/interface/update) | Changes the given properties of an Interface. Inherited from [Noun](/business/nouns/noun). | None. | `Interface.updated` | Two-way: `try`, `send`, `do` |
| <a id="delete"></a>[Interface.delete](/business/nouns/interface/delete) | Deletes an Interface; its history is kept. Inherited from [Noun](/business/nouns/noun). | None. | `Interface.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` |
| --- | --- | --- | --- | --- |
| `Interface.create` | Yes | Yes | Yes | No |
| `Interface.get` | Yes | Yes | Yes | Yes |
| `Interface.list` | Yes | Yes | Yes | Yes |
| `Interface.update` | Yes | Yes | Yes | No |
| `Interface.delete` | Yes | Yes | Yes | No |

## Call it

**Ask**

```text
Add an interface to ShiftNote.
```

**API**

```bash
curl -X POST https://api.sb/shiftnote.app/interfaces \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"kind":"api"}'
```

```json
{
  "api": "https://api.sb/shiftnote.app",
  "interface": {
    "$id": "https://api.sb/shiftnote.app/interfaces/interface_1",
    "$type": "Interface",
    "kind": "api"
  },
  "action": {
    "$id": "https://api.sb/shiftnote.app/actions/action_1",
    "operation": "Interface.create",
    "status": "done"
  },
  "links": {
    "self": "https://api.sb/shiftnote.app/actions/action_1"
  }
}
```

**SDK**

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

const result = await $.Interface.create({ kind: 'api' })
```

**CLI**

```bash
npx startup-builder do Interface.create --json '{"kind":"api"}'
```

**MCP**

```json
{
  "name": "do",
  "arguments": {
    "code": "return await $.Interface.create({ kind: 'api' })"
  }
}
```

## Example
A currency-conversion [Product](/business/nouns/product) answers developers over the API, coding Agents as an MCP [Tool](/business/nouns/tool), operators from the CLI, and people on its pricing [Site](/business/nouns/site).