# Start with an agent

Per-host connect commands and first-session steps (OAuth, read-only first).

## What you connect to

Start with the **read-only** server:

```
https://go.coremodels.io/mcp
```

There are three MCP endpoints. All of them use OAuth (JWT Bearer, same authority).
There is **no API key for MCP**.

| Endpoint | What it is |
| --- | --- |
| `https://go.coremodels.io/mcp` | Public read-only catalog. This is the default for a first session. |
| `https://go.coremodels.io/mcp-admin` | Adds a capped write allowlist (import, update, and related tools). Use only after you opt in. |
| `https://go.coremodels.io/mcp-synapse` | Code-mode sandbox for Synapse tools. |

Fuller endpoint notes, limits, and worked examples: [MCP server](/agents/mcp).

## Connect by host (OAuth)

In every host: add the **read-only** URL as a remote (HTTP) MCP server, then complete
**browser OAuth** when the client prompts you. Paste no key into chat or config.
Clients that cannot open a browser cannot connect yet.

### Cursor

One-click install (read-only):
[Install CoreModels in Cursor](https://cursor.com/en/install-mcp?name=coremodels&config=eyJ1cmwiOiJodHRwczovL2dvLmNvcmVtb2RlbHMuaW8vbWNwIn0=)

Or add this to `mcp.json`:

```json
{
  "mcpServers": {
    "coremodels": {
      "url": "https://go.coremodels.io/mcp"
    }
  }
}
```

### Claude Code

```
claude mcp add --transport http coremodels https://go.coremodels.io/mcp
```

Then complete the OAuth flow when Claude Code prompts you (often via `/mcp` in the session).

### Claude Desktop / claude.ai

Settings → Connectors → Add custom connector. Point it at
`https://go.coremodels.io/mcp`, then complete the OAuth sign-in in the browser.

### VS Code

If your MCP extension uses an `mcp.json` (or an MCP servers list in settings), add the
same URL-only remote entry as Cursor and complete browser OAuth. Do not add a bearer
API key for MCP.

### ChatGPT, Codex, Gemini CLI, and other MCP clients

Add `https://go.coremodels.io/mcp` as a remote (HTTP) MCP server, then finish the
browser OAuth flow your client starts. Exact menus and flags differ by product; the
URL and OAuth rule do not. If the client has no remote HTTP MCP + OAuth support yet,
it cannot connect today.

### Writes (only after you opt in)

When you explicitly want import or other writes, add
`https://go.coremodels.io/mcp-admin` the same way (second server). That endpoint needs
Admin membership on the project and uses credits for write actions. Do not attach it
on a first session by default.

## First session (read-only)

Keep this session on `/mcp` until you say otherwise.

1. **Connect** the read-only server and finish OAuth (steps above).
2. **List tools and projects** you can see. Confirm you only have read tools so far.
3. **Orient on a model.** If you already have a CoreModels project, summarize it
   (types, elements, taxonomies). If you have none yet, use the **existing public dbt
   sample** — try it in the no-account [Playground](https://www.coremodels.io/playground),
   or follow the worked [Jaffle Shop status recipe](https://www.coremodels.io/recipe/dbt/jaffle-shop-status).
4. **Ground one question.** Ask what a field means or which values it allows. Answer
   from the model and show the definition used. If the model has no definition, say so
   — do not guess from the column name. Standing rule: [Grounding an assistant](/agents/grounding).
5. **Offer, don't write.** Ask whether to bring in a schema you already have. Import is
   a write on `/mcp-admin`. Do nothing until you opt in.

Finish by saying what you connected, what you found, and one next step.

## Related

- [MCP server](/agents/mcp) — endpoints, OAuth, limits
- [Tool reference](/agents/tools) — live tool signatures once connected
- [Grounding an assistant](/agents/grounding) — look up before you make up
- [Playground](https://www.coremodels.io/playground) — public dbt sample, no account
