# Quickstart

Four steps, about five minutes: sign in, connect an account, give your agent access, make the first call.

## 1. Sign in

Open the dashboard at [https://app.oneapiforagents.com](https://app.oneapiforagents.com) and sign in with Google or with an email magic link. Create a workspace when asked. Clients are optional, so a solo developer can skip them entirely.

## 2. Connect an account

In **Accounts**, choose **Connect account** and pick a provider:

- **Search Console** or **GA4** with Google sign-in. You approve read-only access on Google's own consent screen.
- A **service account**, if you prefer. Add the service account's email to the property as a user; you can use ours or upload your own key.
- **Send a link to the owner** when the account belongs to someone else, such as a client. See [Connect links](/docs/connect-links.md).

Each connection shows as **Active** once it works.

## 3. Give your agent access

Pick one, or both.

**MCP (recommended for Claude, Cursor, Codex and other agents).** Add the server URL to your client and approve access in the browser:

```text title=MCP server URL
https://mcp.oneapiforagents.com/mcp
```

For Claude Code:

```sh
claude mcp add --transport http one-api https://mcp.oneapiforagents.com/mcp
```

Then run `/mcp` in Claude Code to sign in. Other clients are covered in [MCP setup](/docs/mcp.md).

**API key (for scripts, servers and agents that speak HTTP).** In **API keys**, choose **Create key**. Keys start with `oa_` and are shown once, so store yours in a secret manager or an environment variable:

```sh
export ONEAPI_KEY="oa_..."
```

Keys are read-only by default and inherit your client limits.

## 4. Make your first call

List the Search Console properties your connection can read:

```sh
curl https://api.oneapiforagents.com/v1/call \
  -H "Authorization: Bearer $ONEAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{"provider":"gsc","endpoint":"sites.list"}'
```

```json title=Response
{
  "call_id": "call_...",
  "connection_id": "con_...",
  "cached": false,
  "cost_usd": 0,
  "latency_ms": 312,
  "data": {
    "siteEntry": [{ "siteUrl": "sc-domain:example.com", "permissionLevel": "siteOwner" }]
  }
}
```

Raw endpoints return the provider's response body, unchanged, under `data`. Now try a smart tool, which returns compact rows made for agents:

```sh
curl https://api.oneapiforagents.com/v1/call \
  -H "Authorization: Bearer $ONEAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{"provider":"gsc","tool":"gsc_top_queries","input":{"siteUrl":"sc-domain:example.com"}}'
```

Both calls now appear in **Call logs** in the dashboard, with the redacted request and response, status, latency and cost.

## Next

- If you have more than one Search Console connection, pass `connection_id`. See [Choosing a connection](/docs/rest-api.md#choosing-a-connection).
- Browse every endpoint and tool: [Search Console](/providers/gsc.md), [GA4](/providers/ga4.md).
- Reuse recent responses with [max_age](/docs/caching.md).
