# Quickstart: Automo developers

> Register an OAuth client, authorise with PKCE and call your first Automo tool over REST or MCP, in five commands.

Five steps from nothing to a tool call. You need an Automo account; the Free plan needs no credit card, and a free workspace is a fine sandbox: what you do there is real, but private to that workspace.

## Fastest: let a client do it

```bash
# Claude Code
claude mcp add --transport http automo https://mo.automo.ai/mcp

# Cursor, Codex, Windsurf, Claude Desktop
npx automo connect cursor
```

The client registers itself, opens the Automo sign-in and consent screen, and stores the token. Then ask it to use Automo.

## By hand

### 1. Register a client

```bash
curl -X POST https://mo.automo.ai/oauth/register \
  -H "Content-Type: application/json" \
  -d '{"client_name":"My agent","redirect_uris":["http://127.0.0.1:8976/callback"],"token_endpoint_auth_method":"none"}'
```

Keep the `client_id` from the answer. No credential is needed to register.

### 2. Make a PKCE pair

```bash
VERIFIER=$(openssl rand -base64 48 | tr -d '=+/' | cut -c1-64)
CHALLENGE=$(printf '%s' "$VERIFIER" | openssl dgst -sha256 -binary | openssl base64 | tr '+/' '-_' | tr -d '=')
```

### 3. Send the person to authorise

```text
https://mo.automo.ai/oauth/authorize?response_type=code&client_id=$CLIENT_ID&redirect_uri=http%3A%2F%2F127.0.0.1%3A8976%2Fcallback&code_challenge=$CHALLENGE&code_challenge_method=S256&scope=files%3Aread%20projects%3Aread%20offline_access&state=xyz
```

They sign in (or create a free workspace), choose the workspace, tick the permissions, and come back to your redirect URI with `?code=…&state=xyz`.

### 4. Exchange the code

```bash
curl -X POST https://mo.automo.ai/oauth/token \
  -d grant_type=authorization_code -d code=$CODE -d client_id=$CLIENT_ID \
  -d redirect_uri=http://127.0.0.1:8976/callback -d code_verifier=$VERIFIER
```

### 5. Call a tool

```bash
curl -X POST https://mo.automo.ai/v1/tools/whoami -H "Authorization: Bearer $ACCESS_TOKEN" -H "Content-Type: application/json" -d '{}'
curl -X POST https://mo.automo.ai/v1/tools/list_projects -H "Authorization: Bearer $ACCESS_TOKEN" -H "Content-Type: application/json" -d '{"limit":5}'
```

## Next

- [Every tool and its parameters](https://automo.ai/developers/api)
- [Scopes](https://automo.ai/developers/scopes)
- [Errors and limits](https://automo.ai/developers/errors)
- [Authentication in depth](https://automo.ai/developers/auth)
