# Packages under your name

URL: /products/api/your-sdks · Id: `page:products/api/your-sdks`

> Every API ships an SDK, a CLI and an MCP server under the Startup's own name, built from the Verbs a Customer may call and versioned with the API.

Every API ships an SDK, a CLI and an MCP server under the [Startup](/business/nouns/startup)'s own name. Each is built from the [Verbs](/business/nouns/verb) a [Customer](/business/nouns/customer) may call, and its major matches the API version.

## One name everywhere
| [Interface](/business/nouns/interface) | At Leaseline |
| --- | --- |
| SDK | `npm install leaseline`, `pip install leaseline` |
| CLI | `npx leaseline` |
| MCP server | `https://leaseline.app/mcp` |
| Key variable | `LEASELINE_API_KEY`, read by all three |
| Reference docs | `https://leaseline.app/docs`, with `llms.txt` and Markdown per page |

The names come from the [Publication](/business/nouns/publication), and none of them names the platform.

## The same call four ways
Leaseline declares a `Lease` [Noun](/business/nouns/noun), so each package lists leases the same way:

**API**

```bash
curl "https://api.leaseline.app/leases?where=status%20%3D%20renewing" \
  -H "Authorization: Bearer $LEASELINE_API_KEY"
```

**SDK**

```ts
import { $ } from 'leaseline'

const page = await $.Lease.list({ where: 'status = renewing' })
```

**CLI**

```bash
npx leaseline do Lease.list --json '{"where":"status = renewing"}'
```

**MCP**

```json
{
  "mcpServers": {
    "leaseline": { "url": "https://leaseline.app/mcp" }
  }
}
```

The MCP server gives an [Agent](/business/nouns/agent) four tools, `search`, `fetch`, `try` and `do`, that reach every Verb the Customer may call.

## Only what a Customer may call
The OpenAPI document, the SDK types and the MCP tool list carry only the Verbs in the [Product](/business/nouns/product) file. Operator Verbs, such as [`Offer.publish`](/business/nouns/offer/publish), stay out, so a Customer's Agent spends no context on calls it cannot make.

## Versioned with the API
[`Version.deploy`](/business/nouns/version/deploy) points every Interface at one build, the packages included. A breaking [Change](/business/nouns/change) ships `v2` of the API and `leaseline@2`. Code on `leaseline@1` keeps calling `v1`, and [the versioning page](/products/api/versions) explains the pin.