# Get started

> Connect your AI agent or script to apps without an API: one key, one MCP server, a REST endpoint for every tool, SDKs for Node.js and Python.

Source: https://cotlet.dev/docs

Docs sections: [Get started](https://cotlet.dev/docs.md) · [REST API](https://cotlet.dev/docs/api.md) · [MCP](https://cotlet.dev/docs/mcp.md) · [SDKs & CLI](https://cotlet.dev/docs/sdks.md) · [Integrations](https://cotlet.dev/docs/integrations.md)

Cotlet gives your agent and your scripts an API for apps that never built one. One key works across every app on your account, over MCP or REST.

## Choose how you connect

- [REST API](https://cotlet.dev/docs/api): Plain HTTPS and JSON for scripts, cron jobs and backends.
- [MCP server](https://cotlet.dev/docs/mcp): One URL for Claude Code, Cursor, Codex, ChatGPT and n8n.
- [SDKs & CLI](https://cotlet.dev/docs/sdks): Node.js, Python and a command line tool over the same API.
- [Integrations](https://cotlet.dev/docs/integrations): Native apps for agent tools and automation platforms.

## Quickstart

1. **Request access.** Pick your apps on [the sign-up page](https://cotlet.dev/signup). We review each request and email you your API key.
2. **Connect your app account.** Sign in to the app once on the connect page. We keep the session, never your password.
3. **Make your first call.** Add the MCP server to your agent, or call the REST endpoint from a script.

**cURL**

```bash
curl -X POST https://cotlet.dev/api/v1/skool/list_members \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"group": "yourgroup"}'
```

**Claude Code**

```bash
claude mcp add --transport http cotlet https://cotlet.dev/mcp/v1 \
  --header "Authorization: Bearer $COTLET_API_KEY"
```

**Python**

```python
from cotlet import Cotlet

client = Cotlet()  # reads COTLET_API_KEY
members = client.call("skool", "list_members", {"group": "yourgroup"})
```

**Node.js**

```js
import { Cotlet } from 'cotlet';

const cotlet = new Cotlet(); // reads COTLET_API_KEY
const members = await cotlet.call('skool', 'list_members', { group: 'yourgroup' });
```

## Base URLs

| Interface | URL | Use it for |
|---|---|---|
| REST API | `https://cotlet.dev/api/v1` | Scripts, backends, n8n HTTP nodes |
| MCP server | `https://cotlet.dev/mcp/v1` | AI agents and MCP clients |

## Authentication

Every call carries your API key as a bearer token. One key covers every app your account has access to; access is granted per app.

**Header**

```
Authorization: Bearer COTLET_API_KEY
```

- Listing apps, endpoints and schemas needs no key.
- Keep the key in an environment variable such as `COTLET_API_KEY`, never in code you commit.
- Rotate or revoke keys in your dashboard at any time.

## Key concepts

| Concept | What it means |
|---|---|
| App | A product without a usable API, such as Skool or Booksy. Each has a slug: `skool`, `booksy`. |
| Endpoint | One action in an app: `list_members`, `create_post`. The same action is an MCP tool named `skool_list_members`. |
| Access | `read` endpoints only read data; `write` endpoints change something in the app. |
| Confirm | Endpoints that reach other people (posts, messages, emails) wait for your OK by default. You can switch that off per endpoint. |
| Connected account | Your own login to the app, kept as an encrypted session. Calls run as you, with your permissions. |
| Credits | Each successful call uses credits; failed calls are free. See [pricing](https://cotlet.dev/pricing). |

## For AI agents

Agents can explore Cotlet without an account. Everything below answers without a key.

- Every app and endpoint as JSON: `GET https://cotlet.dev/api/v1/apps`.
- Every MCP tool: `tools/list` on the MCP server.
- A summary of the site for agents: [/llms.txt](https://cotlet.dev/llms.txt).
- Every page as Markdown: send `Accept: text/markdown`, or add `.md` to the URL.

App missing? Ask for it without an account (10 requests an hour):

**Request an app**

```
curl -X POST https://cotlet.dev/api/v1/integration-requests \
  -H "Content-Type: application/json" \
  -d '{"app": "Notion", "use_case": "what you want done"}'
```
